FairRoot/PandaRoot
PndEmcPSAFPGAIntegratingAnalyser.cxx
Go to the documentation of this file.
2 
7 
8 #include <string>
9 #include <iostream>
10 
13 }
14 
17 }
18 
20 }
21 
23  local_time = 0;
24  Number_of_hits = 0;
27  pulse_detected = false;
28  return;
29 }
30 
31 void PndEmcPSAFPGAIntegratingAnalyser::put(float valueToStore) {
32  // std::cout << valueToStore << " ";
33  float signal = valueToStore - baseline_value;
34  float signal_delayed = Signal_delay->put(signal);
35  float cf_value = CF_filter->put(signal);
36  float cf_value_delayed = CF_delay->put(cf_value);
37  float ma_value = MA_triggering->put(signal);
38 
39  if(local_time < 30){ //first 30 samples are baseline
40  baseline_value *=local_time;
41  baseline_value += valueToStore;
42  baseline_value /=local_time+1;
43  local_time++;
44  // std::cout << baseline_value << " ";
45  return;
46  }
47 
48  int dT = local_time - rough_pulse_timing;
49  if (!pulse_detected) {
50  if((cf_value_delayed < 0.0) && (cf_value > 0.0) && (ma_value > analyserParams.hit_threshold)){
51  // hit detected
52  // CF
53  CF_Fitter->reset();
54  CF_Fitter->putPoint(local_time, cf_value_delayed);
56  pulse_detected = true;
57  rough_pulse_timing = local_time;
58  integral[Number_of_hits] = 0.0;
60  }
61  } else {
62  // CF timing
64  CF_Fitter->putPoint(local_time, cf_value_delayed);
66  }
67  // Integral
68  integral[Number_of_hits] += signal_delayed;
69  // Amplitude
70  if((dT < 2*analyserParams.cf_delay) && (signal_delayed > amplitude[Number_of_hits])) {
71  amplitude[Number_of_hits] = signal_delayed;
72  }
73  // Finalize pulse detection
75  pulse_detected = false;
76  CF_Fitter->fit();
77  double a = CF_Fitter->offset();
78  double k = CF_Fitter->slope();
79  time[Number_of_hits] = 0.0;
80  if(k > 0)
81  time[Number_of_hits] = -a/k;
82  Number_of_hits++;
83  }
84  }
85 
86  local_time++;
87 }
88 
float put(float valueToStore)
float integral[MAX_NUMBER_OF_HITS]
float put(float valueToStore)
void putPoint(double ix, double iy)
float amplitude[MAX_NUMBER_OF_HITS]
Int_t a
Definition: anaLmdDigi.C:126
PndEmcPSAFPGAFilterDelay * Signal_delay
virtual float put(float valueToStore)
ClassImp(PndAnaContFact)
PndEmcPSAFPGAFilterDelay * CF_delay