wavecatcher-analysis
|
Functions specific for PMTs. More...
#include <PMT.h>
Public Member Functions | |
PMT (int no_of_bin_files_to_read) | |
Initializer will call initializer of ReadRun class. | |
void | PrintChargeSpectrumPMT (float, float, float=0, float=300, float=-50, float=600, int=750) |
"Charge" spectrum optimized for PMT signals | |
void | PrintChargeSpectrumPMTthreshold (float=0, float=0, float=0, float=300, int=750, double=4, bool=false) |
Print "charge" spectrum with highlight a threshold. | |
![]() | |
TH1F * | BaselineCorrectionResults (int, int, float=-5, float=5, int=200) |
Histograms of the contents of baseline_correction_result. | |
void | ChargeCorrelation (float, float, float, float, float, float, int, int, int, bool=false) |
Plot correlation of integrals/amplitudes between two channels. | |
float * | ChargeList (int, float=20, float=80, float=0, float=300, bool=1) |
Returns array with the individual "charge"/amplitude for all events of one channel. | |
TH1F * | ChargeSpectrum (int, float, float, float=0, float=300, float=-50, float=600, int=750) |
Histogram of the "charge" spectrum for one channel. | |
int | CheckBoundsX (int) |
Check if index exists in time of waveforms. | |
void | CorrectBaseline (float, float=-999) |
Baseline correction constant window. | |
void | CorrectBaseline_function (vector< float > &, float, float, int) |
Helper function called by CorrectBaseline() | |
void | CorrectBaselineMin (int=100, double=0.5, int=0, int=0, int=2) |
Baseline correction using minimum sum ( \(\propto\) mean) in range for correction. | |
void | CorrectBaselineMin (vector< float >, double, int, int) |
Wrapper for backwards compatibility. | |
void | CorrectBaselineMin (vector< float >, double=0, int=2) |
Baseline correction using minimum sum ( \(\propto\) mean) in range for correction. | |
void | CorrectBaselineMinSlopeRMS (int=100, bool=false, double=0.5, int=0, int=0, int=2) |
Baseline correction method searching for non-monotonic, rather constant regions. | |
void | CorrectBaselineMinSlopeRMS (vector< float >, double, int, int) |
Wrapper for backwards compatibility. | |
void | CorrectBaselineMinSlopeRMS (vector< float >, double=0, int=2) |
Baseline correction method searching for non-monotonic, rather constant regions. | |
void | FilterAll (double=.3, double=.9, double=.2) |
Filter all waveforms. | |
int | GetChannelIndex (int) |
Match channel number (wavecatcher input channel) to channel index. | |
virtual int | GetCurrentChannel (int) |
Get the current channel index for a certain waveform index. | |
virtual int | GetCurrentEvent (int) |
Get the current event index for a certain waveform index. | |
int | GetEventIndex (unsigned int) |
Returns index of a certain event number (if data files are read in parallel threads) | |
array< int, 3 > | GetIntWindow (const vector< float > &, float, float, float, float, int=0) |
Determine indices for integration window for peaks. | |
array< int, 3 > | GetIntWindow (const vector< float > &, int, int, int, int, int=0) |
Determine indices for integration window for peaks with bin indices. | |
array< int, 3 > | GetIntWindow (TH1F *, float, float, float, float, int=0) |
Determine indices for integration window for peaks. | |
float | GetPeakIntegral (const vector< float > &, float, float, float, float, int=0) |
Calculate the integral around a peak with several options explained in GetIntWindow(). | |
float | GetPeakIntegral (TH1F *, float, float, float, float, int=0) |
Calculate the integral around a peak with several options explained in GetIntWindow(). | |
void | GetTimingCFD (float=.3, float=100, float=140, double=0., bool=true, int=2, bool=false, bool=false) |
Determine the timing of the maximum peak with constant fraction discrimination. | |
virtual int | GetWaveformIndex (int, int) |
Returns index of a certain event number (if data files are read in parallel threads) | |
TH1F * | Getwf (int) |
Helper that returns the waveform histogram for a certain waveform number number. | |
virtual TH1F * | Getwf (int, int, int=1) |
Helper that returns the waveform histogram for a certain channel number and a certain event number. | |
template<typename T > | |
T * | getx (double shift=0.) |
Get array of x axis (time of the bin centers) for standard wavecatcher settings. | |
double * | gety (int) |
Get array of y values for a certain waveform. | |
double * | gety (int, int) |
Get array of y values for a certain waveform. | |
TH1F * | His_GetTimingCFD (int, float, float, int=-999) |
Plot results of GetTimingCFD() | |
TH1F * | His_GetTimingCFD_diff (vector< int >, vector< int >, float, float, int=-999) |
Plot timing difference between the mean timings of two channel ranges. | |
float | IndexToTime (int) |
Convert the bin number of the waveform to the time of the left bin edge | |
void | IntegralFilter (vector< float >, vector< bool >, float, float, float=50, float=250, bool=false, bool=false) |
Skip events with threshold on integral. | |
TGraph2D * | MaxDist (int, float=0, float=300) |
Finds maximum amplitude for a given channel in time window ["from", "to"] and creates 3d map of waveforms ordered by maxima on z axis. | |
virtual int | Nevents_good (int=0) |
Number of good events that are not skipped. | |
bool | PlotChannel (int) |
Check if a channel index should be plotted according to ReadRun::plot_active_channels. | |
void | PlotChannelAverages (bool=false) |
Plot averages only of the good, corrected waveforms for each channel. | |
void | PlotChannelSums (bool=false, bool=false, double=0., double=0., int=2) |
Plot sums of all raw waveforms for each channel. | |
void | PlotWFHeatmaps (float=-20, float=200, int=880, string="", float=0, EColorPalette=kRainBow) |
Plot stacks of all non-skipped waveforms for all active channels. | |
vector< bool > | PolarityMap (bool, int) |
Channel map of polarity changes during reading. For parameters see ReadFile(). | |
void | Print_GetTimingCFD (float=100, float=140, int=0, int=-999, string="S", bool=true) |
Plot results of GetTimingCFD() | |
void | Print_GetTimingCFD_diff (vector< int >, vector< int >, float=100, float=140, int=0, int=-999, float=-999, float=-999, string="RS", bool=true) |
Plot timing difference between the mean timings of two channel ranges. | |
void | PrintBaselineCorrectionResults (float=-5, float=5, int=200) |
Print histogram of the baseline correction values for all channels. | |
void | PrintChargeSpectrum (float, float, float=0, float=300, float=-50, float=600, int=750, float=0., float=0., int=99, int=0, bool=false) |
Plots the "charge" spectrums of all channels. | |
void | PrintChargeSpectrumWF (float, float, float=0, float=300, int=1, float=0., float=0., float=0., float=0.) |
Plot waveforms of all channels for a given event number and add the determined integration windows to the plot. | |
void | PrintDCR (float=15, float=85, float=0, float=300, double=3) |
Calculate (SiPM) dark count rate. | |
void | PrintMaxDist (float=0, float=300) |
Finds maximum amplitude for a given channel in time window ["from", "to"] and creates 3d map of waveforms ordered by maxima on z axis. | |
void | PrintSkippedEvents () |
Prints a list of all skipped events into the terminal for diagnostics. | |
void | PrintTimeDist (float=0, float=300, float=0, float=300, int=100, int=0, float=.3) |
Time distribution of maximum, CFD, or 10% - 90% rise time in a certain time window. | |
void | PrintWFProjection (float=0, float=320, float=-50, float=50, int=200) |
Plots waveform projection histograms of all channels. | |
virtual void | ReadFile (string, bool=false, int=9, string="out.root", bool=false, long long=-1) |
Routine to read files created by the wavecatcher. | |
ReadRun (int last_bin_file=0, int first_bin_file=0) | |
Constructor of the class. | |
void | SaveChargeLists (float=20, float=80, float=0, float=300, bool=1) |
Saves TGraphs to root file with the individual "charge"/amplitude for all events and all channels. | |
void | ShiftAllToAverageCF () |
This function shifts all waveforms to the average signal starting times for each channel. | |
virtual bool | SkipEvent (int, int=-1) |
Check if event should be skipped. | |
void | SkipEventsPerChannel (vector< float >, float=0, float=0, bool=false) |
Skip events above/below individual thresholds per channel. | |
void | SkipEventsTimeDiffCut (int, int, double, double, bool=false) |
Skip events where the time difference between two channels is outside of specified range. | |
void | SmoothAll (double, int) |
Smoothing all waveforms which are not skipped (for testing, careful when using for analysis!) | |
void | SmoothAll (double, string="Gaus") |
Smoothing all waveforms which are not skipped (for testing, careful when using for analysis!) | |
TH1F * | TimeDist (int, float=0, float=300, float=0, float=300, int=100, int=0, float=.3) |
Time distribution of maximum, CFD, or 10% - 90% rise time in a certain time window. | |
int | TimeToIndex (float) |
Convert time to the bin number of the waveform. | |
void | UnskipAll () |
Sets skip_event flag to false for all events, removing any previous cuts. | |
TH2F * | WFHeatmapChannel (int, float=-20, float=200, int=880) |
2D histogram of all non-skipped waveforms for one channel | |
TH1F * | WFProjectionChannel (int, int=0, int=1024, float=-50, float=50, int=200) |
Waveform projections for one channel. | |
virtual | ~ReadRun () |
Destructor. | |
Public Attributes | |
vector< float > | PrintChargeSpectrumPMT_pars |
Starting values of the fit parameters for PrintChargeSpectrumPMT() | |
![]() | |
vector< int > | active_channels |
Stores the numbers of the active channels. | |
vector< vector< float > > | amplValuessum |
Collects sums of all waveforms for each channel. | |
vector< vector< float > > | baseline_correction_result |
Stores baseline correction results for CorrectBaseline() and related functions. | |
int | binNumber |
Number of bins (usually 1024 samples per waveform). | |
float | DAQ_factor = 250. / 4096. |
DAQ conversion factor for wavecatcher output to mV. | |
string | data_path |
Path to data. | |
bool | discard_original_eventnr = false |
Can be used to discard the original event numbering of the data. | |
int | end_read_at_channel = -1 |
See ReadRun::start_read_at_channel. | |
vector< unsigned int > | eventnr_storage |
Events will be stored here in the order they have been read. | |
int | FirstBinFileToRead |
Number first of .bin file to be read in. | |
vector< TFitResultPtr > | fit_results |
Stores the fit results of PrintChargeSpectrum() for all channels and all function calls in ascending order. | |
int | LastBinFileToRead |
Number of last .bin file to be read in. | |
int | maxNWF = 1e7 |
Maximum possible number of waveforms in data: number of active channels x number of events. | |
vector< int > | maxSumBin |
Stores bin numbers where the sum of waveforms have their maximum. | |
vector< float > | mean_integral |
Stores the mean integral/lightyield from PrintChargeSpectrum() for all channels. | |
int | nchannels |
Number of active channels in data. | |
int | nChannelsWC = 64 |
Wavecatcher hardware max. number of channels (reduce/increase if not using the 64 channel crate) | |
int | nevents = 0 |
Number of triggered events in data. | |
int | nwf |
Total number of waveforms read from data: number of active channels x number of events. | |
vector< int > | plot_active_channels |
Stores the numbers of the active channels which should be plotted. | |
vector< vector< float > > | PrintChargeSpectrum_cal = vector(nChannelsWC, vector<float>(2, 1)) |
Calibration values to normalize charge spectrum to number of photoelectrons Chennels must be ordered as in plot_active_channels. The first entry must be the gain and the second the position of the pedestal. | |
vector< float > | PrintChargeSpectrum_pars |
Starting values of the fit parameters for PrintChargeSpectrum() | |
TFile * | root_out |
Stores results of analysis. | |
vector< vector< float > > | rundata |
Stores waveforms. | |
vector< bool > | skip_event |
Stores the event numbers which should be skipped in the analysis. | |
float | SP = .3125 |
Sampling: ns per bin of data, sampling rate 3.2 GS/s -> 0.3125 ns. | |
float | SP_inv = 1 / .3125 |
1/SP | |
int | start_read_at_channel = -1 |
Do analysis only for limited range of channels to reduce memory usage. | |
vector< int > | switch_polarity_for_channels |
Stores the channel number where the polarity should be inverted. Example use to switch polarity for channel 0 and channel 14: mymeas.switch_polarity_for_channels = {0, 14}; . Needs to be called before ReadFile(). | |
float | tCutEndg |
End of time window for baseline correction when using ReadRun::Using_BaselineCorrection_in_file_loop. | |
float | tCutg |
Start of time window for baseline correction when using ReadRun::Using_BaselineCorrection_in_file_loop. | |
vector< TFitResultPtr > | timing_fit_results |
Stores the fit results of Print_GetTimingCFD() for all channels. | |
vector< vector< float > > | timing_results |
Matrix to store timing of peaks from GetTimingCFD() | |
bool | Using_BaselineCorrection_in_file_loop = false |
Set true for baseline correction during data reading. Needs to be called before ReadFile(). | |
Additional Inherited Members | |
![]() | |
static pair< float, bool > | LinearInterpolation (float, float, float, float, float, bool=false) |
Simple linear interpolation for x. | |
![]() | |
virtual void | checkData (bool isBaselineCorrection=false) const |
Primitive check to see if data has been loaded. | |
![]() | |
int | PlotChannelAverages_cnt |
Index for multiple executions of the same plotting function. | |
int | PlotWFHeatmaps_cnt |
Index for multiple executions of the same plotting function. | |
int | PrintChargeSpectrum_cnt |
Index for multiple executions of the same plotting function. | |
int | PrintWFProjection_cnt |
Index for multiple executions of the same plotting function. | |
|
inline |
void PMT::PrintChargeSpectrumPMT | ( | float | windowlow, |
float | windowhi, | ||
float | start = 0 , |
||
float | end = 300 , |
||
float | rangestart = -50 , |
||
float | rangeend = 600 , |
||
int | nbins = 750 |
||
) |
"Charge" spectrum optimized for PMT signals
Just for plotting. To analyze the data use PrintChargeSpectrum() with Fitf_PMT_pedestal() for low number of photons and Fitf_langaus() for >10-15 photons.
See PrintChargeSpectrum() for parameters.
void PMT::PrintChargeSpectrumPMTthreshold | ( | float | windowlow = 0 , |
float | windowhi = 0 , |
||
float | rangestart = 0 , |
||
float | rangeend = 300 , |
||
int | nbins = 750 , |
||
double | threshold = 4 , |
||
bool | calculate_SiPM_DCR = false |
||
) |
Print "charge" spectrum with highlight a threshold.
Can also be used to determine the dark count rate of SiPMs. See PrintChargeSpectrum() for parameters.
threshold | Threshold |
calculate_SiPM_DCR | Set true to calculate the fraction above and below threshold and the rate (SiPM DCR). |
Starting values of the fit parameters for PrintChargeSpectrumPMT()