19 #include <TProfile2D.h>
20 #include <TStreamerInfo.h>
24 #include "AliVCluster.h"
25 #include "AliVCaloCells.h"
26 #include "AliVEvent.h"
27 #include "AliCentrality.h"
29 #include "AliVEvent.h"
30 #include "AliVCaloTrigger.h"
31 #include "AliESDVZERO.h"
33 #include "AliEMCALGeometry.h"
34 #include "AliEMCALRecoUtils.h"
35 #include "AliOADBContainer.h"
36 #include "AliAnalysisManager.h"
37 #include "AliMultSelection.h"
51 fOutputList(0), fRecoUtils(0x0),
52 fGeoSet(0), fGeometry(0), fGeoName(
""),
53 fOADBSet(kFALSE), fAccessOADB(kTRUE), fOADBFilePath(
""),
54 fBitEGA(0), fBitEJE(0),
56 fSTUTotal(0), fTRUTotal(0),
57 fV0Trigger(0), fV0A(0), fV0C(0),
58 fFillV0SigHisto(0), fFillCenHisto(0), fFillClusAcceptHisto(0),
60 fFirstSM (0), fLastSM (0),
61 fCentEstimator(
"V0M"), fUseAliCentrality(0),
63 fEventL0 (0), fEventL0D (0),
64 fEventL1G (0), fEventL1GD (0),
65 fEventL1G2 (0), fEventL1G2D(0),
66 fEventL1J (0), fEventL1JD (0),
67 fEventL1J2 (0), fEventL1J2D(0),
68 fEventCen (0), fEventSem (0),
71 fhNEvents(0), fhFORAmp(0),
72 fhFORAmpL1G(0), fhFORAmpL1G2(0),
73 fhFORAmpL1J(0), fhFORAmpL1J2(0),
74 fhL0Amp(0), fhL0AmpL1G(0), fhL0AmpL1J(0),
75 fhL1Amp(0), fhL1GAmp(0), fhL1G2Amp(0),
76 fhL1JAmp(0), fhL1J2Amp(0), fhL1FOREnergy(0),
77 fhL0Patch(0), fhL1GPatch(0), fhL1G2Patch(0),
78 fhL1GPatchNotFake(0), fhL1GPatchFake(0), fhL1GPatchNotAllFake(0),
79 fhL1GPatchAllFake(0), fhL1GPatchNotAllFakeMax(0),
80 fhL1GPatchAllFakeMax(0), fhL1GPatchNotAllFakeMaxE(0),
81 fhL1GPatchAllFakeMaxE(0), fhL1GPatchNotAllFakeE(0),
82 fhL1GPatchAllFakeE(0), fhL1GPatchFakeE(0),
83 fhL1GPatchNotFakeE(0), fhNPatchFake(0), fhNPatchNotFake(0),
84 fhL1JPatch(0), fhL1J2Patch(0),
85 fhFEESTU(0), fhTRUSTU(0), fhV0STU(0),
86 fhGPMaxVV0TT(0), fhJPMaxVV0TT(0),
87 fhFORMeanAmp(0), fhL0MeanAmp(0), fhL1MeanAmp(0),
88 fhL1GPatchMax(0), fhL1G2PatchMax(0),
89 fhL1JPatchMax(0), fhL1J2PatchMax(0),
91 fNBinsSTUSignal (300), fMaxSTUSignal (30000),
92 fNBinsTRUSignal (300), fMaxTRUSignal (30000),
93 fNBinsV0Signal (300), fMaxV0Signal (30000),
94 fNBinsSTUFEERatio(300), fMaxSTUFEERatio(100),
95 fNBinsSTUTRURatio(300), fMaxSTUTRURatio(100),
96 fNBinsClusterE (100), fMaxClusterE (50),
97 fNBinsClusterPhi (250), fMaxClusterPhi (5.71), fMinClusterPhi (1.39),
98 fNBinsClusterEta (96), fMaxClusterEta (0.7),
100 fMapCellL1G (), fMapCellL1G2 (),
101 fMapCellL1J (), fMapCellL1J2 (),
102 fMapTrigL0 (), fMapTrigL1 (),
103 fMapTrigL0L1G(), fMapTrigL0L1J(),
104 fMapTrigL1G (), fMapTrigL1G2 (),
105 fMapTrigL1J (), fMapTrigL1J2 ()
115 fOutputList(0), fRecoUtils(0x0),
116 fGeoSet(0), fGeometry(0), fGeoName(
""),
117 fOADBSet(kFALSE), fAccessOADB(kTRUE), fOADBFilePath(
""),
118 fBitEGA(0), fBitEJE(0),
120 fSTUTotal(0), fTRUTotal(0),
121 fV0Trigger(0), fV0A(0), fV0C(0),
122 fFillV0SigHisto(0), fFillCenHisto(0), fFillClusAcceptHisto(0),
124 fFirstSM (0), fLastSM (0),
125 fCentEstimator(
"V0M"), fUseAliCentrality(0),
127 fEventL0 (0), fEventL0D (0),
128 fEventL1G (0), fEventL1GD (0),
129 fEventL1G2 (0), fEventL1G2D(0),
130 fEventL1J (0), fEventL1JD (0),
131 fEventL1J2 (0), fEventL1J2D(0),
132 fEventCen (0), fEventSem (0),
135 fhNEvents(0), fhFORAmp(0),
136 fhFORAmpL1G(0), fhFORAmpL1G2(0),
137 fhFORAmpL1J(0), fhFORAmpL1J2(0),
138 fhL0Amp(0), fhL0AmpL1G(0), fhL0AmpL1J(0),
139 fhL1Amp(0), fhL1GAmp(0), fhL1G2Amp(0),
140 fhL1JAmp(0), fhL1J2Amp(0), fhL1FOREnergy(0),
141 fhL0Patch(0), fhL1GPatch(0), fhL1G2Patch(0),
142 fhL1GPatchNotFake(0), fhL1GPatchFake(0), fhL1GPatchNotAllFake(0),
143 fhL1GPatchAllFake(0), fhL1GPatchNotAllFakeMax(0),
144 fhL1GPatchAllFakeMax(0), fhL1GPatchNotAllFakeMaxE(0),
145 fhL1GPatchAllFakeMaxE(0), fhL1GPatchNotAllFakeE(0),
146 fhL1GPatchAllFakeE(0), fhL1GPatchFakeE(0),
147 fhL1GPatchNotFakeE(0), fhNPatchFake(0), fhNPatchNotFake(0),
148 fhL1JPatch(0), fhL1J2Patch(0),
149 fhFEESTU(0), fhTRUSTU(0), fhV0STU(0),
150 fhGPMaxVV0TT(0), fhJPMaxVV0TT(0),
151 fhFORMeanAmp(0), fhL0MeanAmp(0), fhL1MeanAmp(0),
152 fhL1GPatchMax(0), fhL1G2PatchMax(0),
153 fhL1JPatchMax(0), fhL1J2PatchMax(0),
155 fNBinsSTUSignal (300), fMaxSTUSignal (30000),
156 fNBinsTRUSignal (300), fMaxTRUSignal (30000),
157 fNBinsV0Signal (300), fMaxV0Signal (30000),
158 fNBinsSTUFEERatio(300), fMaxSTUFEERatio(100),
159 fNBinsSTUTRURatio(300), fMaxSTUTRURatio(100),
160 fNBinsClusterE (100), fMaxClusterE (50),
161 fNBinsClusterPhi (250), fMaxClusterPhi (5.71), fMinClusterPhi (1.39),
162 fNBinsClusterEta (96), fMaxClusterEta (0.7),
164 fMapCellL1G (), fMapCellL1G2 (),
165 fMapCellL1J (), fMapCellL1J2 (),
166 fMapTrigL0 (), fMapTrigL1 (),
167 fMapTrigL0L1G(), fMapTrigL0L1J(),
168 fMapTrigL1G (), fMapTrigL1G2 (),
169 fMapTrigL1J (), fMapTrigL1J2 ()
173 DefineOutput(1, TList::Class());
186 Int_t runnumber = InputEvent()->GetRunNumber() ;
188 AliInfo(Form(
"Get AODB parameters from EMCAL in %s for run %d",
fOADBFilePath.Data(),runnumber));
193 if(
fRecoUtils->IsBadChannelsRemovalSwitchedOn())
195 AliOADBContainer *contBC=
new AliOADBContainer(
"");
196 contBC->InitFromFile(Form(
"%s/EMCALBadChannels.root",
fOADBFilePath.Data()),
"AliEMCALBadChannels");
202 AliInfo(
"Remove EMCAL bad cells");
204 for (
Int_t i=0; i<nSM; ++i)
206 TH2I *hbm =
fRecoUtils->GetEMCALChannelStatusMap(i);
211 hbm=(TH2I*)arrayBC->FindObject(Form(
"EMCALBadChannelMap_Mod%d",i));
214 AliError(Form(
"Can not get EMCALBadChannelMap_Mod%d",i));
218 hbm->SetDirectory(0);
224 }
else AliInfo(
"Do NOT remove EMCAL bad channels");
237 Int_t posX = -1, posY = -1;
238 Int_t nSupMod = -1, ieta = -1, iphi = -1, nModule = -1, nIphi = -1, nIeta = -1;
242 AliVCaloCells& cells= *(InputEvent()->GetEMCALCells());
246 for (
Int_t icell = 0; icell < cells.GetNumberOfCells(); icell++)
250 Double_t amp =0., time = 0., efrac = 0;
253 cells.GetCell(icell, absId, amp, time,mclabel,efrac);
255 fGeometry->GetCellIndex(absId, nSupMod, nModule, nIphi, nIeta);
256 fGeometry->GetCellPhiEtaIndexInSModule(nSupMod, nModule, nIphi, nIeta, iphi, ieta);
260 Int_t shiftEta = AliEMCALGeoParams::fgkEMCALCols;
263 if ( nSupMod > 11 && nSupMod < 18) shiftEta+=AliEMCALGeoParams::fgkEMCALCols/3;
265 posX = (nSupMod % 2) ? ieta + shiftEta : ieta;
266 posY = iphi + AliEMCALGeoParams::fgkEMCALRows * int(nSupMod / 2);
269 if ( nSupMod > 11 && nSupMod < 20) posY -= (2*AliEMCALGeoParams::fgkEMCALRows / 3);
276 AliWarning(Form(
"Wrong Position (x,y) = (%d,%d)",posX,posY));
309 AliVCaloTrigger& trg= * (InputEvent()->GetCaloTrigger(
"EMCAL"));
313 Int_t posX = -1, posY = -1;
325 trg.GetPosition(posX,posY);
327 if (posX > -1 && posY > -1)
331 trg.GetNL0Times(nTimes);
333 trg.GetL0Times(l0Times);
336 trg.GetAmplitude(ampL0);
337 if (ampL0 > 0)
fMapTrigL0[posY][posX] = ampL0;
339 if(triggerclasses.Contains(
"CEMC7EGA-B-NOPF-CENTNOTRD") || triggerclasses.Contains(
"CPBI2EGA") ||
340 triggerclasses.Contains(
"CPBI2EG1") || triggerclasses.Contains(
"CINT7EG1-B-NOPF-CENTNOPMD") ||
341 triggerclasses.Contains(
"CINT7DG1-B-NOPF-CENTNOPMD"))
fMapTrigL0L1G[posY][posX] += ampL0;
343 if(triggerclasses.Contains(
"CEMC7EJE-B-NOPF-CENTNOTRD") || triggerclasses.Contains(
"CPBI2EJE") ||
344 triggerclasses.Contains(
"CPBI2EJ1") || triggerclasses.Contains(
"CINT7EJ1-B-NOPF-CENTNOPMD") ||
345 triggerclasses.Contains(
"CINT7DJ1-B-NOPF-CENTNOPMD"))
fMapTrigL0L1J[posY][posX] += ampL0;
349 for (
Int_t itime = 0; itime < nTimes; itime++)
351 if (l0Times[itime] > 7 && l0Times[itime] < 10) l0fired = 1;
362 trg.GetTriggerBits(bit);
365 trg.GetL1TimeSum(ts);
418 AliInfo(Form(
"Large fTRUTotal %f",
fTRUTotal));
421 AliInfo(Form(
"Large fSTUTotal %d",
fSTUTotal));
437 InputEvent()->GetPrimaryVertex()->GetXYZ(v);
440 TRefArray* caloClus =
new TRefArray();
441 InputEvent()->GetEMCALClusters(caloClus);
443 Int_t nCaloClusters = caloClus->GetEntriesFast();
455 Int_t nSupMod = -1, nSupModMax = -1, ieta = -1, iphi = -1;
464 if(InputEvent()->GetCentrality()) centrality = InputEvent()->GetCentrality()->GetCentralityPercentile(
fCentEstimator);
468 AliMultSelection* multSelection = (AliMultSelection * ) fInputEvent->FindListObject(
"MultSelection") ;
469 if(multSelection) centrality = multSelection->GetMultiplicityPercentile(
fCentEstimator, kTRUE) ;
497 for(
Int_t icalo = 0; icalo < nCaloClusters; icalo++)
499 AliVCluster *clus = (AliVCluster*) (caloClus->At(icalo));
501 if(!clus->IsEMCAL())
continue;
503 if(!
fRecoUtils->IsGoodCluster(clus,
fGeometry,InputEvent()->GetEMCALCells(),InputEvent()->GetBunchCrossNumber()))
506 if(clus->GetNCells() < 2)
continue ;
511 Int_t idAbs = -1, iphi0 = -1, ieta0 = -1;
513 idAbs,nSupMod,ieta0,iphi0,shared);
518 Int_t shiftEta = AliEMCALGeoParams::fgkEMCALCols;
521 if ( nSupMod > 11 && nSupMod < 18) shiftEta+=AliEMCALGeoParams::fgkEMCALCols/3;
523 ieta = (nSupMod % 2) ? ieta0 + shiftEta : ieta0;
524 iphi = iphi0 + AliEMCALGeoParams::fgkEMCALRows * int(nSupMod / 2);
527 if ( nSupMod > 11 && nSupMod < 20) iphi -= (2*AliEMCALGeoParams::fgkEMCALRows / 3);
533 AliWarning(Form(
"Wrong Position (x,y) = (%d,%d)",ieta,iphi));
538 if( phi < 0 ) phi+=TMath::TwoPi();
547 nSupModMax = nSupMod;
657 fhClus [triggerNumber]->Fill(e);
663 fhClusSM [triggerNumber][nSupMod]->Fill(e);
721 Double_t ampFOR[60] = {0.}, ampL0[60] = {0.}, ampL1[60] = {0.};
728 fGeometry->GetAbsFastORIndexFromPositionInEMCAL(j,i,idFOR);
731 fGeometry->GetTRUFromAbsFastORIndex(idFOR,iTRU,iADC);
746 for (
Int_t i = 0; i < 60; i++)
748 if (ampFOR[i] != 0 && ampL1[i] != 0)
750 fhFEESTU->Fill(ampL1[i]/ampFOR[i],i);
752 AliWarning(Form(
"Large STU/FEE ratio %f",ampL1[i]/ampFOR[i]));
755 if (ampL0[i] != 0 && ampL1[i] != 0)
757 fhTRUSTU->Fill(ampL1[i]/ampL0[i] ,i);
759 AliWarning(Form(
"Large STU/TRU ratio %f",ampL1[i]/ampL0[i]));
836 Int_t areAllFakes = 2;
837 Int_t numberpatchNotFake = 0;
838 Int_t numberpatchFake = 0;
840 Int_t threshold = 10;
857 for(
Int_t irow = 0; irow < 2; irow++)
859 for(
Int_t icol = 0; icol < 2; icol++)
862 shiftCol = posx+icol;
863 shiftRow = posy+irow;
866 if(shiftRow < fgkFALTRORows && shiftCol < fgkFALTROCols)
870 if(
fMapCellL1G[shiftRow][shiftCol] > threshold/2 ) enoughE = kTRUE;
875 if (patchEnergy > patchMax)
877 patchMax = patchEnergy;
882 if(patchEnergy>threshold || (patchEnergy>threshold-3 && enoughE))
884 numberpatchNotFake++;
916 for(
Int_t irow = 0; irow < 2; irow++)
918 for(
Int_t icol = 0; icol < 2; icol++)
923 if(shiftRow < fgkFALTRORows && shiftCol < fgkFALTROCols)
953 for(
Int_t irow = 0; irow < 2; irow++)
955 for(
Int_t icol = 0; icol < 2; icol++)
960 if(shiftRow < fgkFALTRORows && shiftCol < fgkFALTROCols)
993 for (
Int_t i = 0; i < 9; i++)
995 for (
Int_t j = 0; j < 12; j++)
1001 for (
Int_t k = 0; k < 16; k++)
1003 for (
Int_t l = 0; l < 16; l++)
1009 if (patchJ > patchMax)
1059 AliESDVZERO* eventV0 =
dynamic_cast<AliESDVZERO*
> (InputEvent()->GetVZEROData());
1063 for (
Int_t i = 0; i < 32; i++)
1065 fV0C += eventV0->GetAdcV0C(i);
1066 fV0A += eventV0->GetAdcV0A(i);
1074 AliWarning(Form(
"Large fV0A+fV0C %f",
fV0A+
fV0C));
1155 TFile*
file = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile();
1157 const TList *clist = file->GetStreamerInfoCache();
1161 TStreamerInfo *cinfo = (TStreamerInfo*)clist->FindObject(
"AliESDCaloTrigger");
1165 cinfo = (TStreamerInfo*)clist->FindObject(
"AliAODCaloTrigger");
1170 Int_t classversionid = cinfo->GetClassVersion();
1173 if (classversionid >= verid)
1178 }
else AliInfo(
"Streamer info for trigger class not available, bit not changed");
1179 }
else AliInfo(
"Streamer list not available!, bit not changed");
1181 Int_t runnumber = InputEvent()->GetRunNumber() ;
1187 fGeometry = AliEMCALGeometry::GetInstanceFromRunNumber(runnumber);
1188 AliInfo(Form(
"Get EMCAL geometry name to <%s> for run %d",
fGeometry->GetName(),runnumber));
1193 AliInfo(Form(
"Set EMCAL geometry name to <%s>",
fGeoName.Data()));
1221 for(
Int_t ism = 0; ism < 20; ism++)
1252 if((triggerclasses.Contains(
"CINT7") || triggerclasses.Contains(
"CPBI2_B1") ) &&
1253 (triggerclasses.Contains(
"-B-") || triggerclasses.Contains(
"-I-")) &&
1254 triggerclasses.Contains(
"-NOPF") )
fEventMB = kTRUE;
1262 if( triggerclasses.Contains(
"-B-") || triggerclasses.Contains(
"-S-") || triggerclasses.Contains(
"-I-") )
1264 if( triggerclasses.Contains(
"CEMC") &&
1265 !triggerclasses.Contains(
"EGA" ) &&
1266 !triggerclasses.Contains(
"EJE" ) &&
1267 !triggerclasses.Contains(
"EG1" ) &&
1268 !triggerclasses.Contains(
"EJ1" ) &&
1269 !triggerclasses.Contains(
"EG2" ) &&
1270 !triggerclasses.Contains(
"EJ2" ) )
fEventL0 = kTRUE;
1272 if( triggerclasses.Contains(
"CDMC") &&
1273 !triggerclasses.Contains(
"DGA" ) &&
1274 !triggerclasses.Contains(
"DJE" ) &&
1275 !triggerclasses.Contains(
"DG1" ) &&
1276 !triggerclasses.Contains(
"DJ1" ) &&
1277 !triggerclasses.Contains(
"DG2" ) &&
1278 !triggerclasses.Contains(
"DJ2" ) )
fEventL0D = kTRUE;
1281 if( triggerclasses.Contains(
"EGA" ) || triggerclasses.Contains(
"EG1" ) )
fEventL1G = kTRUE;
1282 if( triggerclasses.Contains(
"EG2" ) )
fEventL1G2 = kTRUE;
1284 if( triggerclasses.Contains(
"DGA" ) || triggerclasses.Contains(
"DG1" ) )
fEventL1GD = kTRUE;
1285 if( triggerclasses.Contains(
"DG2" ) )
fEventL1G2D = kTRUE;
1287 if( triggerclasses.Contains(
"EJE" ) || triggerclasses.Contains(
"EJ1" ) )
fEventL1J = kTRUE;
1288 if( triggerclasses.Contains(
"EJ2" ) )
fEventL1J2 = kTRUE;
1290 if( triggerclasses.Contains(
"DJE" ) || triggerclasses.Contains(
"DJ1" ) )
fEventL1JD = kTRUE;
1291 if( triggerclasses.Contains(
"DJ2" ) )
fEventL1J2D = kTRUE;
1295 if (triggerclasses.Contains(
"CCENT_R2-B-NOPF-ALLNOTRD"))
fEventCen = kTRUE;
1296 else if(triggerclasses.Contains(
"CSEMI_R1-B-NOPF-ALLNOTRD"))
fEventSem = kTRUE;
1314 fhNEvents =
new TH1F(
"hNEvents",
"Number of selected events",26,0,26);
1316 fhNEvents ->GetXaxis()->SetBinLabel(1 ,
"All");
1317 fhNEvents ->GetXaxis()->SetBinLabel(2 ,
"MB");
1318 fhNEvents ->GetXaxis()->SetBinLabel(3 ,
"Central Pb");
1319 fhNEvents ->GetXaxis()->SetBinLabel(4 ,
"SemiCentral Pb");
1320 fhNEvents ->GetXaxis()->SetBinLabel(5 ,
"L0");
1321 fhNEvents ->GetXaxis()->SetBinLabel(6 ,
"L1-G1");
1322 fhNEvents ->GetXaxis()->SetBinLabel(7 ,
"L1-G2");
1323 fhNEvents ->GetXaxis()->SetBinLabel(8 ,
"L1-J1");
1324 fhNEvents ->GetXaxis()->SetBinLabel(9 ,
"L1-J2");
1325 fhNEvents ->GetXaxis()->SetBinLabel(10 ,
"L1-G1 & !L1-J1");
1326 fhNEvents ->GetXaxis()->SetBinLabel(11 ,
"L1-J1 & !L1-G1");
1327 fhNEvents ->GetXaxis()->SetBinLabel(12 ,
"L1-J1 & L1-G1");
1328 fhNEvents ->GetXaxis()->SetBinLabel(13 ,
"MB & !L1 & !L0");
1329 fhNEvents ->GetXaxis()->SetBinLabel(14,
"L0 & !MB");
1330 fhNEvents ->GetXaxis()->SetBinLabel(15,
"L1-G1 & !MB");
1331 fhNEvents ->GetXaxis()->SetBinLabel(16,
"L1-J1 & !MB");
1332 fhNEvents ->GetXaxis()->SetBinLabel(17,
"L1-G1 & (Cen | Semi)");
1333 fhNEvents ->GetXaxis()->SetBinLabel(18,
"L1-J1 & (Cen | Semi)");
1334 fhNEvents ->GetXaxis()->SetBinLabel(19,
"L1-G2 & !L1-G1");
1335 fhNEvents ->GetXaxis()->SetBinLabel(20,
"L1-J2 & !L1-J1");
1336 fhNEvents ->GetXaxis()->SetBinLabel(21,
"L0 DCal");
1337 fhNEvents ->GetXaxis()->SetBinLabel(22,
"L1-G1 DCal");
1338 fhNEvents ->GetXaxis()->SetBinLabel(23,
"L1-J1 DCal");
1339 fhNEvents ->GetXaxis()->SetBinLabel(24,
"L0 !DCal");
1340 fhNEvents ->GetXaxis()->SetBinLabel(25,
"L1-G1 !DCal");
1341 fhNEvents ->GetXaxis()->SetBinLabel(26,
"L1-J1 !DCal");
1343 fhFORAmp =
new TH2F(
"hFORAmp",
"FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column",
1345 fhFORAmp ->SetXTitle(
"Index #eta (columnns)");
1346 fhFORAmp ->SetYTitle(
"Index #phi (rows)");
1349 fhFORAmpL1G =
new TH2F(
"hFORAmpL1G1",
"FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1G1 trigger condition",
1355 fhFORAmpL1G2 =
new TH2F(
"hFORAmpL1G2",
"FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1G2 trigger condition",
1361 fhFORAmpL1J =
new TH2F(
"hFORAmpL1J1",
"FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1J1 trigger condition",
1367 fhFORAmpL1J2 =
new TH2F(
"hFORAmpL1J2",
"FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1J2 trigger condition",
1374 fhL0Amp =
new TH2F(
"hL0Amp",
"FALTRO signal per Row and Column",
1376 fhL0Amp ->SetXTitle(
"Index #eta (columnns)");
1377 fhL0Amp ->SetYTitle(
"Index #phi (rows)");
1378 fhL0Amp ->SetZTitle(
"Amplitude");
1380 fhL0AmpL1G =
new TH2F(
"hL0AmpL1G",
"FALTRO signal per Row and Column, with L1G trigger condition",
1382 fhL0AmpL1G ->SetXTitle(
"Index #eta (columnns)");
1387 fhL0AmpL1J =
new TH2F(
"hL0AmpL1J",
"FALTRO signal per Row and Column, with L1j trigger condition",
1389 fhL0AmpL1J ->SetXTitle(
"Index #eta (columnns)");
1394 fhL1Amp =
new TH2F(
"hL1Amp",
"STU signal per Row and Column",
1396 fhL1Amp ->SetXTitle(
"Index #eta (columnns)");
1397 fhL1Amp ->SetYTitle(
"Index #phi (rows)");
1398 fhL1Amp ->SetZTitle(
"Amplitude");
1400 fhL1GAmp =
new TH2F(
"hL1G1Amp",
"STU signal per Row and Column for L1 Gamma1",
1402 fhL1GAmp ->SetXTitle(
"Index #eta (columnns)");
1403 fhL1GAmp ->SetYTitle(
"Index #phi (rows)");
1406 fhL1G2Amp =
new TH2F(
"hL1G2Amp",
"STU signal per Row and Column for L1 Gamma2",
1408 fhL1G2Amp ->SetXTitle(
"Index #eta (columnns)");
1409 fhL1G2Amp ->SetYTitle(
"Index #phi (rows)");
1412 fhL1JAmp =
new TH2F(
"hL1J1Amp",
"STU signal per Row and Column for L1 Jet1",
1414 fhL1JAmp ->SetXTitle(
"Index #eta (columnns)");
1415 fhL1JAmp ->SetYTitle(
"Index #phi (rows)");
1418 fhL1J2Amp =
new TH2F(
"hL1J2Amp",
"STU signal per Row and Column for L1 Jet2",
1420 fhL1J2Amp ->SetXTitle(
"Index #eta (columnns)");
1421 fhL1J2Amp ->SetYTitle(
"Index #phi (rows)");
1429 fhL0Patch =
new TH2F(
"hL0Patch",
"FOR with associated L0 Patch",
1431 fhL0Patch ->SetXTitle(
"Index #eta (columnns)");
1432 fhL0Patch ->SetYTitle(
"Index #phi (rows)");
1435 fhL1GPatch =
new TH2F(
"hL1G1Patch",
"FOR with associated L1 Gamma Patch1",
1437 fhL1GPatch ->SetXTitle(
"Index #eta (columnns)");
1441 fhL1G2Patch =
new TH2F(
"hL1G2Patch",
"FOR with associated L1 Gamma2 Patch",
1447 fhL1GPatchNotFake =
new TH2F(
"hL1G1PatchNotFake",
"FOR with L1 Gamma1 Patch associated to energetic cells",
1453 fhL1GPatchFake =
new TH2F(
"hL1G1PatchFake",
"FOR without L1 Gamma1 Patch associated to energetic cells",
1460 fhL1GPatchNotAllFake =
new TH2F(
"hL1G1PatchNotAllFake",
"FOR with one L1 Gamma1 Patch associated to an energetic cell",
1466 fhL1GPatchAllFake =
new TH2F(
"hL1G1PatchAllFake",
"FOR without any L1 Gamma1 Patch associated to an energetic cell",
1472 fhL1GPatchAllFakeMax =
new TH2F(
"hL1G1PatchAllFakeMax",
"FOR with L1 Gamma1 Patch Max not associated to an energetic cell",
1484 fhL1GPatchNotAllFakeMaxE =
new TH1F(
"hL1G1PatchNotAllFakeMaxE",
"Energy distribution of FOR in events with L1 Gamma1 Patch Max associated to an energetic cell",
1489 fhL1GPatchAllFakeMaxE =
new TH1F(
"hL1G1PatchAllFakeMaxE",
"Energy distribution of FOR in events with L1 Gamma1 Patch Max not associated to an energetic cell",
1493 fhL1GPatchNotAllFakeE =
new TH1F(
"hL1G1PatchNotAllFakeE",
"Energy distribution of FOR in events with L1 Gamma1 Patch not associated to an energetic cell",
1497 fhL1GPatchAllFakeE =
new TH1F(
"hL1G1PatchAllFakeE",
"Energy distribution of FOR in events with L1 Gamma1 Patch associated to an energetic cell",
1502 fhL1GPatchFakeE =
new TH1F(
"hL1G1PatchFakeE",
"Energy distribution of FOR with L1 Gamma1 Patch not associated to an energetic cell",
1506 fhL1GPatchNotFakeE =
new TH1F(
"hL1G1PatchNotFakeE",
"Energy distribution of FOR with L1 Gamma1 Patch associated to an energetic cell",
1510 fhNPatchFake =
new TH2F(
"hNPatchFake",
"number of fake patchs vs. all patchs are fake",
1511 3,0,3, 2880,0,2880);
1517 fhNPatchNotFake =
new TH2F(
"hNPatchNotFake",
"number of Not fake patchs vs. all patchs are fake",
1518 3, 0, 3, 200,0,1000);
1524 fhL1JPatch =
new TH2F(
"hL1J1Patch",
"FOR with associated L1 Jet1 Patch",
1526 fhL1JPatch ->SetXTitle(
"Index #eta (columnns)");
1530 fhL1J2Patch =
new TH2F(
"hL1J2Patch",
"FOR with associated L1 Jet2 Patch",
1559 fhL1GPatchMax =
new TH2F(
"hL1G1PatchMax",
"FOR of max amplitude patch with associated L1 Gamma1 Patch",
1565 fhL1G2PatchMax =
new TH2F(
"hL1G2PatchMax",
"FOR of max amplitude patch with associated L1 Gamma2 Patch",
1571 fhL1JPatchMax =
new TH2F(
"hL1J1PatchMax",
"FOR of max amplitude patch with associated L1 Jet1 Patch",
1577 fhL1J2PatchMax =
new TH2F(
"hL1J2PatchMax",
"FOR of max amplitude patch with associated L1 Jet2 Patch",
1634 fhV0STU =
new TH2I(
"hV0STU",
"Total signal STU vs V0C+V0S",
1636 fhV0STU ->SetXTitle(
"Signal V0C+V0A");
1637 fhV0STU ->SetYTitle(
"Total signal STU");
1638 fhV0STU ->SetZTitle(
"counts");
1660 TString hName [] = {
"MB",
"L0",
"L0D",
1661 "L1G1",
"L1G1D",
"L1G2",
"L1G2D",
1662 "L1J1",
"L1J1D",
"L1J2",
"L2J2D",
1663 "L1G1NoL1J1",
"L1G1NoL1J1D",
"L1J1NoL1G1",
"L1J1NoL1G1D",
1664 "L1G2NoL1G1",
"L1G2NoL1G1D",
"L1J2NoL1J1",
"L1J2NoL1J1D",
1665 "L0E",
"L0D",
"L1EG1",
"L1DG1",
"L1EJ1",
"L1DJ1",
1666 "Central",
"SemiCentral" } ;
1667 TString hTitle [] = {
"MB trigger",
"EMC-L0 trigger",
"DMC L0 trigger",
1668 "EMC-L1 Gamma1 trigger",
"EMC-L1 Gamma1 trigger",
"EMC-L1 Gamma2 trigger",
"EMC-L1 Gamma2 trigger",
1669 "EMC-L1 Jet1 trigger" ,
"DMC-L1 Jet1 trigger" ,
"DMC-L1 Jet2 trigger" ,
"DMC-L1 Jet2 trigger",
1670 "EMC-L1 Gamma1 trigger and not L1 Jet1",
"DMC-L1 Gamma1 trigger and not L1 Jet1",
1671 "EMC-L1 Jet1 trigger and not L1 Gamma1",
"DMC-L1 Jet1 trigger and not L1 Gamma1",
1672 "EMC-L1 Gamma2 trigger and not L1 Gamma1",
"DMC-L1 Gamma2 trigger and not L1 Gamma1",
1673 "EMC-L1 Jet2 trigger and not L1 Jet1",
"DMC-L1 Jet2 trigger and not L1 Jet1",
1674 "L0 EMC Pure",
"L0 DMC Pure",
"L1-Gamma1 EMC Pure",
"L1-Gamma1 DMC Pure",
1675 "L1-Jet EMC Pure",
"L1-Jet DMC Pure"
1676 "Central trigger",
"SemiCentral trigger" } ;
1678 for(
Int_t i=0; i < 3; i++)
1684 Form(
"clusters E distribution for %s, no other EMCAL trigger on",hTitle[j].
Data()),
1690 Form(
"maximum energy cluster per event for %s, no other EMCAL trigger on",hTitle[j].
Data()),
1700 fhV0[i] =
new TH1F(Form(
"hV0%s",hName[i].
Data()),
1701 Form(
"V0 distribution for %s",hTitle[i].
Data()),
1703 fhV0[i]->SetXTitle(
"V0");
1707 fhClus[i] =
new TH1F(Form(
"hClus%s",hName[i].
Data()),
1708 Form(
"clusters E distribution for %s",hTitle[i].
Data()),
1710 fhClus[i] ->SetXTitle(
"Energy (GeV)");
1714 Form(
"maximum energy cluster per event for %s",hTitle[i].
Data()),
1716 fhClusMax[i]->SetXTitle(
"Energy (GeV)");
1725 Form(
"Centrality distribution for %s",hTitle[i].
Data()),
1731 Form(
"clusters E distribution vs centrality for %s",hTitle[i].
Data()),
1733 fhClusCen[i] ->SetXTitle(
"Energy (GeV)");
1734 fhClusCen[i] ->SetYTitle(
"Centrality (%)");
1738 Form(
"maximum energy cluster per event vs centrality for %s",hTitle[i].
Data()),
1750 Form(
"clusters E distribution vs V0 for %s",hTitle[i].
Data()),
1752 fhClusV0[i] ->SetXTitle(
"Energy (GeV)");
1757 Form(
"maximum energy cluster per event vs V0 for %s",hTitle[i].
Data()),
1767 fhClusSM[i][ism] =
new TH1F(Form(
"hClus%s_SM%d",hName[i].
Data(),ism),
1768 Form(
"clusters E distribution for %s and SM%d",hTitle[i].
Data(), ism),
1770 fhClusSM[i][ism]->SetXTitle(
"Energy (GeV)");
1776 Form(
"clusters E distribution vs centrality for %s and SM%d",hTitle[i].
Data(),ism),
1786 Form(
"clusters E distribution vs V0 for %s and SM%d",hTitle[i].
Data(),ism),
1788 fhClusV0SM[i][ism]->SetXTitle(
"Energy (GeV)");
1797 Form(
"clusters distribution #eta vs #phi for %s, E > %1.1f GeV",hTitle[i].
Data(),
fEtaPhiEnMin),
1804 Form(
"clusters distribution #eta vs #phi for %s, E < %1.1f GeV",hTitle[i].
Data(),
fEtaPhiEnMin),
1813 Form(
"maximum energy cluster per event #eta vs #phi for %s, E > %1.1f GeV",hTitle[i].
Data(),
fEtaPhiEnMin),
1820 Form(
"maximum energy cluster per event #eta vs #phi for %s, E < %1.1f GeV",hTitle[i].
Data(),
fEtaPhiEnMin),
1827 Form(
"Cluster hit map in calorimeter (max cell), column vs row for %s, E > %1.1f GeV",hTitle[i].
Data(),
fEtaPhiEnMin),
1834 Form(
"Max E cluster hit map in calorimeter (max cell), column vs row for %s, E > %1.1f GeV",
1841 Form(
"Cluster hit map in calorimeter (max cell), column vs row for %s, E < %1.1f GeV",hTitle[i].
Data(),
fEtaPhiEnMin),
1848 Form(
"Max E cluster hit map in calorimeter (max cell), column vs row for %s, E < %1.1f GeV",
1857 Form(
"clusters distribution vs #eta for %s",hTitle[i].
Data()),
1859 fhClusEta[i] ->SetXTitle(
"Energy (GeV)");
1864 Form(
"maximum energy cluster per event vs #eta for %s",hTitle[i].
Data()),
1873 Form(
"clusters distribution vs #phi for %s",hTitle[i].
Data()),
1875 fhClusPhi[i] ->SetXTitle(
"Energy (GeV)");
1880 Form(
"maximum energy cluster per event vs #phi for %s",hTitle[i].
Data()),
1896 AliVEvent*
event = InputEvent();
1900 AliError(
"No Event, exit");
1908 TString triggerclasses =
event->GetFiredTriggerClasses();
1911 Int_t eventType = ((AliVHeader*)event->GetHeader())->GetEventType();
1916 if(triggerclasses==
"" || eventType != 7)
return;
Bool_t fEventSem
Bit for Semi Central events.
Bool_t fEventL1JD
Bit for L1 Jet 1 events, DCal.
TH2F * fhL0Amp
! FALTRO signal per Row and Column for FOR involves L0 patch
TH2F * fhL1Amp
! STU signal per Row and Column for FOR involves L0 patch
void FillTriggerPatchMaps(TString triggerclasses)
Fill L0, L1 patch arrays.
TH2F * fhClusCenSM[fgkTriggerCombi][20]
! Clusters Centrality vs E distribution for a trigger, per SM
TH2F * fhClusPhi[fgkTriggerCombi]
! Clusters Phi vs E distribution for a trigger
void UserCreateOutputObjects()
Init histograms and geometry.
TH2F * fhNPatchFake
! number of fake patchs per event vs. if all were fakes or not
TH2F * fhL1GPatchMax
! FOR of max. amplitude patch with L1 Gamma patch associated
static const int fgkFALTROCols
Total number of fake altro collumns in EMCAL, (ALTRO channels in one SM times 2 SM divided by 2 per F...
TH1F * fhClusMax[fgkTriggerCombi]
! Maximum E Cluster per event distribution for MB trigger
TH2F * fhClusV0[fgkTriggerCombi]
! Clusters V0 vs E distribution for a trigger
TH2F * fhNPatchNotFake
! number of non fake patchs per events vs. if all were fakes or not
TH2F * fhClusPhiMax[fgkTriggerCombi]
! Maximum E Cluster vs Phi per event distribution for a trigger
TH2F * fhClusCenMax[fgkTriggerCombi]
! Maximum E Cluster vs Centrality per event distribution for a trigger
TH2F * fhL1JPatch
! FOR with L1 Jet patch associated
void FillV0Histograms()
Fill V0 histograms, only for ESDs.
TH2F * fhL1J2Patch
! FOR with L1 Jet patch associated
TProfile2D * fhFORMeanAmp
! Mean FastOR(FEE) signal per Row and Column
void AccessOADB()
Set the AODB bad channels at least once.
void FillL1JetPatchHistograms()
L1 jet trigger patches histograms.
void FillCorrelationHistograms()
FEE-TRU-STU correlation checks.
static const int fgkFALTRORows
Total number of fake altro rows in EMCAL, temporary, not considers DCal yet (ALTRO channels in one SM...
TH2F * fhClusEtaPhiHighCellMaxCluMax[fgkTriggerCombi]
! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger...
TH2F * fhClusEtaPhiHighCellMax[fgkTriggerCombi]
! Clusters maximum energy cell index eta vs phi distribution for a trigger, energy above fEtaPhiEnMin...
Int_t fSTUTotal
Sum of STU time sums.
TH2F * fhClusEtaPhiLowCellMax[fgkTriggerCombi]
! Clusters maximum energy cell index eta vs phi distribution for a trigger, energy below fEtaPhiEnMin...
TProfile2D * fhL0MeanAmp
! Mean FastOR(TRU) signal per Row and Column
TH2F * fhClusEta[fgkTriggerCombi]
! Clusters eta vs E distribution for a trigger
void FillEventCounterHistogram()
Fill a TH1 histogram, each bin corresponds to a even trigger type.
Bool_t fEventL1GD
Bit for L1 Gamma 1 events, DCal.
TH2F * fhClusEtaPhiHighCluMax[fgkTriggerCombi]
! Maximum E Cluster, Phi vs Eta per event distribution for a trigger, energy above fEtaPhiEnMin GeV ...
TH2F * fhL0AmpL1G
! FALTRO signal per Row and Column for FOR involves L0 patch, with L1G trigger event ...
TH2F * fhClusEtaPhiLowCellMaxCluMax[fgkTriggerCombi]
! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger...
AliEMCALGeometry * fGeometry
Access to EMCAL geometry utils.
TH2F * fhL1JPatchMax
! FOR of max. amplitude patch with L1 Jet patch associated
Bool_t fMCData
Simulation On/Off.
TH1F * fhNEvents
! Number of selected events
AliEMCALRecoUtils * fRecoUtils
RecoUtils.
Double_t fMapTrigL1J2[fgkFALTRORows][fgkFALTROCols]
TH1F * fhL1GPatchAllFakeE
! Energy distrib of FOR forfake events, all patch energy
TH1F * fhL1GPatchNotFakeE
! Energy distrib of FOR for non fake events, all patch energy
TH2F * fhL1GAmp
! STU signal per Row and Column for FOR position of L1 Gamma patch (top-left)
TH2F * fhL0Patch
! FOR with L0 patch associated
TH1F * fhClusSM[fgkTriggerCombi][20]
! Clusters E distribution for a trigger, per SM
Double_t fMapTrigL0L1G[fgkFALTRORows][fgkFALTROCols]
TString fGeoName
Name of geometry used.
TH2F * fhL1JAmp
! STU signal per Row and Column for FOR position of L1 Jet patch (top-left)
TH2F * fhFORAmpL1G
! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Gamma trigger event...
Double_t fMapTrigL0[fgkFALTRORows][fgkFALTROCols]
TH1F * fhV0[fgkTriggerCombi]
! V0 distribution for a triggered event
Bool_t fAccessOADB
Get calibration from OADB for EMCAL.
TH2F * fhL1GPatchAllFakeMax
! FOR without any L1 Gamma patch associated with energy in the related cell, maximal energy patch : f...
TH1F * fhClusMBPure[3]
! Clusters E distribution for pure MB trigger
TH2F * fhL1G2Patch
! FOR with L1 Gamma patch associated
Float_t fTRUTotal
Sum of TRU amplitudes.
Double_t fMapTrigL1[fgkFALTRORows][fgkFALTROCols]
Double_t fMapTrigL1G[fgkFALTRORows][fgkFALTROCols]
TH2F * fhL0AmpL1J
! FALTRO signal per Row and Column for FOR involves L0 patch, with L1J trigger event ...
void Init()
Init analysis parameters not set before.
TH2F * fhJPMaxVV0TT
! V0 signal vs maximum jet L1 patch
TH1F * fhClus[fgkTriggerCombi]
! Clusters E distribution for a trigger
TH2F * fhTRUSTU
! Correlation TRU vs STU
TH1F * fhL1GPatchAllFakeMaxE
! Energy distrib FOR for fake events, patch of maximal energy
TString fCentEstimator
Centrality estimator string: V0M, TKL, FMD, ZEMvsZDC, ...
Bool_t fEventL1J2D
Bit for L1 JEt 2 events, DCal.
TH2F * fhClusEtaPhiLowCluMax[fgkTriggerCombi]
! Maximum E Cluster, Phi vs Eta per event distribution for MB trigger, energy below fEtaPhiEnMin GeV ...
AliAnalysisTaskEMCALTriggerQA()
TH2F * fhL1GPatchNotAllFakeMax
! FOR with at least one L1 Gamma patch associated with energy in the related cell, maximal energy patch : not fake events
TH2F * fhFORAmpL1J2
! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Jet2 trigger event ...
TH2F * fhL1GPatchAllFake
! FOR without any L1 Gamma patch associated with energy in the related cells: fake patch ...
TH1F * fhClusMaxMBPure[3]
! Maximum E Cluster per event distribution for pure MB trigger
Bool_t fUseAliCentrality
Use the centrality estimator from AliCentrality or AliMultSelection.
TH2F * fhClusEtaMax[fgkTriggerCombi]
! Maximum E Cluster vs Eta per event distribution for a trigger
Bool_t fEventL1J
Bit for L1 Jet 1 events.
TH2F * fhL1J2Amp
! STU signal per Row and Column for FOR position of L1 Jet2 patch (top-left)
TH2F * fhFEESTU
! Correlation FEE vs STU
Int_t fFirstSM
Fill SM histograms for SM >= fFirstSM.
TH2F * fhL1J2PatchMax
! FOR of max. amplitude patch with L1 Jet patch associated
void FillL1GammaPatchHistograms()
L1 Gamma trigger patches histograms.
TH2F * fhClusEtaPhiHigh[fgkTriggerCombi]
! Clusters eta vs phi distribution for a trigger, energy above fEtaPhiEnMin GeV
void FillClusterHistograms(Int_t triggerNumber, Bool_t maxCluster, Float_t e, Float_t eta, Float_t phi, Float_t ietamax, Float_t iphimax, Int_t sm, Float_t centrality, Float_t v0AC)
Bool_t fEventL1J2
Bit for L1 JEt 2 events.
TH2F * fhClusV0SM[fgkTriggerCombi][20]
! Clusters V0 vs E distribution for a trigger, per SM
Double_t fMapCellL1G[fgkFALTRORows][fgkFALTROCols]
static const int fgkTriggerCombi
Total number of trigger combinations defined above.
TH2F * fhClusCen[fgkTriggerCombi]
! Clusters Centrality vs E distribution for a trigger
Double_t fMapTrigL1G2[fgkFALTRORows][fgkFALTROCols]
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)
void FillMapHistograms()
Matrix with signal per channel.
TH2F * fhL1G2PatchMax
! FOR of max. amplitude patch with L1 Gamma patch associated
TH1F * fhCentrality[fgkTriggerCombi]
! Centrality distribution for a triggered event
Bool_t fFillV0SigHisto
V0 signal creation and fill.
Int_t fBitEJE
EJE trigger bit.
TH1F * fhL1GPatchNotAllFakeE
! Energy distrib of FOR for non fake events, all patch energy
TH2F * fhFORAmp
! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column
void InitHistogramArrays()
Histograms array initialization called in constructor.
Int_t fBitEGA
EGA trigger bit.
Bool_t fEventL1G2D
Bit for L1 Gamma 2 events, DCal.
TProfile2D * fhL1MeanAmp
! Mean FastOR(STU) signal per Row and Column
Bool_t fFillClusAcceptHisto
Fill eta/phi distributions.
TH2I * fhV0STU
! Total signal STU vs V0C+V0S
Bool_t fEventL0D
Bit for L0 events, DCal.
TString fOADBFilePath
Default path $ALICE_PHYSICS/OADB/EMCAL, if needed change.
Bool_t fFillCenHisto
Centrality histograms creation and fill.
TLorentzVector fMomentum
Cluster kinematics, temporal, avoid recreation per event.
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
TH2F * fhL1GPatchNotFake
! FOR with L1 Gamma patch associated but no energy in the related cells
Int_t fLastSM
Fill SM histograms for SM <= fLastSM.
TList * fOutputList
! Output list
Bool_t fEventL1G2
Bit for L1 Gamma 2 events.
TH2F * fhL1GPatchFake
! FOR with L1 Gamma patch associated
Double_t fMapCellL1J2[fgkFALTRORows][fgkFALTROCols]
Double_t fMapCellL1G2[fgkFALTRORows][fgkFALTROCols]
void FillCellMaps()
Cells analysis. Fill FEE energy per channel array.
TH2F * fhClusEtaPhiLow[fgkTriggerCombi]
! Clusters eta vs phi distribution for a trigger, energy below fEtaPhiEnMin GeV
Float_t fV0Trigger
V0 signal from trigger.
TH2F * fhL1GPatchNotAllFake
! FOR with at least 1 L1 Gamma patch associated that has energy in the related celles : not a fake ev...
TH1F * fhL1GPatchNotAllFakeMaxE
! Energy distrib of FOR for non fake events, patch of maximal energy
TH2F * fhGPMaxVV0TT
! V0 signal vs maximum gamma L1 patch
Float_t fEtaPhiEnMin
Min energy for Eta/Phi histograms.
Fill histograms with basic QA information for EMCAL offline trigger.
Bool_t fEventL0
Bit for L0 events.
Bool_t fEventCen
Bit for Central events.
TH2F * fhClusV0Max[fgkTriggerCombi]
! Maximum E Cluster vs Centrality per event distribution for a trigger
TH2F * fhFORAmpL1J
! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Jet trigger event ...
Bool_t fGeoSet
Geometry already set.
Double_t fMapCell[fgkFALTRORows][fgkFALTROCols]
TH2F * fhFORAmpL1G2
! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Gamma2 trigger even...
TH2F * fhL1FOREnergy
! STU signal per Row and Column for FOR position vs FOR energy
Double_t fMapTrigL0L1J[fgkFALTRORows][fgkFALTROCols]
Bool_t fEventMB
Bit for MB events.
Bool_t fOADBSet
AODB parameters already set.
TH2F * fhL1G2Amp
! STU signal per Row and Column for FOR position of L1 Gamma2 patch (top-left)
void UserExec(Option_t *option)
void SetTriggerEventBit(TString list)
Check what trigger is the event, set the corresponding bit.
Double_t fMapCellL1J[fgkFALTRORows][fgkFALTROCols]
TH1F * fhL1GPatchFakeE
! Energy distrib of FOR for fake events, all patch energy
Double_t fMapTrigL1J[fgkFALTRORows][fgkFALTROCols]
Bool_t fEventL1G
Bit for L1 Gamma 1 events.
TH2F * fhL1GPatch
! FOR with L1 Gamma patch associated