11 #ifndef TRGGRLDQMMODULE_h
12 #define TRGGRLDQMMODULE_h
14 #include <framework/core/HistoModule.h>
16 #include <trg/gdl/dataobjects/TRGGDLUnpackerStore.h>
17 #include <trg/gdl/modules/trggdlUnpacker/trggdlUnpackerModule.h>
18 #include <trg/gdl/TrgBit.h>
19 #include <framework/database/DBObjPtr.h>
20 #include <trg/gdl/dbobjects/TRGGDLDBUnpacker.h>
21 #include <mdst/dbobjects/TRGGDLDBInputBits.h>
22 #include <mdst/dbobjects/TRGGDLDBFTDLBits.h>
24 #include "trg/grl/dataobjects/TRGGRLUnpackerStore.h"
26 #include "trg/ecl/dataobjects/TRGECLUnpackerStore.h"
27 #include "trg/ecl/TrgEclMapping.h"
29 #include "trg/top/dataobjects/TRGTOPUnpackerStore.h"
30 #include "trg/top/dataobjects/TRGTOPSlotTiming.h"
57 static constexpr
double clk127To1ns = 7.8;
64 virtual void event()
override;
66 virtual void endRun()
override;
79 static const int nskim_topdqm = 11;
82 static const int nHistClasses = 3;
83 int m_nHistClassesActual = 3;
88 int start_skim_topdqm = 0;
89 int end_skim_topdqm = 0;
92 TH2I* h_top_nt0decisions_vs_hist_class[nskim_topdqm] = {
nullptr};
94 TH1I* h_top_gdl_match_decision_number[nskim_topdqm] = {
nullptr};
102 TH1I* h_topSlotNHits[nskim_topdqm][16] = {
nullptr};
103 TH1I* h_topSlotLogL[nskim_topdqm][16] = {
nullptr};
104 TH1I* h_topSlotT0[nskim_topdqm][16] = {
nullptr};
106 TH1I* h_topSlotAll[nskim_topdqm] = {
nullptr};
107 TH1I* h_topSegmentAll[nskim_topdqm] = {
nullptr};
108 TH1I* h_topNHitsAll[nskim_topdqm] = {
nullptr};
109 TH1I* h_topLogLAll[nskim_topdqm] = {
nullptr};
110 TH1I* h_topT0All[nskim_topdqm] = {
nullptr};
112 TH2I* h_topSlotVsSegment[nskim_topdqm] = {
nullptr};
114 TH2I* h_topSlotVsNHits[nskim_topdqm] = {
nullptr};
115 TH2I* h_topSlotVsLogL[nskim_topdqm] = {
nullptr};
116 TH2I* h_topSlotVsT0[nskim_topdqm] = {
nullptr};
118 TH2I* h_topSegmentVsNHits[nskim_topdqm] = {
nullptr};
119 TH2I* h_topSegmentVsLogL[nskim_topdqm] = {
nullptr};
120 TH2I* h_topSegmentVsT0[nskim_topdqm] = {
nullptr};
122 TH2I* h_topNHitsVsLogL[nskim_topdqm] = {
nullptr};
123 TH2I* h_topNHitsVsT0[nskim_topdqm] = {
nullptr};
124 TH2I* h_topLogLVsT0[nskim_topdqm] = {
nullptr};
126 TH1I* h_ecl_gdl_top_timing_diff_both[nskim_topdqm] = {
nullptr};
127 TH1I* h_ecl_top_top_timing_diff_both[nskim_topdqm] = {
nullptr};
129 TH2I* h_decisionNumberVsNumberDecisionsGood[nskim_topdqm] = {
nullptr};
130 TH2I* h_decisionNumberVsNumberDecisionsBad[nskim_topdqm] = {
nullptr};
132 TH1I* h_ecl_gdl_top_timing_diff_good[nskim_topdqm] = {
nullptr};
133 TH1I* h_ecl_top_top_timing_diff_good[nskim_topdqm] = {
nullptr};
135 TH2I* h_top_ecltop_timing_diff_vs_toptop_good[nskim_topdqm] = {
nullptr};
136 TH2I* h_gdl_ecltop_timing_diff_vs_toptop_good[nskim_topdqm] = {
nullptr};
137 TH2I* h_gdl_ecltop_timing_diff_vs_ecltop_good[nskim_topdqm] = {
nullptr};
139 TH1I* h_topCombinedTimingTopGood[nskim_topdqm] = {
nullptr};
140 TH1I* h_topNSlotsCombinedTimingTopGood[nskim_topdqm] = {
nullptr};
141 TH1I* h_topNHitSumGood[nskim_topdqm] = {
nullptr};
142 TH1I* h_topLogLSumGood[nskim_topdqm] = {
nullptr};
144 TH1I* h_topCombinedTimingTopAll[nskim_topdqm] = {
nullptr};
145 TH1I* h_topNSlotsCombinedTimingTopAll[nskim_topdqm] = {
nullptr};
146 TH1I* h_topNHitSumAll[nskim_topdqm] = {
nullptr};
147 TH1I* h_topLogLSumAll[nskim_topdqm] = {
nullptr};
149 TH2I* h_topNSlotsCombinedTimingVsNHitsTopAll[nskim_topdqm] = {
nullptr};
151 TH2I* h_topNHitVsNhit[nskim_topdqm][nHistClasses] = {
nullptr};
152 TH2I* h_topSlotVsSlot[nskim_topdqm][nHistClasses] = {
nullptr};
153 TH2I* h_topT0VsT0[nskim_topdqm][nHistClasses] = {
nullptr};
154 TH2I* h_topSegmentVsSegment[nskim_topdqm][nHistClasses] = {
nullptr};
155 TH2I* h_topLogLVsLogL[nskim_topdqm][nHistClasses] = {
nullptr};
157 TH1I* h_topTrigType[nskim_topdqm] = {
nullptr};
158 TH1I* h_topTimingResiduals[nskim_topdqm] = {
nullptr};
159 TH1I* h_topTimingVariance[nskim_topdqm] = {
nullptr};
161 TH1I* h_topRvcDiff1All[nskim_topdqm] = {
nullptr};
162 TH1I* h_topRvcDiff2All[nskim_topdqm] = {
nullptr};
163 TH1I* h_topRvcDiff3All[nskim_topdqm] = {
nullptr};
164 TH1I* h_topRvcDiff4All[nskim_topdqm] = {
nullptr};
166 TH1I* h_topGdlRvcDiff1All[nskim_topdqm] = {
nullptr};
167 TH1I* h_topGdlRvcDiff2All[nskim_topdqm] = {
nullptr};
168 TH1I* h_topGdlRvcDiff3All[nskim_topdqm] = {
nullptr};
170 TH1I* h_topRvcDiff1Good[nskim_topdqm] = {
nullptr};
171 TH1I* h_topRvcDiff2Good[nskim_topdqm] = {
nullptr};
172 TH1I* h_topRvcDiff3Good[nskim_topdqm] = {
nullptr};
173 TH1I* h_topRvcDiff4Good[nskim_topdqm] = {
nullptr};
175 TH1I* h_topGdlRvcDiff1Good[nskim_topdqm] = {
nullptr};
176 TH1I* h_topGdlRvcDiff2Good[nskim_topdqm] = {
nullptr};
177 TH1I* h_topGdlRvcDiff3Good[nskim_topdqm] = {
nullptr};
179 TH1I* h_ecl_gdl_top_timing_diff_bad[nskim_topdqm] = {
nullptr};
180 TH1I* h_ecl_top_top_timing_diff_bad[nskim_topdqm] = {
nullptr};
182 TH2I* h_top_ecltop_timing_diff_vs_toptop_bad[nskim_topdqm] = {
nullptr};
183 TH2I* h_gdl_ecltop_timing_diff_vs_toptop_bad[nskim_topdqm] = {
nullptr};
184 TH2I* h_gdl_ecltop_timing_diff_vs_ecltop_bad[nskim_topdqm] = {
nullptr};
186 TH1I* h_topCombinedTimingTopBad[nskim_topdqm] = {
nullptr};
187 TH1I* h_topNSlotsCombinedTimingTopBad[nskim_topdqm] = {
nullptr};
188 TH1I* h_topNHitSumBad[nskim_topdqm] = {
nullptr};
189 TH1I* h_topLogLSumBad[nskim_topdqm] = {
nullptr};
191 TH1I* h_topRvcDiff1Bad[nskim_topdqm] = {
nullptr};
192 TH1I* h_topRvcDiff2Bad[nskim_topdqm] = {
nullptr};
193 TH1I* h_topRvcDiff3Bad[nskim_topdqm] = {
nullptr};
194 TH1I* h_topRvcDiff4Bad[nskim_topdqm] = {
nullptr};
196 TH1I* h_topGdlRvcDiff1Bad[nskim_topdqm] = {
nullptr};
197 TH1I* h_topGdlRvcDiff2Bad[nskim_topdqm] = {
nullptr};
198 TH1I* h_topGdlRvcDiff3Bad[nskim_topdqm] = {
nullptr};
200 TH1I* h_topCombinedTimingTop[nskim_topdqm][nHistClasses] = {
nullptr};
201 TH1I* h_topNSlotsCombinedTimingTop[nskim_topdqm][nHistClasses] = {
nullptr};
202 TH1I* h_topNHitSum[nskim_topdqm][nHistClasses] = {
nullptr};
203 TH1I* h_topNHitBestSlot[nskim_topdqm][nHistClasses] = {
nullptr};
205 TH1I* h_topLogLSum[nskim_topdqm][nHistClasses] = {
nullptr};
207 TH1I* h_gdl_ecltop_timing_diff_5ns[nskim_topdqm] = {
nullptr};
208 TH1I* h_gdl_cdctop_timing_diff_5ns[nskim_topdqm] = {
nullptr};
210 TH1I* h_gdl_ecltop_timing_diff_2ns[nskim_topdqm] = {
nullptr};
211 TH1I* h_gdl_ecltop_timing_diff_grl_matched_2ns[nskim_topdqm] = {
nullptr};
212 TH1I* h_gdl_ecltop_timing_diff_no_grl_matched_2ns[nskim_topdqm] = {
nullptr};
213 TH1I* h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[nskim_topdqm] = {
nullptr};
214 TH2I* h_gdl_ecltop_timing_diff_vs_nslots_2ns[nskim_topdqm] = {
nullptr};
215 TH1I* h_top_ecltop_timing_diff_combined_2ns[nskim_topdqm] = {
nullptr};
216 TH1I* h_top_ecltop_timing_diff_best_slot_2ns[nskim_topdqm] = {
nullptr};
217 TH1I* h_gdl_cdctop_timing_diff_2ns[nskim_topdqm] = {
nullptr};
219 TH1I* h_top_ecltop_timing_diff_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
220 TH1I* h_top_ecltop_timing_combined_diff_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
221 TH1I* h_top_ecltop_timing_best_slot_diff_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
223 TH2I* h_top_ecltop_timing_diff_vs_toptop[nskim_topdqm][nHistClasses] = {
nullptr};
224 TH2I* h_gdl_ecltop_timing_diff_vs_toptop[nskim_topdqm][nHistClasses] = {
nullptr};
225 TH2I* h_gdl_ecltop_timing_diff_vs_ecltop[nskim_topdqm][nHistClasses] = {
nullptr};
226 TH2I* h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[nskim_topdqm][nHistClasses] = {
nullptr};
228 TH2I* h_gdl_top_rvc_vs_top_timing[nskim_topdqm] = {
nullptr};
230 TH1I* h_gdl_ecltop_rvc_diff[nskim_topdqm] = {
nullptr};
231 TH1I* h_gdl_cdctop_rvc_diff[nskim_topdqm] = {
nullptr};
233 TH1I* h_gdl_gdltop_rvc_diff_all[nskim_topdqm] = {
nullptr};
234 TH1I* h_gdl_comtop_rvc_diff_all[nskim_topdqm] = {
nullptr};
236 TH1I* h_gdl_gdltop_rvc_diff_good[nskim_topdqm] = {
nullptr};
237 TH1I* h_gdl_comtop_rvc_diff_good[nskim_topdqm] = {
nullptr};
239 TH1I* h_gdl_gdltop_rvc_diff_bad[nskim_topdqm] = {
nullptr};
240 TH1I* h_gdl_comtop_rvc_diff_bad[nskim_topdqm] = {
nullptr};
242 TH2I* h_gdl_ecltop_timing_diff_vs_slot[nskim_topdqm] = {
nullptr};
243 TH2I* h_gdl_ecltop_timing_diff_vs_segment[nskim_topdqm] = {
nullptr};
244 TH2I* h_gdl_ecltop_timing_diff_vs_nhits[nskim_topdqm] = {
nullptr};
245 TH2I* h_gdl_ecltop_timing_diff_vs_logl[nskim_topdqm] = {
nullptr};
247 TH2I* h_gdl_ecltop_timing_diff_vs_slot_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
248 TH2I* h_gdl_ecltop_timing_diff_vs_segment_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
249 TH2I* h_gdl_ecltop_timing_diff_vs_nhits_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
250 TH2I* h_gdl_ecltop_timing_diff_vs_logl_2ns[nskim_topdqm][nHistClasses] = {
nullptr};
252 TH2I* h_topTC2IdVsTC1IdAll[nskim_topdqm] = {
nullptr};
253 TH2I* h_topTC2EnergyVsTC1EnergyAll[nskim_topdqm] = {
nullptr};
254 TH2I* h_topTC2ThetaIdVsTC1ThetaIdAll[nskim_topdqm] = {
nullptr};
255 TH2I* h_topTC2PhiIdVsTC1PhiIdAll[nskim_topdqm] = {
nullptr};
256 TH3I* h_topTCPhiIdVsTCThetaIdAll[nskim_topdqm] = {
nullptr};
258 TH2I* h_topTC2IdVsTC1IdGRLAll[nskim_topdqm] = {
nullptr};
259 TH2I* h_topTC2EnergyVsTC1EnergyGRLAll[nskim_topdqm] = {
nullptr};
260 TH2I* h_topTC2ThetaIdVsTC1ThetaIdGRLAll[nskim_topdqm] = {
nullptr};
261 TH2I* h_topTC2PhiIdVsTC1PhiIdGRLAll[nskim_topdqm] = {
nullptr};
262 TH3I* h_topTCPhiIdVsTCThetaIdGRLAll[nskim_topdqm] = {
nullptr};
264 TH2I* h_topTC2IdVsTC1Id[nskim_topdqm] = {
nullptr};
265 TH2I* h_topTC2EnergyVsTC1Energy[nskim_topdqm] = {
nullptr};
266 TH2I* h_topTC2ThetaIdVsTC1ThetaId[nskim_topdqm] = {
nullptr};
267 TH2I* h_topTC2PhiIdVsTC1PhiId[nskim_topdqm] = {
nullptr};
268 TH3I* h_topTCPhiIdVsTCThetaId[nskim_topdqm] = {
nullptr};
270 TH2I* h_topTC2IdVsTC1IdGRL[nskim_topdqm] = {
nullptr};
271 TH2I* h_topTC2EnergyVsTC1EnergyGRL[nskim_topdqm] = {
nullptr};
272 TH2I* h_topTC2ThetaIdVsTC1ThetaIdGRL[nskim_topdqm] = {
nullptr};
273 TH2I* h_topTC2PhiIdVsTC1PhiIdGRL[nskim_topdqm] = {
nullptr};
274 TH3I* h_topTCPhiIdVsTCThetaIdGRL[nskim_topdqm] = {
nullptr};
276 TH2I* h_gdl_ecltop_timing_diff_vs_grl_top_l1[nskim_topdqm] = {
nullptr};
277 TH2I* h_gdl_top_l1_vs_grl_top_l1[nskim_topdqm] = {
nullptr};
279 TH2I* h_grl_ntopslots_vs_ncdcslots[nskim_topdqm] = {
nullptr};
280 TH1I* h_grl_ncdctopslots_matched[nskim_topdqm] = {
nullptr};
281 TH2I* h_grl_topslots_vs_cdcslots_match[nskim_topdqm] = {
nullptr};
284 DBObjPtr<TRGGDLDBUnpacker> m_gdlUnpacker;
286 int gdlLeafBitMap[320] = {0};
287 char gdlLeafNames[320][100] = {0};
289 int gdl_e_timtype = 0;
290 int gdl_e_gdll1rvc = 0;
291 int gdl_e_coml1rvc = 0;
292 int gdl_e_toptiming = 0;
293 int gdl_e_ecltiming = 0;
294 int gdl_e_cdctiming = 0;
295 int gdl_e_toprvc = 0;
296 int gdl_e_eclrvc = 0;
297 int gdl_e_cdcrvc = 0;
302 unsigned m_evtno = 0;
306 std::vector<int>
skim;
320 std::vector<tcEcl> tcEclList;
323 inline bool operator()(
tcEcl const& a,
tcEcl const& b)
325 double i = a.tcEnergy;
326 double j = b.tcEnergy;
341 std::vector<slotDecision> slotDecisionList;
354 bool m_generatePostscriptFile;
355 std::string m_postScriptFileName;
357 bool m_doECLCorrelations;
358 bool m_doGDLCorrelations;
359 bool m_doGRLCorrelations;
361 bool m_requireEclBarrel;
362 bool m_requireEclBarrelB2B;
364 bool m_requireCDC2DTrack;
367 std::string skim_menu[nskim_topdqm] = {
369 "software_trigger_cut&skim&accept_hadron",
370 "software_trigger_cut&skim&accept_tau_tau",
371 "software_trigger_cut&skim&accept_mumu_1trk",
372 "software_trigger_cut&skim&accept_mumu_2trk",
373 "software_trigger_cut&skim&accept_gamma_gamma",
374 "software_trigger_cut&skim&accept_bhabha",
375 "software_trigger_cut&skim&accept_hadronb",
376 "software_trigger_cut&skim&accept_hadronb1",
377 "software_trigger_cut&skim&accept_hadronb2",
378 "software_trigger_cut&skim&accept_mumutight"
382 std::string skim_smap[nskim_topdqm] = {