BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CheckTriggerEfficiencyInterfaceRun8.C
Go to the documentation of this file.
1// root -b -q CheckTriggerEfficiencyInterfaceRun8.C
2
4 TString fileName = "/eos/lpp/nica/bmn/exp/dst/run8/25.09.0/mpd_run_Top_7842_ev0_p0.root")
5{
6 FairLogger::GetLogger()->SetLogToScreen(true);
7 FairLogger::GetLogger()->SetLogScreenLevel("info"); // for info write "INFO"
8
9 // Check event for analysis
10
11#if 1
12 /////////////////////////////
13 cout << "Use case 1" << endl;
14 /////////////////////////////
15
16 // BmnTriggerEfficiencyRun8 *pTE1 = new
17 // BmnTriggerEfficiencyRun8("/eos/lpp/nica/bmn/exp/dst/run8/25.04.0/mpd_run_Top_7842_ev0_p0.root");
18 // BmnTriggerEfficiencyRun8 *pTE1 = new
19 // BmnTriggerEfficiencyRun8("/eos/lpp/nica/bmn/exp/dst/run8/25.04.0/mpd_run_Top_7850_ev0_p10.root");
21 if (!pTE1->IsValid())
22 return;
23 Int_t nAnalysableEvents1 = 0;
24 for (Int_t i = 0; i < 25004; i++) {
25 if (i % 1000 == 0)
26 cout << i << "/" << 25004 << endl;
27 if (pTE1->IsEventAnalysable(i))
28 nAnalysableEvents1++;
29 }
30 cout << "nAnalysableEvents1 = " << nAnalysableEvents1 << endl;
31 delete pTE1;
32#endif
33
34#if 1
35 /////////////////////////////
36 cout << "Use case 2" << endl;
37 /////////////////////////////
38
39 TFile* file = TFile::Open(fileName, "READONLY");
40 TTree* tree = (TTree*)file->Get("bmndata");
41
42 BmnTrigInfoDst* trigInfo = nullptr;
43 tree->SetBranchAddress("BmnTrigInfo.", &trigInfo);
44 CbmVertex* mpdVertex = nullptr;
45 tree->SetBranchAddress("MpdVertex.", &mpdVertex);
46 TClonesArray* hits400 = nullptr;
47 tree->SetBranchAddress("BmnTof400Hit", &hits400);
48 TClonesArray* hits700 = nullptr;
49 tree->SetBranchAddress("BmnTof700Hit", &hits700);
50
51 Ssiz_t startCh = fileName.Index("mpd_run_Top_") + TString("mpd_run_Top_").Sizeof() - 1;
52 Int_t run = (Short_t)((TString(fileName(startCh, 4))).Atoi());
53 cout << "run = " << run << endl;
54
55 BmnTriggerEfficiencyRun8* pTE2 = new BmnTriggerEfficiencyRun8(run, trigInfo, mpdVertex, hits400, hits700);
56 if (!pTE2->IsValid())
57 return;
58 Int_t nAnalysableEvents2 = 0;
59 Double_t sumEff, sumStatErr, sumSystErr, sumErrSystErr;
60 sumEff = sumStatErr = sumSystErr = sumErrSystErr = 0.;
61
62 Int_t nEvents = tree->GetEntries();
63 for (Int_t i = 0; i < nEvents; i++) {
64 if (i % 1000 == 0)
65 cout << i << "/" << nEvents << endl;
66 tree->GetEntry(i);
67
68 if (pTE2->IsEventAnalysable()) {
69 nAnalysableEvents2++;
70 Double_t eff0, statErr0, systErr0, errSystErr0;
71 if (pTE2->GetTriggerEfficiencyWithErrors(eff0, statErr0, systErr0, errSystErr0)) {
72 // cout << "ev" << i << ": " << eff0 << " " << statErr0 << " " << systErr0 << " " << errSystErr0 <<
73 // endl;
74 sumEff += eff0;
75 sumStatErr += statErr0 * statErr0;
76 sumSystErr += systErr0 * systErr0;
77 sumErrSystErr += errSystErr0 * errSystErr0;
78 } else {
79 cout << "Can not get efficiency for event " << i << endl;
80 }
81 }
82 }
83 sumStatErr = sqrt(sumStatErr);
84 sumSystErr = sqrt(sumSystErr);
85 sumErrSystErr = sqrt(sumErrSystErr);
86
87 cout << "nAnalysableEvents2 = " << nAnalysableEvents2 << endl;
88 cout << "sumEff = " << sumEff << "+/-" << sumStatErr << "+/-" << sumSystErr << "+/-" << sumErrSystErr << endl;
89 delete pTE2;
90#endif
91
92#if 1
93 // BmnTriggerEfficiencyRun8();
95 if (!te.IsValid())
96 return;
97
98 // BD
99 cout << "EffBD(7842, 15) = " << te.GetBDEfficiency(7842, 15) << endl;
100 cout << "EffBD(5000, 15) = " << te.GetBDEfficiency(5000, 15) << endl;
101 cout << "EffBD(8000, 75) = " << te.GetBDEfficiency(8000, 75) << endl;
102
103 // Check edges
104 cout << "EffBD(6967, 40) = " << te.GetBDEfficiency(6967, 40) << endl;
105 cout << "EffBD(6968, 40) = " << te.GetBDEfficiency(6968, 40) << endl;
106 cout << "EffBD(8306, 40) = " << te.GetBDEfficiency(8306, 40) << endl;
107 cout << "EffBD(8307, 40) = " << te.GetBDEfficiency(8307, 40) << endl;
108
109 cout << "EffBD(8000, 1) = " << te.GetBDEfficiency(8000, 1) << endl;
110 cout << "EffBD(8000, 2) = " << te.GetBDEfficiency(8000, 2) << endl;
111 cout << "EffBD(8000, 69) = " << te.GetBDEfficiency(8000, 69) << endl;
112
113 // BD
114 cout << "EffFD(7842, 15) = " << te.GetFDEfficiency(7842, 15) << endl;
115 cout << "EffFD(5000, 15) = " << te.GetFDEfficiency(5000, 15) << endl;
116 cout << "EffFD(8000, 75) = " << te.GetFDEfficiency(8000, 75) << endl;
117
118 // Check edges
119 cout << "EffFD(6967, 40) = " << te.GetFDEfficiency(6967, 40) << endl;
120 cout << "EffFD(6968, 40) = " << te.GetFDEfficiency(6968, 40) << endl;
121 cout << "EffFD(8306, 40) = " << te.GetFDEfficiency(8306, 40) << endl;
122 cout << "EffFD(8307, 40) = " << te.GetFDEfficiency(8307, 40) << endl;
123
124 cout << "EffFD(8000, 1) = " << te.GetFDEfficiency(8000, 1) << endl;
125 cout << "EffFD(8000, 2) = " << te.GetFDEfficiency(8000, 2) << endl;
126 cout << "EffFD(8000, 69) = " << te.GetFDEfficiency(8000, 69) << endl;
127
128 // BDxFD
129 cout << "EffBDxFD(7842, 15) = " << te.GetTriggerEfficiency(7842, 15) << endl;
130 cout << "EffBDxFD(5000, 15) = " << te.GetTriggerEfficiency(5000, 15) << endl;
131 cout << "EffBDxFD(8000, 75) = " << te.GetTriggerEfficiency(8000, 75) << endl;
132
133 // Check edges
134 cout << "EffBDxFD(6967, 40) = " << te.GetTriggerEfficiency(6967, 40) << endl;
135 cout << "EffBDxFD(6968, 40) = " << te.GetTriggerEfficiency(6968, 40) << endl;
136 cout << "EffBDxFD(8306, 40) = " << te.GetTriggerEfficiency(8306, 40) << endl;
137 cout << "EffBDxFD(8307, 40) = " << te.GetTriggerEfficiency(8307, 40) << endl;
138
139 cout << "EffBDxFD(8000, 1) = " << te.GetTriggerEfficiency(8000, 1) << endl;
140 cout << "EffBDxFD(8000, 2) = " << te.GetTriggerEfficiency(8000, 2) << endl;
141 cout << "EffBDxFD(8000, 69) = " << te.GetTriggerEfficiency(8000, 69) << endl;
142
143 // GetTriggerEfficiencyWithErrors()
144 Double_t eff, statErr, systErr, errSystErr;
145 if (te.GetTriggerEfficiencyWithErrors(7842, 15, eff, statErr, systErr, errSystErr)) {
146 cout << "EffAndErr(7842, 15): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
147 << ", errSystErr = " << errSystErr << endl;
148 }
149 if (te.GetTriggerEfficiencyWithErrors(5000, 15, eff, statErr, systErr, errSystErr)) {
150 cout << "EffAndErr(5000, 15): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
151 << ", errSystErr = " << errSystErr << endl;
152 }
153 if (te.GetTriggerEfficiencyWithErrors(8000, 75, eff, statErr, systErr, errSystErr)) {
154 cout << "EffAndErr(8000, 75): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
155 << ", errSystErr = " << errSystErr << endl;
156 }
157
158 // Check edges
159 if (te.GetTriggerEfficiencyWithErrors(6967, 40, eff, statErr, systErr, errSystErr)) {
160 cout << "EffAndErr(6967, 40): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
161 << ", errSystErr = " << errSystErr << endl;
162 }
163 if (te.GetTriggerEfficiencyWithErrors(6968, 40, eff, statErr, systErr, errSystErr)) {
164 cout << "EffAndErr(6968, 40): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
165 << ", errSystErr = " << errSystErr << endl;
166 }
167 if (te.GetTriggerEfficiencyWithErrors(8306, 40, eff, statErr, systErr, errSystErr)) {
168 cout << "EffAndErr(8306, 40): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
169 << ", errSystErr = " << errSystErr << endl;
170 }
171 if (te.GetTriggerEfficiencyWithErrors(8307, 40, eff, statErr, systErr, errSystErr)) {
172 cout << "EffAndErr(8307, 40): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
173 << ", errSystErr = " << errSystErr << endl;
174 }
175
176 if (te.GetTriggerEfficiencyWithErrors(8000, 1, eff, statErr, systErr, errSystErr)) {
177 cout << "EffAndErr(8000, 1): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
178 << ", errSystErr = " << errSystErr << endl;
179 }
180 if (te.GetTriggerEfficiencyWithErrors(8000, 2, eff, statErr, systErr, errSystErr)) {
181 cout << "EffAndErr(8000, 2): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
182 << ", errSystErr = " << errSystErr << endl;
183 }
184 if (te.GetTriggerEfficiencyWithErrors(8000, 69, eff, statErr, systErr, errSystErr)) {
185 cout << "EffAndErr(8000, 69): eff = " << eff << ", " << "statErr = " << statErr << ", systErr = " << systErr
186 << ", errSystErr = " << errSystErr << endl;
187 }
188#endif
189
190#if 1
191 /////////////////////////////
192 cout << "Use case 3" << endl;
193 /////////////////////////////
194
196 if (!pTE3->IsValid())
197 return;
198 Int_t runId = 7830;
199 Double_t factor, err;
200 if (pTE3->GetFluxRejectionFactorWithError(runId, factor, err)) {
201 cout << "FluxRejAndErr(7830): factor = " << factor << ", " << "err = " << err << endl;
202 } else {
203 cout << "Can not get flux rejection factor for run " << runId << endl;
204 }
205
206#if 1
207 if (pTE3->GetFluxRejectionFactorWithError(6968, factor, err)) {
208 cout << "FluxRejAndErr(6968): factor = " << factor << ", " << "err = " << err << endl;
209 }
210 if (pTE3->GetFluxRejectionFactorWithError(7115, factor, err)) {
211 cout << "FluxRejAndErr(7115): factor = " << factor << ", " << "err = " << err << endl;
212 }
213 if (pTE3->GetFluxRejectionFactorWithError(8306, factor, err)) {
214 cout << "FluxRejAndErr(8306): factor = " << factor << ", " << "err = " << err << endl;
215 }
216#endif
217
218 delete pTE3;
219#endif
220
221 return;
222}
int i
Definition P4_F32vec4.h:22
int Int_t
int Ssiz_t
short Short_t
double Double_t
Double_t GetFDEfficiency(Int_t runId, Int_t ntrPV)
Double_t GetTriggerEfficiency(Int_t runId, Int_t ntrPV)
Bool_t GetFluxRejectionFactorWithError(Int_t runId, Double_t &factor, Double_t &err)
Bool_t GetTriggerEfficiencyWithErrors(Int_t runId, Int_t ntrPV, Double_t &eff, Double_t &statErr, Double_t &systErr, Double_t &errSystErr)
Double_t GetBDEfficiency(Int_t runId, Int_t ntrPV)
CbmVertex.h.
Definition CbmVertex.h:21
T * Get(const char *namecycle)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
virtual Int_t Sizeof() const
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
virtual Long64_t GetEntries() const
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
RVec< PromoteType< T > > sqrt(const RVec< T > &v)
void CheckTriggerEfficiencyInterfaceRun8(TString fileName="/eos/lpp/nica/bmn/exp/dst/run8/25.09.0/mpd_run_Top_7842_ev0_p0.root")