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 fL0Bkgmin(1.0), fL0Bkgmax(3.0),
53 fDTimeCut(100.), fTimeMax(1000000), fTimeMin(-1000000),
54 fAsyCut(1.), fMinNCells(2), fGroupNCells(0),
55 fLogWeight(4.5), fSameSM(kFALSE), fChangeBkgShape(kFALSE),
56 fNMaskCellColumns(11), fMaskCellColumns(0x0),
57 fInvMassCutMin(110.), fInvMassCutMax(160.),
60 fMinBin(0.), fMaxBin(300.),
62 fMinEnergyBin(0.), fMaxEnergyBin(100.),
63 fNTimeBins(1000), fMinTimeBin(0.), fMaxTimeBin(1000.),
65 fMomentum1(), fMomentum2(), fMomentum12(),
67 fHmgg(0x0), fHmggDifferentSM(0x0),
68 fHmggMaskFrame(0x0), fHmggDifferentSMMaskFrame(0x0),
69 fHOpeningAngle(0x0), fHOpeningAngleDifferentSM(0x0),
70 fHAsymmetry(0x0), fHAsymmetryDifferentSM(0x0),
72 fhClusterTime(0x0), fhClusterPairDiffTime(0x0)
74 for(Int_t iMod=0; iMod < AliEMCALGeoParams::fgkEMCALModules; iMod++)
76 for(Int_t iX=0; iX<24; iX++)
78 for(Int_t iZ=0; iZ<48; iZ++)
100 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules/2; iSMPair++)
107 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules-2; iSMPair++)
114 for(Int_t iSM = 0; iSM < AliEMCALGeoParams::fgkEMCALModules; iSM++)
158 AliAnalysisTaskSE(name),
159 fEMCALGeo(0x0), fLoadMatrices(0),
160 fEMCALGeoName(
"EMCAL_COMPLETE12SMV1_DCAL_8SM"),
162 fRecoUtils(new AliEMCALRecoUtils),
163 fOADBFilePath(
""), fCalibFilePath(
""),
164 fCorrectClusters(kFALSE), fRecalPosition(kTRUE),
165 fCaloClustersArr(0x0), fEMCALCells(0x0),
167 fOutputContainer(0x0),
168 fVertex(), fFilteredInput(kFALSE),
169 fImportGeometryFromFile(1), fImportGeometryFilePath(
""),
170 fEmin(0.5), fEmax(15.),
171 fL0min(0.01), fL0max(0.5),
172 fL0Bkgmin(1.0), fL0Bkgmax(3.0),
173 fDTimeCut(100.), fTimeMax(1000000), fTimeMin(-1000000),
174 fAsyCut(1.), fMinNCells(2), fGroupNCells(0),
175 fLogWeight(4.5), fSameSM(kFALSE), fChangeBkgShape(kFALSE),
176 fNMaskCellColumns(11), fMaskCellColumns(0x0),
177 fInvMassCutMin(110.), fInvMassCutMax(160.),
180 fMinBin(0.), fMaxBin(300.),
182 fMinEnergyBin(0.), fMaxEnergyBin(100.),
183 fNTimeBins(1000), fMinTimeBin(0.), fMaxTimeBin(1000.),
185 fMomentum1(), fMomentum2(), fMomentum12(),
187 fHmgg(0x0), fHmggDifferentSM(0x0),
188 fHmggMaskFrame(0x0), fHmggDifferentSMMaskFrame(0x0),
189 fHOpeningAngle(0x0), fHOpeningAngleDifferentSM(0x0),
190 fHAsymmetry(0x0), fHAsymmetryDifferentSM(0x0),
192 fhClusterTime(0x0), fhClusterPairDiffTime(0x0)
194 for(Int_t iMod=0; iMod < AliEMCALGeoParams::fgkEMCALModules; iMod++)
196 for(Int_t iX=0; iX<24; iX++)
198 for(Int_t iZ=0; iZ<48; iZ++)
200 fHmpi0[iMod][iZ][iX] = 0 ;
220 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules/2; iSMPair++)
227 for(Int_t iSMPair = 0; iSMPair < AliEMCALGeoParams::fgkEMCALModules-2; iSMPair++)
234 for(Int_t iSM = 0; iSM < AliEMCALGeoParams::fgkEMCALModules; iSM++)
270 DefineOutput(1, TList::Class());
296 if(
fRecoUtils->GetParticleType()!=AliEMCALRecoUtils::kPhoton)
297 AliFatal(Form(
"Wrong particle type for cluster position recalculation! = %d\n",
fRecoUtils->GetParticleType()));
299 AliDebug(1,Form(
"It will use fLogWeight %.3f",
fLogWeight));
301 Float_t pos[]={0,0,0};
307 Float_t e1i = c1->E();
308 if (e1i <
fEmin)
continue;
309 else if (e1i >
fEmax)
continue;
311 else if (c1->GetNCells() <
fMinNCells)
continue;
315 else if (c1->GetM02() <
fL0min || c1->GetM02() >
fL0max)
continue;
317 if(
fRecoUtils->ClusterContainsBadChannel(
fEMCALGeo, c1->GetCellsAbsId(), c1->GetNCells()))
continue;
321 AliInfo(Form(
"Std : i %d, E %f, dispersion %f, m02 %f, m20 %f\n",c1->GetID(),c1->E(),c1->GetDispersion(),c1->GetM02(),c1->GetM20()));
322 c1->GetPosition(pos);
323 AliInfo(Form(
"Std : i %d, x %f, y %f, z %f\n",c1->GetID(), pos[0], pos[1], pos[2]));
334 AliDebug(2,Form(
"Energy: after recalibration %f",c1->E()));
340 c1->SetE(
fRecoUtils->CorrectClusterEnergyLinearity(c1));
342 AliDebug(2,Form(
"after linearity correction %f",c1->E()));
347 AliDebug(2,Form(
"after smearing %f\n",c1->E()));
351 AliInfo(Form(
"Cor : i %d, E %f, dispersion %f, m02 %f, m20 %f\n",c1->GetID(),c1->E(),c1->GetDispersion(),c1->GetM02(),c1->GetM20()));
352 c1->GetPosition(pos);
353 AliInfo(Form(
"Cor : i %d, x %f, y %f, z %f\n",c1->GetID(), pos[0], pos[1], pos[2]));
372 Bool_t shared = kFALSE;
374 Float_t pos[] = {0,0,0};
376 Int_t bc = InputEvent()->GetBunchCrossNumber();
377 Int_t nSM = (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules();
379 Int_t nbClusterInTopoHisto[nSM];
381 for(Int_t iSM = 0; iSM < nSM; iSM++)
383 nbClusterInTopoHisto[iSM] = 0;
391 if(
fRecoUtils->ClusterContainsBadChannel(
fEMCALGeo, c1->GetCellsAbsId(), c1->GetNCells()))
continue;
393 Float_t e1i = c1->E();
395 if (e1i <
fEmin)
continue;
396 else if (e1i >
fEmax)
continue;
400 else if (c1->GetNCells() <
fMinNCells)
continue;
404 else if (c1->GetM02() <
fL0min || c1->GetM02() >
fL0max)
continue;
408 AliInfo(Form(
"IMA : i %d, E %f, dispersion %f, m02 %f, m20 %f",c1->GetID(),e1i,c1->GetDispersion(),c1->GetM02(),c1->GetM20()));
409 c1->GetPosition(pos);
410 AliInfo(Form(
"IMA : i %d, x %f, y %f, z %f",c1->GetID(), pos[0], pos[1], pos[2]));
424 Double_t time1 = c1->GetTOF()*1.e9;
435 AliEMCALGeometry* geom = AliEMCALGeometry::GetInstance();
437 for(Int_t iCell = 0; iCell < c1->GetNCells(); iCell++)
439 Int_t iSupMod = -1, iIeta =-1, iIphi =-1, iTower =-1, ietaCell =-1, iphiCell =-1;
441 Int_t CellID = c1->GetCellsAbsId()[iCell];
442 geom->GetCellIndex(CellID,iSupMod,iTower,iIphi,iIeta);
443 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta,iphiCell,ietaCell);
445 Float_t amp =
fEMCALCells->GetCellAmplitude(CellID);
447 Float_t AmpFraction = amp / e1i;
449 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));
451 switch (iPosInNoisyQuartet) {
476 if(amp && AmpFraction)
478 nbClusterInTopoHisto[iSupMod1] = nbClusterInTopoHisto[iSupMod1] + 1;
488 Float_t e2i = c2->E();
489 if (e2i <
fEmin)
continue;
490 else if (e2i >
fEmax)
continue;
494 else if (c2->GetNCells() <
fMinNCells)
continue;
498 else if (c2->GetM02() <
fL0min || c2->GetM02() >
fL0max)
continue;
513 Double_t time2 = c2->GetTOF()*1.e9;
519 if(TMath::Abs(time1-time2) >
fDTimeCut)
continue;
521 if(invmass < fMaxBin && invmass >
fMinBin )
536 if(iSupMod1==iSupMod2)
542 Bool_t zone1 =
IsInZone1(iSupMod1,ieta1,iphi1);
543 Bool_t zone2 =
IsInZone2(iSupMod1,ieta1,iphi1);
544 Bool_t zone3 =
IsInZone3(iSupMod1,ieta1,iphi1);
545 Bool_t zone4 =
IsInZone4(iSupMod1,ieta1,iphi1);
546 Bool_t zone5 =
IsInZone5(iSupMod1,ieta1,iphi1);
547 Bool_t zone6 =
IsInZone6(iSupMod1,ieta1,iphi1);
548 Bool_t zone7 =
IsInZone7(iSupMod1,ieta1,iphi1);
565 for(Int_t i = 0; i < nSM/2; i++)
568 if((iSupMod1==j && iSupMod2==j+1) || (iSupMod1==j+1 && iSupMod2==j))
576 for(Int_t i = 0; i < nSM-2; i++)
578 if((iSupMod1==i && iSupMod2==i+2) || (iSupMod1==i+2 && iSupMod2==i))
595 for(Int_t i = 0; i < nSM/2; i++)
602 for(Int_t i = 0; i < nSM-2; i++)
613 for(Int_t icell = 0; icell < c1->GetNCells(); icell++)
615 Int_t absID = c1->GetCellAbsId(icell);
619 for(Int_t icell = 0; icell < c2->GetNCells(); icell++)
621 Int_t absID = c2->GetCellAbsId(icell);
626 Float_t opangle =
fMomentum1.Angle(fMomentum2.Vect())*TMath::RadToDeg();
633 if(iSupMod1==iSupMod2)
644 if((iSupMod1==0 && iSupMod2==2) || (iSupMod1==2 && iSupMod2==0))
650 if((iSupMod1==1 && iSupMod2==3) || (iSupMod1==3 && iSupMod2==1))
656 if((iSupMod1==0 && iSupMod2==1) || (iSupMod1==1 && iSupMod2==0))
661 if((iSupMod1==2 && iSupMod2==3) || (iSupMod1==3 && iSupMod2==2))
672 if(
fSameSM && iSupMod1!=iSupMod2)
continue;
677 fHmpi0[iSupMod1][ieta1][iphi1]->Fill(invmass);
678 fHmpi0[iSupMod2][ieta2][iphi2]->Fill(invmass);
703 for (Int_t j = -fGroupNCells; j < fGroupNCells+1; j++)
705 Int_t absId11 =
fEMCALGeo->GetAbsCellIdFromCellIndexes(iSupMod1, iphi1+j, ieta1+i);
706 Int_t absId22 =
fEMCALGeo->GetAbsCellIdFromCellIndexes(iSupMod2, iphi2+j, ieta2+i);
711 for(Int_t icell = 0; icell < c1->GetNCells(); icell++)
713 if(c1->GetCellsAbsId()[icell] == absId11) ok1=kTRUE;
716 for(Int_t icell = 0; icell < c2->GetNCells(); icell++)
718 if(c2->GetCellsAbsId()[icell] == absId22) ok2=kTRUE;
721 if(ok1 && (ieta1+i >= 0) && (iphi1+j >= 0) && (ieta1+i < 48) && (iphi1+j < 24))
723 fHmpi0[iSupMod1][ieta1+i][iphi1+j]->Fill(invmass);
727 if(ok2 && (ieta2+i >= 0) && (iphi2+j >= 0) && (ieta2+i < 48) && (iphi2+j < 24))
729 fHmpi0[iSupMod2][ieta2+i][iphi2+j]->Fill(invmass);
736 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",
737 iSupMod1,iphi1,ieta1,iSupMod2,iphi2,ieta2,
fMomentum12.M(),e1i,c1->E(),e2i,c2->E()));
742 for(Int_t iSM = 0; iSM < nSM; iSM++)
744 AliDebug(2,Form(
"nbClusterInTopo = %i\n",nbClusterInTopoHisto[iSM]));
746 if(nbClusterInTopoHisto[iSM] == 0)
continue;
777 if ( !calibFactorsFile ) AliFatal(
"Cannot recover the calibration factors");
779 for(Int_t ism = 0; ism <
fEMCALGeo->GetNumberOfSuperModules(); ism++)
781 TH2F * histo = (TH2F*) calibFactorsFile->Get(Form(
"EMCALRecalFactors_SM%d",ism));
782 printf(
"In AliAnalysisTaskEMCALPi0CalibSelection::InitEnergyCalibrationFactors \n ---Recover calibration factor for : EMCALRecalFactors_SM%d %p\n",ism,histo);
785 fRecoUtils->SetEMCALChannelRecalibrationFactors(ism,histo);
787 AliWarning(Form(
"Null histogram with calibration factors for SM%d, 1 will be used for the full SM!",ism));
797 Int_t runnumber = InputEvent()->GetRunNumber() ;
820 AliInfo(
"Load user defined EMCAL geometry matrices");
822 AliOADBContainer emcGeoMat(
"AliEMCALgeo");
826 emcGeoMat.InitFromFile(Form(
"%s/EMCALlocal2master.root",
fOADBFilePath.Data()),
"AliEMCALgeo");
828 TObjArray *matEMCAL=(TObjArray*)emcGeoMat.GetObject(runnumber,
"EmcalMatrices");
830 for(Int_t mod = 0; mod < (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
834 AliDebug(1,Form(
"EMCAL matrices SM %d, %p",mod,((TGeoHMatrix*) matEMCAL->At(mod))));
837 fMatrix[mod] = (TGeoHMatrix*) matEMCAL->At(mod) ;
849 AliWarning(Form(
"Set matrix for SM %d from gGeoManager",mod));
850 fEMCALGeo->SetMisalMatrix(
fEMCALGeo->GetMatrixForSuperModuleFromGeoManager(mod),mod) ;
854 AliError(Form(
"Alignment matrix for SM %d is not available",mod));
858 else if(!gGeoManager)
860 AliInfo(
"Get geo matrices from data");
862 if(!strcmp(InputEvent()->GetName(),
"AliAODEvent"))
864 AliWarning(
"Use ideal geometry, values geometry matrix not kept in AODs");
868 AliDebug(1,
"AliAnalysisTaskEMCALClusterize Load Misaligned matrices");
870 for(Int_t mod=0; mod < (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
872 if(InputEvent()->GetEMCALMatrix(mod))
875 InputEvent()->GetEMCALMatrix(mod)->Print();
877 fEMCALGeo->SetMisalMatrix(InputEvent()->GetEMCALMatrix(mod),mod) ;
885 for(Int_t mod = 0; mod < (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
887 AliWarning(Form(
"Set matrix for SM %d from gGeoManager",mod));
888 fEMCALGeo->SetMisalMatrix(
fEMCALGeo->GetMatrixForSuperModuleFromGeoManager(mod),mod) ;
900 if(!
fRecoUtils->IsRunDepRecalibrationOn())
return;
902 AliOADBContainer *contRFTD=
new AliOADBContainer(
"");
904 contRFTD->InitFromFile(Form(
"%s/EMCALTemperatureCorrCalib.root",
fOADBFilePath.Data()),
"AliEMCALRunDepTempCalibCorrections");
906 Int_t runnumber = InputEvent()->GetRunNumber() ;
908 TH1S *htd=(TH1S*)contRFTD->GetObject(runnumber);
913 AliWarning(Form(
"No TemperatureCorrCalib Objects for run: %d",runnumber));
918 Int_t maxEntry = contRFTD->GetNumberOfEntries();
920 while ( (ic < maxEntry) && (contRFTD->UpperLimit(ic) < runnumber) )
926 Int_t closest = lower;
927 if ( (ic<maxEntry) &&
928 (contRFTD->LowerLimit(ic)-runnumber) < (runnumber - contRFTD->UpperLimit(lower)) )
933 AliWarning(Form(
"TemperatureCorrCalib Objects found closest id %d from run: %d",
934 closest, contRFTD->LowerLimit(closest)));
936 htd = (TH1S*) contRFTD->GetObjectByIndex(closest);
942 AliInfo(
"Recalibrate (Temperature) EMCAL");
944 Int_t nSM =
fEMCALGeo->GetNumberOfSuperModules();
946 for (Int_t ism = 0; ism < nSM; ++ism)
948 for (Int_t icol = 0; icol < 48; ++icol)
950 for (Int_t irow = 0; irow < 24; ++irow)
952 Float_t factor =
fRecoUtils->GetEMCALChannelRecalibrationFactor(ism,icol,irow);
954 Int_t absID =
fEMCALGeo->GetAbsCellIdFromCellIndexes(ism, irow, icol);
956 AliDebug(3,Form(
" ism %d, icol %d, irow %d,absID %d - Calib factor %1.5f - ",ism, icol, irow, absID, factor));
958 factor *= htd->GetBinContent(absID) / 10000. ;
960 fRecoUtils->SetEMCALChannelRecalibrationFactor(ism,icol,irow,factor);
962 AliDebug(3,Form(
"T factor %1.5f - final factor %1.5f",
963 htd->GetBinContent(absID) / 10000.,
964 fRecoUtils->GetEMCALChannelRecalibrationFactor(ism,icol,irow)));
969 else AliInfo(
"Do NOT recalibrate EMCAL with T variations, no params TH1");
981 Int_t nSM = (
fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules();
984 const Int_t buffersize = 255;
985 char hname[buffersize], htitl[buffersize], htitlEnergy[buffersize];
987 fhNEvents =
new TH1I(
"hNEvents",
"Number of analyzed events" , 1 , 0 , 1 ) ;
991 fHmgg->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
992 fHmgg->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1000 fHOpeningAngle =
new TH2F(
"hopang",
"2-cluster opening angle",100,0.,50.,100,0,10);
1010 fHAsymmetry =
new TH2F(
"hasym",
"2-cluster opening angle",100,0.,1.,100,0,10);
1012 fHAsymmetry->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1015 fHAsymmetryDifferentSM =
new TH2F(
"hasymDifferentSM",
"2-cluster opening angle, different SM",100,0,1.,100,0,10);
1033 for(Int_t iSM = 0; iSM < nSM; iSM++)
1035 snprintf(hname, buffersize,
"hmgg_SM%d",iSM);
1036 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d",iSM);
1038 fHmggSM[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1039 fHmggSM[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1042 snprintf(hname, buffersize,
"hmgg_SM%d_MaskFrame",iSM);
1043 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d",iSM);
1049 snprintf(hname, buffersize,
"hmgg_SM%d_Zone1",iSM);
1050 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 1",iSM);
1052 fHmggSM_Zone1[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1053 fHmggSM_Zone1[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1056 snprintf(hname, buffersize,
"hmgg_SM%d_Zone2",iSM);
1057 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 2",iSM);
1059 fHmggSM_Zone2[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1060 fHmggSM_Zone2[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1063 snprintf(hname, buffersize,
"hmgg_SM%d_Zone3",iSM);
1064 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 3",iSM);
1066 fHmggSM_Zone3[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1067 fHmggSM_Zone3[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1070 snprintf(hname, buffersize,
"hmgg_SM%d_Zone4",iSM);
1071 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 4",iSM);
1073 fHmggSM_Zone4[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1074 fHmggSM_Zone4[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1077 snprintf(hname, buffersize,
"hmgg_SM%d_Zone5",iSM);
1078 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 5",iSM);
1080 fHmggSM_Zone5[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1081 fHmggSM_Zone5[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1084 snprintf(hname, buffersize,
"hmgg_SM%d_Zone6",iSM);
1085 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 6",iSM);
1087 fHmggSM_Zone6[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1088 fHmggSM_Zone6[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1091 snprintf(hname, buffersize,
"hmgg_SM%d_Zone7",iSM);
1092 snprintf(htitl, buffersize,
"Two-gamma inv. mass for super mod %d in zone 7",iSM);
1094 fHmggSM_Zone7[iSM]->SetXTitle(
"m_{#gamma #gamma} (MeV/c^{2})");
1095 fHmggSM_Zone7[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1100 snprintf(hname,buffersize,
"hmgg_PairSameSectorSM%d",iSM);
1101 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1107 snprintf(hname,buffersize,
"hmgg_PairSameSectorSM%d_MaskFrame",iSM);
1108 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1115 Form(
"cluster pair time difference vs E, Sector %d",iSM),
1116 100,0,10, 200,-100,100);
1124 snprintf(hname,buffersize,
"hmgg_PairSameSideSM%d",iSM);
1125 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1131 snprintf(hname,buffersize,
"hmgg_PairSameSideSM%d_MaskFrame",iSM);
1132 snprintf(htitl,buffersize,
"Two-gamma inv. mass for SM pair Sector: %d",iSM);
1139 Form(
"cluster pair time difference vs E, Side %d",iSM),
1140 100,0,10, 200,-100,100);
1146 snprintf(hname, buffersize,
"hopang_SM%d",iSM);
1147 snprintf(htitl, buffersize,
"Opening angle for super mod %d",iSM);
1153 snprintf(hname,buffersize,
"hopang_PairSM%d",iSM);
1154 snprintf(htitl,buffersize,
"Opening angle for SM pair: %d",iSM);
1160 snprintf(hname, buffersize,
"hasym_SM%d",iSM);
1161 snprintf(htitl, buffersize,
"Asymmetry for super mod %d",iSM);
1162 fHAsymmetrySM[iSM] =
new TH2F(hname,htitl,100,0.,1.,100,0,10);
1164 fHAsymmetrySM[iSM]->SetYTitle(
"p_{T #gamma #gamma} (GeV/c)");
1167 snprintf(hname,buffersize,
"hasym_PairSM%d",iSM);
1168 snprintf(htitl,buffersize,
"Asymmetry for SM pair: %d",iSM);
1178 Form(
"Entries in grid of cells in Module %d",iSM),
1179 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1185 Form(
"Accumulated energy in grid of cells in Module %d",iSM),
1186 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1192 Form(
"Accumulated asymmetry in grid of cells in Module %d",iSM),
1193 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1198 fhTowerDecayPhotonHitMaskFrame[iSM] =
new TH2F (Form(
"hTowerDecPhotonHit_Mod%d_MaskFrame",iSM),Form(
"Entries in grid of cells in Module %d",iSM),
1199 colmax+2,-1.5,colmax+0.5, rowmax+2,-1.5,rowmax+0.5);
1204 fhClusterTimeSM[iSM] =
new TH2F(Form(
"hClusterTime_SM%d",iSM),
"cluster time vs E",100,0,10, 200,-1000,1000);
1210 Form(
"cluster pair time difference vs E, SM %d",iSM),
1211 100,0,10, 200,-100,100);
1221 Form(
"cluster topology for cluster in position 0 in noisy quartet, SM %d",iSM),
1222 21,-10.5,10.5, 21,-10.5,10.5);
1228 Form(
"cluster topology for cluster in position 1 in noisy quartet, SM %d",iSM),
1229 21,-10.5,10.5, 21,-10.5,10.5);
1235 Form(
"cluster topology for cluster in position 2 in noisy quartet, SM %d",iSM),
1236 21,-10.5,10.5, 21,-10.5,10.5);
1242 Form(
"cluster topology for cluster in position 3 in noisy quartet, SM %d",iSM),
1243 21,-10.5,10.5, 21,-10.5,10.5);
1249 Form(
"cluster topology for cluster in position 0 in noisy quartet, SM %d",iSM),
1250 21,-10.5,10.5, 21,-10.5,10.5);
1256 Form(
"cluster topology for cluster in position 1 in noisy quartet, SM %d",iSM),
1257 21,-10.5,10.5, 21,-10.5,10.5);
1263 Form(
"cluster topology for cluster in position 2 in noisy quartet, SM %d",iSM),
1264 21,-10.5,10.5, 21,-10.5,10.5);
1270 Form(
"cluster topology for cluster in position 3 in noisy quartet, SM %d",iSM),
1271 21,-10.5,10.5, 21,-10.5,10.5);
1278 Form(
"cluster topology for cluster in position 0 in noisy quartet, SM %d",iSM),
1279 21,-10.5,10.5, 21,-10.5,10.5);
1285 Form(
"cluster topology for cluster in position 1 in noisy quartet, SM %d",iSM),
1286 21,-10.5,10.5, 21,-10.5,10.5);
1292 Form(
"cluster topology for cluster in position 2 in noisy quartet, SM %d",iSM),
1293 21,-10.5,10.5, 21,-10.5,10.5);
1299 Form(
"cluster topology for cluster in position 3 in noisy quartet, SM %d",iSM),
1300 21,-10.5,10.5, 21,-10.5,10.5);
1307 Int_t nchannels = nSM*AliEMCALGeoParams::fgkEMCALRows*AliEMCALGeoParams::fgkEMCALCols;
1308 for(Int_t ibc = 0; ibc < 4; ibc++)
1310 fHTpi0[ibc] =
new TH2F(Form(
"hTime_BC%d",ibc),Form(
"Time of cell clusters under pi0 peak, bunch crossing %d",ibc),
1313 fHTpi0[ibc]->SetYTitle(
"time (ns)");
1314 fHTpi0[ibc]->SetXTitle(
"abs. Id. ");
1317 fhClusterTime =
new TH2F(
"hClusterTime",
"cluster time vs E",100,0,10, 100,0,1000);
1322 fhClusterPairDiffTime =
new TH2F(
"hClusterPairDiffTime",
"cluster pair time difference vs E",100,0,10, 800,-400,400);
1327 for(Int_t iMod=0; iMod < nSM; iMod++)
1329 for(Int_t iRow=0; iRow < AliEMCALGeoParams::fgkEMCALRows; iRow++)
1331 for(Int_t iCol=0; iCol < AliEMCALGeoParams::fgkEMCALCols; iCol++)
1333 snprintf(hname,buffersize,
"%d_%d_%d",iMod,iCol,iRow);
1334 snprintf(htitl,buffersize,
"Two-gamma inv. mass for super mod %d, cell(col,row)=(%d,%d)",iMod,iCol,iRow);
1336 fHmpi0[iMod][iCol][iRow]->SetXTitle(
"mass (MeV/c^{2})");
1341 snprintf(htitlEnergy,buffersize,
"Energy for super mod %d, cell(col,row)=(%d,%d)",iMod,iCol,iRow);
1343 fhEnergy[iMod][iCol][iRow]->SetXTitle(
"E (GeV)");
1406 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1408 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1417 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1419 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1451 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1453 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1466 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1468 if((irow >= 2 && irow <= 3) || (irow >= 20 && irow <= 21))
1504 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1506 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1515 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1517 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1549 if((irow >= 2 && irow <= 21) && ((icol >= 42 && icol <= 46) || (icol >= 13 && icol <= 37) || (icol >= 1 && icol <= 9)))
1551 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1564 if((irow >= 2 && irow <= 21) && ((icol >= 1 && icol <= 5) || (icol >= 10 && icol <= 34) || (icol >= 38 && icol <= 46)))
1566 if((icol >= 1 && icol <= 3) || (icol >= 44 && icol <= 46))
1598 Float_t col0 = 47/2;
1599 Float_t row0 = 23/2;
1605 if(((icol-col0)*(icol-col0)) / (a*a) + ((irow-row0)*(irow-row0) / (b*b)) > 1)
1632 Float_t col0 = 47/2;
1633 Float_t row0 = 23/2;
1636 Float_t aLarge = 3-col0;
1637 Float_t bLarge = 2-row0;
1638 Float_t aSmall = 16-col0;
1639 Float_t bSmall = 7-row0;
1641 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))
1668 Float_t col0 = 47/2;
1669 Float_t row0 = 23/2;
1672 Float_t a = 16-col0;
1675 if(((icol-col0)*(icol-col0)) / (a*a) + ((irow-row0)*(irow-row0) / (b*b)) < 1)
1699 AliESDEvent* esdevent =
dynamic_cast<AliESDEvent*
> (InputEvent());
1700 AliAODEvent* aodevent =
dynamic_cast<AliAODEvent*
> (InputEvent());
1702 TString triggerClass =
"";
1703 if (esdevent) triggerClass = esdevent->GetFiredTriggerClasses();
1704 else if(aodevent) triggerClass = aodevent->GetFiredTriggerClasses();
1706 AliDebug(1,Form(
"Event %d, FiredClass %s",
1707 (Int_t)Entry(),(((AliESDEvent*)InputEvent())->GetFiredTriggerClasses()).
Data()));
1711 AliDebug(1,
"Reject event!");
1715 AliDebug(1,
"Accept event!");
1720 AliVEvent*
event = 0;
1722 else event = InputEvent();
1726 AliWarning(
"Input event not available!");
1730 AliDebug(1,Form(
"<<< %s: Event %d >>>",event->GetName(), (Int_t)Entry()));
1734 event->GetPrimaryVertex()->GetXYZ(
fVertex) ;
1777 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",
1782 printf(
"Cluster maximal cell away from border at least %d cells\n",
fRecoUtils->GetNumberOfCellsFromEMCALBorder()) ;
1786 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",
1794 if(
fLoadMatrices) {
for(Int_t ism = 0; ism < AliEMCALGeoParams::fgkEMCALModules; ism++)
if(
fMatrix[ism])
fMatrix[ism]->Print() ; }
1821 else AliWarning(
"Mask column not set, position larger than allocated set size first") ;
1868 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.
Bool_t fChangeBkgShape
Select clusters with nominal M02 cuts (fL0min,fL0max) plus high M02 clusters (fL0Bkgmin,fL0Bkgmax)
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.
Float_t fL0Bkgmax
Maximum cluster L0 for bkg shape study.
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
Float_t fL0Bkgmin
Minimum cluster L0 for bkg shape study.
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.