Belle II Software release-09-00-07
DQMHistAnalysisEventT0TriggerJitter.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// File : DQMHistAnalysisEventT0TriggerJitter.cc
10// Description : module for trigger jitter/EventT0 DQM histogram analysis
11//-
12
13
14#include <dqm/analysis/modules/DQMHistAnalysisEventT0TriggerJitter.h>
15
16#include <TROOT.h>
17#include <TStyle.h>
18#include <TF1.h>
19#include <TMath.h>
20
21using namespace Belle2;
22
23//-----------------------------------------------------------------
24// Register the Module
25//-----------------------------------------------------------------
26REG_MODULE(DQMHistAnalysisEventT0TriggerJitter);
27
28//-----------------------------------------------------------------
29// Implementation
30//-----------------------------------------------------------------
31
34{
35 setDescription("Determining and processing EventT0s from different subdetectors (ECL, CDC, TOP, SVD) for different L1 trigger sources (ECL, CDC, and TOP) to estimate trigger jitter information for different HLT event types (hadron, BhaBha, ยตยต).");
36
37 //Parameter definition
38 addParam("min_nEntries", m_nEntriesMin, "Minimum number of entries to process the histogram.", m_nEntriesMin);
39 addParam("prefixCanvas", m_prefixCanvas, "Prefix to be added to canvas filename when saved as pdf.", std::string("c"));
40 addParam("printCanvas", m_printCanvas, "If true, prints pdf of the analysis canvas.", bool(false));
41}
42
43
45
47{
48 gROOT->cd();
49
51
52 m_monObj = getMonitoringObject("eventT0");
53
54 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0");
55 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0");
56 registerEpicsPV("EventT0:ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0", "ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0");
57}
58
59
61{
63
68}
69
71{
76
80
82}
83
85{
86 // final calculation of the mean values for MiraBelle
90
91 if (m_printCanvas) {
93 }
94}
95
97{
99}
100
102{
103 double N = par[0];
104 double frac = par[1];
105 double mean = par[2];
106 double sigma = par[3];
107 double mean2 = par[4];
108 double sigma2 = par[5];
109
110 return N * frac * TMath::Gaus(x[0], mean, sigma) + N * (1 - frac) * TMath::Gaus(x[0], mean2, sigma2);
111}
112
113std::tuple<bool, std::optional<double>> DQMHistAnalysisEventT0TriggerJitterModule::processHistogram(TH1* h, TString tag,
114 bool retrieveMeanT0)
115{
116
117 if (h == nullptr) {
118 B2DEBUG(20, "h == nullptr");
119 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
120 return {false, {}};
121 }
122
123 // The default value for the EventT0 value is -1000, but bins start at -100, so we might mostly fill the underflow bin if
124 // EventT0 for a detector is not present. And also the nominal EventT0 might be too big or too small. Only use the content
125 // of the actually useful bins to decide whether or not to fit the histogram.
126 auto nValidEntries = h->GetEntries() - h->GetBinContent(0) - h->GetBinContent(h->GetNbinsX() + 1);
127 if (static_cast<uint>(nValidEntries) < m_nEntriesMin) {
128 B2DEBUG(20, "not enough entries");
129 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
130 return {false, {}};
131 }
132
133
134 //scale the histogram only with content of valid bins, ignore over and underflow bins
135 h->Scale(1. / nValidEntries);
136 h->GetXaxis()->SetRangeUser(-50, 50);
137
138 //define the fitting function
140 fitf.SetParNames("N", "f_{1}", "#mu_{1}", "#sigma_{1}", "#mu_{2}", "#sigma_{2}");
141 fitf.SetParameters(0.1, 0.8, 0, 5, 0, 15);
142 fitf.SetParLimits(1, 0, 1); //fraction
143 fitf.SetParLimits(3, 0, 100); //sigma1
144 fitf.SetParLimits(5, 0, 100); //sigma2
145
146 if (h->Fit(&fitf, "SR+") != 0) {
147 B2DEBUG(20, "failed fit");
148 m_monObj->setVariable(Form("fit_%s", tag.Data()), 0);
149 return {false, {}};
150 }
151
152 Double_t par[6];
153 fitf.GetParameters(&par[0]);
154 Double_t parErr[6];
155 for (int i = 0; i < 6; i++)
156 parErr[i] = fitf.GetParError(i) ;
157
158
159 //define gaussian components
160 TF1 gauss1("gauss1", "gaus", -100, 100);
161 TF1 gauss2("gauss2", "gaus", -100, 100);
162
163 // Sometimes the first Gaussian isn't the main one, messing up the DQM plots
164 // Thus, chose the Gaussian with the larger relative contribution to be the main one
165 const double mainFrac = par[1] > 0.5 ? par[1] : (1 - par[1]);
166 const double mainMean = par[1] > 0.5 ? par[2] : par[4];
167 const double mainSigma = par[1] > 0.5 ? par[3] : par[5];
168 const double miniMean = par[1] > 0.5 ? par[4] : par[2];
169 const double miniSigma = par[1] > 0.5 ? par[5] : par[3];
170 const double mainMeanErr = par[1] > 0.5 ? parErr[2] : parErr[4];
171 const double mainSigmaErr = par[1] > 0.5 ? parErr[3] : parErr[5];
172 const double miniMeanErr = par[1] > 0.5 ? parErr[4] : parErr[2];
173 const double miniSigmaErr = par[1] > 0.5 ? parErr[5] : parErr[3];
174
175 gauss1.SetLineColor(kBlue);
176 gauss1.SetLineStyle(kDashed);
177 gauss1.SetParameters(par[0]*mainFrac, mainMean, mainSigma);
178
179 gauss2.SetLineColor(kRed);
180 gauss2.SetLineStyle(kDashed);
181 gauss2.SetParameters(par[0] * (1 - mainFrac), miniMean, miniSigma);
182
183 m_monObj->setVariable(Form("fit_%s", tag.Data()), 1);
184 m_monObj->setVariable(Form("N_%s", tag.Data()), nValidEntries, TMath::Sqrt(nValidEntries));
185 m_monObj->setVariable(Form("f_%s", tag.Data()), mainFrac, parErr[1]);
186 m_monObj->setVariable(Form("mean1_%s", tag.Data()), mainMean, mainMeanErr);
187 m_monObj->setVariable(Form("sigma1_%s", tag.Data()), mainSigma, mainSigmaErr);
188 m_monObj->setVariable(Form("mean2_%s", tag.Data()), miniMean, miniMeanErr);
189 m_monObj->setVariable(Form("sigma2_%s", tag.Data()), miniSigma, miniSigmaErr);
190
191 //SETUP gSTYLE - all plots
192 gStyle->SetOptFit(1111);
193
194 h->Draw();
195 fitf.DrawClone("same");
196 gauss1.DrawClone("same");
197 gauss2.DrawClone("same");
198
199 if (retrieveMeanT0) {
200 // return mean of the core Gaussian
201 return {true, mainMean};
202 }
203 return {true, {}};
204
205
206}
207
209{
210
211 const bool retrieveMeanT0 = retrieveDeltas;
212 bool processingSuccessful = false;
213 std::optional<double> currentT0;
214
215 // --- ECL EventT0 plots for ECLTRG ---
216
217 // find ECL EventT0 Hadrons ECLTRG histogram and process it
218 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_ECLTRG");
219 TString tag = "hadronECLTRG_ECLT0";
221 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
222 if (processingSuccessful) {
223 m_cECLTimeHadronsECLTRG->SetFillColor(0);
224 m_cECLTimeHadronsECLTRG->Modified();
225 m_cECLTimeHadronsECLTRG->Update();
226 if (*currentT0) {
227 m_ECLTRGHLThadronECLT0 = *currentT0;
228 }
229 } else {
230 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
231 if (h) h->Draw();
232 m_cECLTimeHadronsECLTRG->SetFillColor(kGray);
234 }
235
236 // find ECL EventT0 Bhabhas ECLTRG histogram and process it
237 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_ECLTRG");
238 tag = "bhabhaECLTRG_ECLT0";
240 if (std::get<0>(processHistogram(h, tag))) {
241 m_cECLTimeBhaBhaECLTRG->SetFillColor(0);
242 m_cECLTimeBhaBhaECLTRG->Modified();
243 m_cECLTimeBhaBhaECLTRG->Update();
244 } else {
245 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
246 if (h) h->Draw();
247 m_cECLTimeBhaBhaECLTRG->SetFillColor(kGray);
249 }
250
251 // find ECL EventT0 Mumus ECLTRG histogram and process it
252 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_ECLTRG");
253 tag = "mumuECLTRG_ECLT0";
255 if (std::get<0>(processHistogram(h, tag))) {
256 m_cECLTimeMuMuECLTRG->SetFillColor(0);
257 m_cECLTimeMuMuECLTRG->Modified();
258 m_cECLTimeMuMuECLTRG->Update();
259 } else {
260 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
261 if (h) h->Draw();
262 m_cECLTimeMuMuECLTRG->SetFillColor(kGray);
263 m_cECLTimeMuMuECLTRG->Draw();
264 }
265
266
267 // --- CDC EventT0 plots for ECLTRG ---
268
269 // find CDC EventT0 Hadrons ECLTRG histogram and process it
270 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_ECLTRG");
271 tag = "hadronECLTRG_CDCT0";
273 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
274 if (processingSuccessful) {
275 m_cCDCTimeHadronsECLTRG->SetFillColor(0);
276 m_cCDCTimeHadronsECLTRG->Modified();
277 m_cCDCTimeHadronsECLTRG->Update();
278 if (*currentT0) {
279 m_ECLTRGHLThadronCDCT0 = *currentT0;
280 }
281 } else {
282 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
283 if (h) h->Draw();
284 m_cCDCTimeHadronsECLTRG->SetFillColor(kGray);
286 }
287
288 // find CDC EventT0 Bhabhas ECLTRG histogram and process it
289 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_ECLTRG");
290 tag = "bhabhaECLTRG_CDCT0";
292 if (std::get<0>(processHistogram(h, tag))) {
293 m_cCDCTimeBhaBhaECLTRG->SetFillColor(0);
294 m_cCDCTimeBhaBhaECLTRG->Modified();
295 m_cCDCTimeBhaBhaECLTRG->Update();
296 } else {
297 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
298 if (h) h->Draw();
299 m_cCDCTimeBhaBhaECLTRG->SetFillColor(kGray);
301 }
302
303 // find CDC EventT0 Mumus ECLTRG histogram and process it
304 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_ECLTRG");
305 tag = "mumuECLTRG_CDCT0";
307 if (std::get<0>(processHistogram(h, tag))) {
308 m_cCDCTimeMuMuECLTRG->SetFillColor(0);
309 m_cCDCTimeMuMuECLTRG->Modified();
310 m_cCDCTimeMuMuECLTRG->Update();
311 } else {
312 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
313 if (h) h->Draw();
314 m_cCDCTimeMuMuECLTRG->SetFillColor(kGray);
315 m_cCDCTimeMuMuECLTRG->Draw();
316 }
317
318
319 // --- TOP EventT0 plots for ECLTRG ---
320
321 // find TOP EventT0 Hadrons ECLTRG histogram and process it
322 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_ECLTRG");
323 tag = "hadronECLTRG_TOPT0";
325 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
326 if (processingSuccessful) {
327 m_cTOPTimeHadronsECLTRG->SetFillColor(0);
328 m_cTOPTimeHadronsECLTRG->Modified();
329 m_cTOPTimeHadronsECLTRG->Update();
330 if (*currentT0) {
331 m_ECLTRGHLThadronTOPT0 = *currentT0;
332 }
333 } else {
334 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
335 if (h) h->Draw();
336 m_cTOPTimeHadronsECLTRG->SetFillColor(kGray);
338 }
339
340 // find TOP EventT0 Bhabhas ECLTRG histogram and process it
341 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_ECLTRG");
342 tag = "bhabhaECLTRG_TOPT0";
344 if (std::get<0>(processHistogram(h, tag))) {
345 m_cTOPTimeBhaBhaECLTRG->SetFillColor(0);
346 m_cTOPTimeBhaBhaECLTRG->Modified();
347 m_cTOPTimeBhaBhaECLTRG->Update();
348 } else {
349 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
350 if (h) h->Draw();
351 m_cTOPTimeBhaBhaECLTRG->SetFillColor(kGray);
353 }
354
355 // find TOP EventT0 Mumus ECLTRG histogram and process it
356 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_ECLTRG");
357 tag = "mumuECLTRG_TOPT0";
359 if (std::get<0>(processHistogram(h, tag))) {
360 m_cTOPTimeMuMuECLTRG->SetFillColor(0);
361 m_cTOPTimeMuMuECLTRG->Modified();
362 m_cTOPTimeMuMuECLTRG->Update();
363 } else {
364 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
365 if (h) h->Draw();
366 m_cTOPTimeMuMuECLTRG->SetFillColor(kGray);
367 m_cTOPTimeMuMuECLTRG->Draw();
368 }
369
370
371 // --- SVD EventT0 plots for ECLTRG ---
372
373 // find SVD EventT0 Hadrons ECLTRG histogram and process it
374 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_ECLTRG");
375 tag = "hadronECLTRG_SVDT0";
377 std::tie(processingSuccessful, currentT0) = processHistogram(h, tag, retrieveMeanT0);
378 if (processingSuccessful) {
379 m_cSVDTimeHadronsECLTRG->SetFillColor(0);
380 m_cSVDTimeHadronsECLTRG->Modified();
381 m_cSVDTimeHadronsECLTRG->Update();
382 if (*currentT0) {
383 m_ECLTRGHLThadronSVDT0 = *currentT0;
384 }
385 } else {
386 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
387 if (h) h->Draw();
388 m_cSVDTimeHadronsECLTRG->SetFillColor(kGray);
390 }
391
392 // find SVD EventT0 Bhabhas ECLTRG histogram and process it
393 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_ECLTRG");
394 tag = "bhabhaECLTRG_SVDT0";
396 if (std::get<0>(processHistogram(h, tag))) {
397 m_cSVDTimeBhaBhaECLTRG->SetFillColor(0);
398 m_cSVDTimeBhaBhaECLTRG->Modified();
399 m_cSVDTimeBhaBhaECLTRG->Update();
400 } else {
401 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
402 if (h) h->Draw();
403 m_cSVDTimeBhaBhaECLTRG->SetFillColor(kGray);
405 }
406
407 // find SVD EventT0 Mumus ECLTRG histogram and process it
408 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_ECLTRG");
409 tag = "mumuECLTRG_SVDT0";
411 if (std::get<0>(processHistogram(h, tag))) {
412 m_cSVDTimeMuMuECLTRG->SetFillColor(0);
413 m_cSVDTimeMuMuECLTRG->Modified();
414 m_cSVDTimeMuMuECLTRG->Update();
415 } else {
416 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
417 if (h) h->Draw();
418 m_cSVDTimeMuMuECLTRG->SetFillColor(kGray);
419 m_cSVDTimeMuMuECLTRG->Draw();
420 }
421
422
423}
424
426{
427 // --- ECL EventT0 plots for CDCTRG ---
428
429 // find ECL EventT0 Hadrons CDCTRG histogram and process it
430 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_CDCTRG");
431 TString tag = "hadronCDCTRG_ECLT0";
433 if (std::get<0>(processHistogram(h, tag))) {
434 m_cECLTimeHadronsCDCTRG->SetFillColor(0);
435 m_cECLTimeHadronsCDCTRG->Modified();
436 m_cECLTimeHadronsCDCTRG->Update();
438 } else {
439 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
440 if (h) h->Draw();
441 m_cECLTimeHadronsCDCTRG->SetFillColor(kGray);
443 }
444
445 // find ECL EventT0 Bhabhas CDCTRG histogram and process it
446 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_CDCTRG");
447 tag = "bhabhaCDCTRG_ECLT0";
449 if (std::get<0>(processHistogram(h, tag))) {
450 m_cECLTimeBhaBhaCDCTRG->SetFillColor(0);
451 m_cECLTimeBhaBhaCDCTRG->Modified();
452 m_cECLTimeBhaBhaCDCTRG->Update();
454 } else {
455 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
456 if (h) h->Draw();
457 m_cECLTimeBhaBhaCDCTRG->SetFillColor(kGray);
459 }
460
461 // find ECL EventT0 Mumus CDCTRG histogram and process it
462 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_CDCTRG");
463 tag = "mumuCDCTRG_ECLT0";
465 if (std::get<0>(processHistogram(h, tag))) {
466 m_cECLTimeMuMuCDCTRG->SetFillColor(0);
467 m_cECLTimeMuMuCDCTRG->Modified();
468 m_cECLTimeMuMuCDCTRG->Update();
469 } else {
470 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
471 if (h) h->Draw();
472 m_cECLTimeMuMuCDCTRG->SetFillColor(kGray);
473 m_cECLTimeMuMuCDCTRG->Draw();
474 }
475
476
477 // --- CDC EventT0 plots for CDCTRG ---
478
479 // find CDC EventT0 Hadrons CDCTRG histogram and process it
480 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_CDCTRG");
481 tag = "hadronCDCTRG_CDCT0";
483 if (std::get<0>(processHistogram(h, tag))) {
484 m_cCDCTimeHadronsCDCTRG->SetFillColor(0);
485 m_cCDCTimeHadronsCDCTRG->Modified();
486 m_cCDCTimeHadronsCDCTRG->Update();
488 } else {
489 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
490 if (h) h->Draw();
491 m_cCDCTimeHadronsCDCTRG->SetFillColor(kGray);
493 }
494
495 // find CDC EventT0 Bhabhas CDCTRG histogram and process it
496 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_CDCTRG");
497 tag = "bhabhaCDCTRG_CDCT0";
499 if (std::get<0>(processHistogram(h, tag))) {
500 m_cCDCTimeBhaBhaCDCTRG->SetFillColor(0);
501 m_cCDCTimeBhaBhaCDCTRG->Modified();
502 m_cCDCTimeBhaBhaCDCTRG->Update();
504 } else {
505 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
506 if (h) h->Draw();
507 m_cCDCTimeBhaBhaCDCTRG->SetFillColor(kGray);
509 }
510
511 // find CDC EventT0 Mumus CDCTRG histogram and process it
512 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_CDCTRG");
513 tag = "mumuCDCTRG_CDCT0";
515 if (std::get<0>(processHistogram(h, tag))) {
516 m_cCDCTimeMuMuCDCTRG->SetFillColor(0);
517 m_cCDCTimeMuMuCDCTRG->Modified();
518 m_cCDCTimeMuMuCDCTRG->Update();
519 } else {
520 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
521 if (h) h->Draw();
522 m_cCDCTimeMuMuCDCTRG->SetFillColor(kGray);
523 m_cCDCTimeMuMuCDCTRG->Draw();
524 }
525
526
527 // --- TOP EventT0 plots for CDCTRG ---
528
529 // find TOP EventT0 Hadrons CDCTRG histogram and process it
530 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_CDCTRG");
531 tag = "hadronCDCTRG_TOPT0";
533 if (std::get<0>(processHistogram(h, tag))) {
534 m_cTOPTimeHadronsCDCTRG->SetFillColor(0);
535 m_cTOPTimeHadronsCDCTRG->Modified();
536 m_cTOPTimeHadronsCDCTRG->Update();
538 } else {
539 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
540 if (h) h->Draw();
541 m_cTOPTimeHadronsCDCTRG->SetFillColor(kGray);
543 }
544
545 // find TOP EventT0 Bhabhas CDCTRG histogram and process it
546 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_CDCTRG");
547 tag = "bhabhaCDCTRG_TOPT0";
549 if (std::get<0>(processHistogram(h, tag))) {
550 m_cTOPTimeBhaBhaCDCTRG->SetFillColor(0);
551 m_cTOPTimeBhaBhaCDCTRG->Modified();
552 m_cTOPTimeBhaBhaCDCTRG->Update();
554 } else {
555 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
556 if (h) h->Draw();
557 m_cTOPTimeBhaBhaCDCTRG->SetFillColor(kGray);
559 }
560
561 // find TOP EventT0 Mumus CDCTRG histogram and process it
562 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_CDCTRG");
563 tag = "mumuCDCTRG_TOPT0";
565 if (std::get<0>(processHistogram(h, tag))) {
566 m_cTOPTimeMuMuCDCTRG->SetFillColor(0);
567 m_cTOPTimeMuMuCDCTRG->Modified();
568 m_cTOPTimeMuMuCDCTRG->Update();
569 } else {
570 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
571 if (h) h->Draw();
572 m_cTOPTimeMuMuCDCTRG->SetFillColor(kGray);
573 m_cTOPTimeMuMuCDCTRG->Draw();
574 }
575
576
577 // --- SVD EventT0 plots for CDCTRG ---
578
579 // find SVD EventT0 Hadrons CDCTRG histogram and process it
580 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_CDCTRG");
581 tag = "hadronCDCTRG_SVDT0";
583 if (std::get<0>(processHistogram(h, tag))) {
584 m_cSVDTimeHadronsCDCTRG->SetFillColor(0);
585 m_cSVDTimeHadronsCDCTRG->Modified();
586 m_cSVDTimeHadronsCDCTRG->Update();
588 } else {
589 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
590 if (h) h->Draw();
591 m_cSVDTimeHadronsCDCTRG->SetFillColor(kGray);
593 }
594
595 // find SVD EventT0 Bhabhas CDCTRG histogram and process it
596 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_CDCTRG");
597 tag = "bhabhaCDCTRG_SVDT0";
599 if (std::get<0>(processHistogram(h, tag))) {
600 m_cSVDTimeBhaBhaCDCTRG->SetFillColor(0);
601 m_cSVDTimeBhaBhaCDCTRG->Modified();
602 m_cSVDTimeBhaBhaCDCTRG->Update();
604 } else {
605 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
606 if (h) h->Draw();
607 m_cSVDTimeBhaBhaCDCTRG->SetFillColor(kGray);
609 }
610
611 // find SVD EventT0 Mumus CDCTRG histogram and process it
612 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_CDCTRG");
613 tag = "mumuCDCTRG_SVDT0";
615 if (std::get<0>(processHistogram(h, tag))) {
616 m_cSVDTimeMuMuCDCTRG->SetFillColor(0);
617 m_cSVDTimeMuMuCDCTRG->Modified();
618 m_cSVDTimeMuMuCDCTRG->Update();
619 } else {
620 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
621 if (h) h->Draw();
622 m_cSVDTimeMuMuCDCTRG->SetFillColor(kGray);
623 m_cSVDTimeMuMuCDCTRG->Draw();
624 }
625}
626
628{
629 // --- ECL EventT0 plots for TOPTRG ---
630
631 // find ECL EventT0 Hadrons TOPTRG histogram and process it
632 TH1* h = findHist("EventT0/m_histEventT0_ECL_hadron_L1_TOPTRG");
633 TString tag = "hadronTOPTRG_ECLT0";
635 if (std::get<0>(processHistogram(h, tag))) {
636 m_cECLTimeHadronsTOPTRG->SetFillColor(0);
637 m_cECLTimeHadronsTOPTRG->Modified();
638 m_cECLTimeHadronsTOPTRG->Update();
640 } else {
641 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
642 if (h) h->Draw();
643 m_cECLTimeHadronsTOPTRG->SetFillColor(kGray);
645 }
646
647 // find ECL EventT0 Bhabhas TOPTRG histogram and process it
648 h = findHist("EventT0/m_histEventT0_ECL_bhabha_L1_TOPTRG");
649 tag = "bhabhaTOPTRG_ECLT0";
651 if (std::get<0>(processHistogram(h, tag))) {
652 m_cECLTimeBhaBhaTOPTRG->SetFillColor(0);
653 m_cECLTimeBhaBhaTOPTRG->Modified();
654 m_cECLTimeBhaBhaTOPTRG->Update();
656 } else {
657 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
658 if (h) h->Draw();
659 m_cECLTimeBhaBhaTOPTRG->SetFillColor(kGray);
661 }
662
663 // find ECL EventT0 Mumus TOPTRG histogram and process it
664 h = findHist("EventT0/m_histEventT0_ECL_mumu_L1_TOPTRG");
665 tag = "mumuTOPTRG_ECLT0";
667 if (std::get<0>(processHistogram(h, tag))) {
668 m_cECLTimeMuMuTOPTRG->SetFillColor(0);
669 m_cECLTimeMuMuTOPTRG->Modified();
670 m_cECLTimeMuMuTOPTRG->Update();
671 } else {
672 B2DEBUG(29, Form("Histogram ECL EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
673 if (h) h->Draw();
674 m_cECLTimeMuMuTOPTRG->SetFillColor(kGray);
675 m_cECLTimeMuMuTOPTRG->Draw();
676 }
677
678
679 // --- CDC EventT0 plots for TOPTRG ---
680
681 // find CDC EventT0 Hadrons TOPTRG histogram and process it
682 h = findHist("EventT0/m_histEventT0_CDC_hadron_L1_TOPTRG");
683 tag = "hadronTOPTRG_CDCT0";
685 if (std::get<0>(processHistogram(h, tag))) {
686 m_cCDCTimeHadronsTOPTRG->SetFillColor(0);
687 m_cCDCTimeHadronsTOPTRG->Modified();
688 m_cCDCTimeHadronsTOPTRG->Update();
690 } else {
691 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
692 if (h) h->Draw();
693 m_cCDCTimeHadronsTOPTRG->SetFillColor(kGray);
695 }
696
697 // find CDC EventT0 Bhabhas TOPTRG histogram and process it
698 h = findHist("EventT0/m_histEventT0_CDC_bhabha_L1_TOPTRG");
699 tag = "bhabhaTOPTRG_CDCT0";
701 if (std::get<0>(processHistogram(h, tag))) {
702 m_cCDCTimeBhaBhaTOPTRG->SetFillColor(0);
703 m_cCDCTimeBhaBhaTOPTRG->Modified();
704 m_cCDCTimeBhaBhaTOPTRG->Update();
706 } else {
707 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
708 if (h) h->Draw();
709 m_cCDCTimeBhaBhaTOPTRG->SetFillColor(kGray);
711 }
712
713 // find CDC EventT0 Mumus TOPTRG histogram and process it
714 h = findHist("EventT0/m_histEventT0_CDC_mumu_L1_TOPTRG");
715 tag = "mumuTOPTRG_CDCT0";
717 if (std::get<0>(processHistogram(h, tag))) {
718 m_cCDCTimeMuMuTOPTRG->SetFillColor(0);
719 m_cCDCTimeMuMuTOPTRG->Modified();
720 m_cCDCTimeMuMuTOPTRG->Update();
721 } else {
722 B2DEBUG(29, Form("Histogram CDC EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
723 if (h) h->Draw();
724 m_cCDCTimeMuMuTOPTRG->SetFillColor(kGray);
725 m_cCDCTimeMuMuTOPTRG->Draw();
726 }
727
728
729 // --- TOP EventT0 plots for TOPTRG ---
730
731 // find TOP EventT0 Hadrons TOPTRG histogram and process it
732 h = findHist("EventT0/m_histEventT0_TOP_hadron_L1_TOPTRG");
733 tag = "hadronTOPTRG_TOPT0";
735 if (std::get<0>(processHistogram(h, tag))) {
736 m_cTOPTimeHadronsTOPTRG->SetFillColor(0);
737 m_cTOPTimeHadronsTOPTRG->Modified();
738 m_cTOPTimeHadronsTOPTRG->Update();
740 } else {
741 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
742 if (h) h->Draw();
743 m_cTOPTimeHadronsTOPTRG->SetFillColor(kGray);
745 }
746
747 // find TOP EventT0 Bhabhas TOPTRG histogram and process it
748 h = findHist("EventT0/m_histEventT0_TOP_bhabha_L1_TOPTRG");
749 tag = "bhabhaTOPTRG_TOPT0";
751 if (std::get<0>(processHistogram(h, tag))) {
752 m_cTOPTimeBhaBhaTOPTRG->SetFillColor(0);
753 m_cTOPTimeBhaBhaTOPTRG->Modified();
754 m_cTOPTimeBhaBhaTOPTRG->Update();
756 } else {
757 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
758 if (h) h->Draw();
759 m_cTOPTimeBhaBhaTOPTRG->SetFillColor(kGray);
761 }
762
763 // find TOP EventT0 Mumus TOPTRG histogram and process it
764 h = findHist("EventT0/m_histEventT0_TOP_mumu_L1_TOPTRG");
765 tag = "mumuTOPTRG_TOPT0";
767 if (std::get<0>(processHistogram(h, tag))) {
768 m_cTOPTimeMuMuTOPTRG->SetFillColor(0);
769 m_cTOPTimeMuMuTOPTRG->Modified();
770 m_cTOPTimeMuMuTOPTRG->Update();
771 } else {
772 B2DEBUG(29, Form("Histogram TOP EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
773 if (h) h->Draw();
774 m_cTOPTimeMuMuTOPTRG->SetFillColor(kGray);
775 m_cTOPTimeMuMuTOPTRG->Draw();
776 }
777
778
779 // --- SVD EventT0 plots for TOPTRG ---
780
781 // find SVD EventT0 Hadrons TOPTRG histogram and process it
782 h = findHist("EventT0/m_histEventT0_SVD_hadron_L1_TOPTRG");
783 tag = "hadronTOPTRG_SVDT0";
785 if (std::get<0>(processHistogram(h, tag))) {
786 m_cSVDTimeHadronsTOPTRG->SetFillColor(0);
787 m_cSVDTimeHadronsTOPTRG->Modified();
788 m_cSVDTimeHadronsTOPTRG->Update();
790 } else {
791 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
792 if (h) h->Draw();
793 m_cSVDTimeHadronsTOPTRG->SetFillColor(kGray);
795 }
796
797 // find SVD EventT0 Bhabhas TOPTRG histogram and process it
798 h = findHist("EventT0/m_histEventT0_SVD_bhabha_L1_TOPTRG");
799 tag = "bhabhaTOPTRG_SVDT0";
801 if (std::get<0>(processHistogram(h, tag))) {
802 m_cSVDTimeBhaBhaTOPTRG->SetFillColor(0);
803 m_cSVDTimeBhaBhaTOPTRG->Modified();
804 m_cSVDTimeBhaBhaTOPTRG->Update();
806 } else {
807 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
808 if (h) h->Draw();
809 m_cSVDTimeBhaBhaTOPTRG->SetFillColor(kGray);
811 }
812
813 // find SVD EventT0 Mumus TOPTRG histogram and process it
814 h = findHist("EventT0/m_histEventT0_SVD_mumu_L1_TOPTRG");
815 tag = "mumuTOPTRG_SVDT0";
817 if (std::get<0>(processHistogram(h, tag))) {
818 m_cSVDTimeMuMuTOPTRG->SetFillColor(0);
819 m_cSVDTimeMuMuTOPTRG->Modified();
820 m_cSVDTimeMuMuTOPTRG->Update();
821 } else {
822 B2DEBUG(29, Form("Histogram SVD EventT0 for %s from EventT0 DQM not processed!", tag.Data()));
823 if (h) h->Draw();
824 m_cSVDTimeMuMuTOPTRG->SetFillColor(kGray);
825 m_cSVDTimeMuMuTOPTRG->Draw();
826 }
827}
828
830{
831 //ECLTRG canvas
832 m_cECLTimeHadronsECLTRG = new TCanvas("ECLTimeHadronsECLTRG", "ECL time hadrons ECLTRG jitter");
833 m_cECLTimeBhaBhaECLTRG = new TCanvas("ECLTimeBhaBhaECLTRG", "ECL time BhaBha ECLTRG jitter");
834 m_cECLTimeMuMuECLTRG = new TCanvas("ECLTimeMuMuECLTRG", "ECL time #mu#mu ECLTRG jitter");
835 m_cCDCTimeHadronsECLTRG = new TCanvas("CDCTimeHadronsECLTRG", "CDC time hadrons ECLTRG jitter");
836 m_cCDCTimeBhaBhaECLTRG = new TCanvas("CDCTimeBhaBhaECLTRG", "CDC time BhaBha ECLTRG jitter");
837 m_cCDCTimeMuMuECLTRG = new TCanvas("CDCTimeMuMuECLTRG", "CDC time #mu#mu ECLTRG jitter");
838 m_cTOPTimeHadronsECLTRG = new TCanvas("TOPTimeHadronsECLTRG", "TOP time hadrons ECLTRG jitter");
839 m_cTOPTimeBhaBhaECLTRG = new TCanvas("TOPTimeBhaBhaECLTRG", "TOP time BhaBha ECLTRG jitter");
840 m_cTOPTimeMuMuECLTRG = new TCanvas("TOPTimeMuMuECLTRG", "TOP time #mu#mu ECLTRG jitter");
841 m_cSVDTimeHadronsECLTRG = new TCanvas("SVDTimeHadronsECLTRG", "SVD time hadrons ECLTRG jitter");
842 m_cSVDTimeBhaBhaECLTRG = new TCanvas("SVDTimeBhaBhaECLTRG", "SVD time BhaBha ECLTRG jitter");
843 m_cSVDTimeMuMuECLTRG = new TCanvas("SVDTimeMuMuECLTRG", "SVD time #mu#mu ECLTRG jitter");
844
845 //CDCTRG canvas
846 m_cECLTimeHadronsCDCTRG = new TCanvas("ECLTimeHadronsCDCTRG", "ECL time hadrons CDCTRG jitter");
847 m_cECLTimeBhaBhaCDCTRG = new TCanvas("ECLTimeBhaBhaCDCTRG", "ECL time BhaBha CDCTRG jitter");
848 m_cECLTimeMuMuCDCTRG = new TCanvas("ECLTimeMuMuCDCTRG", "ECL time #mu#mu CDCTRG jitter");
849 m_cCDCTimeHadronsCDCTRG = new TCanvas("CDCTimeHadronsCDCTRG", "CDC time hadrons CDCTRG jitter");
850 m_cCDCTimeBhaBhaCDCTRG = new TCanvas("CDCTimeBhaBhaCDCTRG", "CDC time BhaBha CDCTRG jitter");
851 m_cCDCTimeMuMuCDCTRG = new TCanvas("CDCTimeMuMuCDCTRG", "CDC time #mu#mu CDCTRG jitter");
852 m_cTOPTimeHadronsCDCTRG = new TCanvas("TOPTimeHadronsCDCTRG", "TOP time hadrons CDCTRG jitter");
853 m_cTOPTimeBhaBhaCDCTRG = new TCanvas("TOPTimeBhaBhaCDCTRG", "TOP time BhaBha CDCTRG jitter");
854 m_cTOPTimeMuMuCDCTRG = new TCanvas("TOPTimeMuMuCDCTRG", "TOP time #mu#mu CDCTRG jitter");
855 m_cSVDTimeHadronsCDCTRG = new TCanvas("SVDTimeHadronsCDCTRG", "SVD time hadrons CDCTRG jitter");
856 m_cSVDTimeBhaBhaCDCTRG = new TCanvas("SVDTimeBhaBhaCDCTRG", "SVD time BhaBha CDCTRG jitter");
857 m_cSVDTimeMuMuCDCTRG = new TCanvas("SVDTimeMuMuCDCTRG", "SVD time #mu#mu CDCTRG jitter");
858
859 //TOPTRG canvas
860 m_cECLTimeHadronsTOPTRG = new TCanvas("ECLTimeHadronsTOPTRG", "ECL time hadrons TOPTRG jitter");
861 m_cECLTimeBhaBhaTOPTRG = new TCanvas("ECLTimeBhaBhaTOPTRG", "ECL time BhaBha TOPTRG jitter");
862 m_cECLTimeMuMuTOPTRG = new TCanvas("ECLTimeMuMuTOPTRG", "ECL time #mu#mu TOPTRG jitter");
863 m_cCDCTimeHadronsTOPTRG = new TCanvas("CDCTimeHadronsTOPTRG", "CDC time hadrons TOPTRG jitter");
864 m_cCDCTimeBhaBhaTOPTRG = new TCanvas("CDCTimeBhaBhaTOPTRG", "CDC time BhaBha TOPTRG jitter");
865 m_cCDCTimeMuMuTOPTRG = new TCanvas("CDCTimeMuMuTOPTRG", "CDC time #mu#mu TOPTRG jitter");
866 m_cTOPTimeHadronsTOPTRG = new TCanvas("TOPTimeHadronsTOPTRG", "TOP time hadrons TOPTRG jitter");
867 m_cTOPTimeBhaBhaTOPTRG = new TCanvas("TOPTimeBhaBhaTOPTRG", "TOP time BhaBha TOPTRG jitter");
868 m_cTOPTimeMuMuTOPTRG = new TCanvas("TOPTimeMuMuTOPTRG", "TOP time #mu#mu TOPTRG jitter");
869 m_cSVDTimeHadronsTOPTRG = new TCanvas("SVDTimeHadronsTOPTRG", "SVD time hadrons TOPTRG jitter");
870 m_cSVDTimeBhaBhaTOPTRG = new TCanvas("SVDTimeBhaBhaTOPTRG", "SVD time BhaBha TOPTRG jitter");
871 m_cSVDTimeMuMuTOPTRG = new TCanvas("SVDTimeMuMuTOPTRG", "SVD time #mu#mu TOPTRG jitter");
872}
873
875{
877 m_cECLTimeBhaBhaECLTRG->Clear();
878 m_cECLTimeMuMuECLTRG->Clear();
880 m_cCDCTimeBhaBhaECLTRG->Clear();
881 m_cCDCTimeMuMuECLTRG->Clear();
883 m_cTOPTimeBhaBhaECLTRG->Clear();
884 m_cTOPTimeMuMuECLTRG->Clear();
886 m_cSVDTimeBhaBhaECLTRG->Clear();
887 m_cSVDTimeMuMuECLTRG->Clear();
888
890 m_cECLTimeBhaBhaCDCTRG->Clear();
891 m_cECLTimeMuMuCDCTRG->Clear();
893 m_cCDCTimeBhaBhaCDCTRG->Clear();
894 m_cCDCTimeMuMuCDCTRG->Clear();
896 m_cTOPTimeBhaBhaCDCTRG->Clear();
897 m_cTOPTimeMuMuCDCTRG->Clear();
899 m_cSVDTimeBhaBhaCDCTRG->Clear();
900 m_cSVDTimeMuMuCDCTRG->Clear();
901
903 m_cECLTimeBhaBhaTOPTRG->Clear();
904 m_cECLTimeMuMuTOPTRG->Clear();
906 m_cCDCTimeBhaBhaTOPTRG->Clear();
907 m_cCDCTimeMuMuTOPTRG->Clear();
909 m_cTOPTimeBhaBhaTOPTRG->Clear();
910 m_cTOPTimeMuMuTOPTRG->Clear();
912 m_cSVDTimeBhaBhaTOPTRG->Clear();
913 m_cSVDTimeMuMuTOPTRG->Clear();
914}
915
917{
918 m_cECLTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf(");
919 m_cECLTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
920 m_cECLTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
921 m_cCDCTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
922 m_cCDCTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
923 m_cCDCTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
924 m_cTOPTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
925 m_cTOPTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
926 m_cTOPTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
927 m_cSVDTimeHadronsECLTRG->Print("EventT0_TriggerJitter.pdf");
928 m_cSVDTimeBhaBhaECLTRG->Print("EventT0_TriggerJitter.pdf");
929 m_cSVDTimeMuMuECLTRG->Print("EventT0_TriggerJitter.pdf");
930
931 m_cECLTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
932 m_cECLTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
933 m_cECLTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
934 m_cCDCTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
935 m_cCDCTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
936 m_cCDCTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
937 m_cTOPTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
938 m_cTOPTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
939 m_cTOPTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
940 m_cSVDTimeHadronsCDCTRG->Print("EventT0_TriggerJitter.pdf");
941 m_cSVDTimeBhaBhaCDCTRG->Print("EventT0_TriggerJitter.pdf");
942 m_cSVDTimeMuMuCDCTRG->Print("EventT0_TriggerJitter.pdf");
943
944 m_cECLTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
945 m_cECLTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
946 m_cECLTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
947 m_cCDCTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
948 m_cCDCTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
949 m_cCDCTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
950 m_cTOPTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
951 m_cTOPTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
952 m_cTOPTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf");
953 m_cSVDTimeHadronsTOPTRG->Print("EventT0_TriggerJitter.pdf");
954 m_cSVDTimeBhaBhaTOPTRG->Print("EventT0_TriggerJitter.pdf");
955 m_cSVDTimeMuMuTOPTRG->Print("EventT0_TriggerJitter.pdf)");
956}
957
958
960{
973
986
999}
1000
1001
1003{
1004 // Set the deltaT0 values to be accissble on the DQM web page for the shifters, with SVD EventT0 being the reference
1005 // As we are only interested in trends, just the raw difference is used, no (error) weighted values
1006 // However, not all values might exist, so make the algorithm fault tolerant
1007 if (m_ECLTRGHLThadronSVDT0 > -998) {
1008 if (m_ECLTRGHLThadronCDCT0 > -998) {
1009 setEpicsPV("ECLTRG_Hadron_Delta_CDCEventT0_SVDEventT0", m_ECLTRGHLThadronCDCT0 - m_ECLTRGHLThadronSVDT0);
1010 }
1011 if (m_ECLTRGHLThadronECLT0 > -998) {
1012 setEpicsPV("ECLTRG_Hadron_Delta_ECLEventT0_SVDEventT0", m_ECLTRGHLThadronECLT0 - m_ECLTRGHLThadronSVDT0);
1013 }
1014 if (m_ECLTRGHLThadronTOPT0 > -998) {
1015 setEpicsPV("ECLTRG_Hadron_Delta_TOPEventT0_SVDEventT0", m_ECLTRGHLThadronTOPT0 - m_ECLTRGHLThadronSVDT0);
1016 }
1017 }
1018}
TCanvas * m_cCDCTimeMuMuECLTRG
Canvas for CDC time ECLTRG jitter mumu.
TCanvas * m_cECLTimeHadronsECLTRG
Canvas for ECL time ECLTRG jitter hadrons.
void initialize() override final
create TCanvas and MonitoringObject
TCanvas * m_cTOPTimeHadronsECLTRG
Canvas for TOP time ECLTRG jitter hadrons.
TCanvas * m_cECLTimeHadronsCDCTRG
Canvas for ECL time CDCTRG jitter hadrons.
TCanvas * m_cECLTimeMuMuECLTRG
Canvas for ECL time ECLTRG jitter mumu.
TCanvas * m_cCDCTimeHadronsECLTRG
Canvas for CDC time ECLTRG jitter hadrons.
static double fDoubleGaus(double *x, double *par)
double gaussian fitting function for the jitter distribution
double m_ECLTRGHLThadronCDCT0
CDC T0 for ECLTRG jitter for HLT hadron events.
double m_ECLTRGHLThadronTOPT0
TOP T0 for ECLTRG jitter for HLT hadron events.
TCanvas * m_cCDCTimeBhaBhaECLTRG
Canvas for CDC time ECLTRG jitter bhabhas.
TCanvas * m_cSVDTimeMuMuTOPTRG
Canvas for SVD time TOPTRG jitter mumu.
double m_ECLTRGHLThadronSVDT0
SVD T0 for ECLTRG jitter for HLT hadron events.
TCanvas * m_cCDCTimeHadronsTOPTRG
Canvas for CDC time TOPTRG jitter hadrons.
TCanvas * m_cECLTimeBhaBhaECLTRG
Canvas for ECL time ECLTRG jitter bhabhas.
TCanvas * m_cCDCTimeBhaBhaCDCTRG
Canvas for CDC time CDCTRG jitter bhabhas.
std::tuple< bool, std::optional< double > > processHistogram(TH1 *h, TString tag, bool retrieveMeanT0=false)
process the EventT0 distribution fitting with two gaussians filling the MonitoringObject
std::string m_prefixCanvas
prefix to be added to canvas name when saved as pdf
void analyseECLTRGEventT0Distributions(bool retrieveDeltas=true)
Analyse the ECLTRG EventT0 distributions The only function to retrieve deltaT values ECL-SVD,...
double m_ECLTRGHLThadronECLT0
ECL T0 for ECLTRG jitter for HLT hadron events.
TCanvas * m_cCDCTimeMuMuCDCTRG
Canvas for CDC time CDCTRG jitter mumu.
MonitoringObject * m_monObj
MonitoringObject to be produced by this module.
TCanvas * m_cCDCTimeMuMuTOPTRG
Canvas for CDC time TOPTRG jitter mumu.
TCanvas * m_cCDCTimeHadronsCDCTRG
Canvas for CDC time CDCTRG jitter hadrons.
TCanvas * m_cTOPTimeHadronsTOPTRG
Canvas for TOP time TOPTRG jitter hadrons.
void analyseTOPTRGEventT0Distributions()
Analyse the TOPTRG EventT0 distributions.
void event() override final
fit the histograms in the event
TCanvas * m_cECLTimeBhaBhaTOPTRG
Canvas for ECL time TOPTRG jitter bhabhas.
TCanvas * m_cTOPTimeBhaBhaECLTRG
Canvas for TOP time ECLTRG jitter bhabhas.
TCanvas * m_cSVDTimeHadronsTOPTRG
Canvas for SVD time TOPTRG jitter hadrons.
TCanvas * m_cTOPTimeBhaBhaTOPTRG
Canvas for TOP time TOPTRG jitter bhabhas.
TCanvas * m_cSVDTimeBhaBhaECLTRG
Canvas for SVD time ECLTRG jitter bhabhas.
TCanvas * m_cTOPTimeBhaBhaCDCTRG
Canvas for TOP time CDCTRG jitter bhabhas.
uint m_nEntriesMin
minimum number of entries to process the histogram
TCanvas * m_cECLTimeMuMuCDCTRG
Canvas for ECL time CDCTRG jitter mumu.
TCanvas * m_cSVDTimeMuMuCDCTRG
Canvas for SVD time CDCTRG jitter mumu.
TCanvas * m_cTOPTimeMuMuTOPTRG
Canvas for TOP time TOPTRG jitter mumu.
TCanvas * m_cECLTimeBhaBhaCDCTRG
Canvas for ECL time CDCTRG jitter bhabhas.
void endRun() override final
final fit of T0 distributions
TCanvas * m_cTOPTimeHadronsCDCTRG
Canvas for TOP time CDCTRG jitter hadrons.
TCanvas * m_cECLTimeHadronsTOPTRG
Canvas for ECL time TOPTRG jitter hadrons.
TCanvas * m_cCDCTimeBhaBhaTOPTRG
Canvas for CDC time TOPTRG jitter bhabhas.
TCanvas * m_cSVDTimeHadronsECLTRG
Canvas for SVD time ECLTRG jitter hadrons.
TCanvas * m_cECLTimeMuMuTOPTRG
Canvas for ECL time TOPTRG jitter mumu.
TCanvas * m_cTOPTimeMuMuCDCTRG
Canvas for TOP time CDCTRG jitter mumu.
TCanvas * m_cSVDTimeMuMuECLTRG
Canvas for SVD time ECLTRG jitter mumu.
TCanvas * m_cSVDTimeHadronsCDCTRG
Canvas for SVD time CDCTRG jitter hadrons.
TCanvas * m_cTOPTimeMuMuECLTRG
Canvas for TOP time ECLTRG jitter mumu.
TCanvas * m_cSVDTimeBhaBhaCDCTRG
Canvas for SVD time CDCTRG jitter bhabhas.
TCanvas * m_cSVDTimeBhaBhaTOPTRG
Canvas for SVD time TOPTRG jitter bhabhas.
void analyseCDCTRGEventT0Distributions()
Analyse the CDCTRG EventT0 distributions.
The base class for the histogram analysis module.
static MonitoringObject * getMonitoringObject(const std::string &name)
Get MonitoringObject with given name (new object is created if non-existing)
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
void setEpicsPV(std::string keyname, double value)
Write value to a EPICS PV.
int registerEpicsPV(std::string pvname, std::string keyname="")
EPICS related Functions.
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setVariable(const std::string &var, float val, float upErr=-1., float dwErr=-1)
set value to float variable (new variable is made if not yet existing)
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition: Module.h:560
#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.