19 #include <THashList.h>
24 #include <TObjString.h>
25 #include <TObjArray.h>
27 #include "AliEMCALTriggerPatchInfo.h"
28 #include "AliEMCALTriggerFastOR.h"
30 #include "AliEMCALGeometry.h"
31 #include "AliVCaloCells.h"
33 #include "AliEMCALTriggerConstants.h"
37 using namespace EMCALTrigger;
49 fOfflineBadChannels(),
77 for (Int_t i = 0; i < 3; i++) {
80 for (Int_t itype = 0; itype < 6; itype++) {
99 fOfflineBadChannels(),
100 fFastORPedestal(5000),
127 for (Int_t i = 0; i < 3; i++) {
130 for (Int_t itype = 0; itype < 6; itype++) {
149 fOfflineBadChannels(triggerQA.fOfflineBadChannels),
151 fFastORPedestal(triggerQA.fFastORPedestal),
152 fFastorL0Th(triggerQA.fFastorL0Th),
153 fFastorL1Th(triggerQA.fFastorL1Th),
154 fADCperBin(triggerQA.fADCperBin),
156 fL0MinTime(triggerQA.fL0MinTime),
157 fL0MaxTime(triggerQA.fL0MaxTime),
158 fMinCellAmp(triggerQA.fMinCellAmp),
159 fMinL0FastORAmp(triggerQA.fMinL0FastORAmp),
160 fMinL1FastORAmp(triggerQA.fMinL1FastORAmp),
161 fHistManager(triggerQA.GetName()),
162 fDCalPlots(triggerQA.fDCalPlots),
177 for (Int_t i = 0; i < 3; i++) {
180 for (Int_t itype = 0; itype < 6; itype++) {
199 while (stream.good()) {
210 std::ifstream
file(fname);
221 while (stream.good()) {
232 std::ifstream
file(fname);
243 AliWarning(Form(
"Abs. ID %d out of range (0,5000)", absId));
257 while (stream.good()) {
269 std::ifstream
file(fname);
294 fGeom = AliEMCALGeometry::GetInstance();
296 AliError(
"Could not get geometry!");
306 Int_t maxFORabsId = 5000;
313 hname = Form(
"EMCTRQA_histFastORL0");
314 htitle = Form(
"EMCTRQA_histFastORL0;FastOR abs. ID;entries above 0");
315 fHistManager.CreateTH1(hname, htitle, maxFORabsId, 0, maxFORabsId);
317 hname = Form(
"EMCTRQA_histLargeAmpFastORL0");
318 htitle = Form(
"EMCTRQA_histLargeAmpFastORL0 (>%d);FastOR abs. ID;entries above %d",
fFastorL0Th,
fFastorL0Th);
319 fHistManager.CreateTH1(hname, htitle, maxFORabsId, 0, maxFORabsId);
321 hname = Form(
"EMCTRQA_histFastORL0Amp");
322 htitle = Form(
"EMCTRQA_histFastORL0Amp;FastOR abs. ID;ADC counts");
323 fHistManager.CreateTH2(hname, htitle, maxFORabsId, 0, maxFORabsId, 1024, 0, 4096);
325 hname = Form(
"EMCTRQA_histFastORL0Time");
326 htitle = Form(
"EMCTRQA_histFastORL0Time;FastOR abs. ID;time");
327 fHistManager.CreateTH2(hname, htitle, maxFORabsId, 0, maxFORabsId, 21, -1, 20);
329 hname = Form(
"EMCTRQA_histFastORL0AmpVsTime");
330 htitle = Form(
"EMCTRQA_histFastORL0AmpVsTime;time;amplitude");
331 fHistManager.CreateTH2(hname, htitle, 21, -1, 20, 1024, 0, 4096);
333 hname = Form(
"EMCTRQA_histFastORL0TimeOk");
334 htitle = Form(
"EMCTRQA_histFastORL0TimeOk;FastOR abs. ID;entries (%d < time < %d)",
fL0MinTime,
fL0MaxTime);
335 fHistManager.CreateTH1(hname, htitle, maxFORabsId, 0, maxFORabsId);
337 hname = Form(
"EMCTRQA_histFastORL0AmpTimeOk");
338 htitle = Form(
"EMCTRQA_histFastORL0AmpTimeOk;FastOR abs. ID;ADC counts (%d < time < %d)",
fL0MinTime,
fL0MaxTime);
339 fHistManager.CreateTH2(hname, htitle, maxFORabsId, 0, maxFORabsId, 1024, 0, 4096);
341 hname = Form(
"EMCTRQA_histFastORL1");
342 htitle = Form(
"EMCTRQA_histFastORL1;FastOR abs. ID;entries above 0");
343 fHistManager.CreateTH1(hname, htitle, maxFORabsId, 0, maxFORabsId);
345 hname = Form(
"EMCTRQA_histLargeAmpFastORL1");
346 htitle = Form(
"EMCTRQA_histLargeAmpFastORL1 (>%d);FastOR abs. ID;entries above %d",
fFastorL1Th,
fFastorL1Th);
347 fHistManager.CreateTH1(hname, htitle, maxFORabsId, 0, maxFORabsId);
349 hname = Form(
"EMCTRQA_histFastORL1Amp");
350 htitle = Form(
"EMCTRQA_histFastORL1Amp;FastOR abs. ID;L1 time sum");
351 fHistManager.CreateTH2(hname, htitle, maxFORabsId, 0, maxFORabsId, 1024, 0, 4096);
353 hname = Form(
"EMCTRQA_histFastORL1AmpVsL0Amp");
354 htitle = Form(
"EMCTRQA_histFastORL1AmpVsL0Amp;L0 amplitude;L1 time sum;entries");
355 fHistManager.CreateTH2(hname, htitle, 256, 0, 1024, 256, 0, 1024);
357 hname = Form(
"EMCTRQA_histCellAmp");
358 htitle = Form(
"EMCTRQA_histCellAmp;cell abs. ID;energy (GeV)");
359 fHistManager.CreateTH2(hname, htitle, maxFORabsId*4, 0, maxFORabsId*4, 400, 0, 200);
361 hname = Form(
"EMCTRQA_histCell");
362 htitle = Form(
"EMCTRQA_histCell;cell abs. ID;entries above 0 GeV");
363 fHistManager.CreateTH1(hname, htitle, maxFORabsId*4, 0, maxFORabsId*4);
365 hname = Form(
"EMCTRQA_histLargeAmpCell");
366 htitle = Form(
"EMCTRQA_histLargeAmpCell (>%.1f);cell abs. ID;entries above %.1f GeV",
fFastorL1Th * EMCALTrigger::kEMCL1ADCtoGeV,
fFastorL1Th * EMCALTrigger::kEMCL1ADCtoGeV);
367 fHistManager.CreateTH1(hname, htitle, maxFORabsId*4, 0, maxFORabsId*4);
369 hname = Form(
"EMCTRQA_histCellAmpVsFastORL0Amp");
370 htitle = Form(
"EMCTRQA_histCellAmpVsFastORL0Amp;FastOR L0 amplitude;2x2 cell sum energy (GeV)");
371 fHistManager.CreateTH2(hname, htitle, 1024, 0, 4096, 400, 0, 200);
373 hname = Form(
"EMCTRQA_histCellAmpVsFastORL1Amp");
374 htitle = Form(
"EMCTRQA_histCellAmpVsFastORL1Amp;FastOR L1 amplitude;2x2 cell sum energy (GeV)");
375 fHistManager.CreateTH2(hname, htitle, 1024, 0, 4096, 400, 0, 200);
377 hname = Form(
"EMCTRQA_histFastORNoOffline");
378 htitle = Form(
"EMCTRQA_histFastORNoOffline;FastOR abs. ID;entries with no offline energy");
379 fHistManager.CreateTH1(hname, htitle, maxFORabsId, 0, maxFORabsId);
381 const char* det[2] = {
"EMCal",
"DCal" };
383 for (Int_t itrig = 0; itrig < 6; itrig++) {
386 for (Int_t idet = 0; idet < ndet; idet++) {
387 hname = Form(
"EMCTRQA_hist%s%sMaxOfflineVsRecalc", det[idet], kEMCalTriggerNames[itrig].
Data());
388 htitle = Form(
"EMCTRQA_hist%s%sMaxOfflineVsRecalc;Offline;Recalc;entries", det[idet], kEMCalTriggerNames[itrig].
Data());
391 hname = Form(
"EMCTRQA_hist%s%sOfflineVsRecalc", det[idet], kEMCalTriggerNames[itrig].
Data());
392 htitle = Form(
"EMCTRQA_hist%s%sOfflineVsRecalc;Offline;Recalc;entries", det[idet], kEMCalTriggerNames[itrig].
Data());
396 for (Int_t itype = 0; itype < 3; itype++) {
398 for (Int_t idet = 0; idet < ndet; idet++) {
399 hname = Form(
"EMCTRQA_hist%sPatchAmp%s%s", det[idet], kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
400 htitle = Form(
"EMCTRQA_hist%sPatchAmp%s%s;amplitude;entries", det[idet], kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
403 hname = Form(
"EMCTRQA_hist%sMaxPatchAmp%s%s", det[idet], kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
404 htitle = Form(
"EMCTRQA_hist%sMaxPatchAmp%s%s;amplitude;entries", det[idet], kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
407 for (Int_t itrig2 = itrig+1; itrig2 < 6; itrig2++) {
409 hname = Form(
"EMCTRQA_hist%s%sMaxVs%sMax%s", det[idet], kEMCalTriggerNames[itrig].
Data(), kEMCalTriggerNames[itrig2].
Data(),
fgkPatchTypes[itype].
Data());
410 htitle = Form(
"EMCTRQA_hist%s%sMaxVs%sMax%s;%s max;%s max;entries", det[idet], kEMCalTriggerNames[itrig].
Data(), kEMCalTriggerNames[itrig2].
Data(),
fgkPatchTypes[itype].
Data(), kEMCalTriggerNames[itrig2].
Data(), kEMCalTriggerNames[itrig].
Data());
416 hname = Form(
"EMCTRQA_histEMCalMaxVsDCalMax%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
417 htitle = Form(
"EMCTRQA_histEMCalMaxVsDCalMax%s%s;EMCal max;DCal max;entries", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
421 hname = Form(
"EMCTRQA_histEdgePos%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
422 htitle = Form(
"EMCTRQA_histEdgePos%s%s;col;row;entries", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
423 fHistManager.CreateTH2(hname, htitle, 48, 0, 48, 105, 0, 105);
425 hname = Form(
"EMCTRQA_histGeoPos%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
426 htitle = Form(
"EMCTRQA_histGeoPos%s%s;#eta;#phi;entries", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
427 fHistManager.CreateTH2(hname, htitle, 60, -1, 1, 150, 0, TMath::TwoPi());
429 hname = Form(
"EMCTRQA_histLargeAmpEdgePos%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
430 htitle = Form(
"EMCTRQA_histLargeAmpEdgePos%s%s (>700);col;row;entries above 700", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
431 fHistManager.CreateTH2(hname, htitle, 48, 0, 48, 105, 0, 105);
435 for (Int_t idet = 0; idet < ndet; idet++) {
436 hname = Form(
"EMCTRQA_hist%sOfflineSumVsL0Sum", det[idet]);
437 htitle = hname +
";Sum of L0 amplitudes;Sum of cell energies (GeV)";
438 fHistManager.CreateTH2(hname, htitle, 250, 0, 5000, 400, 0, 200);
440 hname = Form(
"EMCTRQA_hist%sOfflineSumVsL1Sum", det[idet]);
441 htitle = hname +
";Sum of L1 amplitudes;Sum of cell energies (GeV)";
442 fHistManager.CreateTH2(hname, htitle, 250, 0, 5000, 400, 0, 200);
444 hname = Form(
"EMCTRQA_hist%sL1SumVsL0Sum", det[idet]);
445 htitle = hname +
";Sum of L0 amplitudes;Sum of L1 amplitudes";
446 fHistManager.CreateTH2(hname, htitle, 250, 0, 5000, 250, 0, 5000);
448 hname = Form(
"EMCTRQA_hist%sNCellVsNL0", det[idet]);
449 htitle = hname +
";Number of L0 FastORs;Number of cells";
450 fHistManager.CreateTH2(hname, htitle, 250, 0, 500, 250, 0, 2000);
452 hname = Form(
"EMCTRQA_hist%sNCellVsNL1", det[idet]);
453 htitle = hname +
";Number of L1 FastORs;Number of cells";
454 fHistManager.CreateTH2(hname, htitle, 250, 0, 500, 250, 0, 2000);
456 hname = Form(
"EMCTRQA_hist%sNL1VsNL0", det[idet]);
457 htitle = hname +
";Number of L0 FastORs;Number of L1 FastORs";
458 fHistManager.CreateTH2(hname, htitle, 250, 0, 500, 250, 0, 500);
470 Int_t triggerBits[6] = { patch->GetTriggerBitConfig()->GetLevel0Bit(),
471 patch->GetTriggerBitConfig()->GetGammaLowBit(),
472 patch->GetTriggerBitConfig()->GetGammaHighBit(),
473 patch->GetTriggerBitConfig()->GetJetLowBit(),
474 patch->GetTriggerBitConfig()->GetJetHighBit(),
475 patch->GetTriggerBitConfig()->GetBkgBit()
478 Int_t offsets[3] = { 0, AliEMCALTriggerPatchInfo::kRecalcOffset, AliEMCALTriggerPatchInfo::kOfflineOffset };
479 Int_t amplitudes[3] = { patch->GetADCAmp(), patch->GetADCAmp(), patch->GetADCOfflineAmp() };
480 Double_t bkg[3] = {0};
482 for (Int_t itrig = 0; itrig < 6; itrig++) {
485 for (Int_t itype = 0; itype < 3; itype++) {
487 if (!patch->TestTriggerBit(triggerBits[itrig]+offsets[itype]))
continue;
491 if (patch->IsEMCal()) {
495 else if (patch->IsDCalPHOS()) {
501 AliWarning(Form(
"Patch is not EMCal nor DCal/PHOS (pos: %d, %d)", patch->GetRowStart(), patch->GetColStart()));
504 hname = Form(
"EMCTRQA_hist%s%sOfflineVsRecalc", det.Data(), kEMCalTriggerNames[itrig].Data());
505 fHistManager.FillTH2(hname, amplitudes[2], amplitudes[1]);
507 hname = Form(
"EMCTRQA_histEdgePos%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
508 fHistManager.FillTH2(hname, patch->GetColStart(), patch->GetRowStart());
510 hname = Form(
"EMCTRQA_histGeoPos%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
511 fHistManager.FillTH2(hname, patch->GetEtaGeo(), TVector2::Phi_0_2pi(patch->GetPhiGeo()));
513 if (amplitudes[itype] > 700) {
514 hname = Form(
"EMCTRQA_histLargeAmpEdgePos%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
515 fHistManager.FillTH2(hname, patch->GetColStart(), patch->GetRowStart());
518 hname = Form(
"EMCTRQA_hist%sPatchAmp%s%s", det.Data(), kEMCalTriggerNames[itrig].Data(),
fgkPatchTypes[itype].Data());
523 Printf(
"Type = %s; global pos = (%d, %d); Amp (online) = %d; Amp (offline) = %d; Patch energy = %.3f\n"
524 "Position (CM): Eta=%.3f, Phi=%.3f\n"
525 "Position (Geo): Eta=%.3f, Phi=%.3f\n",
526 kEMCalTriggerNames[itrig].
Data(), patch->GetRowStart(), patch->GetColStart(), patch->GetADCAmp(), patch->GetADCOfflineAmp(), patch->GetPatchE(),
527 patch->GetEtaCM(), patch->GetPhiCM(),
528 patch->GetEtaGeo(), patch->GetPhiGeo());
542 Double_t pos[3] = {0};
544 if (
fGeom->IsInDCAL(pos[0], pos[1], pos[2])) {
549 else if (
fGeom->IsInEMCAL(pos[0], pos[1], pos[2])) {
554 AliWarning(Form(
"Cell with absolute ID %hd was not identified as neither DCal or EMCal!!", cell.
fAbsId));
562 hname = Form(
"EMCTRQA_histCell");
565 hname = Form(
"EMCTRQA_histCellAmp");
569 hname = Form(
"EMCTRQA_histLargeAmpCell");
584 Int_t L0amp = fastor->GetL0Amp() -
fFastORPedestal[fastor->GetAbsId()];
585 Bool_t isDCal = kFALSE;
587 Double_t offlineAmp = 0;
591 fGeom->GetCellIndexFromFastORIndex(fastor->GetAbsId(), idx);
592 Double_t pos[3] = {0};
594 fGeom->GetGlobal(idx[0], pos);
595 isDCal =
fGeom->IsInDCAL(pos[0], pos[1], pos[2]);
600 for (Int_t i = 0; i < 4; i++) {
601 offlineAmp += cells->GetCellAmplitude(idx[i]);
609 hname = Form(
"EMCTRQA_histFastORL0");
612 hname = Form(
"EMCTRQA_histFastORL0Amp");
615 hname = Form(
"EMCTRQA_histFastORL0Time");
616 fHistManager.FillTH2(hname, fastor->GetAbsId(), fastor->GetL0Time());
618 hname = Form(
"EMCTRQA_histFastORL0AmpVsTime");
619 fHistManager.FillTH2(hname, fastor->GetL0Time(), L0amp);
622 hname = Form(
"EMCTRQA_histFastORL0TimeOk");
625 hname = Form(
"EMCTRQA_histFastORL0AmpTimeOk");
629 hname = Form(
"EMCTRQA_histCellAmpVsFastORL0Amp");
631 if (offlineAmp == 0) {
632 hname = Form(
"EMCTRQA_histFastORNoOffline");
647 hname = Form(
"EMCTRQA_histLargeAmpFastORL0");
652 hname = Form(
"EMCTRQA_histFastORL1");
655 hname = Form(
"EMCTRQA_histFastORL1Amp");
656 fHistManager.FillTH2(hname, fastor->GetAbsId(), fastor->GetL1Amp());
667 hname = Form(
"EMCTRQA_histCellAmpVsFastORL1Amp");
668 fHistManager.FillTH2(hname, fastor->GetL1Amp(), offlineAmp);
672 hname = Form(
"EMCTRQA_histLargeAmpFastORL1");
677 hname = Form(
"EMCTRQA_histFastORL1AmpVsL0Amp");
688 AliDebug(2, Form(
"Entering AliEmcalTriggerQAAP::EventCompleted"));
692 for (Int_t itrig = 0; itrig < 6; itrig++) {
694 AliDebug(2, Form(
"Trigger type: %s", kEMCalTriggerNames[itrig].
Data()));
696 hname = Form(
"EMCTRQA_histEMCal%sMaxOfflineVsRecalc", kEMCalTriggerNames[itrig].
Data());
700 hname = Form(
"EMCTRQA_histDCal%sMaxOfflineVsRecalc", kEMCalTriggerNames[itrig].
Data());
704 for (Int_t itype = 0; itype < 3; itype++) {
708 hname = Form(
"EMCTRQA_histEMCalMaxPatchAmp%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
712 hname = Form(
"EMCTRQA_histDCalMaxPatchAmp%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
715 hname = Form(
"EMCTRQA_histEMCalMaxVsDCalMax%s%s", kEMCalTriggerNames[itrig].
Data(),
fgkPatchTypes[itype].
Data());
719 for (Int_t itrig2 = itrig+1; itrig2 < 6; itrig2++) {
722 hname = Form(
"EMCTRQA_histEMCal%sMaxVs%sMax%s", kEMCalTriggerNames[itrig].
Data(), kEMCalTriggerNames[itrig2].
Data(),
fgkPatchTypes[itype].
Data());
726 hname = Form(
"EMCTRQA_histDCal%sMaxVs%sMax%s", kEMCalTriggerNames[itrig].
Data(), kEMCalTriggerNames[itrig2].
Data(),
fgkPatchTypes[itype].
Data());
Int_t fNL0EMCal
! EMCal number of L0 FastORs (will be reset each event)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Double_t fMinCellAmp
Minimum offline amplitude of the cells.
void EnablePatchType(PatchTypes_t type, Bool_t e=kTRUE)
Int_t fNCellDCal
! DCal number of offline cells (will be reset each event)
TArrayF fFastORPedestal
FastOR pedestal.
Int_t fSumL1EMCal
! EMCal sum of all online energy deposition (will be reset each event)
AliEMCALGeometry * fGeom
! EMCal geometry
EMCALTrigger::EMCalTriggerType_t EMCalTriggerType_t
void ExecOnce()
Actions to be executed only once for the first event.
Int_t fNCellEMCal
! EMCal number of offline cells (will be reset each event)
void EnableTriggerType(EMCalTriggerType_t type, Bool_t e=kTRUE)
Int_t fFastorL1Th
FastOR L1 threshold.
void SetFastORPedestal(Short_t absId, Float_t ped)
Bool_t fDCalPlots
Whether to add DCal QA plots.
void ReadFastORBadChannelFromStream(std::istream &stream)
Int_t fMaxPatchDCal[6][3]
! DCal max ADC amplitude (will be reset each event)
void ReadFastORPedestalFromFile(const char *fname)
Int_t fMinL1FastORAmp
Minimum L1 amplitude of the FastORs.
static const Int_t fgkMaxPatchAmp[6]
Maximum patch amplitude for the histograms.
void ReadFastORPedestalFromStream(std::istream &stream)
std::set< Short_t > fOfflineBadChannels
Abd ID of offline bad channels.
void ReadOfflineBadChannelFromFile(const char *fname)
void ProcessFastor(AliEMCALTriggerFastOR *fastor, AliVCaloCells *cells)
Double_t fSumOfflineEMCal
! EMCal sum of all offline energy deposition (will be reset each event)
Int_t fADCperBin
ADC counts per bin.
virtual ~AliEmcalTriggerQAPP()
Destructor.
AliEmcalTriggerQAPP()
Dummy constructor for ROOT I/O.
void ReadOfflineBadChannelFromStream(std::istream &stream)
Int_t fNL0DCal
! DCal number of L0 FastORs (will be reset each event)
void AddOfflineBadChannel(Short_t absId)
Int_t fL0MaxTime
Maximum L0 time.
Bool_t fEnabledTriggerTypes[6]
Trigger types to be plotted.
Int_t fMaxPatchEMCal[6][3]
! EMCal max ADC amplitude (will be reset each event)
void ProcessPatch(AliEMCALTriggerPatchInfo *patch)
Int_t fSumL0DCal
! DCal sum of all online energy deposition (will be reset each event)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Int_t fFastorL0Th
FastOR L0 threshold.
static const TString fgkPatchTypes[3]
Patch type names.
Double_t fSumOfflineDCal
! DCal sum of all offline energy deposition (will be reset each event)
Int_t fSumL0EMCal
! EMCal sum of all online energy deposition (will be reset each event)
THistManager fHistManager
Histogram manager.
Int_t fNL1DCal
! DCal number of L1 FastORs (will be reset each event)
void Init()
Initialize the class, i.e. allocate histograms.
Int_t fL0MinTime
Minimum L0 time.
void ReadFastORBadChannelFromFile(const char *fname)
Bool_t fEnabledPatchTypes[3]
Patch types to be plotted.
Int_t fDebugLevel
Debug level.
Class to generate EMCal trigger QA plots in pp collisions.
Int_t fSumL1DCal
! DCal sum of all online energy deposition (will be reset each event)
Int_t fMinL0FastORAmp
Minimum L0 amplitude of the FastORs.
std::set< Short_t > fBadChannels
Container of bad channels.
Int_t fNL1EMCal
! EMCal number of L1 FastORs (will be reset each event)
void AddFastORBadChannel(Short_t absId)
void ProcessCell(const AliEmcalCellInfo &cell)