wavecatcher-analysis
Loading...
Searching...
No Matches
Experimental Class Reference

Class containing experimental functions. More...

#include <Experimental.h>

Inheritance diagram for Experimental:
Collaboration diagram for Experimental:

Public Member Functions

void DerivativeAll ()
 Derivative of all waveforms.
 
 Experimental (int no_of_bin_files_to_read)
 Initializer will call initializer of ReadRun class.
 
void RebinAll (int=2, float=0, unsigned long=0)
 Rebin the data to test bandwidth effects. Will combine an integer number of bins into a new, wider bin and divide the new bin content by the integer number to preserve the shape and integral.
 
- Public Member Functions inherited from ReadRun
TH1FBaselineCorrectionResults (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.
 
floatChargeList (int, float=20, float=80, float=0, float=300, bool=1)
 Returns array with the individual "charge"/amplitude for all events of one channel.
 
TH1FChargeSpectrum (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)
 
TH1FGetwf (int)
 Helper that returns the waveform histogram for a certain waveform number number.
 
virtual TH1FGetwf (int, int, int=1)
 Helper that returns the waveform histogram for a certain channel number and a certain event number.
 
template<typename T >
Tgetx (double shift=0.)
 Get array of x axis (time of the bin centers) for standard wavecatcher settings.
 
doublegety (int)
 Get array of y values for a certain waveform.
 
doublegety (int, int)
 Get array of y values for a certain waveform.
 
TH1FHis_GetTimingCFD (int, float, float, int=-999)
 Plot results of GetTimingCFD()
 
TH1FHis_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.
 
TGraph2DMaxDist (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< boolPolarityMap (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!)
 
TH1FTimeDist (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.
 
TH2FWFHeatmapChannel (int, float=-20, float=200, int=880)
 2D histogram of all non-skipped waveforms for one channel
 
TH1FWFProjectionChannel (int, int=0, int=1024, float=-50, float=50, int=200)
 Waveform projections for one channel.
 
virtual ~ReadRun ()
 Destructor.
 

Additional Inherited Members

- Static Public Member Functions inherited from ReadRun
static pair< float, boolLinearInterpolation (float, float, float, float, float, bool=false)
 Simple linear interpolation for x.
 
- Public Attributes inherited from ReadRun
vector< intactive_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 inteventnr_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< TFitResultPtrfit_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< intmaxSumBin
 Stores bin numbers where the sum of waveforms have their maximum.
 
vector< floatmean_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< intplot_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< floatPrintChargeSpectrum_pars
 Starting values of the fit parameters for PrintChargeSpectrum()
 
TFileroot_out
 Stores results of analysis.
 
vector< vector< float > > rundata
 Stores waveforms.
 
vector< boolskip_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< intswitch_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< TFitResultPtrtiming_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().
 
- Protected Member Functions inherited from ReadRun
virtual void checkData (bool isBaselineCorrection=false) const
 Primitive check to see if data has been loaded.
 
- Protected Attributes inherited from ReadRun
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.
 

Detailed Description

Class containing experimental functions.

Examples
timing_example_rebin.cc.

Definition at line 8 of file Experimental.h.

Constructor & Destructor Documentation

◆ Experimental()

Experimental::Experimental ( int  no_of_bin_files_to_read)
inline

Initializer will call initializer of ReadRun class.

Parameters
no_of_bin_files_to_read

Definition at line 12 of file Experimental.h.

Member Function Documentation

◆ DerivativeAll()

void Experimental::DerivativeAll ( )

Derivative of all waveforms.

Calculates the forward differences. Reduces the number of bins by one for all waveforms. For testing purposes.

Definition at line 51 of file Experimental.cc.

◆ RebinAll()

void Experimental::RebinAll ( int  ngroup = 2,
float  sigma_noise = 0,
unsigned long  seed = 0 
)

Rebin the data to test bandwidth effects. Will combine an integer number of bins into a new, wider bin and divide the new bin content by the integer number to preserve the shape and integral.

CAUTION: Not tested with all functions.

Please note that PlotChannelSums() is calculated while parsing the data - before rebinning. Use PlotChannelAverages() instead.

Parameters
ngroupInteger number of bins to combine.
sigma_noiseAdd gaussian noise with sigma_noise to rebinned data.
seedSeed for the noise random number generator.
Examples
timing_example_rebin.cc.

Definition at line 14 of file Experimental.cc.


The documentation for this class was generated from the following files: