Diana Software
QTriggerOptimumFilter.hh
Go to the documentation of this file.
1 #ifndef _Q_TRIGGEROPTIMUMFILTER_HH_
2 #define _Q_TRIGGEROPTIMUMFILTER_HH_
3 
12 #include "QTrigger.hh"
13 #include <vector>
14 #include "QVector.hh"
15 #include "QVectorC.hh"
16 #include "QRealComplexFFT.hh"
17 
18 
20 
22  public:
23  QTriggerOptimumFilter(const QBaseModule* Reader,const string triglab) : QTrigger(Reader,triglab){optimum_filter_built=false;read_parameters=false;triggerAlgo="OPTIMUMFILTER";}
24  QTriggerOptimumFilter(const QBaseModule* Reader) : QTrigger(Reader){optimum_filter_built=false;read_parameters=false;triggerAlgo="OPTIMUMFILTER";}
25 
27 
29 
30  void TriggerStream(const vector<double>& stream);
31 
32  void Reset(){};
33 
34  bool BuildOptimumFilter();
35 
36  void SetCFGParameters(string apinput="",string aninput="",int ds=1,double trigLevl=5.,double receed=2.,string APOwner="AveragePulses",string ANOwner="NoiseAvgPowerSpectrum"){
37  average_noise=aninput;
38  average_pulse=apinput;
39  dataset = ds;
40  triggerLevel=trigLevl;
41  receed_lvl=receed;
42  apowner = APOwner;
43  anowner = ANOwner;
44  read_parameters=true;
45 
46  }
47 
48  void SetCFGParameters(vector<TString> params){
49  SetCFGParameters(params[0].Data(),params[1].Data(),params[2].Atoi(),params[3].Atof(),params[4].Atof(),params[5].Data(),params[6].Data());
50  }
51 
52  std::string GetParameters(const bool useDesc=false)const{
53  std::ostringstream out;
54  out.str("");
55  if(useDesc){
56  out<<"APFile : "<<average_pulse<<std::endl;
57  out<<"ANFile : "<<average_noise<<std::endl;
58  out<<"Dataset: "<<dataset<<std::endl;
59  out<<"TriggerLevel: "<<triggerLevel<<std::endl;
60  out<<"Receed: "<<receed_lvl<<std::endl;
61  out<<"APOwner: "<<apowner<<std::endl;
62  out<<"ANOwner: "<<anowner<<std::endl;
63  }else{
64  out<<"[ "<<average_pulse<<" "
65  <<average_noise<<" "
66  <<dataset<<" "
67  <<triggerLevel<<" "
68  <<receed_lvl<<" "
69  <<apowner<<" "
70  <<anowner<<" ]";
71  }
72  return out.str();
73  }
74 
75 
76  void GetParametersFromCFG();
77 
78  const Diana::QVector& Filter(const QVector& window_stream);
79 
80  const Diana::QVector& GetAveragePulse(){return ap;}
81  const Diana::QVector& GetAveragePulseDoubled(){return ap_d;}
82  const Diana::QVector& GetAveragePulseDoubledSmoothed(){return smoothed_ap;}
83  const Diana::QVector& GetAveragePulseSmoothing(){return smoothing_ap;}
84  const Diana::QVector& GetAveragePulseFiltered(){return apfilt;}
85 
86  const Diana::QVector& GetFilterTD(){return fFilterTD;}
87  const Diana::QVector& GetFilterTDDoubled(){return fFilterTD_d;}
88 
89  const Diana::QVector& GetAverageNoise(){return an;}
90  const Diana::QVector& GetFilteredWindow(){return filt_stream_window;}
91 
92  const Diana::QVectorC& GetFilterFD(){return fFilter1;}
93  const Diana::QVectorC& GetFilterFDDoubled(){return fFilterFD_d;}
94  const Diana::QVectorC& GetAveragePulseFD(){return ap_FD;}
95 
96  double GetTriggerLevel(){return triggerLevel*rms;}
97 
99 
100  double GetAPMax(){return ap_max_norm;}
101 
103 
104  private:
105 
108  //string extraLabel;
109  string apowner;
110  string anowner;
111  double triggerLevel;
113 
114  int dataset;
116 
117  Diana::QVector filt_stream_window;//
118  Diana::QVector fFilterTD_d;//
119  Diana::QVector fFilterTD;//
120 
121  Diana::QVector an;//
122 
123  Diana::QVector ap;//
124  Diana::QVector ap_d;//
125  Diana::QVector smoothed_ap;//
126  Diana::QVector apfilt;//
127  Diana::QVector smoothing_ap;//
128 
129  Diana::QVectorC fFilterFD_d;
130  Diana::QVectorC fFilter1;
131  Diana::QVectorC ap_FD;
132 
134  double receed_lvl;
135 
136  Diana::QRealComplexFFT* fTransformer;
137  Diana::QRealComplexFFT* fTransformer_d;
138  double ap_max_norm;
139 
140 };
142 
143 #endif
#define Q_END_NAMESPACE
Definition: QDiana.hh:22
#define Q_BEGIN_NAMESPACE
Definition: QDiana.hh:20
Base class for modules.
Definition: QBaseModule.hh:57
Class for triggering signal streams.
const Diana::QVector & GetFilteredWindow()
const Diana::QVector & GetAveragePulseFiltered()
const Diana::QVectorC & GetFilterFD()
const Diana::QVector & GetAveragePulseDoubled()
const Diana::QVector & GetAveragePulseDoubledSmoothed()
const Diana::QVectorC & GetAveragePulseFD()
const Diana::QVector & GetFilterTD()
QTriggerOptimumFilter(const QBaseModule *Reader, const string triglab)
QTriggerOptimumFilter(const QBaseModule *Reader)
std::string GetParameters(const bool useDesc=false) const
const Diana::QVector & GetAveragePulseSmoothing()
const Diana::QVector & GetAverageNoise()
Diana::QRealComplexFFT * fTransformer
const Diana::QVector & GetFilterTDDoubled()
const Diana::QVector & GetAveragePulse()
ClassDef(QTriggerOptimumFilter, 0)
const Diana::QVectorC & GetFilterFDDoubled()
void SetCFGParameters(vector< TString > params)
void SetCFGParameters(string apinput="", string aninput="", int ds=1, double trigLevl=5., double receed=2., string APOwner="AveragePulses", string ANOwner="NoiseAvgPowerSpectrum")
void TriggerStream(const vector< double > &stream)
Diana::QRealComplexFFT * fTransformer_d
const Diana::QVector & Filter(const QVector &window_stream)
Base class for trigger algorithms.
Definition: QTrigger.hh:28
string triggerAlgo
Definition: QTrigger.hh:114
double rms
Definition: QTrigger.hh:108
Interface for vectors in Diana analysis.
Definition: QVector.hh:30