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" 77 "DistanceToBadChannel",
94 AliAnalysisCuts(name,title),
97 fCaloTrackMatcher(NULL),
100 fEMCALInitialized(kFALSE),
102 fPHOSInitialized(kFALSE),
104 fEMCALBadChannelsMap(NULL),
105 fPHOSBadChannelsMap(NULL),
107 fNMaxEMCalModules(12),
109 fHistoModifyAcc(NULL),
110 fDoLightOutput(kFALSE),
112 fIsCurrentClusterAcceptedBeforeTM(kFALSE),
113 fV0ReaderName(
"V0ReaderV1"),
114 fCorrTaskSetting(
""),
115 fCaloTrackMatcherName(
"CaloTrackMatcher_1_0"),
127 fMinDistanceToBadChannel(0),
128 fUseDistanceToBadChannel(0),
130 fMinTimeDiff(-10e10),
132 fMaxDistTrackToClusterEta(0),
133 fMinDistTrackToClusterPhi(0),
134 fMaxDistTrackToClusterPhi(0),
135 fUseDistTrackToCluster(0),
136 fUsePtDepTrackToCluster(0),
141 fExtendedMatchAndQA(0),
142 fExoticEnergyFracCluster(0),
143 fExoticMinEnergyCell(1),
144 fUseExoticCluster(0),
145 fDoExoticsQA(kFALSE),
148 fLocMaxCutEDiff(0.03),
160 fMaxMGGRecConv(0.01),
162 fMaxDispersion(1000),
169 fSwitchNonLinearity(0),
170 fUseNonLinearity(kFALSE),
172 fVectorMatchedClusterIDs(0),
176 fHistAcceptanceCuts(NULL),
177 fHistClusterIdentificationCuts(NULL),
178 fHistClusterEtavsPhiBeforeAcc(NULL),
179 fHistClusterEtavsPhiAfterAcc(NULL),
180 fHistClusterEtavsPhiAfterQA(NULL),
181 fHistClusterTimevsEBeforeQA(NULL),
182 fHistClusterTimevsEAfterQA(NULL),
183 fHistEnergyOfClusterBeforeNL(NULL),
184 fHistEnergyOfClusterAfterNL(NULL),
185 fHistEnergyOfClusterBeforeQA(NULL),
186 fHistEnergyOfClusterAfterQA(NULL),
187 fHistNCellsBeforeQA(NULL),
188 fHistNCellsAfterQA(NULL),
189 fHistM02BeforeQA(NULL),
190 fHistM02AfterQA(NULL),
191 fHistM20BeforeQA(NULL),
192 fHistM20AfterQA(NULL),
193 fHistDispersionBeforeQA(NULL),
194 fHistDispersionAfterQA(NULL),
195 fHistNLMBeforeQA(NULL),
196 fHistNLMAfterQA(NULL),
197 fHistNLMVsNCellsAfterQA(NULL),
198 fHistNLMVsEAfterQA(NULL),
200 fHistClusterEnergyvsMod(NULL),
201 fHistNCellsBigger100MeVvsMod(NULL),
202 fHistNCellsBigger1500MeVvsMod(NULL),
203 fHistEnergyOfModvsMod(NULL),
204 fHistClusterEnergyvsNCells(NULL),
205 fHistCellEnergyvsCellID(NULL),
206 fHistCellTimevsCellID(NULL),
207 fHistClusterEM02BeforeQA(NULL),
208 fHistClusterEM02AfterQA(NULL),
209 fHistClusterIncludedCellsBeforeQA(NULL),
210 fHistClusterIncludedCellsAfterQA(NULL),
211 fHistClusterEnergyFracCellsBeforeQA(NULL),
212 fHistClusterEnergyFracCellsAfterQA(NULL),
213 fHistClusterIncludedCellsTimingAfterQA(NULL),
214 fHistClusterIncludedCellsTimingEnergyAfterQA(NULL),
215 fHistClusterDistanceInTimeCut(NULL),
216 fHistClusterDistanceOutTimeCut(NULL),
217 fHistClusterDistance1DInTimeCut(NULL),
218 fHistClusterRBeforeQA(NULL),
219 fHistClusterRAfterQA(NULL),
220 fHistClusterdEtadPhiBeforeQA(NULL),
221 fHistClusterdEtadPhiAfterQA(NULL),
222 fHistDistanceTrackToClusterBeforeQA(NULL),
223 fHistDistanceTrackToClusterAfterQA(NULL),
224 fHistClusterdEtadPhiPosTracksBeforeQA(NULL),
225 fHistClusterdEtadPhiNegTracksBeforeQA(NULL),
226 fHistClusterdEtadPhiPosTracksAfterQA(NULL),
227 fHistClusterdEtadPhiNegTracksAfterQA(NULL),
228 fHistClusterdEtadPhiPosTracksP_000_075BeforeQA(NULL),
229 fHistClusterdEtadPhiPosTracksP_075_125BeforeQA(NULL),
230 fHistClusterdEtadPhiPosTracksP_125_999BeforeQA(NULL),
231 fHistClusterdEtadPhiNegTracksP_000_075BeforeQA(NULL),
232 fHistClusterdEtadPhiNegTracksP_075_125BeforeQA(NULL),
233 fHistClusterdEtadPhiNegTracksP_125_999BeforeQA(NULL),
234 fHistClusterdEtadPtBeforeQA(NULL),
235 fHistClusterdEtadPtAfterQA(NULL),
236 fHistClusterdEtadPtTrueMatched(NULL),
237 fHistClusterdPhidPtPosTracksBeforeQA(NULL),
238 fHistClusterdPhidPtNegTracksBeforeQA(NULL),
239 fHistClusterdPhidPtAfterQA(NULL),
240 fHistClusterdPhidPtPosTracksTrueMatched(NULL),
241 fHistClusterdPhidPtNegTracksTrueMatched(NULL),
242 fHistClusterM20M02BeforeQA(NULL),
243 fHistClusterM20M02AfterQA(NULL),
244 fHistClusterEtavsPhiExotics(NULL),
245 fHistClusterEM02Exotics(NULL),
246 fHistClusterEnergyvsNCellsExotics(NULL),
247 fHistClusterEEstarExotics(NULL),
248 fHistClusterTMEffiInput(NULL),
249 fHistClusterTrueElecEtaPhiBeforeTM_30_00(NULL),
250 fHistClusterTrueElecEtaPhiAfterTM_30_00(NULL),
251 fHistClusterEvsTrackECharged(NULL),
252 fHistClusterEvsTrackEChargedLead(NULL),
253 fHistClusterEvsTrackENeutral(NULL),
254 fHistClusterEvsTrackENeutralSubCharged(NULL),
255 fHistClusterEvsTrackEGamma(NULL),
256 fHistClusterEvsTrackEGammaSubCharged(NULL),
257 fHistClusterEvsTrackEConv(NULL),
258 fHistClusterENMatchesNeutral(NULL),
259 fHistClusterENMatchesCharged(NULL),
260 fHistClusterEvsTrackEPrimaryButNoElec(NULL),
261 fHistClusterEvsTrackSumEPrimaryButNoElec(NULL),
262 fHistClusETruePi0_BeforeTM(NULL),
263 fHistClusETruePi0_Matched(NULL),
264 fHistMatchedTrackPClusE(NULL),
265 fHistMatchedTrackPClusEAfterEOverPVeto(NULL),
266 fHistMatchedTrackPClusETruePi0Clus(NULL),
269 fIsAcceptedForBasic(kFALSE)
279 AliAnalysisCuts(ref),
484 TH1::AddDirectory(kFALSE);
516 Int_t nBinsClusterE = 235;
517 Int_t nBinsClusterEMod = 249;
518 Int_t nBinsClusterECell = 119;
519 Int_t nBinsClusterECellCoarse = 109;
520 Int_t nBinsClusterEOnlyHighPt = 134;
522 for(
Int_t i=0; i<nBinsClusterEMod+1;i++){
523 if (i < 1) arrClusEBinning[i] = 0.3*i;
524 else if(i<55) arrClusEBinning[i] = 0.3+0.05*(i-1);
525 else if(i<105) arrClusEBinning[i] = 3.+0.1*(i-55);
526 else if(i<140) arrClusEBinning[i] = 8.+0.2*(i-105);
527 else if(i<170) arrClusEBinning[i] = 15.+0.5*(i-140);
528 else if(i<190) arrClusEBinning[i] = 30.+1.0*(i-170);
529 else if(i<215) arrClusEBinning[i] = 50.+2.0*(i-190);
530 else if(i<235) arrClusEBinning[i] = 100.+5.0*(i-215);
531 else if(i<245) arrClusEBinning[i] = 200.+10.0*(i-235);
532 else if(i<249) arrClusEBinning[i] = 300.+25.0*(i-245);
533 else arrClusEBinning[i] = maxClusterE;
535 for(
Int_t i=0; i<nBinsClusterECell+1;i++){
536 if(i<20) arrClusEBinningCoarse[i] = 0.05*(i);
537 else if(i<50) arrClusEBinningCoarse[i] = 1.+0.1*(i-20);
538 else if(i<70) arrClusEBinningCoarse[i] = 4.+0.2*(i-50);
539 else if(i<74) arrClusEBinningCoarse[i] = 8.+0.5*(i-70);
540 else if(i<90) arrClusEBinningCoarse[i] = 10.+1.0*(i-74);
541 else if(i<97) arrClusEBinningCoarse[i] = 26.+2.0*(i-90);
542 else if(i<109) arrClusEBinningCoarse[i] = 40.+5.0*(i-97);
543 else if(i<119) arrClusEBinningCoarse[i] = 100.+10.0*(i-109);
544 else arrClusEBinningCoarse[i] = 200;
546 for(
Int_t i=0; i<nBinsClusterEOnlyHighPt+1;i++){
547 if(i<25) arrClusEBinningOnlyHighPt[i] = 10.+0.2*i;
548 else if(i<55) arrClusEBinningOnlyHighPt[i] = 15.+0.5*(i-25);
549 else if(i<75) arrClusEBinningOnlyHighPt[i] = 30.+1.0*(i-55);
550 else if(i<100) arrClusEBinningOnlyHighPt[i] = 50.+2.0*(i-75);
551 else if(i<120) arrClusEBinningOnlyHighPt[i] = 100.+5.0*(i-100);
552 else if(i<130) arrClusEBinningOnlyHighPt[i] = 200.+10.0*(i-120);
553 else if(i<134) arrClusEBinningOnlyHighPt[i] = 300.+25.0*(i-130);
554 else arrClusEBinningOnlyHighPt[i] = maxClusterE;
592 const Int_t nEmcalEtaBins = 96;
593 const Int_t nEmcalPhiBins = 124;
594 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};
595 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};
612 const Int_t nPhosEtaBins = 56;
613 const Int_t nPhosPhiBins = 256;
614 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
615 const Float_t PhosPhiRange[2] = {4.355, 5.6};
632 const Int_t nDcalEtaBins = 96;
633 const Int_t nDcalPhiBins = 124;
663 }
else{AliError(Form(
"Cluster Type is not EMCAL nor PHOS nor all: %i",
fClusterType));}
683 nBinsClusterE, arrClusEBinning);
689 nBinsClusterE, arrClusEBinning);
695 nBinsClusterE, arrClusEBinning);
699 nBinsClusterE, arrClusEBinning);
796 fBadChannels =
new TProfile(
"EMCal - Bad Channels",
"EMCal - Bad Channels",nMaxCellsEMCAL,-0.5,nMaxCellsEMCAL-0.5);
802 fBadChannels =
new TProfile(
"PHOS - Bad Channels",
"PHOS - Bad Channels",nMaxCellsPHOS,-0.5,nMaxCellsPHOS-0.5);
806 Int_t nStartCellDCAL = 12288;
808 fBadChannels =
new TProfile(
"DCAL - Bad Channels",
"DCAL - Bad Channels",nMaxCellsDCAL,nStartCellDCAL-0.5,nStartCellDCAL+nMaxCellsDCAL-0.5);
859 nMaxCellsEMCAL, 0, nMaxCellsEMCAL);
868 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
873 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
878 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
884 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
890 nBinsClusterE, arrClusEBinning, 200, -500, 500);
895 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
939 nMaxCellsPHOS,0,nMaxCellsPHOS);
948 nMaxCellsPHOS, 0, nMaxCellsPHOS);
953 nMaxCellsPHOS, 0, nMaxCellsPHOS);
958 nMaxCellsPHOS,0,nMaxCellsPHOS);
964 nMaxCellsPHOS, 0, nMaxCellsPHOS);
970 nBinsClusterE, arrClusEBinning, 200, -500, 500);
975 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
981 Int_t nModulesStart = 12;
982 Int_t nCellsStart = 12288;
1023 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1028 nMaxCellsDCAL+nCellsStart);
1033 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1038 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1043 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1049 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1055 nBinsClusterE, arrClusEBinning, 200, -500, 500);
1060 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
1070 const Int_t nEtaBins = 300;
1071 const Int_t nPhiBins = 300;
1072 const Float_t EtaRange[2] = {-0.3, 0.3};
1073 const Float_t PhiRange[2] = {-0.3, 0.3};
1101 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1106 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1111 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1116 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1121 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1126 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1131 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1136 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1141 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1146 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1151 nBinsClusterEMod, arrClusEBinning);
1156 nBinsClusterEMod, arrClusEBinning);
1161 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1166 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1171 nBinsClusterEMod, arrClusEBinning);
1178 nBinsClusterEMod, arrClusEBinning);
1183 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1188 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1207 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1214 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1257 const Int_t nEmcalEtaBins = 96;
1258 const Int_t nEmcalPhiBins = 124;
1259 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};
1260 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};
1300 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1305 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1310 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1315 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1320 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1325 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1330 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1336 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1341 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1347 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1352 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1359 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1365 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1372 nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt, nBinsClusterEOnlyHighPt, arrClusEBinningOnlyHighPt);
1404 const Int_t nEmcalEtaBins = 96;
1405 const Int_t nEmcalPhiBins = 124;
1406 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};
1407 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};
1414 const Int_t nPhosEtaBins = 56;
1415 const Int_t nPhosPhiBins = 192;
1416 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
1417 const Float_t PhosPhiRange[2] = {4.5, 5.6};
1420 nPhosEtaBins, PhosEtaRange[0], PhosEtaRange[1]);
1426 const Int_t nDcalEtaBins = 96;
1427 const Int_t nDcalPhiBins = 124;
1439 nBinsClusterE, arrClusEBinning, 50, 0, 50);
1444 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1459 TH1::AddDirectory(kTRUE);
1467 AliTender* alitender=0x0;
1470 if(event->IsA()==AliESDEvent::Class()){
1471 alitender = (AliTender*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliTender");
1473 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1475 }
else if( event->IsA()==AliAODEvent::Class()){
1476 emcaltender = (
AliEmcalTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalTenderTask");
1478 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1481 TIter next(alitender->GetSupplies());
1482 AliTenderSupply *supply;
1483 while ((supply=(AliTenderSupply*)next()))
if(supply->IsA()==AliEMCALTenderSupply::Class())
break;
1484 fEMCALRecUtils = ((AliEMCALTenderSupply*)supply)->GetRecoUtils();
1486 }
else if(emcaltender){
1489 }
else if(emcalCorrTask){
1491 if(emcalCorrComponent){
1498 fGeomEMCAL = AliEMCALGeometry::GetInstance();
1499 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
1507 Int_t nMinCellsDCAL = 12288;
1509 Int_t nMaxCells = 0;
1510 Int_t nMinCells = 0;
1512 nMaxCells = nMaxCellsEMCAL;
1515 nMaxCells = nMaxCellsDCAL;
1516 nMinCells = nMinCellsDCAL;
1520 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
1523 for(
Int_t iCell=nMinCells;iCell<nMaxCells;iCell++){
1524 fGeomEMCAL->GetCellIndex(iCell,imod,iTower,iIphi,iIeta);
1526 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
1541 fGeomPHOS = AliPHOSGeometry::GetInstance();
1542 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
1547 AliPHOSTenderTask* aliphostender = (AliPHOSTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"PHOSTenderTask");
1548 AliPHOSTenderSupply *PHOSSupply =((AliPHOSTenderSupply*) aliphostender->GetPHOSTenderSupply()) ;
1551 AliError(Form(
"Can not find PHOSTenderSupply in run %d. No bad channel map could be found for QA!\n",event->GetRunNumber())) ;
1554 AliInfo(
"Setting PHOS bad map from PHOSSupply \n") ;
1555 for(
Int_t mod=0;mod<nModules;mod++){
1556 TH2I * h = (TH2I*)PHOSSupply->GetPHOSBadChannelStatusMap(mod);
1559 AliInfo(Form(
"using bad map for module %d with nch=%f\n",mod,h->Integral()));
1567 for(
Int_t iCell=0;iCell<nMaxCellsPHOS;iCell++){
1568 fGeomPHOS->AbsToRelNumbering(iCell,relid);
1570 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
1593 if(!mcEvent)
return kFALSE;
1594 if(!particle)
return kFALSE;
1596 if (particle->GetPdgCode() == 22){
1602 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 22){
1614 if(!mcEvent)
return kFALSE;
1615 if(!particle)
return kFALSE;
1617 if (TMath::Abs(particle->GetPdgCode()) == 11){
1623 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 11){
1635 if(!aodmcArray)
return kFALSE;
1636 if(!particle)
return kFALSE;
1638 if (TMath::Abs(particle->GetPdgCode()) == 11){
1643 if(particle->GetMother() >-1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 11){
1655 if(!aodmcArray)
return kFALSE;
1656 if(!particle)
return kFALSE;
1658 if (particle->GetPdgCode() == 22){
1662 if(particle->GetMother() > -1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 22){
1687 cluster->GetPosition(clusPos);
1688 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
1689 Double_t etaCluster = clusterVector.Eta();
1690 Double_t phiCluster = clusterVector.Phi();
1691 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
1709 AliVCaloCells* cells = NULL;
1711 if(cluster->IsEMCAL()){
1712 cells =
event->GetEMCALCells();
1713 }
else if(cluster->IsPHOS()){
1714 cells =
event->GetPHOSCells();
1717 Int_t nCellCluster = cluster->GetNCells();
1718 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
1741 Bool_t failedM02 = kFALSE;
1749 if( nLM < fMinNLM || nLM >
fMaxNLM )
1768 if ( !( failed || failedM02 ) ){
1792 if( nLM < fMinNLM || nLM >
fMaxNLM ) {
1801 if( cluster->GetM02()<
fMinM02 || cluster->GetM02() >
fMaxM02 ) {
1816 if( cluster->GetM20()<
fMinM20 || cluster->GetM20() >
fMaxM20 ) {
1841 AliError(
"Task needs AOD or ESD event, returning");
1856 Int_t classification = -1;
1857 Long_t leadMCLabel = -1;
1859 leadMCLabel = ((AliESDCaloCluster*)cluster)->GetLabel();
1861 leadMCLabel = ((AliAODCaloCluster*)cluster)->GetLabel();
1869 if (classification == 5 )
1871 if (classification == 7 )
1873 if (classification == 4)
1875 if (classification == 6){
1877 if (cluster->E() > 30.)
1881 if (classification == 0 || classification == 1)
1883 if (classification == 1)
1885 if (classification == 2 || classification == 3)
1887 if ( classification == 3)
1890 Int_t nlabelsMatchedTracks = 0;
1896 if (classification < 4 && classification > -1)
1903 if (cluster->E() > 30.)
1917 if (classification == 5 )
1919 if (classification == 4)
1921 if (classification == 0 || classification == 1)
1923 if ( classification == 1)
1925 if (classification == 2 || classification == 3)
1927 if ( classification == 3)
1929 if ( classification == 7)
1931 if ( classification == 6)
1934 vector<Int_t> labelsMatchedTracks;
1945 Bool_t foundLead = kFALSE;
1948 for (
Int_t i = 0; i < (
Int_t)labelsMatchedTracks.size(); i++){
1949 AliVTrack* currTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(labelsMatchedTracks.at(i)));
1950 eSum += currTrack->E();
1951 if (ptMax < currTrack->Pt()){
1952 ptMax = currTrack->Pt();
1953 eMax = currTrack->E();
1956 if (classification == 4 || classification == 5 || classification == 6 || classification == 7){
1957 Long_t mcLabelTrack = -1;
1959 mcLabelTrack = TMath::Abs(((AliESDtrack*)currTrack)->GetLabel());
1961 mcLabelTrack = TMath::Abs(((AliAODTrack*)currTrack)->GetLabel());
1962 if (mcLabelTrack!= -1 && mcLabelTrack == leadMCLabel){
1964 eLead = currTrack->E();
1969 if (classification == 5 || classification == 7 || classification == 6){
1971 if (classification == 5 || classification == 7){
1977 if (classification == 5)
1979 if (classification == 7)
1981 if (classification == 6)
1986 if (classification == 4){
1991 if (classification == 0 )
1993 if (classification == 1)
1995 if (classification == 2)
1997 if (classification == 3)
2000 labelsMatchedTracks.clear();
2044 Int_t nCellCluster = cluster->GetNCells();
2045 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
2046 Int_t cellID = cluster->GetCellAbsId(iCell);
2047 Double_t cellAmp = cells->GetCellAmplitude(cellID);
2048 Double_t cellTime = cells->GetCellTime(cellID);
2062 if(cluster->IsEMCAL()){
2063 Int_t iSuperModule = -1;
2064 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2065 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
2069 }
else if(cluster->IsPHOS()){
2070 Int_t relId[4] = {0,0,0,0};
2071 fGeomPHOS = AliPHOSGeometry::GetInstance();
2072 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
2089 AliVCaloCells* cells = 0x0;
2092 Int_t* nCellsBigger100MeV;
2093 Int_t* nCellsBigger1500MeV;
2098 Int_t nModulesStart = 0;
2100 cells =
event->GetEMCALCells();
2101 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2102 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2104 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2105 if(
fClusterType == 3) {nModules = 8; nModulesStart = 12;}
2107 cells =
event->GetPHOSCells();
2108 fGeomPHOS = AliPHOSGeometry::GetInstance();
2109 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2112 AliError(Form(
"fExtendedMatchAndQA(%i):FillHistogramsExtendedMatchAndQA() not (yet) defined for cluster type (%i)",
fExtendedMatchAndQA,
fClusterType));
2115 nCellsBigger100MeV =
new Int_t[nModules];
2116 nCellsBigger1500MeV =
new Int_t[nModules];
2117 EnergyOfMod =
new Double_t[nModules];
2119 for(
Int_t iModule=0;iModule<nModules;iModule++){nCellsBigger100MeV[iModule]=0;nCellsBigger1500MeV[iModule]=0;EnergyOfMod[iModule]=0;}
2121 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2126 Int_t cellMCLabel=0;
2129 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2130 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2132 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2136 Bool_t doBadCell = kTRUE;
2138 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2139 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2141 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2143 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2144 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2156 if(iBadCell > 0)
continue;
2158 if(cellAmplitude > 0.1) nCellsBigger100MeV[nMod-nModulesStart]++;
2159 if(cellAmplitude > 1.5) nCellsBigger1500MeV[nMod-nModulesStart]++;
2160 if(cellAmplitude > 0.05) EnergyOfMod[nMod-nModulesStart]+=cellAmplitude;
2171 for(
Int_t iModule=0;iModule<nModules;iModule++){
2177 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2178 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2179 delete[] EnergyOfMod;EnergyOfMod=0x0;
2183 TClonesArray * arrClustersExtQA = NULL;
2185 nclus =
event->GetNumberOfCaloClusters();
2187 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2188 if(!arrClustersExtQA)
2189 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2190 nclus = arrClustersExtQA->GetEntries();
2192 AliVCluster* cluster = 0x0;
2193 AliVCluster* clusterMatched = 0x0;
2194 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2195 if(event->IsA()==AliESDEvent::Class()){
2196 if(arrClustersExtQA)
2197 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2199 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2200 }
else if(event->IsA()==AliAODEvent::Class()){
2201 if(arrClustersExtQA)
2202 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2204 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2208 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2211 cluster->GetPosition(clusPos);
2212 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2213 Double_t etaCluster = clusterVector.Eta();
2214 Double_t phiCluster = clusterVector.Phi();
2215 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2219 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2221 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2227 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2228 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2230 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2233 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2235 Int_t largestCellicol = -1, largestCellirow = -1;
2237 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2239 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2241 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2242 if(event->IsA()==AliESDEvent::Class()){
2243 if(arrClustersExtQA)
2244 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2246 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2247 }
else if(event->IsA()==AliAODEvent::Class()){
2248 if(arrClustersExtQA)
2249 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2251 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2255 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2258 clusterMatched->GetPosition(clusPos2);
2259 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2260 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2261 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2262 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2266 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2267 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2268 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2273 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2274 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2275 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2277 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2282 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2284 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2286 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2292 Int_t rowdiff = -100;
2293 Int_t coldiff = -100;
2294 Bool_t calculatedDiff = kFALSE;
2296 Int_t ClusID = largestCelliMod/2;
2297 Int_t matchClusID = matched_largestCelliMod/2;
2299 if( matched_largestCelliMod == largestCelliMod){
2300 rowdiff = largestCellirow - matched_largestCellirow;
2301 coldiff = largestCellicol - matched_largestCellicol;
2302 calculatedDiff = kTRUE;
2303 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2304 if(matched_largestCelliMod%2){
2305 matched_largestCelliMod -= 1;
2306 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2308 matched_largestCelliMod += 1;
2309 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2312 if( matched_largestCelliMod == largestCelliMod ){
2313 rowdiff = largestCellirow - matched_largestCellirow;
2314 coldiff = largestCellicol - matched_largestCellicol;
2315 calculatedDiff = kTRUE;
2322 if( calculatedDiff ){
2323 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2335 delete clusterMatched;
2349 const Int_t nc = cluster->GetNCells();
2351 Int_t absCellIdList[nc];
2362 const Int_t nCells = cluster->GetNCells();
2363 AliVCaloCells* cells = NULL;
2366 cells =
event->GetEMCALCells();
2368 cells =
event->GetPHOSCells();
2374 Int_t iCellMax = -1;
2376 if (nCells < 2)
return idMax;
2377 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2378 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2379 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2380 idMax = cluster->GetCellsAbsId()[iCell];
2386 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2387 if (iCell == iCellMax)
continue;
2388 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2389 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2390 idMax2 = cluster->GetCellsAbsId()[iCell];
2400 const Int_t nCells = cluster->GetNCells();
2401 AliVCaloCells* cells = NULL;
2404 cells =
event->GetEMCALCells();
2406 cells =
event->GetPHOSCells();
2412 if (nCells < 1)
return idMax;
2413 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2414 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2415 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2416 eMax = cells->GetCellAmplitude(cellAbsID);
2431 Int_t absCellId1 = -1;
2432 Int_t absCellId2 = -1;
2433 const Int_t nCells = cluster->GetNCells();
2434 AliVCaloCells* cells = NULL;
2437 cells =
event->GetEMCALCells();
2439 cells =
event->GetPHOSCells();
2445 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2446 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2450 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2451 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2452 idMax = absCellIdList[iCell];
2457 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2459 if (absCellIdList[iCell] >= 0){
2461 absCellId1 = cluster->GetCellsAbsId()[iCell];
2462 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2465 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2467 if (absCellIdList[iCell] == -1)
continue;
2469 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2472 if (absCellId2 == -1)
continue;
2473 if (absCellId1 == absCellId2)
continue;
2476 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2484 absCellIdList[iCellN] = -1;
2486 absCellIdList[iCell] = -1;
2488 absCellIdList[iCell] = -1;
2490 absCellIdList[iCellN] = -1;
2498 Int_t nMaximaNew = 0;
2499 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2501 if (absCellIdList[iCell] > -1){
2502 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2505 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2506 maxEList[nMaximaNew] = en;
2513 if (nMaximaNew == 0){
2516 absCellIdList[0] = idMax;
2527 Bool_t areNeighbours = kFALSE ;
2529 Int_t irow1 = -1, icol1 = -1;
2530 Int_t irow2 = -1, icol2 = -1;
2532 Int_t rowdiff = 0, coldiff = 0;
2538 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2543 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2544 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2547 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2548 coldiff = TMath::Abs( icol1 - icol2 ) ;
2551 if ((coldiff + rowdiff == 1 ))
2552 areNeighbours = kTRUE ;
2554 return areNeighbours;
2564 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2565 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2567 fGeomPHOS = AliPHOSGeometry::GetInstance();
2568 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2571 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2573 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2574 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2577 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2591 AliVCluster* cluster,
2594 AliAODCaloCluster* cluster1,
2595 AliAODCaloCluster* cluster2){
2597 const Int_t ncells = cluster->GetNCells();
2598 Int_t absCellIdList[ncells];
2600 AliVCaloCells* cells = NULL;
2602 cells =
event->GetEMCALCells();
2604 cells =
event->GetPHOSCells();
2610 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2611 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2612 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2623 absCellIdList1[0] = absCellId1 ;
2624 fracList1 [0] = 1. ;
2626 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2630 absCellIdList2[0] = absCellId2 ;
2631 fracList2 [0] = 1. ;
2633 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2638 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2639 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2640 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2644 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2646 Int_t absId = absCellIdList[iCell];
2647 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2649 Float_t ecell = cells->GetCellAmplitude(absId);
2651 absCellIdList1[ncells1] = absId;
2653 fracList1[ncells1] = shareFraction1;
2654 e1 += ecell*shareFraction1;
2656 fracList1[ncells1] = 1.;
2663 absCellIdList2[ncells2]= absId;
2666 fracList2[ncells2] = shareFraction2;
2667 e2 += ecell*shareFraction2;
2669 fracList2[ncells2] = 1.;
2680 cluster1->SetNCells(ncells1);
2681 cluster2->SetNCells(ncells2);
2683 cluster1->SetCellsAbsId(absCellIdList1);
2684 cluster2->SetCellsAbsId(absCellIdList2);
2686 cluster1->SetCellsAmplitudeFraction(fracList1);
2687 cluster2->SetCellsAmplitudeFraction(fracList2);
2714 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2716 Int_t largestCellicol = -1, largestCellirow = -1;
2717 Int_t rowdiff = 0, coldiff = 0;
2720 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2722 Int_t nMinRows = 0, nMaxRows = 0;
2723 Int_t nMinCols = 0, nMaxCols = 0;
2725 Bool_t checkNextSM = kFALSE;
2728 nMinRows = largestCellirow - distanceForLoop;
2729 nMaxRows = largestCellirow + distanceForLoop;
2730 if(nMinRows < 0) nMinRows = 0;
2731 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2733 nMinCols = largestCellicol - distanceForLoop;
2734 nMaxCols = largestCellicol + distanceForLoop;
2736 if(largestCelliMod%2){
2739 checkNextSM = kTRUE;
2741 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2743 if(nMinCols < 0) nMinCols = 0;
2744 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2745 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2746 checkNextSM = kTRUE;
2750 nMinRows = largestCellirow - distanceForLoop;
2751 nMaxRows = largestCellirow + distanceForLoop;
2752 if(nMinRows < 0) nMinRows = 0;
2753 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2755 nMinCols = largestCellicol - distanceForLoop;
2756 nMaxCols = largestCellicol + distanceForLoop;
2757 if(nMinCols < 0) nMinCols = 0;
2770 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2772 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2774 if(irow == largestCellirow && icol == largestCellicol)
continue;
2783 if(iBadCell==0)
continue;
2785 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2786 coldiff = TMath::Abs( largestCellicol - icol ) ;
2802 if(largestCelliMod%2){
2803 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2804 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2806 largestCelliMod -= 1;
2807 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2810 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2812 largestCelliMod += 1;
2813 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2821 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2823 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2826 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2832 if(iBadCell==0)
continue;
2834 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2835 coldiff = TMath::Abs( largestCellicol - icol ) ;
2865 cluster->GetPosition(clusPos);
2866 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2867 Double_t etaCluster = clusterVector.Eta();
2868 Double_t phiCluster = clusterVector.Phi();
2869 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2882 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
2921 cluster->GetPosition(clusPos);
2922 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2923 Double_t etaCluster = clusterVector.Eta();
2924 Double_t phiCluster = clusterVector.Phi();
2925 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2938 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
2980 AliError(
"Task needs AOD or ESD event, returning");
2985 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
2987 Float_t clusterPosition[3] = {0,0,0};
2988 cluster->GetPosition(clusterPosition);
2989 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
2995 for (
Int_t i = 0;i < 2;i++){
2997 AliVTrack *inTrack = 0x0;
2999 if(tracklabel > event->GetNumberOfTracks() )
continue;
3000 inTrack = esdev->GetTrack(tracklabel);
3003 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
3005 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
3006 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
3008 if(inTrack->GetID() == tracklabel) {
3020 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3027 if(inTrack->Charge() > 0) {
3043 Int_t clusterMCLabel = cluster->GetLabel();
3044 Int_t convPhotonDaughterLabel = -1;
3045 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
3047 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3056 Bool_t match_dPhi = kFALSE;
3061 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3062 else match_dEta = kFALSE;
3064 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3065 else match_dPhi = kFALSE;
3068 if(match_dEta && match_dPhi){
3102 TClonesArray * arrClustersMatch = NULL;
3104 nClus =
event->GetNumberOfCaloClusters();
3106 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3107 if(!arrClustersMatch)
3108 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3109 nClus = arrClustersMatch->GetEntries();
3114 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3115 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3118 fGeomPHOS = AliPHOSGeometry::GetInstance();
3119 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
3128 AliError(
"Task needs AOD or ESD event, returning");
3134 AliESDtrackCuts *EsdTrackCuts = 0x0;
3135 if(!isEMCalOnly && esdev){
3137 Int_t runNumber =
event->GetRunNumber();
3139 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3140 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3142 }
else if (runNumber>=209122){
3145 EsdTrackCuts =
new AliESDtrackCuts();
3146 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3147 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3148 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3149 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3150 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3151 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3153 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3154 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3155 AliESDtrackCuts::kAny);
3156 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3157 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3158 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3159 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3160 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3161 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3164 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3166 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3167 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3168 EsdTrackCuts->SetPtRange(0.15);
3173 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3174 AliVTrack *inTrack = 0x0;
3176 inTrack = esdev->GetTrack(itr);
3177 if(!inTrack)
continue;
3178 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3180 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3182 const AliExternalTrackParam *in = esdt->GetInnerParam();
3183 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3185 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3186 if(!inTrack)
continue;
3187 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3189 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3190 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3191 if(aodt->Pt()<0.15)
continue;
3196 Float_t clsPos[3] = {0.,0.,0.};
3197 for(
Int_t iclus=0;iclus < nClus;iclus++){
3198 AliVCluster * cluster = NULL;
3199 if(arrClustersMatch){
3201 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3203 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3205 cluster =
event->GetCaloCluster(iclus);
3209 if(arrClustersMatch)
delete cluster;
3214 if(arrClustersMatch)
delete cluster;
3217 cluster->GetPosition(clsPos);
3218 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3219 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3228 if(inTrack->Charge() > 0) {
3247 Bool_t match_dPhi = kFALSE;
3248 Bool_t vetoEOverP = kFALSE;
3254 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3255 else match_dEta = kFALSE;
3257 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3258 else match_dPhi = kFALSE;
3264 if(match_dEta && match_dPhi){
3283 if(arrClustersMatch)
delete cluster;
3285 }
else if(isEMCalOnly){
3296 if(arrClustersMatch)
delete cluster;
3300 delete EsdTrackCuts;
3309 vector<Int_t>::iterator it;
3332 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3333 if(analysisCutSelection.Length()!=
kNCuts) {
3334 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3337 if(!analysisCutSelection.IsAlnum()){
3338 AliError(
"Cut selection is not alphanumeric");
3342 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3343 analysisCutSelectionLowerCase.ToLower();
3344 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3345 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3370 }
else return kFALSE;
3377 }
else return kFALSE;
3384 }
else return kFALSE;
3391 }
else return kFALSE;
3398 }
else return kFALSE;
3405 }
else return kFALSE;
3412 }
else return kFALSE;
3419 }
else return kFALSE;
3426 }
else return kFALSE;
3433 }
else return kFALSE;
3440 }
else return kFALSE;
3447 }
else return kFALSE;
3454 }
else return kFALSE;
3461 }
else return kFALSE;
3468 }
else return kFALSE;
3475 }
else return kFALSE;
3482 }
else return kFALSE;
3489 }
else return kFALSE;
3496 }
else return kFALSE;
3499 AliError(
"Cut id out of range");
3503 AliError(
"Cut id %d not recognized");
3520 printf(
"\nCluster cutnumber \n %s", analysisCutSelection.Data());
3524 printf(
"Acceptance cuts: \n");
3525 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3526 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3527 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3528 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3533 printf(
"Cluster Quality cuts: \n");
3547 printf(
"NonLinearity Correction: \n");
3552 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3564 switch(clusterType){
3578 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3627 AliError(Form(
"MinEta Cut not defined %d",minEta));
3676 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3716 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3756 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3765 switch(distanceToBadChannel){
3803 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
3874 AliError(Form(
"Timing Cut not defined %d",timing));
3885 switch(trackMatching){
3926 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3929 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3935 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3938 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3944 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3947 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3953 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3956 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3962 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3965 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3971 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3974 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3982 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3985 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3994 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3997 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])");
4018 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4021 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4030 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4033 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4043 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4046 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4053 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4059 switch(trackMatching){
4087 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4090 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4096 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4099 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4105 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4108 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4114 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4176 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4249 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4291 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4343 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4385 AliError(Form(
"Min N cells Cut not defined %d",minNCells));
4552 AliError(Form(
"Max M02 Cut not defined %d",maxM02));
4565 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0955, 1.86e-3, 9.91 );
4567 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.524, 5.59e-3, 21.9 );
4573 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0, 1.86e-3, 9.91 );
4575 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.424, 5.59e-3, 21.9 );
4581 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.2, 1.86e-3, 9.91 );
4583 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.624, 5.59e-3, 21.9 );
4589 if( (0.27 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.4)
return 0.4;
4590 else return (0.27 + 0.0072 * TMath::Power(clusEnergy,2));
4592 if( (0.31 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4593 else return (0.31 + 0.0072 * TMath::Power(clusEnergy,2));
4595 if( (0.36 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4596 else return (0.36 + 0.0072 * TMath::Power(clusEnergy,2));