14 #include <TRefArray.h>
17 #include <TGeoManager.h>
22 #include "AliAODEvent.h"
23 #include "AliESDEvent.h"
24 #include "AliEMCALGeometry.h"
25 #include "AliVCluster.h"
26 #include "AliVCaloCells.h"
27 #include "AliEMCALRecoUtils.h"
28 #include "AliOADBContainer.h"
39 fEMCALGeo(0x0), fLoadMatrices(0),
40 fEMCALGeoName(
"EMCAL_COMPLETE12SMV1_DCAL_8SM"),
42 fRecoUtils(new AliEMCALRecoUtils),
43 fOADBFilePath(
""), fCalibFilePath(
""),
44 fCorrectClusters(kFALSE), fRecalPosition(kTRUE),
45 fCaloClustersArr(0x0), fEMCALCells(0x0),
47 fOutputContainer(0x0),
48 fVertex(), fFilteredInput(kFALSE),
49 fImportGeometryFromFile(1), fImportGeometryFilePath(
""),
50 fEmin(0.5), fEmax(15.),
51 fL0min(0.01), fL0max(0.5),
52 fDTimeCut(100.), fTimeMax(1000000), fTimeMin(-1000000),
53 fAsyCut(1.), fMinNCells(2), fGroupNCells(0),
54 fLogWeight(4.5), fSameSM(kFALSE),
55 fNMaskCellColumns(11), fMaskCellColumns(0x0),
56 fInvMassCutMin(110.), fInvMassCutMax(160.),
59 fMinBin(0.), fMaxBin(300.),
61 fMinEnergyBin(0.), fMaxEnergyBin(100.),
62 fNTimeBins(1000), fMinTimeBin(0.), fMaxTimeBin(1000.),
64 fMomentum1(), fMomentum2(), fMomentum12(),
66 fHmgg(0x0), fHmggDifferentSM(0x0),
67 fHmggMaskFrame(0x0), fHmggDifferentSMMaskFrame(0x0),
68 fHOpeningAngle(0x0), fHOpeningAngleDifferentSM(0x0),
69 fHAsymmetry(0x0), fHAsymmetryDifferentSM(0x0),
71 fhClusterTime(0x0), fhClusterPairDiffTime(0x0)
73 for(Int_t iMod=0; iMod < AliEMCALGeoParams::fgkEMCALModules; iMod++)
75 for(Int_t iX=0; iX<24; iX++)
77 for(Int_t iZ=0; iZ<48; iZ++)
99 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules/2; iSMPair++)
106 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules-2; iSMPair++)
113 for(Int_t iSM = 0; iSM < AliEMCALGeoParams::fgkEMCALModules; iSM++)
157 AliAnalysisTaskSE(name),
158 fEMCALGeo(0x0), fLoadMatrices(0),
159 fEMCALGeoName(
"EMCAL_COMPLETE12SMV1_DCAL_8SM"),
161 fRecoUtils(new AliEMCALRecoUtils),
162 fOADBFilePath(
""), fCalibFilePath(
""),
163 fCorrectClusters(kFALSE), fRecalPosition(kTRUE),
164 fCaloClustersArr(0x0), fEMCALCells(0x0),
166 fOutputContainer(0x0),
167 fVertex(), fFilteredInput(kFALSE),
168 fImportGeometryFromFile(1), fImportGeometryFilePath(
""),
169 fEmin(0.5), fEmax(15.),
170 fL0min(0.01), fL0max(0.5),
171 fDTimeCut(100.), fTimeMax(1000000), fTimeMin(-1000000),
172 fAsyCut(1.), fMinNCells(2), fGroupNCells(0),
173 fLogWeight(4.5), fSameSM(kFALSE),
174 fNMaskCellColumns(11), fMaskCellColumns(0x0),
175 fInvMassCutMin(110.), fInvMassCutMax(160.),
178 fMinBin(0.), fMaxBin(300.),
180 fMinEnergyBin(0.), fMaxEnergyBin(100.),
181 fNTimeBins(1000), fMinTimeBin(0.), fMaxTimeBin(1000.),
183 fMomentum1(), fMomentum2(), fMomentum12(),
185 fHmgg(0x0), fHmggDifferentSM(0x0),
186 fHmggMaskFrame(0x0), fHmggDifferentSMMaskFrame(0x0),
187 fHOpeningAngle(0x0), fHOpeningAngleDifferentSM(0x0),
188 fHAsymmetry(0x0), fHAsymmetryDifferentSM(0x0),
190 fhClusterTime(0x0), fhClusterPairDiffTime(0x0)
192 for(Int_t iMod=0; iMod < AliEMCALGeoParams::fgkEMCALModules; iMod++)
194 for(Int_t iX=0; iX<24; iX++)
196 for(Int_t iZ=0; iZ<48; iZ++)
198 fHmpi0[iMod][iZ][iX] = 0 ;
218 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules/2; iSMPair++)
225 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules-2; iSMPair++)
232 for(Int_t iSM = 0; iSM < AliEMCALGeoParams::fgkEMCALModules; iSM++)
268 DefineOutput(1, TList::Class());
294 if(
fRecoUtils->GetParticleType()!=AliEMCALRecoUtils::kPhoton)
295 AliFatal(Form(
"Wrong particle type for cluster position recalculation! = %d\n",
fRecoUtils->GetParticleType()));
297 AliDebug(1,Form(
"It will use fLogWeight %.3f",
fLogWeight));
299 Float_t pos[]={0,0,0};
305 Float_t e1i = c1->E();
306 if (e1i <
fEmin)
continue;
307 else if (e1i >
fEmax)
continue;
309 else if (c1->GetNCells() <
fMinNCells)
continue;
311 else if (c1->GetM02() <
fL0min || c1->GetM02() >
fL0max)
continue;
313 if(
fRecoUtils->ClusterContainsBadChannel(
fEMCALGeo, c1->GetCellsAbsId(), c1->GetNCells()))
continue;
317 AliInfo(Form(
"Std : i %d, E %f, dispersion %f, m02 %f, m20 %f\n",c1->GetID(),c1->E(),c1->GetDispersion(),c1->GetM02(),c1->GetM20()));
318 c1->GetPosition(pos);
319 AliInfo(Form(
"Std : i %d, x %f, y %f, z %f\n",c1->GetID(), pos[0], pos[1], pos[2]));
330 AliDebug(2,Form(
"Energy: after recalibration %f",c1->E()));
336 c1->SetE(
fRecoUtils->CorrectClusterEnergyLinearity(c1));
338 AliDebug(2,Form(
"after linearity correction %f",c1->E()));
343 AliDebug(2,Form(
"after smearing %f\n",c1->E()));
347 AliInfo(Form(
"Cor : i %d, E %f, dispersion %f, m02 %f, m20 %f\n",c1->GetID(),c1->E(),c1->GetDispersion(),c1->GetM02(),c1->GetM20()));
348 c1->GetPosition(pos);
349 AliInfo(Form(
"Cor : i %d, x %f, y %f, z %f\n",c1->GetID(), pos[0], pos[1], pos[2]));
368 Bool_t shared = kFALSE;
370 Float_t pos[] = {0,0,0};
372 Int_t bc = InputEvent()->GetBunchCrossNumber();
373 Int_t nSM = (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules();
375 Int_t nbClusterInTopoHisto[nSM];
377 for(Int_t iSM = 0; iSM < nSM; iSM++)
379 nbClusterInTopoHisto[iSM] = 0;
387 if(
fRecoUtils->ClusterContainsBadChannel(
fEMCALGeo, c1->GetCellsAbsId(), c1->GetNCells()))
continue;
389 Float_t e1i = c1->E();
391 if (e1i <
fEmin)
continue;
392 else if (e1i >
fEmax)
continue;
396 else if (c1->GetNCells() <
fMinNCells)
continue;
398 else if (c1->GetM02() <
fL0min || c1->GetM02() >
fL0max)
continue;
402 AliInfo(Form(
"IMA : i %d, E %f, dispersion %f, m02 %f, m20 %f",c1->GetID(),e1i,c1->GetDispersion(),c1->GetM02(),c1->GetM20()));
403 c1->GetPosition(pos);
404 AliInfo(Form(
"IMA : i %d, x %f, y %f, z %f",c1->GetID(), pos[0], pos[1], pos[2]));
418 Double_t time1 = c1->GetTOF()*1.e9;
429 AliEMCALGeometry* geom = AliEMCALGeometry::GetInstance();
431 for(Int_t iCell = 0; iCell < c1->GetNCells(); iCell++)
433 Int_t iSupMod = -1, iIeta =-1, iIphi =-1, iTower =-1, ietaCell =-1, iphiCell =-1;
435 Int_t CellID = c1->GetCellsAbsId()[iCell];
436 geom->GetCellIndex(CellID,iSupMod,iTower,iIphi,iIeta);
437 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta,iphiCell,ietaCell);
439 Float_t amp =
fEMCALCells->GetCellAmplitude(CellID);
441 Float_t AmpFraction = amp / e1i;
443 AliDebug(2,Form(
"Cell ID: %i, Cell row: %i, Cell col: %i, Cell amp: %f, Cell amp fraction: %f\n",CellID,iphiCell,ietaCell,amp,AmpFraction));
445 switch (iPosInNoisyQuartet) {
470 if(amp && AmpFraction)
472 nbClusterInTopoHisto[iSupMod1] = nbClusterInTopoHisto[iSupMod1] + 1;
482 Float_t e2i = c2->E();
483 if (e2i <
fEmin)
continue;
484 else if (e2i >
fEmax)
continue;
488 else if (c2->GetNCells() <
fMinNCells)
continue;
490 else if (c2->GetM02() <
fL0min || c2->GetM02() >
fL0max)
continue;
505 Double_t time2 = c2->GetTOF()*1.e9;
511 if(TMath::Abs(time1-time2) >
fDTimeCut)
continue;
513 if(invmass < fMaxBin && invmass >
fMinBin )
528 if(iSupMod1==iSupMod2)
534 Bool_t zone1 =
IsInZone1(iSupMod1,ieta1,iphi1);
535 Bool_t zone2 =
IsInZone2(iSupMod1,ieta1,iphi1);
536 Bool_t zone3 =
IsInZone3(iSupMod1,ieta1,iphi1);
537 Bool_t zone4 =
IsInZone4(iSupMod1,ieta1,iphi1);
538 Bool_t zone5 =
IsInZone5(iSupMod1,ieta1,iphi1);
539 Bool_t zone6 =
IsInZone6(iSupMod1,ieta1,iphi1);
540 Bool_t zone7 =
IsInZone7(iSupMod1,ieta1,iphi1);
557 for(Int_t i = 0; i < nSM/2; i++)
560 if((iSupMod1==j && iSupMod2==j+1) || (iSupMod1==j+1 && iSupMod2==j))
568 for(Int_t i = 0; i < nSM-2; i++)
570 if((iSupMod1==i && iSupMod2==i+2) || (iSupMod1==i+2 && iSupMod2==i))
587 for(Int_t i = 0; i < nSM/2; i++)
594 for(Int_t i = 0; i < nSM-2; i++)
605 for(Int_t icell = 0; icell < c1->GetNCells(); icell++)
607 Int_t absID = c1->GetCellAbsId(icell);
611 for(Int_t icell = 0; icell < c2->GetNCells(); icell++)
613 Int_t absID = c2->GetCellAbsId(icell);
618 Float_t opangle =
fMomentum1.Angle(fMomentum2.Vect())*TMath::RadToDeg();
625 if(iSupMod1==iSupMod2)
636 if((iSupMod1==0 && iSupMod2==2) || (iSupMod1==2 && iSupMod2==0))
642 if((iSupMod1==1 && iSupMod2==3) || (iSupMod1==3 && iSupMod2==1))
648 if((iSupMod1==0 && iSupMod2==1) || (iSupMod1==1 && iSupMod2==0))
653 if((iSupMod1==2 && iSupMod2==3) || (iSupMod1==3 && iSupMod2==2))
664 if(
fSameSM && iSupMod1!=iSupMod2)
continue;
669 fHmpi0[iSupMod1][ieta1][iphi1]->Fill(invmass);
670 fHmpi0[iSupMod2][ieta2][iphi2]->Fill(invmass);
695 for (Int_t j = -fGroupNCells; j < fGroupNCells+1; j++)
697 Int_t absId11 =
fEMCALGeo->GetAbsCellIdFromCellIndexes(iSupMod1, iphi1+j, ieta1+i);
698 Int_t absId22 =
fEMCALGeo->GetAbsCellIdFromCellIndexes(iSupMod2, iphi2+j, ieta2+i);
703 for(Int_t icell = 0; icell < c1->GetNCells(); icell++)
705 if(c1->GetCellsAbsId()[icell] == absId11) ok1=kTRUE;
708 for(Int_t icell = 0; icell < c2->GetNCells(); icell++)
710 if(c2->GetCellsAbsId()[icell] == absId22) ok2=kTRUE;
713 if(ok1 && (ieta1+i >= 0) && (iphi1+j >= 0) && (ieta1+i < 48) && (iphi1+j < 24))
715 fHmpi0[iSupMod1][ieta1+i][iphi1+j]->Fill(invmass);
719 if(ok2 && (ieta2+i >= 0) && (iphi2+j >= 0) && (ieta2+i < 48) && (iphi2+j < 24))
721 fHmpi0[iSupMod2][ieta2+i][iphi2+j]->Fill(invmass);
728 AliDebug(1,Form(
"Mass in (SM%d,%d,%d) and (SM%d,%d,%d): %.3f GeV E1_i=%f E1_ii=%f E2_i=%f E2_ii=%f\n",
729 iSupMod1,iphi1,ieta1,iSupMod2,iphi2,ieta2,
fMomentum12.M(),e1i,c1->E(),e2i,c2->E()));
734 for(Int_t iSM = 0; iSM < nSM; iSM++)
736 AliDebug(2,Form(
"nbClusterInTopo = %i\n",nbClusterInTopoHisto[iSM]));
738 if(nbClusterInTopoHisto[iSM] == 0)
continue;
769 if ( !calibFactorsFile ) AliFatal(
"Cannot recover the calibration factors");
771 for(Int_t ism = 0; ism <
fEMCALGeo->GetNumberOfSuperModules(); ism++)
773 TH2F * histo = (TH2F*) calibFactorsFile->Get(Form(
"EMCALRecalFactors_SM%d",ism));
774 printf(
"In AliAnalysisTaskEMCALPi0CalibSelection::InitEnergyCalibrationFactors \n ---Recover calibration factor for : EMCALRecalFactors_SM%d %p\n",ism,histo);
777 fRecoUtils->SetEMCALChannelRecalibrationFactors(ism,histo);
779 AliWarning(Form(
"Null histogram with calibration factors for SM%d, 1 will be used for the full SM!",ism));
789 Int_t runnumber = InputEvent()->GetRunNumber() ;
812 AliInfo(
"Load user defined EMCAL geometry matrices");
814 AliOADBContainer emcGeoMat(
"AliEMCALgeo");
818 emcGeoMat.InitFromFile(Form(
"%s/EMCALlocal2master.root",
fOADBFilePath.Data()),
"AliEMCALgeo");
820 TObjArray *matEMCAL=(TObjArray*)emcGeoMat.GetObject(runnumber,
"EmcalMatrices");
822 for(Int_t mod = 0; mod < (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
826 AliDebug(1,Form(
"EMCAL matrices SM %d, %p",mod,((TGeoHMatrix*) matEMCAL->At(mod))));
829 fMatrix[mod] = (TGeoHMatrix*) matEMCAL->At(mod) ;
841 AliWarning(Form(
"Set matrix for SM %d from gGeoManager",mod));
842 fEMCALGeo->SetMisalMatrix(
fEMCALGeo->GetMatrixForSuperModuleFromGeoManager(mod),mod) ;
846 AliError(Form(
"Alignment matrix for SM %d is not available",mod));
850 else if(!gGeoManager)
852 AliInfo(
"Get geo matrices from data");
854 if(!strcmp(InputEvent()->GetName(),
"AliAODEvent"))
856 AliWarning(
"Use ideal geometry, values geometry matrix not kept in AODs");
860 AliDebug(1,
"AliAnalysisTaskEMCALClusterize Load Misaligned matrices");
862 for(Int_t mod=0; mod < (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
864 if(InputEvent()->GetEMCALMatrix(mod))
867 InputEvent()->GetEMCALMatrix(mod)->Print();
869 fEMCALGeo->SetMisalMatrix(InputEvent()->GetEMCALMatrix(mod),mod) ;
877 for(Int_t mod = 0; mod < (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
879 AliWarning(Form(
"Set matrix for SM %d from gGeoManager",mod));
880 fEMCALGeo->SetMisalMatrix(
fEMCALGeo->GetMatrixForSuperModuleFromGeoManager(mod),mod) ;
892 if(!
fRecoUtils->IsRunDepRecalibrationOn())
return;
894 AliOADBContainer *contRFTD=
new AliOADBContainer(
"");
896 contRFTD->InitFromFile(Form(
"%s/EMCALTemperatureCorrCalib.root",
fOADBFilePath.Data()),
"AliEMCALRunDepTempCalibCorrections");
898 Int_t runnumber = InputEvent()->GetRunNumber() ;
900 TH1S *htd=(TH1S*)contRFTD->GetObject(runnumber);
905 AliWarning(Form(
"No TemperatureCorrCalib Objects for run: %d",runnumber));
910 Int_t maxEntry = contRFTD->GetNumberOfEntries();
912 while ( (ic < maxEntry) && (contRFTD->UpperLimit(ic) < runnumber) )
918 Int_t closest = lower;
919 if ( (ic<maxEntry) &&
920 (contRFTD->LowerLimit(ic)-runnumber) < (runnumber - contRFTD->UpperLimit(lower)) )
925 AliWarning(Form(
"TemperatureCorrCalib Objects found closest id %d from run: %d",
926 closest, contRFTD->LowerLimit(closest)));
928 htd = (TH1S*) contRFTD->GetObjectByIndex(closest);
934 AliInfo(
"Recalibrate (Temperature) EMCAL");
936 Int_t nSM =
fEMCALGeo->GetNumberOfSuperModules();
938 for (Int_t ism = 0; ism < nSM; ++ism)
940 for (Int_t icol = 0; icol < 48; ++icol)
942 for (Int_t irow = 0; irow < 24; ++irow)
944 Float_t factor =
fRecoUtils->GetEMCALChannelRecalibrationFactor(ism,icol,irow);
946 Int_t absID =
fEMCALGeo->GetAbsCellIdFromCellIndexes(ism, irow, icol);
948 AliDebug(3,Form(
" ism %d, icol %d, irow %d,absID %d - Calib factor %1.5f - ",ism, icol, irow, absID, factor));
950 factor *= htd->GetBinContent(absID) / 10000. ;
952 fRecoUtils->SetEMCALChannelRecalibrationFactor(ism,icol,irow,factor);
954 AliDebug(3,Form(
"T factor %1.5f - final factor %1.5f",
955 htd->GetBinContent(absID) / 10000.,
956 fRecoUtils->GetEMCALChannelRecalibrationFactor(ism,icol,irow)));
961 else AliInfo(
"Do NOT recalibrate EMCAL with T variations, no params TH1");
973 Int_t nSM = (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules();
976 const Int_t buffersize = 255;
977 char hname[buffersize], htitl[buffersize], htitlEnergy[buffersize];
979 fhNEvents =
new TH1I(
"hNEvents",
"Number of analyzed events" , 1 , 0 , 1 ) ;
983 fHmgg->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
984 fHmgg->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
992 fHOpeningAngle =
new TH2F(
"hopang",
"2-cluster opening angle",100,0.,50.,100,0,10);
1002 fHAsymmetry =
new TH2F(
"hasym",
"2-cluster opening angle",100,0.,1.,100,0,10);
1004 fHAsymmetry->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1007 fHAsymmetryDifferentSM =
new TH2F(
"hasymDifferentSM",
"2-cluster opening angle, different SM",100,0,1.,100,0,10);
1025 for(Int_t iSM = 0; iSM < nSM; iSM++)
1027 snprintf(hname, buffersize,
"hmgg_SM%d",iSM);
1028 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d",iSM);
1030 fHmggSM[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1031 fHmggSM[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1034 snprintf(hname, buffersize,
"hmgg_SM%d_MaskFrame",iSM);
1035 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d",iSM);
1041 snprintf(hname, buffersize,
"hmgg_SM%d_Zone1",iSM);
1042 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 1",iSM);
1044 fHmggSM_Zone1[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1045 fHmggSM_Zone1[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1048 snprintf(hname, buffersize,
"hmgg_SM%d_Zone2",iSM);
1049 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 2",iSM);
1051 fHmggSM_Zone2[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1052 fHmggSM_Zone2[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1055 snprintf(hname, buffersize,
"hmgg_SM%d_Zone3",iSM);
1056 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 3",iSM);
1058 fHmggSM_Zone3[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1059 fHmggSM_Zone3[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1062 snprintf(hname, buffersize,
"hmgg_SM%d_Zone4",iSM);
1063 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 4",iSM);
1065 fHmggSM_Zone4[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1066 fHmggSM_Zone4[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1069 snprintf(hname, buffersize,
"hmgg_SM%d_Zone5",iSM);
1070 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 5",iSM);
1072 fHmggSM_Zone5[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1073 fHmggSM_Zone5[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1076 snprintf(hname, buffersize,
"hmgg_SM%d_Zone6",iSM);
1077 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 6",iSM);
1079 fHmggSM_Zone6[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1080 fHmggSM_Zone6[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1083 snprintf(hname, buffersize,
"hmgg_SM%d_Zone7",iSM);
1084 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 7",iSM);
1086 fHmggSM_Zone7[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1087 fHmggSM_Zone7[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1092 snprintf(hname,buffersize,
"hmgg_PairSameSectorSM%d",iSM);
1093 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1099 snprintf(hname,buffersize,
"hmgg_PairSameSectorSM%d_MaskFrame",iSM);
1100 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1107 Form(
"cluster pair time difference vs E, Sector %d",iSM),
1108 100,0,10, 200,-100,100);
1116 snprintf(hname,buffersize,
"hmgg_PairSameSideSM%d",iSM);
1117 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1123 snprintf(hname,buffersize,
"hmgg_PairSameSideSM%d_MaskFrame",iSM);
1124 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1131 Form(
"cluster pair time difference vs E, Side %d",iSM),
1132 100,0,10, 200,-100,100);
1138 snprintf(hname, buffersize,
"hopang_SM%d",iSM);
1139 snprintf(htitl, buffersize,
"Opening angle for super mod %d",iSM);
1145 snprintf(hname,buffersize,
"hopang_PairSM%d",iSM);
1146 snprintf(htitl,buffersize,
"Opening angle for SM pair: %d",iSM);
1152 snprintf(hname, buffersize,
"hasym_SM%d",iSM);
1153 snprintf(htitl, buffersize,
"Asymmetry for super mod %d",iSM);
1154 fHAsymmetrySM[iSM] =
new TH2F(hname,htitl,100,0.,1.,100,0,10);
1156 fHAsymmetrySM[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1159 snprintf(hname,buffersize,
"hasym_PairSM%d",iSM);
1160 snprintf(htitl,buffersize,
"Asymmetry for SM pair: %d",iSM);
1170 Form(
"Entries in grid of cells in Module %d",iSM),
1171 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1177 Form(
"Accumulated energy in grid of cells in Module %d",iSM),
1178 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1184 Form(
"Accumulated asymmetry in grid of cells in Module %d",iSM),
1185 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1190 fhTowerDecayPhotonHitMaskFrame[iSM] =
new TH2F (Form(
"hTowerDecPhotonHit_Mod%d_MaskFrame",iSM),Form(
"Entries in grid of cells in Module %d",iSM),
1191 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1196 fhClusterTimeSM[iSM] =
new TH2F(Form(
"hClusterTime_SM%d",iSM),
"cluster time vs E",100,0,10, 200,-1000,1000);
1202 Form(
"cluster pair time difference vs E, SM %d",iSM),
1203 100,0,10, 200,-100,100);
1213 Form(
"cluster topology for cluster in position 0 in noisy quartet, SM %d",iSM),
1214 21,-10.5,10.5, 21,-10.5,10.5);
1220 Form(
"cluster topology for cluster in position 1 in noisy quartet, SM %d",iSM),
1221 21,-10.5,10.5, 21,-10.5,10.5);
1227 Form(
"cluster topology for cluster in position 2 in noisy quartet, SM %d",iSM),
1228 21,-10.5,10.5, 21,-10.5,10.5);
1234 Form(
"cluster topology for cluster in position 3 in noisy quartet, SM %d",iSM),
1235 21,-10.5,10.5, 21,-10.5,10.5);
1241 Form(
"cluster topology for cluster in position 0 in noisy quartet, SM %d",iSM),
1242 21,-10.5,10.5, 21,-10.5,10.5);
1248 Form(
"cluster topology for cluster in position 1 in noisy quartet, SM %d",iSM),
1249 21,-10.5,10.5, 21,-10.5,10.5);
1255 Form(
"cluster topology for cluster in position 2 in noisy quartet, SM %d",iSM),
1256 21,-10.5,10.5, 21,-10.5,10.5);
1262 Form(
"cluster topology for cluster in position 3 in noisy quartet, SM %d",iSM),
1263 21,-10.5,10.5, 21,-10.5,10.5);
1270 Form(
"cluster topology for cluster in position 0 in noisy quartet, SM %d",iSM),
1271 21,-10.5,10.5, 21,-10.5,10.5);
1277 Form(
"cluster topology for cluster in position 1 in noisy quartet, SM %d",iSM),
1278 21,-10.5,10.5, 21,-10.5,10.5);
1284 Form(
"cluster topology for cluster in position 2 in noisy quartet, SM %d",iSM),
1285 21,-10.5,10.5, 21,-10.5,10.5);
1291 Form(
"cluster topology for cluster in position 3 in noisy quartet, SM %d",iSM),
1292 21,-10.5,10.5, 21,-10.5,10.5);
1299 Int_t nchannels = nSM*AliEMCALGeoParams::fgkEMCALRows*AliEMCALGeoParams::fgkEMCALCols;
1300 for(Int_t ibc = 0; ibc < 4; ibc++)
1302 fHTpi0[ibc] =
new TH2F(Form(
"hTime_BC%d",ibc),Form(
"Time of cell clusters under pi0 peak, bunch crossing %d",ibc),
1305 fHTpi0[ibc]->SetYTitle(
"time (ns)");
1306 fHTpi0[ibc]->SetXTitle(
"abs. Id. ");
1309 fhClusterTime =
new TH2F(
"hClusterTime",
"cluster time vs E",100,0,10, 100,0,1000);
1314 fhClusterPairDiffTime =
new TH2F(
"hClusterPairDiffTime",
"cluster pair time difference vs E",100,0,10, 800,-400,400);
1319 for(Int_t iMod=0; iMod < nSM; iMod++)
1321 for(Int_t iRow=0; iRow < AliEMCALGeoParams::fgkEMCALRows; iRow++)
1323 for(Int_t iCol=0; iCol < AliEMCALGeoParams::fgkEMCALCols; iCol++)
1325 snprintf(hname,buffersize,
"%d_%d_%d",iMod,iCol,iRow);
1326 snprintf(htitl,buffersize,
"Two-gamma inv. mass for super mod %d, cell(col,row)=(%d,%d)",iMod,iCol,iRow);
1328 fHmpi0[iMod][iCol][iRow]->SetXTitle(
"mass (MeV/c^{2})");
1333 snprintf(htitlEnergy,buffersize,
"Energy for super mod %d, cell(col,row)=(%d,%d)",iMod,iCol,iRow);
1335 fhEnergy[iMod][iCol][iRow]->SetXTitle(
"E (GeV)");
1398 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1400 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1409 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1411 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1443 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1445 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1458 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1460 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1496 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1498 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1507 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1509 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1541 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1543 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1556 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1558 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1590 Float_t col0 = 47/2;
1591 Float_t row0 = 23/2;
1597 if(((icol-col0)*(icol-col0)) / (a*a) + ((irow-row0)*(irow-row0) / (b*b)) > 1)
1624 Float_t col0 = 47/2;
1625 Float_t row0 = 23/2;
1628 Float_t aLarge = 3-col0;
1629 Float_t bLarge = 2-row0;
1630 Float_t aSmall = 16-col0;
1631 Float_t bSmall = 7-row0;
1633 if((((icol-col0)*(icol-col0)) / (aLarge*aLarge) + ((irow-row0)*(irow-row0) / (bLarge*bLarge)) < 1) && (((icol-col0)*(icol-col0)) / (aSmall*aSmall) + ((irow-row0)*(irow-row0) / (bSmall*bSmall)) > 1))
1660 Float_t col0 = 47/2;
1661 Float_t row0 = 23/2;
1664 Float_t a = 16-col0;
1667 if(((icol-col0)*(icol-col0)) / (a*a) + ((irow-row0)*(irow-row0) / (b*b)) < 1)
1691 AliESDEvent* esdevent =
dynamic_cast<AliESDEvent*
> (InputEvent());
1692 AliAODEvent* aodevent =
dynamic_cast<AliAODEvent*
> (InputEvent());
1694 TString triggerClass =
"";
1695 if (esdevent) triggerClass = esdevent->GetFiredTriggerClasses();
1696 else if(aodevent) triggerClass = aodevent->GetFiredTriggerClasses();
1698 AliDebug(1,Form(
"Event %d, FiredClass %s",
1699 (Int_t)Entry(),(((AliESDEvent*)InputEvent())->GetFiredTriggerClasses()).
Data()));
1703 AliDebug(1,
"Reject event!");
1707 AliDebug(1,
"Accept event!");
1712 AliVEvent*
event = 0;
1714 else event = InputEvent();
1718 AliWarning(
"Input event not available!");
1722 AliDebug(1,Form(
"<<< %s: Event %d >>>",event->GetName(), (Int_t)Entry()));
1726 event->GetPrimaryVertex()->GetXYZ(
fVertex) ;
1769 printf(
"Cluster cuts: %2.2f < E < %2.2f GeV; number of cells > %d; Assymetry < %1.2f, pair time diff < %2.2f, %2.2f < t < %2.2f ns\n",
1774 printf(
"Cluster maximal cell away from border at least %d cells\n",
fRecoUtils->GetNumberOfCellsFromEMCALBorder()) ;
1778 printf(
"Switchs:\n \t Remove Bad Channels? %d; Use filtered input? %d; Correct Clusters? %d, and their position? %d \n \t Mass per channel same SM clusters? %d\n",
1786 if(
fLoadMatrices) {
for(Int_t ism = 0; ism < AliEMCALGeoParams::fgkEMCALModules; ism++)
if(
fMatrix[ism])
fMatrix[ism]->Print() ; }
1813 else AliWarning(
"Mask column not set, position larger than allocated set size first") ;
1860 AliDebug(1,
"Not implemented");
Float_t fTimeMin
Minimum cluster time (ns).
TH2F * fHmggSM_Zone4[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 4.
Float_t fDTimeCut
Maximum difference between time of cluster pairs (ns).
TList * fOutputContainer
! Histogram container.
Float_t fTimeMax
Maximum cluster time (ns).
TH2F * fHmggPairSameSectorSMMaskFrame[AliEMCALGeoParams::fgkEMCALModules/2]
! Two-cluster invariant mass per Pair, mask clusters facing frames.
TGeoHMatrix * fMatrix[AliEMCALGeoParams::fgkEMCALModules]
Bool_t IsInZone3(Int_t iSupMod, Int_t ieta, Int_t iphi)
TH2F * fhClusterPairDiffTimeSameSide[AliEMCALGeoParams::fgkEMCALModules-2]
! Diference in time of clusters same side.
TRefArray * fCaloClustersArr
! List of clusters.
Bool_t IsInZone6(Int_t iSupMod, Int_t ieta, Int_t iphi)
TH2F * fHmggSM_Zone3[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 3.
Int_t fNTimeBins
N time bins of invariant mass histograms.
TH2F * fhTowerDecayPhotonHit[AliEMCALGeoParams::fgkEMCALModules]
! Cells ordered in column/row for different module, number of times a decay photon hits...
Float_t fInvMassCutMax
Maximum mass cut for clusters to fill time or other histograms.
TH2F * fHAsymmetryPairSM[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster asymmetry vs pt per Pair,with mass close to pi0.
TH1F * fHmpi0[AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]
< Two-cluster invariant mass assigned to each cell.
Float_t fL0min
Minimum cluster L0.
Bool_t IsInZone4(Int_t iSupMod, Int_t ieta, Int_t iphi)
TString fImportGeometryFilePath
Path fo geometry.root file.
TH2F * fhTopoClusterAmpCase0[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 0 cluster in noisy quartet
Bool_t fSameSM
Combine clusters in channels on same SM.
Bool_t fLoadMatrices
Matrices set from configuration, not get from geometry.root or from ESDs/AODs.
Float_t fEmax
Maximum cluster energy (GeV).
AliEMCALRecoUtils * fRecoUtils
Access to reconstruction utilities.
AliEMCALGeometry * fEMCALGeo
! EMCAL geometry pointer.
Float_t fMaxTimeBin
Maximum time bins of invariant mass histograms.
Bool_t fSelectOnlyPhotonsInDifferentSM
Select only pairs of photons that are not in the same SM.
Float_t fLogWeight
Logarithmic weight used in cluster recalibration.
Bool_t IsInZone7(Int_t iSupMod, Int_t ieta, Int_t iphi)
TH2F * fHAsymmetry
! Two-cluster asymmetry vs pt of pair, with mass close to pi0.
This task provides the input for the EMCal energy calibration with pi0 invariant mass analysis per ch...
Float_t fMinTimeBin
Minimum time bins of invariant mass histograms.
Int_t fNMaskCellColumns
Number of masked columns.
Bool_t IsInZone5(Int_t iSupMod, Int_t ieta, Int_t iphi)
Int_t FindPositionInNoisyQuartet(Int_t irow, Int_t icol, Int_t iSM)
Int_t fMinNCells
Minimum ncells in cluster.
TH2F * fHOpeningAngleDifferentSM
! Two-cluster opening angle vs pt of pair, each cluster in different SM, with mass close to pi0...
TH2F * fhClusterPairDiffTimeSameSM[AliEMCALGeoParams::fgkEMCALModules]
! Diference in time of clusters same SM.
TH2F * fHOpeningAngle
! Two-cluster opening angle vs pt of pair, with mass close to pi0.
TH2F * fhClusterTimeSM[AliEMCALGeoParams::fgkEMCALModules]
! Timing of clusters vs energy per SM.
TH2F * fHmggSM_Zone5[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 5.
TH2F * fHOpeningAngleSM[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster opening angle vs pt per SM,with mass close to pi0.
TLorentzVector fMomentum2
Cluster kinematics, temporal.
TH2F * fhTopoClusterAmpCase2[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 2 cluster in noisy quartet
Float_t fInvMassCutMin
Minimum mass cut for clusters to fill time or other histograms.
TH2F * fhTopoClusterAmpCase3[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 3 cluster in noisy quartet
Float_t fMinEnergyBin
Minimum energy bins of cell energy histograms.
Bool_t IsInZone2(Int_t iSupMod, Int_t ieta, Int_t iphi)
void SetMaskCellColumn(Int_t ipos, Int_t icol)
Int_t fGroupNCells
Group n cells.
Int_t fNEnergybins
N energy bins of cell energy histograms.
TH2F * fHAsymmetrySM[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster asymmetry vs pt per SM,with mass close to pi0.
TString fCalibFilePath
Full path with file with energy calibration factors per channel from previous iteration.
TH2F * fHmggSM[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM.
virtual ~AliAnalysisTaskEMCALPi0CalibSelection()
Destructor.
TH2F * fhTowerDecayPhotonHitMaskFrame[AliEMCALGeoParams::fgkEMCALModules]
! Cells ordered in column/row for different module, number of times a decay photon hits...
TH2F * fhTopoClusterAmpCase1[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 1 cluster in noisy quartet
TH2F * fhTopoClusterCase2[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 2 cluster in noisy quartet
Bool_t fSelectOnlyCellSignalOutOfCollision
Select cells / clusters that are due to noise, i.e. signal in EMCal that happens not during collision...
TH2F * fHmggSM_Zone6[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 6.
TH2F * fHmgg
! Two-cluster invariant mass vs pt of pair.
TH2F * fHTpi0[4]
! Time of cell under pi0 mass, for 4 bunch crossings.
AliAnalysisTaskEMCALPi0CalibSelection()
Default constructor. Arrays initialization is done here.
TH1F * fhEnergy[AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]
! Energy distribution for each cell.
Float_t fMinBin
Minimum mass bins of invariant mass histograms.
TH2F * fhTopoClusterAmpFractionCase2[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude fraction map for type 2 cluster in noisy quartet
TH2F * fhTopoClusterCase0[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 0 cluster in noisy quartet
Bool_t fRecalPosition
Switch on/off cluster position calculation, in case alignment matrices are not available.
TH2F * fhTopoClusterCase1[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 1 cluster in noisy quartet
Float_t fMaxEnergyBin
Maximum energy bins of cell energy histograms.
TString fTriggerName
Trigger name must contain this name.
TH2F * fHmggDifferentSMMaskFrame
! Two-cluster invariant mass vs pt of pair, each cluster in different SM,mask clusters facing frames...
TH2F * fhTopoClusterAmpFractionCase3[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude fraction map for type 3 cluster in noisy quartet
TH2F * fhClusterPairDiffTime
! Diference in time of clusters.
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 UserExec(Option_t *opt)
void InitEnergyCalibrationFactors()
Float_t fEmin
Minimum cluster energy (GeV).
Bool_t MaskFrameCluster(Int_t iSM, Int_t ieta) const
Int_t fNbins
N mass bins of invariant mass histograms.
TH2F * fHmggSM_Zone2[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 2.
TH2F * fhClusterTime
! Timing of clusters vs energy.
TLorentzVector fMomentum12
Cluster pair kinematics, temporal.
TH2F * fhTowerDecayPhotonAsymmetry[AliEMCALGeoParams::fgkEMCALModules]
! Cells ordered in column/row for different module, accumulated asymmetry in the tower by decay photo...
TH2F * fHmggPairSameSideSMMaskFrame[AliEMCALGeoParams::fgkEMCALModules-2]
! Two-cluster invariant mass per Pair, mask clusters facing frames.
void InitTemperatureCorrections()
Bool_t fCorrectClusters
Correct clusters energy, position etc.
void UserCreateOutputObjects()
Create output container, init geometry.
Float_t fL0max
Maximum cluster L0.
void SetNMaskCellColumns(Int_t n)
TH2F * fHmggSMMaskFrame[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM, mask clusters facing frames.
void Terminate(Option_t *opt)
Create cuts/param objects and publish to slot. Comment out for the moment.
TH2F * fhTowerDecayPhotonEnergy[AliEMCALGeoParams::fgkEMCALModules]
! Cells ordered in column/row for different module, accumulated energy in the tower by decay photons...
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
void PrintInfo()
Print settings.
TH2F * fHmggPairSameSideSM[AliEMCALGeoParams::fgkEMCALModules-2]
! Two-cluster invariant mass per Pair.
TH2F * fhTopoClusterAmpFractionCase0[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude fraction map for type 0 cluster in noisy quartet
TH2F * fhTopoClusterCase3[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude map for type 3 cluster in noisy quartet
Float_t fMaxBin
Maximum mass bins of invariant mass histograms.
TH2F * fHmggDifferentSM
! Two-cluster invariant mass vs pt of pair, each cluster in different SM.
TH2F * fhClusterPairDiffTimeSameSector[AliEMCALGeoParams::fgkEMCALModules/2]
! Diference in time of clusters same sector.
TH1I * fhNEvents
! Number of events counter histogram.
TLorentzVector fMomentum1
Cluster kinematics, temporal.
TH2F * fHmggMaskFrame
! Two-cluster invariant mass vs pt of pair, mask clusters facing frames.
Bool_t fImportGeometryFromFile
Import geometry settings in geometry.root file.
Bool_t IsInZone1(Int_t iSupMod, Int_t ieta, Int_t iphi)
Float_t fAsyCut
Asymmetry cut.
Double_t fVertex[3]
! Primary vertex.
TString fOADBFilePath
Default path $ALICE_PHYSICS/OADB/EMCAL, if needed change.
TH2F * fHOpeningAnglePairSM[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster opening angle vs pt per Pair,with mass close to pi0.
AliVCaloCells * fEMCALCells
! List of cells.
Bool_t fFilteredInput
Read input produced with filter.
TString fEMCALGeoName
Name of geometry to use.
TH2F * fHAsymmetryDifferentSM
! Two-cluster asymmetry vs pt of pair, each cluster in different SM, with mass close to pi0...
void InitGeometryMatrices()
TH2F * fHmggSM_Zone1[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 1.
Bool_t fClusterTopology
Draw cluster topology histo.
TH2F * fhTopoClusterAmpFractionCase1[AliEMCALGeoParams::fgkEMCALModules]
! Cell amplitude fraction map for type 1 cluster in noisy quartet
TH2F * fHmggSM_Zone7[AliEMCALGeoParams::fgkEMCALModules]
! Two-cluster invariant mass per SM in zone 7.
TH2F * fHmggPairSameSectorSM[AliEMCALGeoParams::fgkEMCALModules/2]
! Two-cluster invariant mass per Pair.
Bool_t fCellEnergyHiso
Draw cell ernergy histo.