24 #include "AliAnalysisManager.h" 25 #include "AliInputEventHandler.h" 26 #include "AliMCEventHandler.h" 27 #include "AliAODHandler.h" 31 #include "AliMCEvent.h" 34 #include "TObjString.h" 35 #include "AliAODEvent.h" 36 #include "AliESDEvent.h" 37 #include "AliCentrality.h" 42 #include "AliAODMCParticle.h" 43 #include "AliAODMCHeader.h" 45 #include "AliPHOSGeoUtils.h" 46 #include "AliTrackerBase.h" 47 #include "AliVCaloCells.h" 48 #include "AliVCluster.h" 51 #include "AliTender.h" 52 #include "AliTenderSupply.h" 53 #include "AliEMCALTenderSupply.h" 55 #include "AliPHOSTenderSupply.h" 56 #include "AliPHOSTenderTask.h" 57 #include "AliOADBContainer.h" 58 #include "AliESDtrackCuts.h" 78 "DistanceToBadChannel",
95 AliAnalysisCuts(name,title),
98 fCaloTrackMatcher(NULL),
101 fEMCALRecUtils(NULL),
102 fEMCALInitialized(kFALSE),
104 fPHOSInitialized(kFALSE),
106 fEMCALBadChannelsMap(NULL),
107 fPHOSBadChannelsMap(NULL),
109 fNMaxEMCalModules(12),
111 fHistoModifyAcc(NULL),
112 fDoLightOutput(kFALSE),
114 fIsCurrentClusterAcceptedBeforeTM(kFALSE),
115 fV0ReaderName(
"V0ReaderV1"),
116 fCorrTaskSetting(
""),
117 fCaloTrackMatcherName(
"CaloTrackMatcher_1_0"),
118 fCaloIsolationName(
"PhotonIsolation"),
122 fIsolationRadius(0.4),
124 fUsePhotonIsolation(kFALSE),
133 fMinDistanceToBadChannel(0),
134 fUseDistanceToBadChannel(0),
136 fMinTimeDiff(-10e10),
138 fMaxDistTrackToClusterEta(0),
139 fMinDistTrackToClusterPhi(0),
140 fMaxDistTrackToClusterPhi(0),
141 fUseDistTrackToCluster(0),
142 fUsePtDepTrackToCluster(0),
148 fUseTMMIPsubtraction(0),
149 fExtendedMatchAndQA(0),
150 fExoticEnergyFracCluster(0),
151 fExoticMinEnergyCell(1),
152 fUseExoticCluster(0),
153 fDoExoticsQA(kFALSE),
155 fDoFlatEnergySubtraction(0),
157 fLocMaxCutEDiff(0.03),
169 fMaxMGGRecConv(0.01),
171 fMaxDispersion(1000),
178 fSwitchNonLinearity(0),
179 fUseNonLinearity(kFALSE),
181 fNactiveEmcalCells(0),
182 fVectorMatchedClusterIDs(0),
186 fHistAcceptanceCuts(NULL),
187 fHistClusterIdentificationCuts(NULL),
188 fHistClusterEtavsPhiBeforeAcc(NULL),
189 fHistClusterEtavsPhiAfterAcc(NULL),
190 fHistClusterEtavsPhiAfterQA(NULL),
191 fHistClusterTimevsEBeforeQA(NULL),
192 fHistClusterTimevsEAfterQA(NULL),
193 fHistEnergyOfClusterBeforeNL(NULL),
194 fHistEnergyOfClusterAfterNL(NULL),
195 fHistEnergyOfClusterBeforeQA(NULL),
196 fHistEnergyOfClusterAfterQA(NULL),
197 fHistNCellsBeforeQA(NULL),
198 fHistNCellsAfterQA(NULL),
199 fHistM02BeforeQA(NULL),
200 fHistM02AfterQA(NULL),
201 fHistM20BeforeQA(NULL),
202 fHistM20AfterQA(NULL),
203 fHistDispersionBeforeQA(NULL),
204 fHistDispersionAfterQA(NULL),
205 fHistNLMBeforeQA(NULL),
206 fHistNLMAfterQA(NULL),
207 fHistNLMVsNCellsAfterQA(NULL),
208 fHistNLMVsEAfterQA(NULL),
210 fHistClusterEnergyvsMod(NULL),
211 fHistNCellsBigger100MeVvsMod(NULL),
212 fHistNCellsBigger1500MeVvsMod(NULL),
213 fHistEnergyOfModvsMod(NULL),
214 fHistClusterEnergyvsNCellsBeforeQA(NULL),
215 fHistClusterEnergyvsNCellsAfterQA(NULL),
216 fHistCellEnergyvsCellID(NULL),
217 fHistCellTimevsCellID(NULL),
218 fHistClusterEM02BeforeQA(NULL),
219 fHistClusterEM02AfterQA(NULL),
220 fHistClusterIncludedCellsBeforeQA(NULL),
221 fHistClusterIncludedCellsAfterQA(NULL),
222 fHistClusterEnergyFracCellsBeforeQA(NULL),
223 fHistClusterEnergyFracCellsAfterQA(NULL),
224 fHistClusterIncludedCellsTimingAfterQA(NULL),
225 fHistClusterIncludedCellsTimingEnergyAfterQA(NULL),
226 fHistClusterDistanceInTimeCut(NULL),
227 fHistClusterDistanceOutTimeCut(NULL),
228 fHistClusterDistance1DInTimeCut(NULL),
229 fHistClusterRBeforeQA(NULL),
230 fHistClusterRAfterQA(NULL),
231 fHistClusterdEtadPhiBeforeQA(NULL),
232 fHistClusterdEtadPhiAfterQA(NULL),
233 fHistDistanceTrackToClusterBeforeQA(NULL),
234 fHistDistanceTrackToClusterAfterQA(NULL),
235 fHistClusterdEtadPhiPosTracksBeforeQA(NULL),
236 fHistClusterdEtadPhiNegTracksBeforeQA(NULL),
237 fHistClusterdEtadPhiPosTracksAfterQA(NULL),
238 fHistClusterdEtadPhiNegTracksAfterQA(NULL),
239 fHistClusterdEtadPhiPosTracksP_000_075BeforeQA(NULL),
240 fHistClusterdEtadPhiPosTracksP_075_125BeforeQA(NULL),
241 fHistClusterdEtadPhiPosTracksP_125_999BeforeQA(NULL),
242 fHistClusterdEtadPhiNegTracksP_000_075BeforeQA(NULL),
243 fHistClusterdEtadPhiNegTracksP_075_125BeforeQA(NULL),
244 fHistClusterdEtadPhiNegTracksP_125_999BeforeQA(NULL),
245 fHistClusterdEtadPtBeforeQA(NULL),
246 fHistClusterdEtadPtAfterQA(NULL),
247 fHistClusterdEtadPtTrueMatched(NULL),
248 fHistClusterdPhidPtPosTracksBeforeQA(NULL),
249 fHistClusterdPhidPtNegTracksBeforeQA(NULL),
250 fHistClusterdPhidPtAfterQA(NULL),
251 fHistClusterdPhidPtPosTracksTrueMatched(NULL),
252 fHistClusterdPhidPtNegTracksTrueMatched(NULL),
253 fHistClusterM20M02BeforeQA(NULL),
254 fHistClusterM20M02AfterQA(NULL),
255 fHistClusterEtavsPhiExotics(NULL),
256 fHistClusterEM02Exotics(NULL),
257 fHistClusterEnergyvsNCellsExotics(NULL),
258 fHistClusterEEstarExotics(NULL),
259 fHistClusterTMEffiInput(NULL),
260 fHistClusterTrueElecEtaPhiBeforeTM_30_00(NULL),
261 fHistClusterTrueElecEtaPhiAfterTM_30_00(NULL),
262 fHistClusterEvsTrackECharged(NULL),
263 fHistClusterEvsTrackEChargedLead(NULL),
264 fHistClusterEvsTrackENeutral(NULL),
265 fHistClusterEvsTrackENeutralSubCharged(NULL),
266 fHistClusterEvsTrackEGamma(NULL),
267 fHistClusterEvsTrackEGammaSubCharged(NULL),
268 fHistClusterEvsTrackEConv(NULL),
269 fHistClusterENMatchesNeutral(NULL),
270 fHistClusterENMatchesCharged(NULL),
271 fHistClusterEvsTrackEPrimaryButNoElec(NULL),
272 fHistClusterEvsTrackSumEPrimaryButNoElec(NULL),
273 fHistClusETruePi0_BeforeTM(NULL),
274 fHistClusETruePi0_Matched(NULL),
275 fHistMatchedTrackPClusE(NULL),
276 fHistMatchedTrackPClusEAfterEOverPVeto(NULL),
277 fHistMatchedTrackPClusETruePi0Clus(NULL),
280 fIsAcceptedForBasic(kFALSE)
290 AliAnalysisCuts(ref),
505 TH1::AddDirectory(kFALSE);
537 Int_t nBinsClusterE = 235;
538 Int_t nBinsClusterEMod = 249;
539 Int_t nBinsClusterECell = 119;
540 Int_t nBinsClusterECellCoarse = 109;
541 Int_t nBinsClusterEOnlyHighPt = 134;
543 for(
Int_t i=0; i<nBinsClusterEMod+1;i++){
544 if (i < 1) arrClusEBinning[i] = 0.3*i;
545 else if(i<55) arrClusEBinning[i] = 0.3+0.05*(i-1);
546 else if(i<105) arrClusEBinning[i] = 3.+0.1*(i-55);
547 else if(i<140) arrClusEBinning[i] = 8.+0.2*(i-105);
548 else if(i<170) arrClusEBinning[i] = 15.+0.5*(i-140);
549 else if(i<190) arrClusEBinning[i] = 30.+1.0*(i-170);
550 else if(i<215) arrClusEBinning[i] = 50.+2.0*(i-190);
551 else if(i<235) arrClusEBinning[i] = 100.+5.0*(i-215);
552 else if(i<245) arrClusEBinning[i] = 200.+10.0*(i-235);
553 else if(i<249) arrClusEBinning[i] = 300.+25.0*(i-245);
554 else arrClusEBinning[i] = maxClusterE;
556 for(
Int_t i=0; i<nBinsClusterECell+1;i++){
557 if(i<20) arrClusEBinningCoarse[i] = 0.05*(i);
558 else if(i<50) arrClusEBinningCoarse[i] = 1.+0.1*(i-20);
559 else if(i<70) arrClusEBinningCoarse[i] = 4.+0.2*(i-50);
560 else if(i<74) arrClusEBinningCoarse[i] = 8.+0.5*(i-70);
561 else if(i<90) arrClusEBinningCoarse[i] = 10.+1.0*(i-74);
562 else if(i<97) arrClusEBinningCoarse[i] = 26.+2.0*(i-90);
563 else if(i<109) arrClusEBinningCoarse[i] = 40.+5.0*(i-97);
564 else if(i<119) arrClusEBinningCoarse[i] = 100.+10.0*(i-109);
565 else arrClusEBinningCoarse[i] = 200;
567 for(
Int_t i=0; i<nBinsClusterEOnlyHighPt+1;i++){
568 if(i<25) arrClusEBinningOnlyHighPt[i] = 10.+0.2*i;
569 else if(i<55) arrClusEBinningOnlyHighPt[i] = 15.+0.5*(i-25);
570 else if(i<75) arrClusEBinningOnlyHighPt[i] = 30.+1.0*(i-55);
571 else if(i<100) arrClusEBinningOnlyHighPt[i] = 50.+2.0*(i-75);
572 else if(i<120) arrClusEBinningOnlyHighPt[i] = 100.+5.0*(i-100);
573 else if(i<130) arrClusEBinningOnlyHighPt[i] = 200.+10.0*(i-120);
574 else if(i<134) arrClusEBinningOnlyHighPt[i] = 300.+25.0*(i-130);
575 else arrClusEBinningOnlyHighPt[i] = maxClusterE;
613 const Int_t nEmcalEtaBins = 96;
614 const Int_t nEmcalPhiBins = 124;
615 Float_t EmcalEtaBins[nEmcalEtaBins+1] = {-0.66687,-0.653,-0.63913,-0.62526,-0.61139,-0.59752,-0.58365,-0.56978,-0.55591,-0.54204,-0.52817,-0.5143,-0.50043,-0.48656,-0.47269,-0.45882,-0.44495,-0.43108,-0.41721,-0.40334,-0.38947,-0.3756,-0.36173,-0.34786,-0.33399,-0.32012,-0.30625,-0.29238,-0.27851,-0.26464,-0.25077,-0.2369,-0.22303,-0.20916,-0.19529,-0.18142,-0.16755,-0.15368,-0.13981,-0.12594,-0.11207,-0.0982,-0.08433,-0.07046,-0.05659,-0.04272,-0.02885,-0.01498,-0.00111,0.01276,0.02663,0.0405,0.05437,0.06824,0.08211,0.09598,0.10985,0.12372,0.13759,0.15146,0.16533,0.1792,0.19307,0.20694,0.22081,0.23468,0.24855,0.26242,0.27629,0.29016,0.30403,0.3179,0.33177,0.34564,0.35951,0.37338,0.38725,0.40112,0.41499,0.42886,0.44273,0.4566,0.47047,0.48434,0.49821,0.51208,0.52595,0.53982,0.55369,0.56756,0.58143,0.5953,0.60917,0.62304,0.63691,0.65078,0.66465};
616 Float_t EmcalPhiBins[nEmcalPhiBins+1] = {1.408,1.4215,1.435,1.4485,1.462,1.4755,1.489,1.5025,1.516,1.5295,1.543,1.5565,1.57,1.5835,1.597,1.6105,1.624,1.6375,1.651,1.6645,1.678,1.6915,1.705,1.7185,1.732,1.758,1.7715,1.785,1.7985,1.812,1.8255,1.839,1.8525,1.866,1.8795,1.893,1.9065,1.92,1.9335,1.947,1.9605,1.974,1.9875,2.001,2.0145,2.028,2.0415,2.055,2.0685,2.082,2.108,2.1215,2.135,2.1485,2.162,2.1755,2.189,2.2025,2.216,2.2295,2.243,2.2565,2.27,2.2835,2.297,2.3105,2.324,2.3375,2.351,2.3645,2.378,2.3915,2.405,2.4185,2.432,2.456,2.4695,2.483,2.4965,2.51,2.5235,2.537,2.5505,2.564,2.5775,2.591,2.6045,2.618,2.6315,2.645,2.6585,2.672,2.6855,2.699,2.7125,2.726,2.7395,2.753,2.7665,2.78,2.804,2.8175,2.831,2.8445,2.858,2.8715,2.885,2.8985,2.912,2.9255,2.939,2.9525,2.966,2.9795,2.993,3.0065,3.02,3.0335,3.047,3.0605,3.074,3.0875,3.101,3.1145,3.128};
633 const Int_t nPhosEtaBins = 56;
634 const Int_t nPhosPhiBins = 256;
635 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
636 const Float_t PhosPhiRange[2] = {4.355, 5.6};
653 const Int_t nDcalEtaBins = 96;
654 const Int_t nDcalPhiBins = 124;
684 }
else{AliError(Form(
"Cluster Type is not EMCAL nor PHOS nor all: %i",
fClusterType));}
704 nBinsClusterE, arrClusEBinning);
710 nBinsClusterE, arrClusEBinning);
716 nBinsClusterE, arrClusEBinning);
720 nBinsClusterE, arrClusEBinning);
817 fBadChannels =
new TProfile(
"EMCal - Bad Channels",
"EMCal - Bad Channels",nMaxCellsEMCAL,-0.5,nMaxCellsEMCAL-0.5);
823 fBadChannels =
new TProfile(
"PHOS - Bad Channels",
"PHOS - Bad Channels",nMaxCellsPHOS,-0.5,nMaxCellsPHOS-0.5);
827 Int_t nStartCellDCAL = 12288;
829 fBadChannels =
new TProfile(
"DCAL - Bad Channels",
"DCAL - Bad Channels",nMaxCellsDCAL,nStartCellDCAL-0.5,nStartCellDCAL+nMaxCellsDCAL-0.5);
885 nMaxCellsEMCAL, 0, nMaxCellsEMCAL);
894 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
899 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
904 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
910 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
916 nBinsClusterE, arrClusEBinning, 200, -500, 500);
921 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
971 nMaxCellsPHOS,0,nMaxCellsPHOS);
980 nMaxCellsPHOS, 0, nMaxCellsPHOS);
985 nMaxCellsPHOS, 0, nMaxCellsPHOS);
990 nMaxCellsPHOS,0,nMaxCellsPHOS);
996 nMaxCellsPHOS, 0, nMaxCellsPHOS);
1002 nBinsClusterE, arrClusEBinning, 200, -500, 500);
1007 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
1013 Int_t nModulesStart = 12;
1014 Int_t nCellsStart = 12288;
1062 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1067 nMaxCellsDCAL+nCellsStart);
1072 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1077 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1082 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1088 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1094 nBinsClusterE, arrClusEBinning, 200, -500, 500);
1099 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
1109 const Int_t nEtaBins = 300;
1110 const Int_t nPhiBins = 300;
1111 const Float_t EtaRange[2] = {-0.3, 0.3};
1112 const Float_t PhiRange[2] = {-0.3, 0.3};
1140 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1145 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1150 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1155 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1160 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1165 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1170 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1175 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1180 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1185 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1190 nBinsClusterEMod, arrClusEBinning);
1195 nBinsClusterEMod, arrClusEBinning);
1200 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1205 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1210 nBinsClusterEMod, arrClusEBinning);
1217 nBinsClusterEMod, arrClusEBinning);
1222 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1227 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1246 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1253 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1296 const Int_t nEmcalEtaBins = 96;
1297 const Int_t nEmcalPhiBins = 124;
1298 Float_t EmcalEtaBins[nEmcalEtaBins+1] = {-0.66687,-0.653,-0.63913,-0.62526,-0.61139,-0.59752,-0.58365,-0.56978,-0.55591,-0.54204,-0.52817,-0.5143,-0.50043,-0.48656,-0.47269,-0.45882,-0.44495,-0.43108,-0.41721,-0.40334,-0.38947,-0.3756,-0.36173,-0.34786,-0.33399,-0.32012,-0.30625,-0.29238,-0.27851,-0.26464,-0.25077,-0.2369,-0.22303,-0.20916,-0.19529,-0.18142,-0.16755,-0.15368,-0.13981,-0.12594,-0.11207,-0.0982,-0.08433,-0.07046,-0.05659,-0.04272,-0.02885,-0.01498,-0.00111,0.01276,0.02663,0.0405,0.05437,0.06824,0.08211,0.09598,0.10985,0.12372,0.13759,0.15146,0.16533,0.1792,0.19307,0.20694,0.22081,0.23468,0.24855,0.26242,0.27629,0.29016,0.30403,0.3179,0.33177,0.34564,0.35951,0.37338,0.38725,0.40112,0.41499,0.42886,0.44273,0.4566,0.47047,0.48434,0.49821,0.51208,0.52595,0.53982,0.55369,0.56756,0.58143,0.5953,0.60917,0.62304,0.63691,0.65078,0.66465};
1299 Float_t EmcalPhiBins[nEmcalPhiBins+1] = {1.408,1.4215,1.435,1.4485,1.462,1.4755,1.489,1.5025,1.516,1.5295,1.543,1.5565,1.57,1.5835,1.597,1.6105,1.624,1.6375,1.651,1.6645,1.678,1.6915,1.705,1.7185,1.732,1.758,1.7715,1.785,1.7985,1.812,1.8255,1.839,1.8525,1.866,1.8795,1.893,1.9065,1.92,1.9335,1.947,1.9605,1.974,1.9875,2.001,2.0145,2.028,2.0415,2.055,2.0685,2.082,2.108,2.1215,2.135,2.1485,2.162,2.1755,2.189,2.2025,2.216,2.2295,2.243,2.2565,2.27,2.2835,2.297,2.3105,2.324,2.3375,2.351,2.3645,2.378,2.3915,2.405,2.4185,2.432,2.456,2.4695,2.483,2.4965,2.51,2.5235,2.537,2.5505,2.564,2.5775,2.591,2.6045,2.618,2.6315,2.645,2.6585,2.672,2.6855,2.699,2.7125,2.726,2.7395,2.753,2.7665,2.78,2.804,2.8175,2.831,2.8445,2.858,2.8715,2.885,2.8985,2.912,2.9255,2.939,2.9525,2.966,2.9795,2.993,3.0065,3.02,3.0335,3.047,3.0605,3.074,3.0875,3.101,3.1145,3.128};
1339 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1344 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1349 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1354 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1359 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1364 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1369 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1375 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1380 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1386 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1391 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1398 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1404 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1411 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1443 const Int_t nEmcalEtaBins = 96;
1444 const Int_t nEmcalPhiBins = 124;
1445 Float_t EmcalEtaBins[nEmcalEtaBins+1] = {-0.66687,-0.653,-0.63913,-0.62526,-0.61139,-0.59752,-0.58365,-0.56978,-0.55591,-0.54204,-0.52817,-0.5143,-0.50043,-0.48656,-0.47269,-0.45882,-0.44495,-0.43108,-0.41721,-0.40334,-0.38947,-0.3756,-0.36173,-0.34786,-0.33399,-0.32012,-0.30625,-0.29238,-0.27851,-0.26464,-0.25077,-0.2369,-0.22303,-0.20916,-0.19529,-0.18142,-0.16755,-0.15368,-0.13981,-0.12594,-0.11207,-0.0982,-0.08433,-0.07046,-0.05659,-0.04272,-0.02885,-0.01498,-0.00111,0.01276,0.02663,0.0405,0.05437,0.06824,0.08211,0.09598,0.10985,0.12372,0.13759,0.15146,0.16533,0.1792,0.19307,0.20694,0.22081,0.23468,0.24855,0.26242,0.27629,0.29016,0.30403,0.3179,0.33177,0.34564,0.35951,0.37338,0.38725,0.40112,0.41499,0.42886,0.44273,0.4566,0.47047,0.48434,0.49821,0.51208,0.52595,0.53982,0.55369,0.56756,0.58143,0.5953,0.60917,0.62304,0.63691,0.65078,0.66465};
1446 Float_t EmcalPhiBins[nEmcalPhiBins+1] = {1.408,1.4215,1.435,1.4485,1.462,1.4755,1.489,1.5025,1.516,1.5295,1.543,1.5565,1.57,1.5835,1.597,1.6105,1.624,1.6375,1.651,1.6645,1.678,1.6915,1.705,1.7185,1.732,1.758,1.7715,1.785,1.7985,1.812,1.8255,1.839,1.8525,1.866,1.8795,1.893,1.9065,1.92,1.9335,1.947,1.9605,1.974,1.9875,2.001,2.0145,2.028,2.0415,2.055,2.0685,2.082,2.108,2.1215,2.135,2.1485,2.162,2.1755,2.189,2.2025,2.216,2.2295,2.243,2.2565,2.27,2.2835,2.297,2.3105,2.324,2.3375,2.351,2.3645,2.378,2.3915,2.405,2.4185,2.432,2.456,2.4695,2.483,2.4965,2.51,2.5235,2.537,2.5505,2.564,2.5775,2.591,2.6045,2.618,2.6315,2.645,2.6585,2.672,2.6855,2.699,2.7125,2.726,2.7395,2.753,2.7665,2.78,2.804,2.8175,2.831,2.8445,2.858,2.8715,2.885,2.8985,2.912,2.9255,2.939,2.9525,2.966,2.9795,2.993,3.0065,3.02,3.0335,3.047,3.0605,3.074,3.0875,3.101,3.1145,3.128};
1453 const Int_t nPhosEtaBins = 56;
1454 const Int_t nPhosPhiBins = 192;
1455 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
1456 const Float_t PhosPhiRange[2] = {4.5, 5.6};
1459 nPhosEtaBins, PhosEtaRange[0], PhosEtaRange[1]);
1465 const Int_t nDcalEtaBins = 96;
1466 const Int_t nDcalPhiBins = 124;
1478 nBinsClusterE, arrClusEBinning, 50, 0, 50);
1483 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1498 TH1::AddDirectory(kTRUE);
1506 AliTender* alitender=0x0;
1509 if(event->IsA()==AliESDEvent::Class()){
1510 alitender = (AliTender*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliTender");
1512 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1514 }
else if( event->IsA()==AliAODEvent::Class()){
1515 emcaltender = (
AliEmcalTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalTenderTask");
1517 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1520 TIter next(alitender->GetSupplies());
1521 AliTenderSupply *supply;
1522 while ((supply=(AliTenderSupply*)next()))
if(supply->IsA()==AliEMCALTenderSupply::Class())
break;
1523 fEMCALRecUtils = ((AliEMCALTenderSupply*)supply)->GetRecoUtils();
1525 }
else if(emcaltender){
1528 }
else if(emcalCorrTask){
1530 if(emcalCorrComponent){
1537 fGeomEMCAL = AliEMCALGeometry::GetInstance();
1538 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
1551 Int_t nMinCellsDCAL = 12288;
1553 Int_t nMaxCells = 0;
1554 Int_t nMinCells = 0;
1556 nMaxCells = nMaxCellsEMCAL;
1559 nMaxCells = nMaxCellsDCAL;
1560 nMinCells = nMinCellsDCAL;
1564 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
1568 for(
Int_t iCell=nMinCells;iCell<nMaxCells;iCell++){
1569 fGeomEMCAL->GetCellIndex(iCell,imod,iTower,iIphi,iIeta);
1571 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
1586 fGeomPHOS = AliPHOSGeometry::GetInstance();
1587 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
1592 AliPHOSTenderTask* aliphostender = (AliPHOSTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"PHOSTenderTask");
1593 AliPHOSTenderSupply *PHOSSupply =((AliPHOSTenderSupply*) aliphostender->GetPHOSTenderSupply()) ;
1596 AliError(Form(
"Can not find PHOSTenderSupply in run %d. No bad channel map could be found for QA!\n",event->GetRunNumber())) ;
1599 AliInfo(
"Setting PHOS bad map from PHOSSupply \n") ;
1600 for(
Int_t mod=0;mod<nModules;mod++){
1601 TH2I * h = (TH2I*)PHOSSupply->GetPHOSBadChannelStatusMap(mod);
1604 AliInfo(Form(
"using bad map for module %d with nch=%f\n",mod,h->Integral()));
1612 for(
Int_t iCell=0;iCell<nMaxCellsPHOS;iCell++){
1613 fGeomPHOS->AbsToRelNumbering(iCell,relid);
1615 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
1638 if(!mcEvent)
return kFALSE;
1639 if(!particle)
return kFALSE;
1641 if (particle->GetPdgCode() == 22){
1647 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 22){
1659 if(!mcEvent)
return kFALSE;
1660 if(!particle)
return kFALSE;
1662 if (TMath::Abs(particle->GetPdgCode()) == 11){
1668 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 11){
1680 if(!aodmcArray)
return kFALSE;
1681 if(!particle)
return kFALSE;
1683 if (TMath::Abs(particle->GetPdgCode()) == 11){
1688 if(particle->GetMother() >-1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 11){
1700 if(!aodmcArray)
return kFALSE;
1701 if(!particle)
return kFALSE;
1703 if (particle->GetPdgCode() == 22){
1707 if(particle->GetMother() > -1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 22){
1732 cluster->GetPosition(clusPos);
1733 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
1734 Double_t etaCluster = clusterVector.Eta();
1735 Double_t phiCluster = clusterVector.Phi();
1736 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
1754 AliVCaloCells* cells = NULL;
1758 if(cluster->IsEMCAL()){
1759 cells =
event->GetEMCALCells();
1760 }
else if(cluster->IsPHOS()){
1761 cells =
event->GetPHOSCells();
1764 Int_t nCellCluster = cluster->GetNCells();
1765 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
1788 Bool_t failedM02 = kFALSE;
1796 if( nLM < fMinNLM || nLM >
fMaxNLM )
1819 if ( !( failed || failedM02 ) ){
1843 if( nLM < fMinNLM || nLM >
fMaxNLM ) {
1852 if( cluster->GetM02()<
fMinM02 || cluster->GetM02() >
fMaxM02 ) {
1867 if( cluster->GetM20()<
fMinM20 || cluster->GetM20() >
fMaxM20 ) {
1892 AliError(
"Task needs AOD or ESD event, returning");
1907 Int_t classification = -1;
1908 Long_t leadMCLabel = -1;
1910 leadMCLabel = ((AliESDCaloCluster*)cluster)->GetLabel();
1912 leadMCLabel = ((AliAODCaloCluster*)cluster)->GetLabel();
1921 if (classification == 5 )
1923 if (classification == 7 )
1925 if (classification == 4)
1927 if (classification == 6){
1929 if (cluster->E() > 30.)
1933 if (classification == 0 || classification == 1)
1935 if (classification == 1)
1937 if (classification == 2 || classification == 3)
1939 if ( classification == 3)
1942 Int_t nlabelsMatchedTracks = 0;
1949 if (classification < 4 && classification > -1)
1956 if (cluster->E() > 30.)
1969 if (classification == 5 )
1971 if (classification == 4)
1973 if (classification == 0 || classification == 1)
1975 if ( classification == 1)
1977 if (classification == 2 || classification == 3)
1979 if ( classification == 3)
1981 if ( classification == 7)
1983 if ( classification == 6)
1986 vector<Int_t> labelsMatchedTracks;
1997 Bool_t foundLead = kFALSE;
2000 for (
Int_t i = 0; i < (
Int_t)labelsMatchedTracks.size(); i++){
2001 AliVTrack* currTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(labelsMatchedTracks.at(i)));
2002 eSum += currTrack->E();
2003 if (ptMax < currTrack->Pt()){
2004 ptMax = currTrack->Pt();
2005 eMax = currTrack->E();
2008 if (classification == 4 || classification == 5 || classification == 6 || classification == 7){
2009 Long_t mcLabelTrack = -1;
2011 mcLabelTrack = TMath::Abs(((AliESDtrack*)currTrack)->GetLabel());
2013 mcLabelTrack = TMath::Abs(((AliAODTrack*)currTrack)->GetLabel());
2014 if (mcLabelTrack!= -1 && mcLabelTrack == leadMCLabel){
2016 eLead = currTrack->E();
2021 if (classification == 5 || classification == 7 || classification == 6){
2023 if (classification == 5 || classification == 7){
2029 if (classification == 5)
2031 if (classification == 7)
2033 if (classification == 6)
2038 if (classification == 4){
2043 if (classification == 0 )
2045 if (classification == 1)
2047 if (classification == 2)
2049 if (classification == 3)
2052 labelsMatchedTracks.clear();
2103 Int_t nCellCluster = cluster->GetNCells();
2104 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
2105 Int_t cellID = cluster->GetCellAbsId(iCell);
2106 Double_t cellAmp = cells->GetCellAmplitude(cellID);
2107 Double_t cellTime = cells->GetCellTime(cellID);
2121 if(cluster->IsEMCAL()){
2122 Int_t iSuperModule = -1;
2123 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2124 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
2128 }
else if(cluster->IsPHOS()){
2129 Int_t relId[4] = {0,0,0,0};
2130 fGeomPHOS = AliPHOSGeometry::GetInstance();
2131 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
2148 AliVCaloCells* cells = 0x0;
2151 Int_t* nCellsBigger100MeV;
2152 Int_t* nCellsBigger1500MeV;
2157 Int_t nModulesStart = 0;
2159 cells =
event->GetEMCALCells();
2160 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2161 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2163 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2164 if(
fClusterType == 3) {nModules = 8; nModulesStart = 12;}
2166 cells =
event->GetPHOSCells();
2167 fGeomPHOS = AliPHOSGeometry::GetInstance();
2168 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2171 AliError(Form(
"fExtendedMatchAndQA(%i):FillHistogramsExtendedMatchAndQA() not (yet) defined for cluster type (%i)",
fExtendedMatchAndQA,
fClusterType));
2174 nCellsBigger100MeV =
new Int_t[nModules];
2175 nCellsBigger1500MeV =
new Int_t[nModules];
2176 EnergyOfMod =
new Double_t[nModules];
2178 for(
Int_t iModule=0;iModule<nModules;iModule++){nCellsBigger100MeV[iModule]=0;nCellsBigger1500MeV[iModule]=0;EnergyOfMod[iModule]=0;}
2181 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2186 Int_t cellMCLabel=0;
2189 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2190 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2192 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2196 Bool_t doBadCell = kTRUE;
2198 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2199 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2201 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2203 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2204 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2216 if(iBadCell > 0)
continue;
2218 if(cellAmplitude > 0.1) nCellsBigger100MeV[nMod-nModulesStart]++;
2219 if(cellAmplitude > 1.5) nCellsBigger1500MeV[nMod-nModulesStart]++;
2220 if(cellAmplitude > 0.05) EnergyOfMod[nMod-nModulesStart]+=cellAmplitude;
2231 for(
Int_t iModule=0;iModule<nModules;iModule++){
2237 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2238 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2239 delete[] EnergyOfMod;EnergyOfMod=0x0;
2243 TClonesArray * arrClustersExtQA = NULL;
2245 nclus =
event->GetNumberOfCaloClusters();
2247 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2248 if(!arrClustersExtQA)
2249 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2250 nclus = arrClustersExtQA->GetEntries();
2252 AliVCluster* cluster = 0x0;
2253 AliVCluster* clusterMatched = 0x0;
2254 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2255 if(event->IsA()==AliESDEvent::Class()){
2256 if(arrClustersExtQA)
2257 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2259 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2260 }
else if(event->IsA()==AliAODEvent::Class()){
2261 if(arrClustersExtQA)
2262 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2264 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2268 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2271 cluster->GetPosition(clusPos);
2272 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2273 Double_t etaCluster = clusterVector.Eta();
2274 Double_t phiCluster = clusterVector.Phi();
2275 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2279 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2281 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2287 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2288 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2290 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2293 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2295 Int_t largestCellicol = -1, largestCellirow = -1;
2297 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2299 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2301 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2302 if(event->IsA()==AliESDEvent::Class()){
2303 if(arrClustersExtQA)
2304 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2306 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2307 }
else if(event->IsA()==AliAODEvent::Class()){
2308 if(arrClustersExtQA)
2309 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2311 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2315 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2318 clusterMatched->GetPosition(clusPos2);
2319 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2320 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2321 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2322 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2326 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2327 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2328 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2333 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2334 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2335 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2337 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2342 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2344 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2346 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2352 Int_t rowdiff = -100;
2353 Int_t coldiff = -100;
2354 Bool_t calculatedDiff = kFALSE;
2356 Int_t ClusID = largestCelliMod/2;
2357 Int_t matchClusID = matched_largestCelliMod/2;
2359 if( matched_largestCelliMod == largestCelliMod){
2360 rowdiff = largestCellirow - matched_largestCellirow;
2361 coldiff = largestCellicol - matched_largestCellicol;
2362 calculatedDiff = kTRUE;
2363 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2364 if(matched_largestCelliMod%2){
2365 matched_largestCelliMod -= 1;
2366 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2368 matched_largestCelliMod += 1;
2369 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2372 if( matched_largestCelliMod == largestCelliMod ){
2373 rowdiff = largestCellirow - matched_largestCellirow;
2374 coldiff = largestCellicol - matched_largestCellicol;
2375 calculatedDiff = kTRUE;
2382 if( calculatedDiff ){
2383 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2395 delete clusterMatched;
2406 AliVCaloCells* cells = 0x0;
2414 cells =
event->GetEMCALCells();
2415 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2416 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2418 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2420 cells =
event->GetPHOSCells();
2421 fGeomPHOS = AliPHOSGeometry::GetInstance();
2422 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2425 AliError(Form(
"GetTotalEnergyDeposit not (yet) defined for cluster type (%i)",
fClusterType));
2428 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2433 Int_t cellMCLabel=0;
2436 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2437 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2439 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2443 Bool_t doBadCell = kTRUE;
2445 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2446 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2448 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2450 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2451 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2463 if(iBadCell > 0)
continue;
2464 totalCellAmplitude += cellAmplitude;
2467 return totalCellAmplitude;
2476 const Int_t nc = cluster->GetNCells();
2478 Int_t absCellIdList[nc];
2489 const Int_t nCells = cluster->GetNCells();
2490 AliVCaloCells* cells = NULL;
2493 cells =
event->GetEMCALCells();
2495 cells =
event->GetPHOSCells();
2501 Int_t iCellMax = -1;
2503 if (nCells < 2)
return idMax;
2504 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2505 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2506 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2507 idMax = cluster->GetCellsAbsId()[iCell];
2513 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2514 if (iCell == iCellMax)
continue;
2515 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2516 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2517 idMax2 = cluster->GetCellsAbsId()[iCell];
2527 const Int_t nCells = cluster->GetNCells();
2528 AliVCaloCells* cells = NULL;
2531 cells =
event->GetEMCALCells();
2533 cells =
event->GetPHOSCells();
2539 if (nCells < 1)
return idMax;
2540 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2541 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2542 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2543 eMax = cells->GetCellAmplitude(cellAbsID);
2558 Int_t absCellId1 = -1;
2559 Int_t absCellId2 = -1;
2560 const Int_t nCells = cluster->GetNCells();
2561 AliVCaloCells* cells = NULL;
2564 cells =
event->GetEMCALCells();
2566 cells =
event->GetPHOSCells();
2572 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2573 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2577 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2578 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2579 idMax = absCellIdList[iCell];
2584 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2586 if (absCellIdList[iCell] >= 0){
2588 absCellId1 = cluster->GetCellsAbsId()[iCell];
2589 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2592 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2594 if (absCellIdList[iCell] == -1)
continue;
2596 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2599 if (absCellId2 == -1)
continue;
2600 if (absCellId1 == absCellId2)
continue;
2603 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2611 absCellIdList[iCellN] = -1;
2613 absCellIdList[iCell] = -1;
2615 absCellIdList[iCell] = -1;
2617 absCellIdList[iCellN] = -1;
2625 Int_t nMaximaNew = 0;
2626 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2628 if (absCellIdList[iCell] > -1){
2629 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2632 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2633 maxEList[nMaximaNew] = en;
2640 if (nMaximaNew == 0){
2643 absCellIdList[0] = idMax;
2654 Bool_t areNeighbours = kFALSE ;
2656 Int_t irow1 = -1, icol1 = -1;
2657 Int_t irow2 = -1, icol2 = -1;
2659 Int_t rowdiff = 0, coldiff = 0;
2665 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2670 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2671 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2674 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2675 coldiff = TMath::Abs( icol1 - icol2 ) ;
2678 if ((coldiff + rowdiff == 1 ))
2679 areNeighbours = kTRUE ;
2681 return areNeighbours;
2691 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2692 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2694 fGeomPHOS = AliPHOSGeometry::GetInstance();
2695 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2698 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2700 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2701 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2704 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2718 AliVCluster* cluster,
2721 AliAODCaloCluster* cluster1,
2722 AliAODCaloCluster* cluster2){
2724 const Int_t ncells = cluster->GetNCells();
2725 Int_t absCellIdList[ncells];
2727 AliVCaloCells* cells = NULL;
2729 cells =
event->GetEMCALCells();
2731 cells =
event->GetPHOSCells();
2737 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2738 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2739 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2750 absCellIdList1[0] = absCellId1 ;
2751 fracList1 [0] = 1. ;
2753 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2757 absCellIdList2[0] = absCellId2 ;
2758 fracList2 [0] = 1. ;
2760 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2765 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2766 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2767 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2771 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2773 Int_t absId = absCellIdList[iCell];
2774 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2776 Float_t ecell = cells->GetCellAmplitude(absId);
2778 absCellIdList1[ncells1] = absId;
2780 fracList1[ncells1] = shareFraction1;
2781 e1 += ecell*shareFraction1;
2783 fracList1[ncells1] = 1.;
2790 absCellIdList2[ncells2]= absId;
2793 fracList2[ncells2] = shareFraction2;
2794 e2 += ecell*shareFraction2;
2796 fracList2[ncells2] = 1.;
2807 cluster1->SetNCells(ncells1);
2808 cluster2->SetNCells(ncells2);
2810 cluster1->SetCellsAbsId(absCellIdList1);
2811 cluster2->SetCellsAbsId(absCellIdList2);
2813 cluster1->SetCellsAmplitudeFraction(fracList1);
2814 cluster2->SetCellsAmplitudeFraction(fracList2);
2841 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2843 Int_t largestCellicol = -1, largestCellirow = -1;
2844 Int_t rowdiff = 0, coldiff = 0;
2847 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2849 Int_t nMinRows = 0, nMaxRows = 0;
2850 Int_t nMinCols = 0, nMaxCols = 0;
2852 Bool_t checkNextSM = kFALSE;
2855 nMinRows = largestCellirow - distanceForLoop;
2856 nMaxRows = largestCellirow + distanceForLoop;
2857 if(nMinRows < 0) nMinRows = 0;
2858 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2860 nMinCols = largestCellicol - distanceForLoop;
2861 nMaxCols = largestCellicol + distanceForLoop;
2863 if(largestCelliMod%2){
2866 checkNextSM = kTRUE;
2868 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2870 if(nMinCols < 0) nMinCols = 0;
2871 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2872 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2873 checkNextSM = kTRUE;
2877 nMinRows = largestCellirow - distanceForLoop;
2878 nMaxRows = largestCellirow + distanceForLoop;
2879 if(nMinRows < 0) nMinRows = 0;
2880 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2882 nMinCols = largestCellicol - distanceForLoop;
2883 nMaxCols = largestCellicol + distanceForLoop;
2884 if(nMinCols < 0) nMinCols = 0;
2897 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2899 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2901 if(irow == largestCellirow && icol == largestCellicol)
continue;
2910 if(iBadCell==0)
continue;
2912 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2913 coldiff = TMath::Abs( largestCellicol - icol ) ;
2929 if(largestCelliMod%2){
2930 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2931 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2933 largestCelliMod -= 1;
2934 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2937 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2939 largestCelliMod += 1;
2940 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2948 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2950 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2953 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2959 if(iBadCell==0)
continue;
2961 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2962 coldiff = TMath::Abs( largestCellicol - icol ) ;
2992 cluster->GetPosition(clusPos);
2993 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2994 Double_t etaCluster = clusterVector.Eta();
2995 Double_t phiCluster = clusterVector.Phi();
2996 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
3009 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
3048 cluster->GetPosition(clusPos);
3049 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
3050 Double_t etaCluster = clusterVector.Eta();
3051 Double_t phiCluster = clusterVector.Phi();
3052 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
3065 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
3099 Float_t ClusterPt = PhotonCandidate->Pt();
3128 AliError(
"Task needs AOD or ESD event, returning");
3133 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
3135 Float_t clusterPosition[3] = {0,0,0};
3136 cluster->GetPosition(clusterPosition);
3137 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
3143 for (
Int_t i = 0;i < 2;i++){
3145 AliVTrack *inTrack = 0x0;
3147 if(tracklabel > event->GetNumberOfTracks() )
continue;
3148 inTrack = esdev->GetTrack(tracklabel);
3151 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
3153 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
3154 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
3156 if(inTrack->GetID() == tracklabel) {
3168 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3175 if(inTrack->Charge() > 0) {
3191 Int_t clusterMCLabel = cluster->GetLabel();
3192 Int_t convPhotonDaughterLabel = -1;
3193 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
3195 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3204 Bool_t match_dPhi = kFALSE;
3209 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3210 else match_dEta = kFALSE;
3212 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3213 else match_dPhi = kFALSE;
3216 if(match_dEta && match_dPhi){
3250 TClonesArray * arrClustersMatch = NULL;
3252 nClus =
event->GetNumberOfCaloClusters();
3254 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3255 if(!arrClustersMatch)
3256 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3257 nClus = arrClustersMatch->GetEntries();
3262 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3263 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3266 fGeomPHOS = AliPHOSGeometry::GetInstance();
3267 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
3276 AliError(
"Task needs AOD or ESD event, returning");
3282 AliESDtrackCuts *EsdTrackCuts = 0x0;
3283 if(!isEMCalOnly && esdev){
3285 Int_t runNumber =
event->GetRunNumber();
3287 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3288 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3290 }
else if (runNumber>=209122){
3293 EsdTrackCuts =
new AliESDtrackCuts();
3294 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3295 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3296 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3297 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3298 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3299 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3301 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3302 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3303 AliESDtrackCuts::kAny);
3304 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3305 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3306 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3307 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3308 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3309 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3312 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3314 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3315 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3316 EsdTrackCuts->SetPtRange(0.15);
3321 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3322 AliVTrack *inTrack = 0x0;
3324 inTrack = esdev->GetTrack(itr);
3325 if(!inTrack)
continue;
3326 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3328 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3330 const AliExternalTrackParam *in = esdt->GetInnerParam();
3331 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3333 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3334 if(!inTrack)
continue;
3335 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3337 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3338 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3339 if(aodt->Pt()<0.15)
continue;
3344 Float_t clsPos[3] = {0.,0.,0.};
3345 for(
Int_t iclus=0;iclus < nClus;iclus++){
3346 AliVCluster * cluster = NULL;
3347 if(arrClustersMatch){
3349 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3351 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3353 cluster =
event->GetCaloCluster(iclus);
3357 if(arrClustersMatch)
delete cluster;
3362 if(arrClustersMatch)
delete cluster;
3365 cluster->GetPosition(clsPos);
3366 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3367 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3376 if(inTrack->Charge() > 0) {
3395 Bool_t match_dPhi = kFALSE;
3396 Bool_t vetoEOverP = kFALSE;
3402 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3403 else match_dEta = kFALSE;
3405 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3406 else match_dPhi = kFALSE;
3412 if(match_dEta && match_dPhi){
3420 cluster->SetE(cluster->E()-0.290);
3434 if(arrClustersMatch)
delete cluster;
3436 }
else if(isEMCalOnly){
3447 if(arrClustersMatch)
delete cluster;
3451 delete EsdTrackCuts;
3460 vector<Int_t>::iterator it;
3483 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3484 if(analysisCutSelection.Length()!=
kNCuts) {
3485 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3488 if(!analysisCutSelection.IsAlnum()){
3489 AliError(
"Cut selection is not alphanumeric");
3493 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3494 analysisCutSelectionLowerCase.ToLower();
3495 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3496 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3521 }
else return kFALSE;
3528 }
else return kFALSE;
3535 }
else return kFALSE;
3542 }
else return kFALSE;
3549 }
else return kFALSE;
3556 }
else return kFALSE;
3563 }
else return kFALSE;
3570 }
else return kFALSE;
3577 }
else return kFALSE;
3584 }
else return kFALSE;
3591 }
else return kFALSE;
3598 }
else return kFALSE;
3605 }
else return kFALSE;
3612 }
else return kFALSE;
3619 }
else return kFALSE;
3626 }
else return kFALSE;
3633 }
else return kFALSE;
3640 }
else return kFALSE;
3647 }
else return kFALSE;
3650 AliError(
"Cut id out of range");
3654 AliError(
"Cut id %d not recognized");
3671 printf(
"\nCluster cutnumber \n %s", analysisCutSelection.Data());
3675 printf(
"Acceptance cuts: \n");
3676 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3677 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3678 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3679 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3685 printf(
"PhotonIsolation Cuts: \n");
3686 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3688 if (fIsolationRadius < 0.11 && fIsolationRadius > 0.09) printf(
"\tIsolation Radius = 0.1\n");
3689 if (fIsolationRadius < 0.21 && fIsolationRadius > 0.19) printf(
"\tIsolation Radius = 0.2\n");
3690 if (fIsolationRadius < 0.31 && fIsolationRadius > 0.29) printf(
"\tIsolation Radius = 0.3\n");
3691 if (fIsolationRadius < 0.41 && fIsolationRadius > 0.39) printf(
"\tIsolation Radius = 0.4\n");
3694 printf(
"Cluster Quality cuts: \n");
3708 printf(
"NonLinearity Correction: \n");
3713 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3725 switch(clusterType){
3763 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3812 AliError(Form(
"MinEta Cut not defined %d",minEta));
3861 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3901 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3941 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3950 switch(distanceToBadChannel){
3988 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
4059 AliError(Form(
"Timing Cut not defined %d",timing));
4070 switch(trackMatching){
4111 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4113 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4119 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4121 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4127 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4129 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4135 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4137 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4143 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4145 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4151 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4153 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4161 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4163 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4172 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4174 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4183 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4185 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4194 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4196 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4205 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4207 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4217 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4219 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4242 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4244 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4249 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4255 switch(trackMatching){
4283 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4286 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4292 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4295 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4301 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4304 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4323 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4385 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4463 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4505 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));