46 const Int_t size = params.size();
48 std::cerr <<
"-W PndEmcPSAFPGAPileupAnalyser::InitParameters Mismatch in number of parameters (" << size <<
"!=14). Filling missing parameter values up with zeros..." << std::endl;
52 newParams.
ma_trig_M = (size>0) ? (
int) params.at(0): 0;
54 newParams.
cf_delay = (size>2) ? (
int) params.at(2): 0;
55 newParams.
cf_ratio = (size>3) ? params.at(3): 0;
58 newParams.
mwd_length = (size>6) ? (
int) params.at(6): 0;
59 newParams.
mwd_tau = (size>7) ? params.at(7): 0;
60 newParams.
mwd2_length = (size>8) ? (
int) params.at(8): 0;
61 newParams.
mwd2_tau = (size>9) ? params.at(9): 0;
62 newParams.
mwd3_length = (size>10) ? (
int) params.at(10): 0;
63 newParams.
mwd3_tau = (size>11) ? params.at(11): 0;
64 newParams.
sig_delay = (size>12) ? params.at(12): 0;
71 Init2(params, r_thres, r_mean);
76 Init2(params, r_thres, r_mean);
100 if(r_mean!=NULL && r_thres!=NULL) {
104 Int_thres =
new TF1(
"intThres",
"(" +r_thres->GetExpFormula() +
")*x", r_thres->GetXmin(), r_thres->GetXmax());
105 Int_thres->SetParameters(r_thres->GetParameters());
109 Int_mean =
new TF1(
"intMean",
"(" +r_mean->GetExpFormula() +
")*x", r_mean->GetXmin(), r_mean->GetXmax());
110 Int_mean->SetParameters(r_mean->GetParameters());
114 std::cerr <<
"-W PndEmcPSAFPGAPileupAnalyser:Init2 no pileup separation function defined. All hits will be treated as single pulses" << std::endl;
140 if(i <
nHits() && i >=0) {
173 float cf_value_prev =
CF_prev->
put(cf_value_delayed);
211 if(
fVerbose>=5) std::cout << local_time << std::endl;;
217 if((cf_value_prev < 0.0) && (cf_value_delayed >= 0.0)) {
228 if(cf_value_delayed< cf_value_prev) {
246 std::cout <<
"Finaliyzing " <<
Number_of_hits <<
" hit" << std::endl;
253 std::cout <<
"all zeroCrossings t/rise" << std::endl;
262 if(
fVerbose>=2) std::cout <<
"single hit" << std::endl;
267 if(
fVerbose>=2) std::cout <<
"pileup hit" << std::endl;
302 cout <<
"mwd: " << mwd_value <<
" ";
303 cout <<
"mwd 2: " << mwd2_value <<
" ";
304 cout <<
"mwd 3: " << mwd3_value <<
" ";
305 cout <<
"cf delay: " << cf_value_delayed <<
" ";
PndEmcPSAFPGAPileupAnalyser()
float integral[MAX_NUMBER_OF_HITS]
void set(unsigned int newBufferSize)
PndEmcPSAFPGAFilterMWD * MWD_filter2
unsigned int BaselineStartSample
virtual void Init2(const std::vector< Double_t > ¶ms, TF1 *R_thres, TF1 *R_mean)
PndEmcPSAFPGALinFitter * CF_Fitter
PndEmcPSAFPGAFilterMA * MA_triggering
float put(float valueToStore)
void set(float tau, unsigned int newBufferSize)
void putPoint(double ix, double iy)
PndEmcPSAFPGAFilterCF * CF_filter
void GetEnergyMeasures(Int_t i, Double_t &Amplitude, Double_t &Integral)
float sampleTime(int index)
virtual void put(float valueToStore)
pileup_t pileups[MAX_NUMBER_OF_HITS]
float sampleAmplitude(int index)
PndEmcPSAFPGAFilterDelay * CF_prev
float amplitude[MAX_NUMBER_OF_HITS]
virtual void InitParameters(const std::vector< Double_t > ¶ms)
SampleAnalyserParams analyserParams
enum PndEmcPSAFPGAPileupAnalyser::@0 baselineMode
unsigned int BaselineStopSample
virtual float put(float valueToStore)
PndEmcPSAFPGAFilterMWD * MWD_filter3
float cfZero[MAX_NUMBER_OF_HITS]
float time[MAX_NUMBER_OF_HITS]
PndEmcPSAFPGAFilterMWD * MWD_filter1
virtual ~PndEmcPSAFPGAPileupAnalyser()
float sampleIntegral(int index)
PndEmcPSAFPGAFilterDelay * Signal_delay
virtual void GetHit(Int_t i, Double_t &Energy, Double_t &Time)
Get energy and time of hit.
virtual float put(float valueToStore)
float cfRise[MAX_NUMBER_OF_HITS]
virtual void setBaseline(float newBaseline)
virtual void Init(const std::vector< Double_t > ¶ms, TF1 *R_thres, TF1 *R_mean, float extBaselineValue=0)
virtual void setBaselineWindow(unsigned int startSample, unsigned int stopSample)
virtual void setBaseline(float newBaseline)
PndEmcPSAFPGAFilterDelay * CF_delay
virtual void init(SampleAnalyserParams ¶ms)