BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnEventSelector.h
Go to the documentation of this file.
1#ifndef BMNPILEUPREDUCTIONTASK_H
2#define BMNPILEUPREDUCTIONTASK_H
3
4#include "FairTask.h"
5
8class FairRootManager;
9class TClonesArray;
10class TFile;
11class TH2F;
12class THnSparse;
13
15{
35const std::map<int, std::string> names{
36 {kNull, "Null"}, {k0, "0"}, {k1, "1"}, {kV0, "V0"}, {kV1, "V1"},
37 {k00, "00"}, {k01, "01"}, {k0V0, "0V0"}, {k0V1, "0V1"}, {k10, "10"},
38 {k11, "11"}, {k1V0, "1V0"}, {k1V1, "1V1"}, {kMult, "Mult"}, {kUndef, "Undef"},
39};
40} // namespace BmnEventClass
41
43{
56} // namespace BmnTriggerBits
57
58class BmnBC1hitInfo : public TNamed
59{
60 friend class BmnEventSelector;
61
62 public:
64 virtual ~BmnBC1hitInfo() {};
65 std::vector<float> GetClosestBC1hitsDt(BmnEventClass::id classId)
66 {
67 std::vector<float> dt{-1.e10, 1.e10};
68 for (int i = fCentralHitIndexBC1S - 1; i >= 0; i--) {
69 if (fBC1hitClasses.at(i) == classId) {
70 dt.at(0) = fRelTimesBC1S.at(i);
71 break;
72 }
73 }
74 for (int i = fCentralHitIndexBC1S + 1; i < int(fTimesBC1S.size()); i++) {
75 if (fBC1hitClasses.at(i) == classId) {
76 dt.at(1) = fRelTimesBC1S.at(i);
77 break;
78 }
79 }
80 return dt;
81 }
82
83 std::vector<double> GetTimesBC1S() { return fTimesBC1S; }
84 std::vector<double> GetRelTimesBC1S() { return fRelTimesBC1S; }
85 std::vector<int> GetBC1hitClasses() { return fBC1hitClasses; }
86 std::vector<int> GetBC1Speaks() { return fBC1Speaks; }
87 std::vector<int> GetBC2ASpeaks() { return fBC2ASpeaks; }
88 std::vector<int> GetVCSpeaks() { return fVCSpeaks; }
89 std::vector<int> GetFDpeaks() { return fFDpeaks; }
90 std::vector<int> GetNdigitsTOF400() { return fNdigitsTOF400; }
91 std::vector<int> GetNdigitsTOF700() { return fNdigitsTOF700; }
92 std::vector<int> GetNdigitsBD() { return fNdigitsBD; }
93 std::vector<float> GetSumAmpBD() { return fSumAmpBD; }
96
97 private:
98 std::vector<double> fTimesBC1S;
99 std::vector<double> fRelTimesBC1S;
100 std::vector<int> fBC1hitClasses;
101 std::vector<int> fBC1Speaks;
102 std::vector<int> fBC2ASpeaks;
103 std::vector<int> fVCSpeaks;
104 std::vector<int> fFDpeaks;
105 std::vector<int> fNdigitsTOF400;
106 std::vector<int> fNdigitsTOF700;
107 std::vector<int> fNdigitsBD;
108 std::vector<float> fSumAmpBD;
111
113};
114
116{
117 public:
118 /** Default constructor **/
120
121 /** Constructor with parameters (Optional) **/
122 // BmnEventSelector(Int_t verbose);
123
124 /** Destructor **/
126
127 void SetRunId(int runId) { fRunId = runId; }
128 void SetOutputFileName(const char* name) { fOutputFileName = name; }
129 void SetInputFileName(const char* name) { fInputFileName = name; }
130
131 /** Initiliazation of task at the beginning of a run **/
132 virtual InitStatus Init();
133
134 void InitHistograms();
135
136 /** ReInitiliazation of task when the runID changes **/
137 virtual InitStatus ReInit();
138
139 /** Executed for each event. **/
140 virtual void Exec(Option_t* opt);
141
142 /** Load the parameter container from the runtime database **/
143 virtual void SetParContainers();
144
145 void Calculate();
146
148
149 int GetClosestHitIndex(std::vector<double> hitTimes, float refTime);
150
151 /** Finish task called at the end of the run **/
152 virtual void Finish();
153 void WriteBC1hitInfo(bool write = true) { fWriteBC1hitInfo = write; }
154 void FillCalibrationHists(bool fill = true) { fFillCalibrationHists = fill; }
155 void FillPerformanceHists(bool fill = true) { fFillPerformanceHists = fill; }
156
157 private:
160 template<typename T>
161 T ReadBranch(const char* name);
162 template<typename T>
163 T AddHist(T h)
164 {
165 fOutputList->Add(h);
166 return h;
167 }
168 template<typename T>
169 T AddHistClone(T h, const char* postfix = "")
170 {
171 auto hClone = (T)h->Clone(Form("%s%s", h->GetName(), postfix));
172 hClone->SetTitle(Form("%s%s", h->GetTitle(), postfix));
173 fOutputList->Add(hClone);
174 return hClone;
175 }
176 void FillHistograms();
177 bool FitRunDistr(std::string histName, std::vector<double>& fitPar, float fitMin = 0, float fitMax = 0);
178 int GetPeak(BmnTrigWaveDigit* digit, float timeMin = 0, float timeMax = 1e9);
179
180 std::vector<int> GetPeaks(BmnTrigWaveDigit* digit,
181 std::vector<double> hitTimes,
182 float relTimeMin,
183 float relTimeMax,
184 float relHitTimeMin = -1,
185 float relHitTimeMax = 1);
186
187 template<typename T>
188 std::vector<int> GetNdigits(TClonesArray* array, std::vector<double> hitTimes, float relTimeMin, float relTimeMax);
189 template<typename T>
190 std::vector<float> GetSumAmp(TClonesArray* digits,
191 std::vector<double> hitTimes,
192 float relTimeMin,
193 float relTimeMax);
194 FairRootManager* ioman;
212 int fRunId = 0;
213 std::string fOutputFileName = "es.root";
214 std::string fInputFileName = "all.root";
254
259
260 int fNchannelsTQDC = 450;
265 std::vector<double> fTimesBC1S;
266 std::vector<double> fRelTimesBC1S;
267 std::vector<double> fTimesVCS;
268 std::vector<double> fTimesBC2AS;
269 std::vector<double> fTimesFD;
276 float fVCSpeakTimeMax = 300;
277 float fSingleVCSpeakMin = 500;
281 float fBC2ASpeakTimeMax = 300;
285 float fFDpeakTimeMin = 0;
286 float fFDpeakTimeMax = 250;
288 float fBDtimeMin = -125;
289 float fBDtimeMax = -117;
292 float fTOF700digitTimeMin = -2080;
293 float fTOF700digitTimeMax = -2030;
297 int fRunMin{6667};
298 int fRunMax{8428};
299 unsigned int fTrigAR;
300 unsigned int fNdigitsSILICON{0};
301 unsigned int fNdigitsGEM{0};
302 std::vector<int> fBC1Speaks;
303 std::vector<int> fVCSpeaks;
304 std::vector<int> fBC2ASpeaks;
305 std::vector<int> fFDpeaks;
306 std::vector<int> fNdigitsBD;
307 std::vector<float> fSumAmpBD;
308 std::vector<int> fNdigitsTOF400;
309 std::vector<int> fNdigitsTOF700;
310 std::vector<int> fBC1hitClasses;
311 bool fNoCalibrationData = false;
312 bool fWriteBC1hitInfo = true;
316 int iEvent = -1;
317
319};
320
321#endif
int i
Definition P4_F32vec4.h:22
const char Option_t
#define ClassDef(name, id)
char * Form(const char *fmt,...)
std::vector< int > fNdigitsTOF700
std::vector< double > GetTimesBC1S()
std::vector< int > fBC2ASpeaks
std::vector< int > GetNdigitsBD()
friend class BmnEventSelector
virtual ~BmnBC1hitInfo()
std::vector< int > fBC1hitClasses
std::vector< int > GetBC2ASpeaks()
std::vector< int > fFDpeaks
BmnEventClass::id fEventClass
std::vector< double > fRelTimesBC1S
std::vector< double > fTimesBC1S
std::vector< int > fNdigitsTOF400
std::vector< int > GetBC1hitClasses()
std::vector< double > GetRelTimesBC1S()
std::vector< int > GetFDpeaks()
std::vector< float > fSumAmpBD
std::vector< int > fNdigitsBD
std::vector< int > GetVCSpeaks()
std::vector< int > GetNdigitsTOF400()
int GetCentralHitIndexBC1S()
std::vector< float > GetSumAmpBD()
std::vector< int > GetNdigitsTOF700()
BmnEventClass::id GetEventClass()
std::vector< int > fBC1Speaks
std::vector< int > GetBC1Speaks()
std::vector< int > fVCSpeaks
std::vector< float > GetClosestBC1hitsDt(BmnEventClass::id classId)
TClonesArray * fArrBDdigits
void FillPerformanceHists(bool fill=true)
TClonesArray * fArrTOF400digits
TH2F * h2runId_shapeShiftedBC1S_SingleVCS
BmnEventHeader * fEventHeader
TClonesArray * fArrTOF700digits
TClonesArray * fArrTQDC_BC1S
std::vector< int > fBC2ASpeaks
THnSparse * h5runId_trigger_eventClass_dt_nTOF700digits
TH2F * h2runId_shapeShiftedBC1S_SingleFD
void WriteBC1hitInfo(bool write=true)
TH2F * h2runId_SumAmpBD_SingleBC1S
void SetInputFileName(const char *name)
virtual InitStatus ReInit()
ReInitiliazation of task when the runID changes.
BmnTrigWaveDigit * fTQDC_FD
TClonesArray * fArrGEMdigits
std::vector< double > fTimesBC1S
void SetRunId(int runId)
std::vector< double > fTimesBC2AS
std::string fInputFileName
BmnEventClass::id fEventClassOut
BmnEventClass::id fEventClass
std::vector< int > fBC1hitClasses
int GetClosestHitIndex(std::vector< double > hitTimes, float refTime)
TH2F * h2runId_time_SingleFD_BC1S
std::vector< int > GetPeaks(BmnTrigWaveDigit *digit, std::vector< double > hitTimes, float relTimeMin, float relTimeMax, float relHitTimeMin=-1, float relHitTimeMax=1)
TH2F * h2runId_shapeShiftedBC1S_SingleBC2AS
THnSparse * h5runId_trigger_eventClass_dt_nTOF400digits
void SetOutputFileName(const char *name)
std::string fOutputFileName
T AddHistClone(T h, const char *postfix="")
T ReadBranch(const char *name)
std::vector< int > fNdigitsBD
std::vector< int > fFDpeaks
std::vector< int > fNdigitsTOF400
~BmnEventSelector()
Constructor with parameters (Optional).
TH2F * h2runId_time_SingleVCS_BC1S
std::vector< int > GetNdigits(TClonesArray *array, std::vector< double > hitTimes, float relTimeMin, float relTimeMax)
std::vector< double > fRelTimesBC1S
virtual void Finish()
Finish task called at the end of the run.
BmnBC1hitInfo fBC1hitInfo
std::vector< int > fBC1Speaks
std::vector< double > fTimesVCS
THnSparse * h5runId_trigger_eventClass_dt_nGEMdigits
BmnTrigWaveDigit * fTQDC_VCS
TH2F * h2runId_NdigitsTOF400_SingleBC1S
virtual void Exec(Option_t *opt)
Executed for each event.
bool FitRunDistr(std::string histName, std::vector< double > &fitPar, float fitMin=0, float fitMax=0)
void FillCalibrationHists(bool fill=true)
TH2F * h2runId_shapeShiftedBC1S_TOF700digit
std::vector< float > GetSumAmp(TClonesArray *digits, std::vector< double > hitTimes, float relTimeMin, float relTimeMax)
TH2F * h2runId_shapeShiftedBC1S_TOF400digit
unsigned int fNdigitsSILICON
BmnTrigWaveDigit * fTQDC_BC1S
THnSparse * h5runId_trigger_eventClass_dt_nSILICONdigits
TH2F * h2runId_NdigitsTOF700_SingleBC1S
std::vector< float > fSumAmpBD
int GetPeak(BmnTrigWaveDigit *digit, float timeMin=0, float timeMax=1e9)
virtual void SetParContainers()
Load the parameter container from the runtime database.
TClonesArray * fArrTQDC_FD
BmnEventSelector()
Default constructor.
BmnEventSelector operator=(const BmnEventSelector &)
TH2F * h2runId_shapeShiftedBC1S_BD
TClonesArray * fArrSILICONdigits
TH2F * h2runId_NdigitsBD_SingleBC1S
unsigned int fNdigitsGEM
virtual InitStatus Init()
Initiliazation of task at the beginning of a run.
TClonesArray * fArrTQDC_VCS
BmnEventClass::id Classify()
FairRootManager * ioman
TH2F * h2runId_shapeShifted_SingleBC1S
BmnTrigWaveDigit * fTQDC_BC2AS
std::vector< int > fNdigitsTOF700
std::vector< double > fTimesFD
TClonesArray * fArrTQDC_BC2AS
TH2F * h2runId_time_SingleBC2AS_BC1S
std::vector< int > fVCSpeaks
BmnEventSelector(const BmnEventSelector &)
class for TQDC data including waveform can be initialized both from an std::vector and raw pointer to...
const std::map< int, std::string > names