FairRoot/PandaRoot
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PndEmcPSAFPGAIntegratingAnalyser Class Reference

#include <PndEmcPSAFPGAIntegratingAnalyser.h>

Inheritance diagram for PndEmcPSAFPGAIntegratingAnalyser:
PndEmcPSAFPGASampleAnalyser PndEmcAbsPSA

Public Types

enum  status_t {
  kBaseline, kInPulse, kPulseDetected, kPulseFinished,
  kPileupFinished, kUndefined =99
}
 

Public Member Functions

 PndEmcPSAFPGAIntegratingAnalyser ()
 
 PndEmcPSAFPGAIntegratingAnalyser (const std::string &fname)
 
virtual ~PndEmcPSAFPGAIntegratingAnalyser ()
 
virtual float baseline ()
 
virtual void reset ()
 
virtual void put (float valueToStore)
 
 ClassDef (PndEmcPSAFPGAIntegratingAnalyser, 1)
 
virtual void initFromFile (const std::string &fname)
 
virtual void setBaseline (float newBaseline)
 
int nHits ()
 
float sampleTime (int index)
 
float sampleAmplitude (int index)
 
float sampleIntegral (int index)
 
virtual Int_t Process (const PndEmcWaveform *waveform)
 Find Hits in Waveform. More...
 
virtual void Process (const PndEmcWaveform *waveform, Double_t &amplitude, Double_t &time)
 Deprecated. Do not use. More...
 
virtual void Reset ()
 reset found hits More...
 
virtual void GetHit (Int_t i, Double_t &energy, Double_t &time)
 Get energy and time of hit. More...
 
virtual void Init (const std::vector< Double_t > &params)
 
status_t GetStatus ()
 
 ClassDef (PndEmcAbsPSA, 1)
 

Protected Member Functions

virtual void init (SampleAnalyserParams &params)
 
 ClassDef (PndEmcPSAFPGASampleAnalyser, 2)
 

Protected Attributes

SampleAnalyserParams analyserParams
 
float baseline_value
 
unsigned int local_time
 
bool pulse_detected
 
int rough_pulse_timing
 
int cf_zero_crossing_points
 
PndEmcPSAFPGAFilterCFCF_filter
 
PndEmcPSAFPGAFilterMAMA_triggering
 
PndEmcPSAFPGAFilterDelayMA_delay
 
PndEmcPSAFPGAFilterDelayCF_delay
 
PndEmcPSAFPGAFilterDelaySignal_delay
 
PndEmcPSAFPGALinFitterCF_Fitter
 
int Number_of_hits
 
float time [MAX_NUMBER_OF_HITS]
 
float integral [MAX_NUMBER_OF_HITS]
 
float amplitude [MAX_NUMBER_OF_HITS]
 
status_t status
 

Detailed Description

Definition at line 14 of file PndEmcPSAFPGAIntegratingAnalyser.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

PndEmcPSAFPGAIntegratingAnalyser::PndEmcPSAFPGAIntegratingAnalyser ( )
PndEmcPSAFPGAIntegratingAnalyser::PndEmcPSAFPGAIntegratingAnalyser ( const std::string &  fname)
PndEmcPSAFPGAIntegratingAnalyser::~PndEmcPSAFPGAIntegratingAnalyser ( )
virtual

Definition at line 19 of file PndEmcPSAFPGAIntegratingAnalyser.cxx.

19  {
20 }

Member Function Documentation

virtual float PndEmcPSAFPGAIntegratingAnalyser::baseline ( )
inlinevirtual
PndEmcPSAFPGAIntegratingAnalyser::ClassDef ( PndEmcPSAFPGAIntegratingAnalyser  ,
 
)
PndEmcAbsPSA::ClassDef ( PndEmcAbsPSA  ,
 
)
inherited
PndEmcPSAFPGASampleAnalyser::ClassDef ( PndEmcPSAFPGASampleAnalyser  ,
 
)
protectedinherited
void PndEmcPSAFPGASampleAnalyser::GetHit ( Int_t  i,
Double_t energy,
Double_t time 
)
virtualinherited

Get energy and time of hit.

Parameters
Int_tIndex of Hit
Double_tEnergy of Hit
Double_tTime of Hit
Returns

Implements PndEmcAbsPSA.

Reimplemented in PndEmcPSAFPGAPileupAnalyser.

Definition at line 189 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcPSAFPGASampleAnalyser::sampleAmplitude(), and PndEmcPSAFPGASampleAnalyser::sampleTime().

Referenced by PndEmcHighLowPSA::GetHit().

189  {
190  //energy = this->sampleIntegral(i);
191  energy = this->sampleAmplitude(i);
192  t = this->sampleTime(i);
193 }
Int_t i
Definition: run_full.C:25
TTree * t
Definition: bump_analys.C:13
Double_t energy
Definition: plot_dirc.C:15
status_t PndEmcPSAFPGASampleAnalyser::GetStatus ( )
inlineinherited
void PndEmcPSAFPGASampleAnalyser::Init ( const std::vector< Double_t > &  params)
virtualinherited

Definition at line 132 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_delay, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fit_offset, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fitter_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_ratio, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::clock_unit, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::hit_threshold, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::iafactor, PndEmcPSAFPGASampleAnalyser::init(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::ma_trig_M, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_length, and PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_tau.

132  {
133  SampleAnalyserParams newParams;
134  newParams.ma_trig_M = (int) params.at(0);
135  newParams.hit_threshold = params.at(1);
136  newParams.cf_delay = (int) params.at(2);
137  newParams.cf_ratio = params.at(3);
138  newParams.cf_fitter_length = (int) params.at(4);
139  newParams.cf_fit_offset = (int) params.at(5);
140  newParams.mwd_length = (int) params.at(6);
141  newParams.mwd_tau = params.at(7);
142  newParams.clock_unit = params.at(8);
143  newParams.iafactor = params.at(9);
144  /*
145  std::cout << newParams.ma_trig_M << std::endl;
146  std::cout << newParams.hit_threshold << std::endl;
147  std::cout << newParams.cf_delay << std::endl;
148  std::cout << newParams.cf_ratio << std::endl;
149  std::cout << newParams.cf_fitter_length << std::endl;
150  std::cout << newParams.cf_fit_offset << std::endl;
151  std::cout << newParams.mwd_length << std::endl;
152  std::cout << newParams.mwd_tau << std::endl;
153 */
154  init(newParams);
155  return;
156 }
virtual void init(SampleAnalyserParams &params)
void PndEmcPSAFPGASampleAnalyser::init ( PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams params)
protectedvirtualinherited

Reimplemented in PndEmcPSAFPGADigitalFilterAnalyser.

Definition at line 45 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcPSAFPGASampleAnalyser::analyserParams, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_delay, PndEmcPSAFPGASampleAnalyser::CF_delay, PndEmcPSAFPGASampleAnalyser::CF_filter, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fit_offset, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fitter_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_ratio, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::clock_unit, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::hit_threshold, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::iafactor, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::ma_trig_M, PndEmcPSAFPGASampleAnalyser::MA_triggering, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd2_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd2_tau, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd3_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd3_tau, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_tau, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::rough_timing_corr, PndEmcPSAFPGAFilterDelay::set(), PndEmcPSAFPGAFilterMA::set(), PndEmcPSAFPGAFilterCF::set(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::sig_delay, and PndEmcPSAFPGASampleAnalyser::Signal_delay.

Referenced by PndEmcPSAFPGADigitalFilterAnalyser::init(), PndEmcPSAFPGASampleAnalyser::Init(), PndEmcPSAFPGASampleAnalyser::initFromFile(), and PndEmcPSAFPGAPileupAnalyser::InitParameters().

45  {
62 
67 
68  return;
69 }
void set(unsigned int newBufferSize)
void set(unsigned int newBufferSize, float newRatio)
PndEmcPSAFPGAFilterDelay * Signal_delay
void set(unsigned int newBufferSize)
PndEmcPSAFPGAFilterDelay * CF_delay
void PndEmcPSAFPGASampleAnalyser::initFromFile ( const std::string &  fname)
virtualinherited

Definition at line 71 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_delay, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fit_offset, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fitter_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_ratio, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::clock_unit, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::hit_threshold, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::iafactor, PndEmcPSAFPGASampleAnalyser::init(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::ma_trig_M, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_length, and PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_tau.

Referenced by PndEmcPSAFPGASampleAnalyser::PndEmcPSAFPGASampleAnalyser().

71  {// fname //[R.K.03/2017] unused variable(s)
72  SampleAnalyserParams newParams;
73  newParams.hit_threshold = 200;
74  newParams.ma_trig_M = 30;
75  newParams.cf_delay = 5;
76  newParams.cf_ratio = 0.15;
77  newParams.cf_fitter_length = 5;
78  newParams.cf_fit_offset = 2;
79  newParams.mwd_length = 90;
80  newParams.mwd_tau = 2500;
81  newParams.clock_unit = 10;//ns
82  newParams.iafactor= 1.;//ns
83 
84 /* std::ifstream ifile(fname.c_str());
85  if(!ifile) {
86  std::cerr << "Can not open input file: " << fname << "\n";
87  exit(1);
88  }
89 
90  std::set<std::string> options;
91  options.insert("MWD_Tau");
92  options.insert("MWD_Length");
93  options.insert("TR_Thresh");
94  options.insert("CFD_Ratio");
95  options.insert("CFD_Delay");
96  options.insert("Fit_ofset");
97  options.insert("Fitter_L");
98  options.insert("MA_trig");
99 
100  //parser
101  for (pod::config_file_iterator i(ifile, options), e ; i != e; ++i) {
102  if (i->string_key == "MWD_Tau") {
103  newParams.mwd_tau = atof((i->value[0]).c_str());
104  }
105  if (i->string_key == "MWD_Length") {
106  newParams.mwd_length = atoi((i->value[0]).c_str());
107  }
108  if (i->string_key == "TR_Thresh") {
109  newParams.hit_threshold = atof((i->value[0]).c_str());
110  }
111  if (i->string_key == "CFD_Ratio") {
112  newParams.cf_ratio = atof((i->value[0]).c_str());
113  }
114  if (i->string_key == "CFD_Delay") {
115  newParams.cf_delay = atoi((i->value[0]).c_str());
116  }
117  if (i->string_key == "Fit_ofset") {
118  newParams.cf_fit_offset = atoi((i->value[0]).c_str());
119  }
120  if (i->string_key == "Fitter_L") {
121  newParams.cf_fitter_length = atoi((i->value[0]).c_str());
122  }
123  if (i->string_key == "MA_trig") {
124  newParams.ma_trig_M = atoi((i->value[0]).c_str());
125  }
126  }
127 
128  ifile.close();*/
129  init(newParams);
130  return;
131 }
virtual void init(SampleAnalyserParams &params)
int PndEmcPSAFPGASampleAnalyser::nHits ( )
inlineinherited
Int_t PndEmcPSAFPGASampleAnalyser::Process ( const PndEmcWaveform waveform)
virtualinherited

Find Hits in Waveform.

Parameters
PndEmcWaveform
Returns
Return number of hits, negative if an error occurred

Implements PndEmcAbsPSA.

Reimplemented in PndEmcPSAFPGADigitalFilterAnalyser.

Definition at line 177 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcWaveform::GetSignal(), PndEmcPSAFPGASampleAnalyser::nHits(), PndEmcPSAFPGASampleAnalyser::put(), and PndEmcPSAFPGASampleAnalyser::reset().

177  {
178  //std::cout<<"PndEmcPSAFPGASampleAnalyser::Process#"<<waveform->GetTimeStamp()
179  // <<", "<<waveform->GetActiveTime()<<std::endl;
180  reset();
181  std::vector<double> signal = waveform->GetSignal();
182  std::vector<double>::iterator it;
183  for(it = signal.begin(); it < signal.end();it++){
184  this->put(*it);
185  }
186  return this->nHits();
187 }
virtual std::vector< double > GetSignal() const
virtual void put(float valueToStore)=0
void PndEmcAbsPSA::Process ( const PndEmcWaveform waveform,
Double_t amplitude,
Double_t time 
)
virtualinherited

Deprecated. Do not use.

Parameters
PndEmcWaveform
Double_t
Double_t
Returns

Reimplemented in PndEmcPSAMatchedDigiFilter, PndEmcPSAParabolic, PndEmcPSAParabolicBaseline, and PndEmcPSATrapDigiFilter.

Definition at line 2 of file PndEmcAbsPSA.cxx.

References PndEmcAbsPSA::GetHit(), and PndEmcAbsPSA::Process().

2  {
3  if(Process(waveform)>0){
4  GetHit(0,amplitude,time);
5  }else{
6  amplitude = 0.;
7  time = 0.;
8  }
9  }; //deprecated do not use
virtual Int_t Process(const PndEmcWaveform *waveform)=0
Find Hits in Waveform.
virtual void GetHit(Int_t i, Double_t &energy, Double_t &time)=0
Get energy and time of hit.
void PndEmcPSAFPGAIntegratingAnalyser::put ( float  valueToStore)
virtual

Implements PndEmcPSAFPGASampleAnalyser.

Definition at line 31 of file PndEmcPSAFPGAIntegratingAnalyser.cxx.

References a, PndEmcPSAFPGASampleAnalyser::amplitude, PndEmcPSAFPGASampleAnalyser::analyserParams, PndEmcPSAFPGASampleAnalyser::baseline_value, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_delay, PndEmcPSAFPGASampleAnalyser::CF_delay, PndEmcPSAFPGASampleAnalyser::CF_filter, PndEmcPSAFPGASampleAnalyser::CF_Fitter, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fitter_length, PndEmcPSAFPGASampleAnalyser::cf_zero_crossing_points, PndEmcPSAFPGALinFitter::fit(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::hit_threshold, PndEmcPSAFPGASampleAnalyser::integral, PndEmcPSAFPGASampleAnalyser::local_time, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::ma_trig_M, PndEmcPSAFPGASampleAnalyser::MA_triggering, PndEmcPSAFPGASampleAnalyser::Number_of_hits, PndEmcPSAFPGALinFitter::offset(), PndEmcPSAFPGASampleAnalyser::pulse_detected, PndEmcPSAFPGAFilterDelay::put(), PndEmcPSAFPGAFilterMA::put(), PndEmcPSAFPGAFilterCF::put(), PndEmcPSAFPGALinFitter::putPoint(), PndEmcPSAFPGALinFitter::reset(), PndEmcPSAFPGASampleAnalyser::rough_pulse_timing, PndEmcPSAFPGASampleAnalyser::Signal_delay, PndEmcPSAFPGALinFitter::slope(), and PndEmcPSAFPGASampleAnalyser::time.

31  {
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 }
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)
PndEmcPSAFPGAFilterDelay * CF_delay
void PndEmcPSAFPGAIntegratingAnalyser::reset ( )
virtual
virtual void PndEmcPSAFPGASampleAnalyser::Reset ( )
inlinevirtualinherited

reset found hits

Returns

Reimplemented from PndEmcAbsPSA.

Definition at line 34 of file PndEmcPSAFPGASampleAnalyser.h.

References PndEmcPSAFPGASampleAnalyser::reset().

Referenced by PndEmcHighLowPSA::Reset().

34 {this->reset();};
float PndEmcPSAFPGASampleAnalyser::sampleAmplitude ( int  index)
inherited
float PndEmcPSAFPGASampleAnalyser::sampleIntegral ( int  index)
inherited

Definition at line 171 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcPSAFPGASampleAnalyser::integral, and PndEmcPSAFPGASampleAnalyser::nHits().

Referenced by PndEmcPSAFPGAPileupAnalyser::GetEnergyMeasures().

171  {
172  if (index < nHits() && index >= 0)
173  return integral[index];
174  return 0.0;
175 }
float integral[MAX_NUMBER_OF_HITS]
float PndEmcPSAFPGASampleAnalyser::sampleTime ( int  index)
inherited

Definition at line 159 of file PndEmcPSAFPGASampleAnalyser.cxx.

References PndEmcPSAFPGASampleAnalyser::nHits(), and PndEmcPSAFPGASampleAnalyser::time.

Referenced by PndEmcPSAFPGAPileupAnalyser::GetHit(), and PndEmcPSAFPGASampleAnalyser::GetHit().

159  {
160  if (index < nHits() && index >= 0)
161  return time[index];
162  return 0.0;
163 }
virtual void PndEmcPSAFPGASampleAnalyser::setBaseline ( float  newBaseline)
inlinevirtualinherited

Member Data Documentation

float PndEmcPSAFPGASampleAnalyser::amplitude[MAX_NUMBER_OF_HITS]
protectedinherited
SampleAnalyserParams PndEmcPSAFPGASampleAnalyser::analyserParams
protectedinherited
float PndEmcPSAFPGASampleAnalyser::baseline_value
protectedinherited
PndEmcPSAFPGAFilterDelay* PndEmcPSAFPGASampleAnalyser::CF_delay
protectedinherited
PndEmcPSAFPGAFilterCF* PndEmcPSAFPGASampleAnalyser::CF_filter
protectedinherited
PndEmcPSAFPGALinFitter* PndEmcPSAFPGASampleAnalyser::CF_Fitter
protectedinherited
int PndEmcPSAFPGASampleAnalyser::cf_zero_crossing_points
protectedinherited

Definition at line 69 of file PndEmcPSAFPGASampleAnalyser.h.

Referenced by PndEmcPSAFPGADigitalFilterAnalyser::put(), and put().

float PndEmcPSAFPGASampleAnalyser::integral[MAX_NUMBER_OF_HITS]
protectedinherited
unsigned int PndEmcPSAFPGASampleAnalyser::local_time
protectedinherited
PndEmcPSAFPGAFilterDelay* PndEmcPSAFPGASampleAnalyser::MA_delay
protectedinherited
PndEmcPSAFPGAFilterMA* PndEmcPSAFPGASampleAnalyser::MA_triggering
protectedinherited
int PndEmcPSAFPGASampleAnalyser::Number_of_hits
protectedinherited
bool PndEmcPSAFPGASampleAnalyser::pulse_detected
protectedinherited
int PndEmcPSAFPGASampleAnalyser::rough_pulse_timing
protectedinherited
PndEmcPSAFPGAFilterDelay* PndEmcPSAFPGASampleAnalyser::Signal_delay
protectedinherited
status_t PndEmcPSAFPGASampleAnalyser::status
protectedinherited
float PndEmcPSAFPGASampleAnalyser::time[MAX_NUMBER_OF_HITS]
protectedinherited

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