Belle II Software development
TRGECLDQMModule.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <trg/ecl/modules/trgeclDQM/TRGECLDQMModule.h>
10#include <trg/ecl/TrgEclMapping.h>
11#include <trg/ecl/TrgEclCluster.h>
12#include <trg/ecl/TrgEclDataBase.h>
13
14#include <framework/datastore/StoreArray.h>
15
16#include <TDirectory.h>
17
18#include <TH1D.h>
19#include <TH2D.h>
20
21using namespace Belle2;
22
23REG_MODULE(TRGECLDQM);
24
25
27{
28
29
30 setDescription("DQM for ECL Trigger system");
32
33 TCId.clear();
34 TCHitWin.clear();
35 TCEnergy.clear();
36 TCTiming.clear();
37 RevoFAM.clear();
38 RevoTrg.clear();
39 FineTiming.clear();
40
41}
42
43
45{
46
47}
48
49
51{
52 TDirectory* oldDir = gDirectory;
53 TDirectory* dirDQM = gDirectory->mkdir("TRG", "", true);
54 dirDQM->cd();
55
56 h_TCId = new TH1D("h_TCId", "[TRGECL] Hit TC ID", 578, 0, 578);
57 h_TCthetaId = new TH1D("h_TCthetaId", "[TRGECL] Hit TC #theta ID", 19, 0, 19);
58 h_TCphiId_FWD = new TH1D("h_TCphiId_FWD", "[TRGECL] Hit TC #phi ID in FWD", 34, 0, 34);
59 h_TCphiId_BR = new TH1D("h_TCphiId_BR", "[TRGECL] Hit TC #phi ID in BR", 38, 0, 38);
60 h_TCphiId_BWD = new TH1D("h_TCphiId_BWD", "[TRGECL] Hit TC #phi ID in BWD", 34, 0, 34);
61 h_TotalEnergy = new TH1D("h_TotalEnergy", "[TRGECL] Total TC Energy (ADC)", 100, 0, 3000);
62 h_TCEnergy = new TH1D("h_TCEnergy", "[TRGECL] TC Energy (ADC)", 100, 0, 1500);
63 h_Narrow_TotalEnergy = new TH1D("h_Narrow_TotalEnergy", "[TRGECL] Total TC Energy (ADC)", 100, 0, 500);
64 h_Narrow_TCEnergy = new TH1D("h_Narrow_TCEnergy", "[TRGECL] TC Energy (ADC)", 100, 0, 100);
65 h_n_TChit_event = new TH1D("h_n_TChit_event", "[TRGECL] N(TC) ", 50, 0, 50);
66 h_n_TChit_clean = new TH1D("h_n_TChit_clean", "[TRGECL] N(TC) (Injection BG Clean)", 300, 0, 300);
67 h_n_TChit_injHER = new TH1D("h_n_TChit_injHER", "[TRGECL] N(TC) (HER Injection BG)", 300, 0, 300);
68 h_n_TChit_injLER = new TH1D("h_n_TChit_injLER", "[TRGECL] N(TC) (LER Injection BG)", 300, 0, 300);
69 h_nTChit_injtime = new TH2D("h_nTChit_injtime", "[TRGECL] N(TC) vs. Time since injection", 201, 0, 200, 100, 0, 50);
70 h_n_TChit_event_2clk = new TH1D("h_n_TChit_event_2clk", "[TRGECL] N(TC_2clk) ", 50, 0, 50);
71 h_n_TChit_clean_2clk = new TH1D("h_n_TChit_clean_2clk", "[TRGECL] N(TC_2clk) (Injection BG Clean)", 300, 0, 300);
72 h_n_TChit_injHER_2clk = new TH1D("h_n_TChit_injHER_2clk", "[TRGECL] N(TC_2clk) (HER Injection BG)", 300, 0, 300);
73 h_n_TChit_injLER_2clk = new TH1D("h_n_TChit_injLER_2clk", "[TRGECL] N(TC_2clk) (LER Injection BG)", 300, 0, 300);
74 h_nTChit_injtime_2clk = new TH2D("h_nTChit_injtime_2clk", "[TRGECL] N(TC_2clk) vs. Time since injection", 201, 0, 200, 100, 0, 50);
75 h_Cluster = new TH1D("h_Cluster", "[TRGECL] N(Cluster) ", 20, 0, 20);
76 h_TCTiming = new TH1D("h_TCTiming", "[TRGECL] TC Timing (ns)", 100, 3010, 3210);
77 h_TRGTiming = new TH1D("h_TRGTiming", "[TRGECL] TRG Timing (ns)", 100, 3010, 3210);
78 h_Cal_TCTiming = new TH1D("h_Cal_TCTiming", "[TRGECL] Cal TC Timing (ns)", 100, -400, 400);
79 h_Cal_TRGTiming = new TH1D("h_Cal_TRGTiming", "[TRGECL] TRG Timing (ns)", 100, -400, 400);
80 h_ECL_TriggerBit = new TH1D("h_ECL_TriggerBit", "[TRGECL] ECL Trigger Bit", 29, 0, 29);
81 h_Cluster_Energy_Sum = new TH1D("h_Cluster_Energy_Sum", "[TRGECL] Energy Sum of 2 Clusters (ADC)", 300, 0, 3000);
82
83 h_nTChit_injtime->GetXaxis()->SetTitle("The number of TC hits");
84 h_nTChit_injtime->GetYaxis()->SetTitle("Time since injection [ms]");
85
86
87 const char* label[44] = {"Hit", "Timing Source(FWD)", "Timing Source(BR)", "Timing Source(BWD)", "physics Trigger", "2D Bhabha Veto", "3D Bhabha veto", "3D Bhabha Selection", "E Low", "E High", "E LOM", "Cluster Overflow", "Low multi bit 0", "Low multi bit 1", "Low multi bit 2", "Low multi bit 3", "Low multi bit 4", "Low multi bit 5", "Low multi bit 6", "Low multi bit 7", "Low multi bit 8", "Low multi bit 9", "Low multi bit 10", "Low multi bit 11", "Low multi bit 12", "Low multi bit 13", "mumu bit", "prescale bit", "ECL burst bit", "2D Bhabha bit 1", "2D Bhabha bit 2", "2D Bhabha bit 3", "2D Bhabha bit 4", "2D Bhabha bit 5", "2D Bhabha bit 6", "2D Bhabha bit 7", "2D Bhabha bit 8", "2D Bhabha bit 9", "2D Bhabha bit 10", "2D Bhabha bit 11", "2D Bhabha bit 12", "2D Bhabha bit 13", "2D Bhabha bit 14"};
88
89
90 for (int j = 0; j < 29; j++) {
91 h_ECL_TriggerBit->GetXaxis()-> SetBinLabel(j + 1, label[j]);
92 }
93 h_ECL_TriggerBit->SetStats(0);
94
95 oldDir->cd();
96}
97
98
100{
101
102 // calls back the defineHisto() function, but the HistoManager module has to be in the path
103 REG_HISTOGRAM
104
105 trgeclHitArray.registerInDataStore();
106 trgeclEvtArray.registerInDataStore();
107 trgeclCluster.registerInDataStore();
108 trgeclSumArray.registerInDataStore();
109
110}
111
112
114{
115}
116
118{
119 // delete h_TCId;
120}
121
123{
124 TCId.clear();
125 TCHitWin.clear();
126 TCEnergy.clear();
127 TCTiming.clear();
128 RevoFAM.clear();
129 RevoTrg.clear();
130 FineTiming.clear();
131
132 // StoreArray<TRGECLUnpackerStore> trgeclHitArray;
133 /* cppcheck-suppress variableScope */
134 double HitTiming;
135 /* cppcheck-suppress variableScope */
136 double HitEnergy;
137 double HitRevoFam = 0;
138 double HitRevoTrg = 0;
139 double HitFineTiming = 0;
140 double HitRevoEvtTiming = 0;
141 double HitCalTiming = 0;
142 int CheckSum = 0;
143
144 for (int iii = 0; iii < trgeclEvtArray.getEntries(); iii++) {
145 TRGECLUnpackerEvtStore* aTRGECLUnpackerEvtStore = trgeclEvtArray[iii];
146
147 HitFineTiming = aTRGECLUnpackerEvtStore -> getEvtTime();
148 HitRevoTrg = aTRGECLUnpackerEvtStore -> getL1Revo();
149 HitRevoEvtTiming = aTRGECLUnpackerEvtStore -> getEvtRevo();
150 CheckSum = aTRGECLUnpackerEvtStore -> getEvtExist() ;
151
152
153 RevoTrg.push_back(HitRevoTrg);
154
155
156
157 }
158 if (CheckSum == 0) {return;}
159
160
161
162 for (int ii = 0; ii < trgeclHitArray.getEntries(); ii++) {
163 TRGECLUnpackerStore* aTRGECLUnpackerStore = trgeclHitArray[ii];
164 int TCID = (aTRGECLUnpackerStore->getTCId());
165 int hit_win = aTRGECLUnpackerStore -> getHitWin();
166 HitEnergy = aTRGECLUnpackerStore -> getTCEnergy();
167 HitTiming = aTRGECLUnpackerStore ->getTCTime();
168
169 if (TCID < 1 || TCID > 576 || HitEnergy == 0) {continue;}
170 if (!(hit_win == 3 || hit_win == 4)) {continue;}
171 HitCalTiming = aTRGECLUnpackerStore ->getTCCALTime() ;
172 HitRevoFam = aTRGECLUnpackerStore-> getRevoFAM() ;
173
174 TCId.push_back(TCID);
175 TCHitWin.push_back(hit_win);
176 TCEnergy.push_back(HitEnergy);
177 TCTiming.push_back(HitTiming);
178 RevoFAM.push_back(HitRevoFam);
179 FineTiming.push_back(HitCalTiming);
180 }
181 //
182 //
183 if (TCId.size() == 0) {return;}
184
185 /* cppcheck-suppress variableScope */
186 int phy;
187 /* cppcheck-suppress variableScope */
188 int b1;
189 /* cppcheck-suppress variableScope */
190 int b2v;
191 /* cppcheck-suppress variableScope */
192 int b2s;
193 /* cppcheck-suppress variableScope */
194 int mu;
195 /* cppcheck-suppress variableScope */
196 int pre;
197 /* cppcheck-suppress variableScope */
198 int clover;
199 /* cppcheck-suppress variableScope */
200 int tsource;
201 /* cppcheck-suppress variableScope */
202 int b1type;
203 /* cppcheck-suppress variableScope */
204 int etot;
205 /* cppcheck-suppress variableScope */
206 int vlm;
207 /* cppcheck-suppress variableScope */
208 int eclburst;
209 // int s_hit_win= 0;
210 std::vector<int> trgbit ;
211 trgbit.resize(44, 0);
212 for (int iii = 0; iii < trgeclSumArray.getEntries(); iii++) {
213 TRGECLUnpackerSumStore* aTRGECLUnpackerSumStore = trgeclSumArray[iii];
214
215 tsource = aTRGECLUnpackerSumStore ->getTimeType();
216 phy = aTRGECLUnpackerSumStore ->getPhysics();
217 b1 = aTRGECLUnpackerSumStore ->get2DBhabha();
218 b1type = aTRGECLUnpackerSumStore -> getBhabhaType();
219 b2v = aTRGECLUnpackerSumStore -> get3DBhabhaV();
220 b2s = aTRGECLUnpackerSumStore -> get3DBhabhaS() ;
221 etot = aTRGECLUnpackerSumStore -> getEtotType();
222 clover = aTRGECLUnpackerSumStore -> getICNOver();
223 vlm = aTRGECLUnpackerSumStore -> getLowMulti();
224 mu = aTRGECLUnpackerSumStore -> getMumu();
225 pre = aTRGECLUnpackerSumStore -> getPrescale();
226 eclburst = aTRGECLUnpackerSumStore -> getECLBST();
227
228 //
229 trgbit[0] = 1;
230 trgbit[1] = tsource & 0x1;
231 trgbit[2] = (tsource >> 1) & 0x1;
232 trgbit[3] = (tsource >> 2) & 0x1;
233 trgbit[4] = phy;
234 trgbit[5] = b1;
235 trgbit[6] = b2v;
236 trgbit[7] = b2s;
237 trgbit[8] = etot & 0x1;
238 trgbit[9] = (etot >> 1) & 0x1;
239 trgbit[10] = (etot >> 2) & 0x1;
240 trgbit[11] = clover;
241
242 for (int j = 0; j < 14; j++) {
243 trgbit[12 + j] = (vlm >> j) & 0x1;
244 }
245
246 trgbit[26] = mu;
247 trgbit[27] = pre;
248 trgbit[28] = eclburst;
249
250 trgbit[29] = b1type & 0x1;
251 trgbit[30] = (b1type >> 1) & 0x1;
252 trgbit[31] = (b1type >> 2) & 0x1;
253 trgbit[32] = (b1type >> 3) & 0x1;
254 trgbit[33] = (b1type >> 4) & 0x1;
255 trgbit[34] = (b1type >> 5) & 0x1;
256 trgbit[35] = (b1type >> 6) & 0x1;
257 trgbit[36] = (b1type >> 7) & 0x1;
258 trgbit[37] = (b1type >> 8) & 0x1;
259 trgbit[38] = (b1type >> 9) & 0x1;
260 trgbit[39] = (b1type >> 10) & 0x1;
261 trgbit[40] = (b1type >> 11) & 0x1;
262 trgbit[41] = (b1type >> 12) & 0x1;
263 trgbit[42] = (b1type >> 13) & 0x1;
264 trgbit[43] = (b1type >> 14) & 0x1;
265
266
267 }
268
269 for (int j = 0; j < 29; j++) {
270 if (trgbit[j] == 0x1) {h_ECL_TriggerBit->Fill(j, 1);}
271 }
272
273
274 //----------------------
275 //Clustering
276 //----------------------
277 //
278
279 TrgEclCluster _TCCluster ;
280 _TCCluster.setICN(TCId, TCEnergy, TCTiming);
281
282 int c = _TCCluster.getNofCluster();
283 h_Cluster->Fill(c);
284 std::vector<double> ClusterTiming;
285 std::vector<double> ClusterEnergy;
286 std::vector<int> MaxTCId;
287 ClusterTiming.clear();
288 ClusterEnergy.clear();
289 MaxTCId.clear();
290
291 for (int iii = 0; iii < trgeclCluster.getEntries(); iii++) {
292 TRGECLCluster* aTRGECLCluster = trgeclCluster[iii];
293 int maxTCId = aTRGECLCluster ->getMaxTCId();
294 double clusterenergy = aTRGECLCluster ->getEnergyDep();
295 double clustertiming = aTRGECLCluster -> getTimeAve();
296 ClusterTiming.push_back(clustertiming);
297 ClusterEnergy.push_back(clusterenergy);
298 MaxTCId.push_back(maxTCId);
299 }
300
301
302 std::vector<double> maxClusterEnergy;
303 std::vector<double> maxClusterTiming;
304 std::vector<int> maxCenterTCId;
305 maxClusterTiming.clear();
306 maxClusterEnergy.clear();
307 maxCenterTCId.clear();
308
309 maxClusterEnergy.resize(2, 0.0);
310 maxClusterTiming.resize(2, 0.0);
311 maxCenterTCId.resize(2, 0.0);
312 const int cl_size = ClusterEnergy.size();
313 for (int icl = 0; icl < cl_size; icl++) {
314 if (maxClusterEnergy[0] < ClusterEnergy[icl]) {
315 maxClusterEnergy[0] = ClusterEnergy[icl];
316 maxClusterTiming[0] = ClusterTiming[icl];
317 maxCenterTCId[0] = MaxTCId[icl];
318 } else if (maxClusterEnergy[1] < ClusterEnergy[icl]) {
319 maxClusterEnergy[1] = ClusterEnergy[icl];
320 maxClusterTiming[1] = ClusterTiming[icl];
321 maxCenterTCId[1] = MaxTCId[icl];
322
323 }
324
325 }
326 TrgEclDataBase _database;
327
328 std::vector<double> _3DBhabhaThreshold;
329 _3DBhabhaThreshold = {30, 45}; // /10 MeV
330
331
332 bool BtoBFlag = false;
333 bool BhabhaFlag = false;
334 int lut1 = _database.Get3DBhabhaLUT(maxCenterTCId[0]);
335 int lut2 = _database.Get3DBhabhaLUT(maxCenterTCId[1]);
336 int energy1 = 15 & lut1;
337 int energy2 = 15 & lut2;
338 lut1 >>= 4;
339 lut2 >>= 4;
340 int phi1 = 511 & lut1;
341 int phi2 = 511 & lut2;
342 lut1 >>= 9;
343 lut2 >>= 9;
344 int theta1 = lut1;
345 int theta2 = lut2;
346 int dphi = abs(phi1 - phi2);
347 if (dphi > 180) {dphi = 360 - dphi;}
348 int thetaSum = theta1 + theta2;
349 if (dphi > 160 && thetaSum > 165 && thetaSum < 190) {BtoBFlag = true;}
350
351 if ((maxClusterEnergy[0] * 0.1) > _3DBhabhaThreshold[0] * energy1
352 && (maxClusterEnergy[1] * 0.1) > _3DBhabhaThreshold[0] * (energy2)
353 && ((maxClusterEnergy[0] * 0.1) > _3DBhabhaThreshold[1] * energy1
354 || (maxClusterEnergy[1] * 0.1) > _3DBhabhaThreshold[1] * (energy2))) {
355 if (BtoBFlag) {BhabhaFlag = true;}
356 }
357
358
359 if (BhabhaFlag) {
360 h_Cluster_Energy_Sum -> Fill((maxClusterEnergy[0] + maxClusterEnergy[1]) / 5.25);
361 }
362
363
364 const int NofTCHit = TCId.size();
365
366 int NofTCHitPerClk[8] = {0};
367 double totalEnergy = 0;
368 TrgEclMapping* a = new TrgEclMapping();
369 double max = 0;
370 double caltrgtiming = 0;
371 double diff = -1;
372 bool isHER;
373
374 diff = m_trgTime->getTimeSinceLastInjectionInMicroSeconds() / 1000.;
375 isHER = m_trgTime->isHER();
376
377 for (int ihit = 0; ihit < NofTCHit ; ihit ++) {
378 h_TCId -> Fill(TCId[ihit]);
379 h_TCthetaId -> Fill(a -> getTCThetaIdFromTCId(TCId[ihit]));
380 {
381 if (a->getTCThetaIdFromTCId(TCId[ihit]) < 4) {
382 h_TCphiId_FWD -> Fill(a->getTCPhiIdFromTCId(TCId[ihit]));
383 } else if (a->getTCThetaIdFromTCId(TCId[ihit]) > 3 && a->getTCThetaIdFromTCId(TCId[ihit]) < 16) {
384 h_TCphiId_BR -> Fill(a->getTCPhiIdFromTCId(TCId[ihit]));
385 } else {
386 h_TCphiId_BWD -> Fill(a->getTCPhiIdFromTCId(TCId[ihit]));
387
388 }
389 }
390 h_TCEnergy -> Fill(TCEnergy[ihit]);
391 h_Narrow_TCEnergy -> Fill(TCEnergy[ihit]);
392 h_Cal_TCTiming -> Fill(FineTiming[ihit]);
393
394 if (max < TCEnergy[ihit]) {
395 max = TCEnergy[ihit];
396 caltrgtiming = FineTiming[ihit];
397 }
398
399 totalEnergy += TCEnergy[ihit];
400 double timing = 8 * HitRevoTrg - (128 * RevoFAM[ihit] + TCTiming[ihit]);
401 if (timing < 0) {timing = timing + 10240;}
402 h_TCTiming->Fill(timing);
403 NofTCHitPerClk[TCHitWin[ihit]]++;
404 }
405
406 const double revotime_in_us = 5.120 / m_hwclkdb->getAcceleratorRF();
407 int quotient;
408 double running_in_us, diff_in_us;
409
410 diff_in_us = diff * 1000.;
411 quotient = diff_in_us / revotime_in_us;
412 running_in_us = diff_in_us - quotient * revotime_in_us;
413
414 bool cond_clean, cond_injHER, cond_injLER;
415
416 cond_clean = (6 < running_in_us && running_in_us < 8) && (50 < diff && diff < 70);
417
418 cond_injHER = isHER && ((diff < 0.5) || ((diff < 20) && (2 < running_in_us && running_in_us < 3)));
419 cond_injLER = !isHER && ((diff < 0.5) || ((diff < 20) && (1 < running_in_us && running_in_us < 2)));
420
421 h_n_TChit_event -> Fill(NofTCHit);
422 h_nTChit_injtime->Fill(NofTCHit, diff);
423
424 if (cond_clean) {
425 h_n_TChit_clean->Fill(NofTCHit);
426 } else if (cond_injHER) {
427 h_n_TChit_injHER->Fill(NofTCHit);
428 } else if (cond_injLER) {
429 h_n_TChit_injLER->Fill(NofTCHit);
430 }
431
432 const int grouping_num = 2;
433 for (int iclk = 0; iclk < 8 - (grouping_num - 1); iclk++) {
434 int group_tcnum = 0;
435 for (int igrp = 0; igrp < grouping_num; igrp++)
436 group_tcnum += NofTCHitPerClk[iclk + igrp];
437
438 h_n_TChit_event_2clk->Fill(group_tcnum);
439 h_nTChit_injtime_2clk->Fill(group_tcnum, diff);
440
441 if (cond_clean) {
442 h_n_TChit_clean_2clk->Fill(group_tcnum);
443 } else if (cond_injHER) {
444 h_n_TChit_injHER_2clk->Fill(group_tcnum);
445 } else if (cond_injLER) {
446 h_n_TChit_injLER_2clk->Fill(group_tcnum);
447 }
448 }
449
450 double trgtiming = 8 * HitRevoTrg - (128 * HitRevoEvtTiming + HitFineTiming);
451
452 if (trgtiming < 0) {trgtiming = trgtiming + 10240;}
453 h_TRGTiming -> Fill(trgtiming);
454 h_Cal_TRGTiming -> Fill(caltrgtiming);
455 h_TotalEnergy -> Fill(totalEnergy);
456 h_Narrow_TotalEnergy -> Fill(totalEnergy);
457
458 // usleep(100);
459}
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
Definition: HistoModule.h:29
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:208
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:80
Example Detector.
Definition: TRGECLCluster.h:24
double getEnergyDep() const
The method to get deposited energy.
int getMaxTCId() const
The method to get the Maximum(center) TC id.
TH1 * h_n_TChit_clean
N of TC Hit / event vs. time since injection.
std::vector< double > TCEnergy
Hit TC Energy.
TH1 * h_n_TChit_clean_2clk
N of TC Hit / event vs. time since injection per two ETM clocks.
TH1 * h_TCId
TCId histogram.
TH1 * h_TCphiId_BWD
TCphiId histogram.
TH1 * h_Narrow_TotalEnergy
Total Energy on narrow range.
TH1 * h_TotalEnergy
Total Energy.
TH1 * h_n_TChit_event_2clk
N of TC Hit / event per two ETM clocks.
TH1 * h_Cluster
N of Cluster / event.
virtual void initialize() override
initialize
StoreArray< TRGECLUnpackerStore > trgeclHitArray
Trg ECL Unpakcer TC output.
virtual void event() override
Event.
TH1 * h_Cal_TRGTiming
Event Timing / event.
TH1 * h_n_TChit_injHER
N of TC Hit / events in the injection BG clean region vs. time since injection.
TH1 * h_Narrow_TCEnergy
TC Energy histogram on narrow range.
virtual void endRun() override
End Run.
DBObjPtr< HardwareClockSettings > m_hwclkdb
DB pointerto access the hardware clock information.
TH1 * h_Cluster_Energy_Sum
Energy sum of 2 Top energetic clusters when 3D bhabnha bit on.
virtual void terminate() override
terminate
virtual ~TRGECLDQMModule()
Destrunctor.
std::vector< int > TCHitWin
Hit TCHitWin.
TH1 * h_TCphiId_FWD
TCphiId histogram.
TH1 * h_TRGTiming
Event Timing / event.
TH2 * h_nTChit_injtime
N of TC Hit / events in the LER injection BG region vs. time since injection.
TH1 * h_ECL_TriggerBit
ECL Trigger Bit.
std::vector< double > TCTiming
Hit TC Timing.
TH1 * h_n_TChit_injLER_2clk
N of TC Hit / events in the HER injection BG region vs. time since injection per two ETM clocks.
TH1 * h_n_TChit_injHER_2clk
N of TC Hit / events in the injection BG clean region vs. time since injection per two ETM clocks.
StoreArray< TRGECLUnpackerEvtStore > trgeclEvtArray
Trg ECL Unpakcer Event output.
TH1 * h_TCthetaId
TCthetaId histogram.
virtual void beginRun() override
begin Run
StoreArray< TRGECLUnpackerSumStore > trgeclSumArray
Trg Ecl Unpacker Summary output.
TH1 * h_TCphiId_BR
TCphiId histogram.
TH2 * h_nTChit_injtime_2clk
N of TC Hit / events in the LER injection BG region vs. time since injection per two ETM clocks.
TH1 * h_Cal_TCTiming
TC Timing / event.
TH1 * h_TCEnergy
TC Energy.
std::vector< double > FineTiming
Event Timing.
std::vector< double > RevoTrg
GDL Revolution Clk.
TH1 * h_TCTiming
TC Timing / event.
TH1 * h_n_TChit_event
N of TC Hit / event.
std::vector< double > RevoFAM
FAM Revolution Clk.
TH1 * h_n_TChit_injLER
N of TC Hit / events in the HER injection BG region vs. time since injection.
StoreArray< TRGECLCluster > trgeclCluster
Trg ECL Cluster output.
StoreObjPtr< EventLevelTriggerTimeInfo > m_trgTime
Array to access the FTSW information.
std::vector< int > TCId
Hit TCId.
virtual void defineHisto() override
Define Histogram.
int getTCCALTime() const
The method to get cal timing.
int getTCId() const
The method to get cell id.
int getTCTime() const
The method to get hit average time.
int get2DBhabha() const
The mothod to get 2D Bhabha bit.
int getPhysics() const
The mothod to get Physics bit.
int getTimeType() const
The mothod to get Timing Type.
A Class of ECL Trigger clustering
Definition: TrgEclCluster.h:30
void setICN(const std::vector< int > &)
set ICN for each part(Fw,Br,Bw)
int getNofCluster()
0 : center , 1; upper , 2: right , 3: lower , 4: lower right
Definition: TrgEclCluster.h:95
class TrgEclDataBase;
int Get3DBhabhaLUT(int)
TC CM Phi
A class of TC Mapping.
Definition: TrgEclMapping.h:26
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:650
Abstract base class for different kinds of events.