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),
147 fExtendedMatchAndQA(0),
148 fExoticEnergyFracCluster(0),
149 fExoticMinEnergyCell(1),
150 fUseExoticCluster(0),
151 fDoExoticsQA(kFALSE),
154 fLocMaxCutEDiff(0.03),
166 fMaxMGGRecConv(0.01),
168 fMaxDispersion(1000),
175 fSwitchNonLinearity(0),
176 fUseNonLinearity(kFALSE),
178 fVectorMatchedClusterIDs(0),
182 fHistAcceptanceCuts(NULL),
183 fHistClusterIdentificationCuts(NULL),
184 fHistClusterEtavsPhiBeforeAcc(NULL),
185 fHistClusterEtavsPhiAfterAcc(NULL),
186 fHistClusterEtavsPhiAfterQA(NULL),
187 fHistClusterTimevsEBeforeQA(NULL),
188 fHistClusterTimevsEAfterQA(NULL),
189 fHistEnergyOfClusterBeforeNL(NULL),
190 fHistEnergyOfClusterAfterNL(NULL),
191 fHistEnergyOfClusterBeforeQA(NULL),
192 fHistEnergyOfClusterAfterQA(NULL),
193 fHistNCellsBeforeQA(NULL),
194 fHistNCellsAfterQA(NULL),
195 fHistM02BeforeQA(NULL),
196 fHistM02AfterQA(NULL),
197 fHistM20BeforeQA(NULL),
198 fHistM20AfterQA(NULL),
199 fHistDispersionBeforeQA(NULL),
200 fHistDispersionAfterQA(NULL),
201 fHistNLMBeforeQA(NULL),
202 fHistNLMAfterQA(NULL),
203 fHistNLMVsNCellsAfterQA(NULL),
204 fHistNLMVsEAfterQA(NULL),
206 fHistClusterEnergyvsMod(NULL),
207 fHistNCellsBigger100MeVvsMod(NULL),
208 fHistNCellsBigger1500MeVvsMod(NULL),
209 fHistEnergyOfModvsMod(NULL),
210 fHistClusterEnergyvsNCells(NULL),
211 fHistCellEnergyvsCellID(NULL),
212 fHistCellTimevsCellID(NULL),
213 fHistClusterEM02BeforeQA(NULL),
214 fHistClusterEM02AfterQA(NULL),
215 fHistClusterIncludedCellsBeforeQA(NULL),
216 fHistClusterIncludedCellsAfterQA(NULL),
217 fHistClusterEnergyFracCellsBeforeQA(NULL),
218 fHistClusterEnergyFracCellsAfterQA(NULL),
219 fHistClusterIncludedCellsTimingAfterQA(NULL),
220 fHistClusterIncludedCellsTimingEnergyAfterQA(NULL),
221 fHistClusterDistanceInTimeCut(NULL),
222 fHistClusterDistanceOutTimeCut(NULL),
223 fHistClusterDistance1DInTimeCut(NULL),
224 fHistClusterRBeforeQA(NULL),
225 fHistClusterRAfterQA(NULL),
226 fHistClusterdEtadPhiBeforeQA(NULL),
227 fHistClusterdEtadPhiAfterQA(NULL),
228 fHistDistanceTrackToClusterBeforeQA(NULL),
229 fHistDistanceTrackToClusterAfterQA(NULL),
230 fHistClusterdEtadPhiPosTracksBeforeQA(NULL),
231 fHistClusterdEtadPhiNegTracksBeforeQA(NULL),
232 fHistClusterdEtadPhiPosTracksAfterQA(NULL),
233 fHistClusterdEtadPhiNegTracksAfterQA(NULL),
234 fHistClusterdEtadPhiPosTracksP_000_075BeforeQA(NULL),
235 fHistClusterdEtadPhiPosTracksP_075_125BeforeQA(NULL),
236 fHistClusterdEtadPhiPosTracksP_125_999BeforeQA(NULL),
237 fHistClusterdEtadPhiNegTracksP_000_075BeforeQA(NULL),
238 fHistClusterdEtadPhiNegTracksP_075_125BeforeQA(NULL),
239 fHistClusterdEtadPhiNegTracksP_125_999BeforeQA(NULL),
240 fHistClusterdEtadPtBeforeQA(NULL),
241 fHistClusterdEtadPtAfterQA(NULL),
242 fHistClusterdEtadPtTrueMatched(NULL),
243 fHistClusterdPhidPtPosTracksBeforeQA(NULL),
244 fHistClusterdPhidPtNegTracksBeforeQA(NULL),
245 fHistClusterdPhidPtAfterQA(NULL),
246 fHistClusterdPhidPtPosTracksTrueMatched(NULL),
247 fHistClusterdPhidPtNegTracksTrueMatched(NULL),
248 fHistClusterM20M02BeforeQA(NULL),
249 fHistClusterM20M02AfterQA(NULL),
250 fHistClusterEtavsPhiExotics(NULL),
251 fHistClusterEM02Exotics(NULL),
252 fHistClusterEnergyvsNCellsExotics(NULL),
253 fHistClusterEEstarExotics(NULL),
254 fHistClusterTMEffiInput(NULL),
255 fHistClusterTrueElecEtaPhiBeforeTM_30_00(NULL),
256 fHistClusterTrueElecEtaPhiAfterTM_30_00(NULL),
257 fHistClusterEvsTrackECharged(NULL),
258 fHistClusterEvsTrackEChargedLead(NULL),
259 fHistClusterEvsTrackENeutral(NULL),
260 fHistClusterEvsTrackENeutralSubCharged(NULL),
261 fHistClusterEvsTrackEGamma(NULL),
262 fHistClusterEvsTrackEGammaSubCharged(NULL),
263 fHistClusterEvsTrackEConv(NULL),
264 fHistClusterENMatchesNeutral(NULL),
265 fHistClusterENMatchesCharged(NULL),
266 fHistClusterEvsTrackEPrimaryButNoElec(NULL),
267 fHistClusterEvsTrackSumEPrimaryButNoElec(NULL),
268 fHistClusETruePi0_BeforeTM(NULL),
269 fHistClusETruePi0_Matched(NULL),
270 fHistMatchedTrackPClusE(NULL),
271 fHistMatchedTrackPClusEAfterEOverPVeto(NULL),
272 fHistMatchedTrackPClusETruePi0Clus(NULL),
275 fIsAcceptedForBasic(kFALSE)
285 AliAnalysisCuts(ref),
495 TH1::AddDirectory(kFALSE);
527 Int_t nBinsClusterE = 235;
528 Int_t nBinsClusterEMod = 249;
529 Int_t nBinsClusterECell = 119;
530 Int_t nBinsClusterECellCoarse = 109;
531 Int_t nBinsClusterEOnlyHighPt = 134;
533 for(
Int_t i=0; i<nBinsClusterEMod+1;i++){
534 if (i < 1) arrClusEBinning[i] = 0.3*i;
535 else if(i<55) arrClusEBinning[i] = 0.3+0.05*(i-1);
536 else if(i<105) arrClusEBinning[i] = 3.+0.1*(i-55);
537 else if(i<140) arrClusEBinning[i] = 8.+0.2*(i-105);
538 else if(i<170) arrClusEBinning[i] = 15.+0.5*(i-140);
539 else if(i<190) arrClusEBinning[i] = 30.+1.0*(i-170);
540 else if(i<215) arrClusEBinning[i] = 50.+2.0*(i-190);
541 else if(i<235) arrClusEBinning[i] = 100.+5.0*(i-215);
542 else if(i<245) arrClusEBinning[i] = 200.+10.0*(i-235);
543 else if(i<249) arrClusEBinning[i] = 300.+25.0*(i-245);
544 else arrClusEBinning[i] = maxClusterE;
546 for(
Int_t i=0; i<nBinsClusterECell+1;i++){
547 if(i<20) arrClusEBinningCoarse[i] = 0.05*(i);
548 else if(i<50) arrClusEBinningCoarse[i] = 1.+0.1*(i-20);
549 else if(i<70) arrClusEBinningCoarse[i] = 4.+0.2*(i-50);
550 else if(i<74) arrClusEBinningCoarse[i] = 8.+0.5*(i-70);
551 else if(i<90) arrClusEBinningCoarse[i] = 10.+1.0*(i-74);
552 else if(i<97) arrClusEBinningCoarse[i] = 26.+2.0*(i-90);
553 else if(i<109) arrClusEBinningCoarse[i] = 40.+5.0*(i-97);
554 else if(i<119) arrClusEBinningCoarse[i] = 100.+10.0*(i-109);
555 else arrClusEBinningCoarse[i] = 200;
557 for(
Int_t i=0; i<nBinsClusterEOnlyHighPt+1;i++){
558 if(i<25) arrClusEBinningOnlyHighPt[i] = 10.+0.2*i;
559 else if(i<55) arrClusEBinningOnlyHighPt[i] = 15.+0.5*(i-25);
560 else if(i<75) arrClusEBinningOnlyHighPt[i] = 30.+1.0*(i-55);
561 else if(i<100) arrClusEBinningOnlyHighPt[i] = 50.+2.0*(i-75);
562 else if(i<120) arrClusEBinningOnlyHighPt[i] = 100.+5.0*(i-100);
563 else if(i<130) arrClusEBinningOnlyHighPt[i] = 200.+10.0*(i-120);
564 else if(i<134) arrClusEBinningOnlyHighPt[i] = 300.+25.0*(i-130);
565 else arrClusEBinningOnlyHighPt[i] = maxClusterE;
603 const Int_t nEmcalEtaBins = 96;
604 const Int_t nEmcalPhiBins = 124;
605 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};
606 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};
623 const Int_t nPhosEtaBins = 56;
624 const Int_t nPhosPhiBins = 256;
625 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
626 const Float_t PhosPhiRange[2] = {4.355, 5.6};
643 const Int_t nDcalEtaBins = 96;
644 const Int_t nDcalPhiBins = 124;
674 }
else{AliError(Form(
"Cluster Type is not EMCAL nor PHOS nor all: %i",
fClusterType));}
694 nBinsClusterE, arrClusEBinning);
700 nBinsClusterE, arrClusEBinning);
706 nBinsClusterE, arrClusEBinning);
710 nBinsClusterE, arrClusEBinning);
807 fBadChannels =
new TProfile(
"EMCal - Bad Channels",
"EMCal - Bad Channels",nMaxCellsEMCAL,-0.5,nMaxCellsEMCAL-0.5);
813 fBadChannels =
new TProfile(
"PHOS - Bad Channels",
"PHOS - Bad Channels",nMaxCellsPHOS,-0.5,nMaxCellsPHOS-0.5);
817 Int_t nStartCellDCAL = 12288;
819 fBadChannels =
new TProfile(
"DCAL - Bad Channels",
"DCAL - Bad Channels",nMaxCellsDCAL,nStartCellDCAL-0.5,nStartCellDCAL+nMaxCellsDCAL-0.5);
870 nMaxCellsEMCAL, 0, nMaxCellsEMCAL);
879 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
884 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
889 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
895 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
901 nBinsClusterE, arrClusEBinning, 200, -500, 500);
906 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
950 nMaxCellsPHOS,0,nMaxCellsPHOS);
959 nMaxCellsPHOS, 0, nMaxCellsPHOS);
964 nMaxCellsPHOS, 0, nMaxCellsPHOS);
969 nMaxCellsPHOS,0,nMaxCellsPHOS);
975 nMaxCellsPHOS, 0, nMaxCellsPHOS);
981 nBinsClusterE, arrClusEBinning, 200, -500, 500);
986 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
992 Int_t nModulesStart = 12;
993 Int_t nCellsStart = 12288;
1034 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1039 nMaxCellsDCAL+nCellsStart);
1044 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1049 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1054 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1060 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1066 nBinsClusterE, arrClusEBinning, 200, -500, 500);
1071 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
1081 const Int_t nEtaBins = 300;
1082 const Int_t nPhiBins = 300;
1083 const Float_t EtaRange[2] = {-0.3, 0.3};
1084 const Float_t PhiRange[2] = {-0.3, 0.3};
1112 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1117 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1122 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1127 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1132 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1137 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1142 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1147 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1152 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1157 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1162 nBinsClusterEMod, arrClusEBinning);
1167 nBinsClusterEMod, arrClusEBinning);
1172 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1177 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1182 nBinsClusterEMod, arrClusEBinning);
1189 nBinsClusterEMod, arrClusEBinning);
1194 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1199 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1218 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1225 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1268 const Int_t nEmcalEtaBins = 96;
1269 const Int_t nEmcalPhiBins = 124;
1270 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};
1271 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};
1311 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1316 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1321 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1326 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1331 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1336 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1341 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1347 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1352 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1358 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1363 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1370 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1376 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1383 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1415 const Int_t nEmcalEtaBins = 96;
1416 const Int_t nEmcalPhiBins = 124;
1417 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};
1418 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};
1425 const Int_t nPhosEtaBins = 56;
1426 const Int_t nPhosPhiBins = 192;
1427 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
1428 const Float_t PhosPhiRange[2] = {4.5, 5.6};
1431 nPhosEtaBins, PhosEtaRange[0], PhosEtaRange[1]);
1437 const Int_t nDcalEtaBins = 96;
1438 const Int_t nDcalPhiBins = 124;
1450 nBinsClusterE, arrClusEBinning, 50, 0, 50);
1455 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1470 TH1::AddDirectory(kTRUE);
1478 AliTender* alitender=0x0;
1481 if(event->IsA()==AliESDEvent::Class()){
1482 alitender = (AliTender*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliTender");
1484 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1486 }
else if( event->IsA()==AliAODEvent::Class()){
1487 emcaltender = (
AliEmcalTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalTenderTask");
1489 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1492 TIter next(alitender->GetSupplies());
1493 AliTenderSupply *supply;
1494 while ((supply=(AliTenderSupply*)next()))
if(supply->IsA()==AliEMCALTenderSupply::Class())
break;
1495 fEMCALRecUtils = ((AliEMCALTenderSupply*)supply)->GetRecoUtils();
1497 }
else if(emcaltender){
1500 }
else if(emcalCorrTask){
1502 if(emcalCorrComponent){
1509 fGeomEMCAL = AliEMCALGeometry::GetInstance();
1510 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
1523 Int_t nMinCellsDCAL = 12288;
1525 Int_t nMaxCells = 0;
1526 Int_t nMinCells = 0;
1528 nMaxCells = nMaxCellsEMCAL;
1531 nMaxCells = nMaxCellsDCAL;
1532 nMinCells = nMinCellsDCAL;
1536 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
1539 for(
Int_t iCell=nMinCells;iCell<nMaxCells;iCell++){
1540 fGeomEMCAL->GetCellIndex(iCell,imod,iTower,iIphi,iIeta);
1542 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
1557 fGeomPHOS = AliPHOSGeometry::GetInstance();
1558 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
1563 AliPHOSTenderTask* aliphostender = (AliPHOSTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"PHOSTenderTask");
1564 AliPHOSTenderSupply *PHOSSupply =((AliPHOSTenderSupply*) aliphostender->GetPHOSTenderSupply()) ;
1567 AliError(Form(
"Can not find PHOSTenderSupply in run %d. No bad channel map could be found for QA!\n",event->GetRunNumber())) ;
1570 AliInfo(
"Setting PHOS bad map from PHOSSupply \n") ;
1571 for(
Int_t mod=0;mod<nModules;mod++){
1572 TH2I * h = (TH2I*)PHOSSupply->GetPHOSBadChannelStatusMap(mod);
1575 AliInfo(Form(
"using bad map for module %d with nch=%f\n",mod,h->Integral()));
1583 for(
Int_t iCell=0;iCell<nMaxCellsPHOS;iCell++){
1584 fGeomPHOS->AbsToRelNumbering(iCell,relid);
1586 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
1609 if(!mcEvent)
return kFALSE;
1610 if(!particle)
return kFALSE;
1612 if (particle->GetPdgCode() == 22){
1618 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 22){
1630 if(!mcEvent)
return kFALSE;
1631 if(!particle)
return kFALSE;
1633 if (TMath::Abs(particle->GetPdgCode()) == 11){
1639 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 11){
1651 if(!aodmcArray)
return kFALSE;
1652 if(!particle)
return kFALSE;
1654 if (TMath::Abs(particle->GetPdgCode()) == 11){
1659 if(particle->GetMother() >-1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 11){
1671 if(!aodmcArray)
return kFALSE;
1672 if(!particle)
return kFALSE;
1674 if (particle->GetPdgCode() == 22){
1678 if(particle->GetMother() > -1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 22){
1703 cluster->GetPosition(clusPos);
1704 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
1705 Double_t etaCluster = clusterVector.Eta();
1706 Double_t phiCluster = clusterVector.Phi();
1707 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
1725 AliVCaloCells* cells = NULL;
1727 if(cluster->IsEMCAL()){
1728 cells =
event->GetEMCALCells();
1729 }
else if(cluster->IsPHOS()){
1730 cells =
event->GetPHOSCells();
1733 Int_t nCellCluster = cluster->GetNCells();
1734 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
1757 Bool_t failedM02 = kFALSE;
1765 if( nLM < fMinNLM || nLM >
fMaxNLM )
1784 if ( !( failed || failedM02 ) ){
1808 if( nLM < fMinNLM || nLM >
fMaxNLM ) {
1817 if( cluster->GetM02()<
fMinM02 || cluster->GetM02() >
fMaxM02 ) {
1832 if( cluster->GetM20()<
fMinM20 || cluster->GetM20() >
fMaxM20 ) {
1857 AliError(
"Task needs AOD or ESD event, returning");
1872 Int_t classification = -1;
1873 Long_t leadMCLabel = -1;
1875 leadMCLabel = ((AliESDCaloCluster*)cluster)->GetLabel();
1877 leadMCLabel = ((AliAODCaloCluster*)cluster)->GetLabel();
1885 if (classification == 5 )
1887 if (classification == 7 )
1889 if (classification == 4)
1891 if (classification == 6){
1893 if (cluster->E() > 30.)
1897 if (classification == 0 || classification == 1)
1899 if (classification == 1)
1901 if (classification == 2 || classification == 3)
1903 if ( classification == 3)
1906 Int_t nlabelsMatchedTracks = 0;
1912 if (classification < 4 && classification > -1)
1919 if (cluster->E() > 30.)
1933 if (classification == 5 )
1935 if (classification == 4)
1937 if (classification == 0 || classification == 1)
1939 if ( classification == 1)
1941 if (classification == 2 || classification == 3)
1943 if ( classification == 3)
1945 if ( classification == 7)
1947 if ( classification == 6)
1950 vector<Int_t> labelsMatchedTracks;
1961 Bool_t foundLead = kFALSE;
1964 for (
Int_t i = 0; i < (
Int_t)labelsMatchedTracks.size(); i++){
1965 AliVTrack* currTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(labelsMatchedTracks.at(i)));
1966 eSum += currTrack->E();
1967 if (ptMax < currTrack->Pt()){
1968 ptMax = currTrack->Pt();
1969 eMax = currTrack->E();
1972 if (classification == 4 || classification == 5 || classification == 6 || classification == 7){
1973 Long_t mcLabelTrack = -1;
1975 mcLabelTrack = TMath::Abs(((AliESDtrack*)currTrack)->GetLabel());
1977 mcLabelTrack = TMath::Abs(((AliAODTrack*)currTrack)->GetLabel());
1978 if (mcLabelTrack!= -1 && mcLabelTrack == leadMCLabel){
1980 eLead = currTrack->E();
1985 if (classification == 5 || classification == 7 || classification == 6){
1987 if (classification == 5 || classification == 7){
1993 if (classification == 5)
1995 if (classification == 7)
1997 if (classification == 6)
2002 if (classification == 4){
2007 if (classification == 0 )
2009 if (classification == 1)
2011 if (classification == 2)
2013 if (classification == 3)
2016 labelsMatchedTracks.clear();
2060 Int_t nCellCluster = cluster->GetNCells();
2061 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
2062 Int_t cellID = cluster->GetCellAbsId(iCell);
2063 Double_t cellAmp = cells->GetCellAmplitude(cellID);
2064 Double_t cellTime = cells->GetCellTime(cellID);
2078 if(cluster->IsEMCAL()){
2079 Int_t iSuperModule = -1;
2080 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2081 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
2085 }
else if(cluster->IsPHOS()){
2086 Int_t relId[4] = {0,0,0,0};
2087 fGeomPHOS = AliPHOSGeometry::GetInstance();
2088 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
2105 AliVCaloCells* cells = 0x0;
2108 Int_t* nCellsBigger100MeV;
2109 Int_t* nCellsBigger1500MeV;
2114 Int_t nModulesStart = 0;
2116 cells =
event->GetEMCALCells();
2117 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2118 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2120 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2121 if(
fClusterType == 3) {nModules = 8; nModulesStart = 12;}
2123 cells =
event->GetPHOSCells();
2124 fGeomPHOS = AliPHOSGeometry::GetInstance();
2125 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2128 AliError(Form(
"fExtendedMatchAndQA(%i):FillHistogramsExtendedMatchAndQA() not (yet) defined for cluster type (%i)",
fExtendedMatchAndQA,
fClusterType));
2131 nCellsBigger100MeV =
new Int_t[nModules];
2132 nCellsBigger1500MeV =
new Int_t[nModules];
2133 EnergyOfMod =
new Double_t[nModules];
2135 for(
Int_t iModule=0;iModule<nModules;iModule++){nCellsBigger100MeV[iModule]=0;nCellsBigger1500MeV[iModule]=0;EnergyOfMod[iModule]=0;}
2137 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2142 Int_t cellMCLabel=0;
2145 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2146 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2148 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2152 Bool_t doBadCell = kTRUE;
2154 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2155 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2157 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2159 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2160 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2172 if(iBadCell > 0)
continue;
2174 if(cellAmplitude > 0.1) nCellsBigger100MeV[nMod-nModulesStart]++;
2175 if(cellAmplitude > 1.5) nCellsBigger1500MeV[nMod-nModulesStart]++;
2176 if(cellAmplitude > 0.05) EnergyOfMod[nMod-nModulesStart]+=cellAmplitude;
2187 for(
Int_t iModule=0;iModule<nModules;iModule++){
2193 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2194 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2195 delete[] EnergyOfMod;EnergyOfMod=0x0;
2199 TClonesArray * arrClustersExtQA = NULL;
2201 nclus =
event->GetNumberOfCaloClusters();
2203 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2204 if(!arrClustersExtQA)
2205 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2206 nclus = arrClustersExtQA->GetEntries();
2208 AliVCluster* cluster = 0x0;
2209 AliVCluster* clusterMatched = 0x0;
2210 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2211 if(event->IsA()==AliESDEvent::Class()){
2212 if(arrClustersExtQA)
2213 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2215 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2216 }
else if(event->IsA()==AliAODEvent::Class()){
2217 if(arrClustersExtQA)
2218 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2220 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2224 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2227 cluster->GetPosition(clusPos);
2228 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2229 Double_t etaCluster = clusterVector.Eta();
2230 Double_t phiCluster = clusterVector.Phi();
2231 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2235 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2237 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2243 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2244 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2246 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2249 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2251 Int_t largestCellicol = -1, largestCellirow = -1;
2253 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2255 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2257 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2258 if(event->IsA()==AliESDEvent::Class()){
2259 if(arrClustersExtQA)
2260 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2262 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2263 }
else if(event->IsA()==AliAODEvent::Class()){
2264 if(arrClustersExtQA)
2265 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2267 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2271 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2274 clusterMatched->GetPosition(clusPos2);
2275 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2276 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2277 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2278 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2282 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2283 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2284 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2289 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2290 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2291 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2293 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2298 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2300 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2302 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2308 Int_t rowdiff = -100;
2309 Int_t coldiff = -100;
2310 Bool_t calculatedDiff = kFALSE;
2312 Int_t ClusID = largestCelliMod/2;
2313 Int_t matchClusID = matched_largestCelliMod/2;
2315 if( matched_largestCelliMod == largestCelliMod){
2316 rowdiff = largestCellirow - matched_largestCellirow;
2317 coldiff = largestCellicol - matched_largestCellicol;
2318 calculatedDiff = kTRUE;
2319 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2320 if(matched_largestCelliMod%2){
2321 matched_largestCelliMod -= 1;
2322 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2324 matched_largestCelliMod += 1;
2325 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2328 if( matched_largestCelliMod == largestCelliMod ){
2329 rowdiff = largestCellirow - matched_largestCellirow;
2330 coldiff = largestCellicol - matched_largestCellicol;
2331 calculatedDiff = kTRUE;
2338 if( calculatedDiff ){
2339 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2351 delete clusterMatched;
2365 const Int_t nc = cluster->GetNCells();
2367 Int_t absCellIdList[nc];
2378 const Int_t nCells = cluster->GetNCells();
2379 AliVCaloCells* cells = NULL;
2382 cells =
event->GetEMCALCells();
2384 cells =
event->GetPHOSCells();
2390 Int_t iCellMax = -1;
2392 if (nCells < 2)
return idMax;
2393 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2394 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2395 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2396 idMax = cluster->GetCellsAbsId()[iCell];
2402 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2403 if (iCell == iCellMax)
continue;
2404 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2405 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2406 idMax2 = cluster->GetCellsAbsId()[iCell];
2416 const Int_t nCells = cluster->GetNCells();
2417 AliVCaloCells* cells = NULL;
2420 cells =
event->GetEMCALCells();
2422 cells =
event->GetPHOSCells();
2428 if (nCells < 1)
return idMax;
2429 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2430 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2431 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2432 eMax = cells->GetCellAmplitude(cellAbsID);
2447 Int_t absCellId1 = -1;
2448 Int_t absCellId2 = -1;
2449 const Int_t nCells = cluster->GetNCells();
2450 AliVCaloCells* cells = NULL;
2453 cells =
event->GetEMCALCells();
2455 cells =
event->GetPHOSCells();
2461 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2462 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2466 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2467 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2468 idMax = absCellIdList[iCell];
2473 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2475 if (absCellIdList[iCell] >= 0){
2477 absCellId1 = cluster->GetCellsAbsId()[iCell];
2478 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2481 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2483 if (absCellIdList[iCell] == -1)
continue;
2485 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2488 if (absCellId2 == -1)
continue;
2489 if (absCellId1 == absCellId2)
continue;
2492 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2500 absCellIdList[iCellN] = -1;
2502 absCellIdList[iCell] = -1;
2504 absCellIdList[iCell] = -1;
2506 absCellIdList[iCellN] = -1;
2514 Int_t nMaximaNew = 0;
2515 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2517 if (absCellIdList[iCell] > -1){
2518 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2521 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2522 maxEList[nMaximaNew] = en;
2529 if (nMaximaNew == 0){
2532 absCellIdList[0] = idMax;
2543 Bool_t areNeighbours = kFALSE ;
2545 Int_t irow1 = -1, icol1 = -1;
2546 Int_t irow2 = -1, icol2 = -1;
2548 Int_t rowdiff = 0, coldiff = 0;
2554 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2559 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2560 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2563 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2564 coldiff = TMath::Abs( icol1 - icol2 ) ;
2567 if ((coldiff + rowdiff == 1 ))
2568 areNeighbours = kTRUE ;
2570 return areNeighbours;
2580 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2581 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2583 fGeomPHOS = AliPHOSGeometry::GetInstance();
2584 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2587 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2589 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2590 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2593 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2607 AliVCluster* cluster,
2610 AliAODCaloCluster* cluster1,
2611 AliAODCaloCluster* cluster2){
2613 const Int_t ncells = cluster->GetNCells();
2614 Int_t absCellIdList[ncells];
2616 AliVCaloCells* cells = NULL;
2618 cells =
event->GetEMCALCells();
2620 cells =
event->GetPHOSCells();
2626 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2627 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2628 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2639 absCellIdList1[0] = absCellId1 ;
2640 fracList1 [0] = 1. ;
2642 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2646 absCellIdList2[0] = absCellId2 ;
2647 fracList2 [0] = 1. ;
2649 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2654 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2655 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2656 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2660 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2662 Int_t absId = absCellIdList[iCell];
2663 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2665 Float_t ecell = cells->GetCellAmplitude(absId);
2667 absCellIdList1[ncells1] = absId;
2669 fracList1[ncells1] = shareFraction1;
2670 e1 += ecell*shareFraction1;
2672 fracList1[ncells1] = 1.;
2679 absCellIdList2[ncells2]= absId;
2682 fracList2[ncells2] = shareFraction2;
2683 e2 += ecell*shareFraction2;
2685 fracList2[ncells2] = 1.;
2696 cluster1->SetNCells(ncells1);
2697 cluster2->SetNCells(ncells2);
2699 cluster1->SetCellsAbsId(absCellIdList1);
2700 cluster2->SetCellsAbsId(absCellIdList2);
2702 cluster1->SetCellsAmplitudeFraction(fracList1);
2703 cluster2->SetCellsAmplitudeFraction(fracList2);
2730 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2732 Int_t largestCellicol = -1, largestCellirow = -1;
2733 Int_t rowdiff = 0, coldiff = 0;
2736 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2738 Int_t nMinRows = 0, nMaxRows = 0;
2739 Int_t nMinCols = 0, nMaxCols = 0;
2741 Bool_t checkNextSM = kFALSE;
2744 nMinRows = largestCellirow - distanceForLoop;
2745 nMaxRows = largestCellirow + distanceForLoop;
2746 if(nMinRows < 0) nMinRows = 0;
2747 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2749 nMinCols = largestCellicol - distanceForLoop;
2750 nMaxCols = largestCellicol + distanceForLoop;
2752 if(largestCelliMod%2){
2755 checkNextSM = kTRUE;
2757 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2759 if(nMinCols < 0) nMinCols = 0;
2760 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2761 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2762 checkNextSM = kTRUE;
2766 nMinRows = largestCellirow - distanceForLoop;
2767 nMaxRows = largestCellirow + distanceForLoop;
2768 if(nMinRows < 0) nMinRows = 0;
2769 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2771 nMinCols = largestCellicol - distanceForLoop;
2772 nMaxCols = largestCellicol + distanceForLoop;
2773 if(nMinCols < 0) nMinCols = 0;
2786 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2788 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2790 if(irow == largestCellirow && icol == largestCellicol)
continue;
2799 if(iBadCell==0)
continue;
2801 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2802 coldiff = TMath::Abs( largestCellicol - icol ) ;
2818 if(largestCelliMod%2){
2819 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2820 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2822 largestCelliMod -= 1;
2823 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2826 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2828 largestCelliMod += 1;
2829 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2837 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2839 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2842 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2848 if(iBadCell==0)
continue;
2850 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2851 coldiff = TMath::Abs( largestCellicol - icol ) ;
2881 cluster->GetPosition(clusPos);
2882 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2883 Double_t etaCluster = clusterVector.Eta();
2884 Double_t phiCluster = clusterVector.Phi();
2885 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2898 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
2937 cluster->GetPosition(clusPos);
2938 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2939 Double_t etaCluster = clusterVector.Eta();
2940 Double_t phiCluster = clusterVector.Phi();
2941 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2954 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
2988 Float_t ClusterPt = PhotonCandidate->Pt();
3017 AliError(
"Task needs AOD or ESD event, returning");
3022 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
3024 Float_t clusterPosition[3] = {0,0,0};
3025 cluster->GetPosition(clusterPosition);
3026 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
3032 for (
Int_t i = 0;i < 2;i++){
3034 AliVTrack *inTrack = 0x0;
3036 if(tracklabel > event->GetNumberOfTracks() )
continue;
3037 inTrack = esdev->GetTrack(tracklabel);
3040 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
3042 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
3043 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
3045 if(inTrack->GetID() == tracklabel) {
3057 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3064 if(inTrack->Charge() > 0) {
3080 Int_t clusterMCLabel = cluster->GetLabel();
3081 Int_t convPhotonDaughterLabel = -1;
3082 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
3084 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3093 Bool_t match_dPhi = kFALSE;
3098 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3099 else match_dEta = kFALSE;
3101 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3102 else match_dPhi = kFALSE;
3105 if(match_dEta && match_dPhi){
3139 TClonesArray * arrClustersMatch = NULL;
3141 nClus =
event->GetNumberOfCaloClusters();
3143 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3144 if(!arrClustersMatch)
3145 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3146 nClus = arrClustersMatch->GetEntries();
3151 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3152 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3155 fGeomPHOS = AliPHOSGeometry::GetInstance();
3156 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
3165 AliError(
"Task needs AOD or ESD event, returning");
3171 AliESDtrackCuts *EsdTrackCuts = 0x0;
3172 if(!isEMCalOnly && esdev){
3174 Int_t runNumber =
event->GetRunNumber();
3176 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3177 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3179 }
else if (runNumber>=209122){
3182 EsdTrackCuts =
new AliESDtrackCuts();
3183 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3184 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3185 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3186 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3187 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3188 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3190 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3191 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3192 AliESDtrackCuts::kAny);
3193 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3194 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3195 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3196 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3197 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3198 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3201 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3203 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3204 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3205 EsdTrackCuts->SetPtRange(0.15);
3210 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3211 AliVTrack *inTrack = 0x0;
3213 inTrack = esdev->GetTrack(itr);
3214 if(!inTrack)
continue;
3215 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3217 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3219 const AliExternalTrackParam *in = esdt->GetInnerParam();
3220 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3222 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3223 if(!inTrack)
continue;
3224 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3226 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3227 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3228 if(aodt->Pt()<0.15)
continue;
3233 Float_t clsPos[3] = {0.,0.,0.};
3234 for(
Int_t iclus=0;iclus < nClus;iclus++){
3235 AliVCluster * cluster = NULL;
3236 if(arrClustersMatch){
3238 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3240 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3242 cluster =
event->GetCaloCluster(iclus);
3246 if(arrClustersMatch)
delete cluster;
3251 if(arrClustersMatch)
delete cluster;
3254 cluster->GetPosition(clsPos);
3255 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3256 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3265 if(inTrack->Charge() > 0) {
3284 Bool_t match_dPhi = kFALSE;
3285 Bool_t vetoEOverP = kFALSE;
3291 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3292 else match_dEta = kFALSE;
3294 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3295 else match_dPhi = kFALSE;
3301 if(match_dEta && match_dPhi){
3320 if(arrClustersMatch)
delete cluster;
3322 }
else if(isEMCalOnly){
3333 if(arrClustersMatch)
delete cluster;
3337 delete EsdTrackCuts;
3346 vector<Int_t>::iterator it;
3369 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3370 if(analysisCutSelection.Length()!=
kNCuts) {
3371 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3374 if(!analysisCutSelection.IsAlnum()){
3375 AliError(
"Cut selection is not alphanumeric");
3379 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3380 analysisCutSelectionLowerCase.ToLower();
3381 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3382 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3407 }
else return kFALSE;
3414 }
else return kFALSE;
3421 }
else return kFALSE;
3428 }
else return kFALSE;
3435 }
else return kFALSE;
3442 }
else return kFALSE;
3449 }
else return kFALSE;
3456 }
else return kFALSE;
3463 }
else return kFALSE;
3470 }
else return kFALSE;
3477 }
else return kFALSE;
3484 }
else return kFALSE;
3491 }
else return kFALSE;
3498 }
else return kFALSE;
3505 }
else return kFALSE;
3512 }
else return kFALSE;
3519 }
else return kFALSE;
3526 }
else return kFALSE;
3533 }
else return kFALSE;
3536 AliError(
"Cut id out of range");
3540 AliError(
"Cut id %d not recognized");
3557 printf(
"\nCluster cutnumber \n %s", analysisCutSelection.Data());
3561 printf(
"Acceptance cuts: \n");
3562 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3563 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3564 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3565 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3571 printf(
"PhotonIsolation Cuts: \n");
3572 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3574 if (fIsolationRadius < 0.11 && fIsolationRadius > 0.09) printf(
"\tIsolation Radius = 0.1\n");
3575 if (fIsolationRadius < 0.21 && fIsolationRadius > 0.19) printf(
"\tIsolation Radius = 0.2\n");
3576 if (fIsolationRadius < 0.31 && fIsolationRadius > 0.29) printf(
"\tIsolation Radius = 0.3\n");
3577 if (fIsolationRadius < 0.41 && fIsolationRadius > 0.39) printf(
"\tIsolation Radius = 0.4\n");
3580 printf(
"Cluster Quality cuts: \n");
3594 printf(
"NonLinearity Correction: \n");
3599 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3611 switch(clusterType){
3649 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3698 AliError(Form(
"MinEta Cut not defined %d",minEta));
3747 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3787 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3827 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3836 switch(distanceToBadChannel){
3874 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
3945 AliError(Form(
"Timing Cut not defined %d",timing));
3956 switch(trackMatching){
3997 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4000 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4006 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4009 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4015 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4018 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4024 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4027 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4033 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4036 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4042 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4045 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4053 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4056 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4065 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4068 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4077 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4080 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4089 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4092 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4101 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4104 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4114 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4117 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4124 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4130 switch(trackMatching){
4158 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4161 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4167 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4170 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4176 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4179 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4185 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4247 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4320 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4362 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4414 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4456 AliError(Form(
"Min N cells Cut not defined %d",minNCells));