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"),
127 fMinDistanceToBadChannel(0),
128 fUseDistanceToBadChannel(0),
130 fMinTimeDiff(-10e10),
132 fMaxDistTrackToClusterEta(0),
133 fMinDistTrackToClusterPhi(0),
134 fMaxDistTrackToClusterPhi(0),
135 fUseDistTrackToCluster(0),
136 fUsePtDepTrackToCluster(0),
139 fExtendedMatchAndQA(0),
140 fExoticEnergyFracCluster(0),
141 fExoticMinEnergyCell(1),
142 fUseExoticCluster(0),
143 fDoExoticsQA(kFALSE),
146 fLocMaxCutEDiff(0.03),
158 fMaxMGGRecConv(0.01),
160 fMaxDispersion(1000),
167 fSwitchNonLinearity(0),
168 fUseNonLinearity(kFALSE),
170 fVectorMatchedClusterIDs(0),
174 fHistAcceptanceCuts(NULL),
175 fHistClusterIdentificationCuts(NULL),
176 fHistClusterEtavsPhiBeforeAcc(NULL),
177 fHistClusterEtavsPhiAfterAcc(NULL),
178 fHistClusterEtavsPhiAfterQA(NULL),
179 fHistClusterTimevsEBeforeQA(NULL),
180 fHistClusterTimevsEAfterQA(NULL),
181 fHistEnergyOfClusterBeforeNL(NULL),
182 fHistEnergyOfClusterAfterNL(NULL),
183 fHistEnergyOfClusterBeforeQA(NULL),
184 fHistEnergyOfClusterAfterQA(NULL),
185 fHistNCellsBeforeQA(NULL),
186 fHistNCellsAfterQA(NULL),
187 fHistM02BeforeQA(NULL),
188 fHistM02AfterQA(NULL),
189 fHistM20BeforeQA(NULL),
190 fHistM20AfterQA(NULL),
191 fHistDispersionBeforeQA(NULL),
192 fHistDispersionAfterQA(NULL),
193 fHistNLMBeforeQA(NULL),
194 fHistNLMAfterQA(NULL),
195 fHistNLMVsNCellsAfterQA(NULL),
196 fHistNLMVsEAfterQA(NULL),
198 fHistClusterEnergyvsMod(NULL),
199 fHistNCellsBigger100MeVvsMod(NULL),
200 fHistNCellsBigger1500MeVvsMod(NULL),
201 fHistEnergyOfModvsMod(NULL),
202 fHistClusterEnergyvsNCells(NULL),
203 fHistCellEnergyvsCellID(NULL),
204 fHistCellTimevsCellID(NULL),
205 fHistClusterEM02BeforeQA(NULL),
206 fHistClusterEM02AfterQA(NULL),
207 fHistClusterIncludedCellsBeforeQA(NULL),
208 fHistClusterIncludedCellsAfterQA(NULL),
209 fHistClusterEnergyFracCellsBeforeQA(NULL),
210 fHistClusterEnergyFracCellsAfterQA(NULL),
211 fHistClusterIncludedCellsTimingAfterQA(NULL),
212 fHistClusterIncludedCellsTimingEnergyAfterQA(NULL),
213 fHistClusterDistanceInTimeCut(NULL),
214 fHistClusterDistanceOutTimeCut(NULL),
215 fHistClusterDistance1DInTimeCut(NULL),
216 fHistClusterRBeforeQA(NULL),
217 fHistClusterRAfterQA(NULL),
218 fHistClusterdEtadPhiBeforeQA(NULL),
219 fHistClusterdEtadPhiAfterQA(NULL),
220 fHistDistanceTrackToClusterBeforeQA(NULL),
221 fHistDistanceTrackToClusterAfterQA(NULL),
222 fHistClusterdEtadPhiPosTracksBeforeQA(NULL),
223 fHistClusterdEtadPhiNegTracksBeforeQA(NULL),
224 fHistClusterdEtadPhiPosTracksAfterQA(NULL),
225 fHistClusterdEtadPhiNegTracksAfterQA(NULL),
226 fHistClusterdEtadPhiPosTracksP_000_075BeforeQA(NULL),
227 fHistClusterdEtadPhiPosTracksP_075_125BeforeQA(NULL),
228 fHistClusterdEtadPhiPosTracksP_125_999BeforeQA(NULL),
229 fHistClusterdEtadPhiNegTracksP_000_075BeforeQA(NULL),
230 fHistClusterdEtadPhiNegTracksP_075_125BeforeQA(NULL),
231 fHistClusterdEtadPhiNegTracksP_125_999BeforeQA(NULL),
232 fHistClusterdEtadPtBeforeQA(NULL),
233 fHistClusterdEtadPtAfterQA(NULL),
234 fHistClusterdEtadPtTrueMatched(NULL),
235 fHistClusterdPhidPtPosTracksBeforeQA(NULL),
236 fHistClusterdPhidPtNegTracksBeforeQA(NULL),
237 fHistClusterdPhidPtAfterQA(NULL),
238 fHistClusterdPhidPtPosTracksTrueMatched(NULL),
239 fHistClusterdPhidPtNegTracksTrueMatched(NULL),
240 fHistClusterM20M02BeforeQA(NULL),
241 fHistClusterM20M02AfterQA(NULL),
242 fHistClusterEtavsPhiExotics(NULL),
243 fHistClusterEM02Exotics(NULL),
244 fHistClusterEnergyvsNCellsExotics(NULL),
245 fHistClusterEEstarExotics(NULL),
246 fHistClusterTMEffiInput(NULL),
247 fHistClusterElecEtaPhiBeforeTM_00_20(NULL),
248 fHistClusterElecEtaPhiBeforeTM_20_50(NULL),
249 fHistClusterElecEtaPhiBeforeTM_50_00(NULL),
250 fHistClusterElecEtaPhiAfterTM_00_20(NULL),
251 fHistClusterElecEtaPhiAfterTM_20_50(NULL),
252 fHistClusterElecEtaPhiAfterTM_50_00(NULL),
253 fHistClusterEvsTrackECharged(NULL),
254 fHistClusterEvsTrackEChargedLead(NULL),
255 fHistClusterEvsTrackENeutral(NULL),
256 fHistClusterEvsTrackENeutralSubCharged(NULL),
257 fHistClusterEvsTrackEGamma(NULL),
258 fHistClusterEvsTrackEGammaSubCharged(NULL),
259 fHistClusterEvsTrackEConv(NULL),
260 fHistClusterENMatchesNeutral(NULL),
261 fHistClusterENMatchesCharged(NULL),
262 fHistClusterEvsTrackEPrimaryButNoElec(NULL),
263 fHistClusterEvsTrackSumEPrimaryButNoElec(NULL),
266 fIsAcceptedForBasic(kFALSE)
276 AliAnalysisCuts(ref),
478 TH1::AddDirectory(kFALSE);
509 Int_t nBinsClusterE = 235;
510 Int_t nBinsClusterEMod = 249;
511 Int_t nBinsClusterECell = 119;
512 Int_t nBinsClusterECellCoarse = 109;
514 for(
Int_t i=0; i<nBinsClusterEMod+1;i++){
515 if (i < 1) arrClusEBinning[i] = 0.3*i;
516 else if(i<55) arrClusEBinning[i] = 0.3+0.05*(i-1);
517 else if(i<105) arrClusEBinning[i] = 3.+0.1*(i-55);
518 else if(i<140) arrClusEBinning[i] = 8.+0.2*(i-105);
519 else if(i<170) arrClusEBinning[i] = 15.+0.5*(i-140);
520 else if(i<190) arrClusEBinning[i] = 30.+1.0*(i-170);
521 else if(i<215) arrClusEBinning[i] = 50.+2.0*(i-190);
522 else if(i<235) arrClusEBinning[i] = 100.+5.0*(i-215);
523 else if(i<245) arrClusEBinning[i] = 200.+10.0*(i-235);
524 else if(i<249) arrClusEBinning[i] = 300.+25.0*(i-245);
525 else arrClusEBinning[i] = maxClusterE;
527 for(
Int_t i=0; i<nBinsClusterECell+1;i++){
528 if(i<20) arrClusEBinningCoarse[i] = 0.05*(i-1);
529 else if(i<50) arrClusEBinningCoarse[i] = 1.+0.1*(i-20);
530 else if(i<70) arrClusEBinningCoarse[i] = 4.+0.2*(i-50);
531 else if(i<74) arrClusEBinningCoarse[i] = 8.+0.5*(i-70);
532 else if(i<90) arrClusEBinningCoarse[i] = 10.+1.0*(i-74);
533 else if(i<97) arrClusEBinningCoarse[i] = 26.+2.0*(i-90);
534 else if(i<109) arrClusEBinningCoarse[i] = 40.+5.0*(i-97);
535 else if(i<119) arrClusEBinningCoarse[i] = 100.+10.0*(i-119);
536 else arrClusEBinningCoarse[i] = 200;
574 const Int_t nEmcalEtaBins = 96;
575 const Int_t nEmcalPhiBins = 124;
576 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};
577 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};
594 const Int_t nPhosEtaBins = 56;
595 const Int_t nPhosPhiBins = 256;
596 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
597 const Float_t PhosPhiRange[2] = {4.355, 5.6};
614 const Int_t nDcalEtaBins = 96;
615 const Int_t nDcalPhiBins = 124;
645 }
else{AliError(Form(
"Cluster Type is not EMCAL nor PHOS nor all: %i",
fClusterType));}
665 nBinsClusterE, arrClusEBinning);
671 nBinsClusterE, arrClusEBinning);
677 nBinsClusterE, arrClusEBinning);
681 nBinsClusterE, arrClusEBinning);
777 fBadChannels =
new TProfile(
"EMCal - Bad Channels",
"EMCal - Bad Channels",nMaxCellsEMCAL,-0.5,nMaxCellsEMCAL-0.5);
782 fBadChannels =
new TProfile(
"PHOS - Bad Channels",
"PHOS - Bad Channels",nMaxCellsPHOS,-0.5,nMaxCellsPHOS-0.5);
786 Int_t nStartCellDCAL = 12288;
788 fBadChannels =
new TProfile(
"DCAL - Bad Channels",
"DCAL - Bad Channels",nMaxCellsDCAL,nStartCellDCAL-0.5,nStartCellDCAL+nMaxCellsDCAL-0.5);
839 nMaxCellsEMCAL, 0, nMaxCellsEMCAL);
848 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
853 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
858 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
864 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
870 nBinsClusterE, arrClusEBinning, 200, -500, 500);
875 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
919 nMaxCellsPHOS,0,nMaxCellsPHOS);
928 nMaxCellsPHOS, 0, nMaxCellsPHOS);
933 nMaxCellsPHOS, 0, nMaxCellsPHOS);
938 nMaxCellsPHOS,0,nMaxCellsPHOS);
944 nMaxCellsPHOS, 0, nMaxCellsPHOS);
950 nBinsClusterE, arrClusEBinning, 200, -500, 500);
955 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
961 Int_t nModulesStart = 12;
962 Int_t nCellsStart = 12288;
1003 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1008 nMaxCellsDCAL+nCellsStart);
1013 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1018 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1023 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1029 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1035 nBinsClusterE, arrClusEBinning, 200, -500, 500);
1040 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
1050 const Int_t nEtaBins = 300;
1051 const Int_t nPhiBins = 300;
1052 const Float_t EtaRange[2] = {-0.3, 0.3};
1053 const Float_t PhiRange[2] = {-0.3, 0.3};
1081 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1086 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1091 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1096 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
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 nBinsClusterEMod, arrClusEBinning);
1136 nBinsClusterEMod, arrClusEBinning);
1141 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1146 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1151 nBinsClusterEMod, arrClusEBinning);
1158 nBinsClusterEMod, arrClusEBinning);
1163 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1168 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1216 const Int_t nEmcalEtaBins = 96;
1217 const Int_t nEmcalPhiBins = 124;
1218 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};
1219 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};
1274 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1279 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1284 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1289 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1294 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1299 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1304 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1310 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1315 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1321 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1326 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1355 const Int_t nEmcalEtaBins = 96;
1356 const Int_t nEmcalPhiBins = 124;
1357 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};
1358 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};
1365 const Int_t nPhosEtaBins = 56;
1366 const Int_t nPhosPhiBins = 192;
1367 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
1368 const Float_t PhosPhiRange[2] = {4.5, 5.6};
1371 nPhosEtaBins, PhosEtaRange[0], PhosEtaRange[1]);
1377 const Int_t nDcalEtaBins = 96;
1378 const Int_t nDcalPhiBins = 124;
1390 nBinsClusterE, arrClusEBinning, 50, 0, 50);
1395 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1410 TH1::AddDirectory(kTRUE);
1418 AliTender* alitender=0x0;
1421 if(event->IsA()==AliESDEvent::Class()){
1422 alitender = (AliTender*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliTender");
1424 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1426 }
else if( event->IsA()==AliAODEvent::Class()){
1427 emcaltender = (
AliEmcalTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalTenderTask");
1429 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1432 TIter next(alitender->GetSupplies());
1433 AliTenderSupply *supply;
1434 while ((supply=(AliTenderSupply*)next()))
if(supply->IsA()==AliEMCALTenderSupply::Class())
break;
1435 fEMCALRecUtils = ((AliEMCALTenderSupply*)supply)->GetRecoUtils();
1437 }
else if(emcaltender){
1440 }
else if(emcalCorrTask){
1442 if(emcalCorrComponent){
1449 fGeomEMCAL = AliEMCALGeometry::GetInstance();
1450 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
1458 Int_t nMinCellsDCAL = 12288;
1460 Int_t nMaxCells = 0;
1461 Int_t nMinCells = 0;
1463 nMaxCells = nMaxCellsEMCAL;
1466 nMaxCells = nMaxCellsDCAL;
1467 nMinCells = nMinCellsDCAL;
1471 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
1474 for(
Int_t iCell=nMinCells;iCell<nMaxCells;iCell++){
1475 fGeomEMCAL->GetCellIndex(iCell,imod,iTower,iIphi,iIeta);
1477 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
1492 fGeomPHOS = AliPHOSGeometry::GetInstance();
1493 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
1498 AliPHOSTenderTask* aliphostender = (AliPHOSTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"PHOSTenderTask");
1499 AliPHOSTenderSupply *PHOSSupply =((AliPHOSTenderSupply*) aliphostender->GetPHOSTenderSupply()) ;
1502 AliError(Form(
"Can not find PHOSTenderSupply in run %d. No bad channel map could be found for QA!\n",event->GetRunNumber())) ;
1505 AliInfo(
"Setting PHOS bad map from PHOSSupply \n") ;
1506 for(
Int_t mod=0;mod<nModules;mod++){
1507 TH2I * h = (TH2I*)PHOSSupply->GetPHOSBadChannelStatusMap(mod);
1510 AliInfo(Form(
"using bad map for module %d with nch=%f\n",mod,h->Integral()));
1518 for(
Int_t iCell=0;iCell<nMaxCellsPHOS;iCell++){
1519 fGeomPHOS->AbsToRelNumbering(iCell,relid);
1521 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
1544 if(!mcEvent)
return kFALSE;
1545 if(!particle)
return kFALSE;
1547 if (particle->GetPdgCode() == 22){
1553 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 22){
1565 if(!mcEvent)
return kFALSE;
1566 if(!particle)
return kFALSE;
1568 if (TMath::Abs(particle->GetPdgCode()) == 11){
1574 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 11){
1586 if(!aodmcArray)
return kFALSE;
1587 if(!particle)
return kFALSE;
1589 if (TMath::Abs(particle->GetPdgCode()) == 11){
1594 if(particle->GetMother() >-1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 11){
1606 if(!aodmcArray)
return kFALSE;
1607 if(!particle)
return kFALSE;
1609 if (particle->GetPdgCode() == 22){
1613 if(particle->GetMother() > -1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 22){
1638 cluster->GetPosition(clusPos);
1639 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
1640 Double_t etaCluster = clusterVector.Eta();
1641 Double_t phiCluster = clusterVector.Phi();
1642 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
1660 AliVCaloCells* cells = NULL;
1662 if(cluster->IsEMCAL()){
1663 cells =
event->GetEMCALCells();
1664 }
else if(cluster->IsPHOS()){
1665 cells =
event->GetPHOSCells();
1668 Int_t nCellCluster = cluster->GetNCells();
1669 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
1692 Bool_t failedM02 = kFALSE;
1700 if( nLM < fMinNLM || nLM >
fMaxNLM )
1719 if ( !( failed || failedM02 ) ){
1743 if( nLM < fMinNLM || nLM >
fMaxNLM ) {
1752 if( cluster->GetM02()<
fMinM02 || cluster->GetM02() >
fMaxM02 ) {
1767 if( cluster->GetM20()<
fMinM20 || cluster->GetM20() >
fMaxM20 ) {
1792 AliError(
"Task needs AOD or ESD event, returning");
1807 Int_t classification = -1;
1808 Long_t leadMCLabel = -1;
1810 leadMCLabel = ((AliESDCaloCluster*)cluster)->GetLabel();
1812 leadMCLabel = ((AliAODCaloCluster*)cluster)->GetLabel();
1818 if (classification == 5 )
1820 if (classification == 7 )
1822 if (classification == 4)
1824 if (classification == 6){
1826 if (cluster->E() <= 20.)
1828 if (cluster->E() > 20 && cluster->E() <= 50.)
1830 if (cluster->E() > 50.)
1833 if (classification == 0 || classification == 1)
1835 if (classification == 1)
1837 if (classification == 2 || classification == 3)
1839 if ( classification == 3)
1842 Int_t nlabelsMatchedTracks = 0;
1848 if (classification < 4 && classification > -1)
1855 if (cluster->E() <= 20.)
1857 if (cluster->E() > 20 && cluster->E() <= 50.)
1859 if (cluster->E() > 50.)
1872 if (classification == 5 )
1874 if (classification == 4)
1876 if (classification == 0 || classification == 1)
1878 if ( classification == 1)
1880 if (classification == 2 || classification == 3)
1882 if ( classification == 3)
1884 if ( classification == 7)
1886 if ( classification == 6)
1889 vector<Int_t> labelsMatchedTracks;
1900 Bool_t foundLead = kFALSE;
1903 for (
Int_t i = 0; i < (
Int_t)labelsMatchedTracks.size(); i++){
1904 AliVTrack* currTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(labelsMatchedTracks.at(i)));
1905 eSum += currTrack->E();
1906 if (ptMax < currTrack->Pt()){
1907 ptMax = currTrack->Pt();
1908 eMax = currTrack->E();
1911 if (classification == 4 || classification == 5 || classification == 6 || classification == 7){
1912 Long_t mcLabelTrack = -1;
1914 mcLabelTrack = TMath::Abs(((AliESDtrack*)currTrack)->GetLabel());
1916 mcLabelTrack = TMath::Abs(((AliAODTrack*)currTrack)->GetLabel());
1917 if (mcLabelTrack!= -1 && mcLabelTrack == leadMCLabel){
1919 eLead = currTrack->E();
1924 if (classification == 5 || classification == 7 || classification == 6){
1926 if (classification == 5 || classification == 7){
1932 if (classification == 5)
1934 if (classification == 7)
1936 if (classification == 6)
1941 if (classification == 4){
1946 if (classification == 0 )
1948 if (classification == 1)
1950 if (classification == 2)
1952 if (classification == 3)
1955 labelsMatchedTracks.clear();
1999 Int_t nCellCluster = cluster->GetNCells();
2000 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
2001 Int_t cellID = cluster->GetCellAbsId(iCell);
2002 Double_t cellAmp = cells->GetCellAmplitude(cellID);
2003 Double_t cellTime = cells->GetCellTime(cellID);
2017 if(cluster->IsEMCAL()){
2018 Int_t iSuperModule = -1;
2019 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2020 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
2024 }
else if(cluster->IsPHOS()){
2025 Int_t relId[4] = {0,0,0,0};
2026 fGeomPHOS = AliPHOSGeometry::GetInstance();
2027 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
2044 AliVCaloCells* cells = 0x0;
2047 Int_t* nCellsBigger100MeV;
2048 Int_t* nCellsBigger1500MeV;
2053 Int_t nModulesStart = 0;
2055 cells =
event->GetEMCALCells();
2056 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2057 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2059 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2060 if(
fClusterType == 3) {nModules = 8; nModulesStart = 12;}
2062 cells =
event->GetPHOSCells();
2063 fGeomPHOS = AliPHOSGeometry::GetInstance();
2064 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2067 AliError(Form(
"fExtendedMatchAndQA(%i):FillHistogramsExtendedMatchAndQA() not (yet) defined for cluster type (%i)",
fExtendedMatchAndQA,
fClusterType));
2070 nCellsBigger100MeV =
new Int_t[nModules];
2071 nCellsBigger1500MeV =
new Int_t[nModules];
2072 EnergyOfMod =
new Double_t[nModules];
2074 for(
Int_t iModule=0;iModule<nModules;iModule++){nCellsBigger100MeV[iModule]=0;nCellsBigger1500MeV[iModule]=0;EnergyOfMod[iModule]=0;}
2076 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2081 Int_t cellMCLabel=0;
2084 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2085 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2087 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2091 Bool_t doBadCell = kTRUE;
2093 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2094 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2096 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2098 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2099 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2111 if(iBadCell > 0)
continue;
2113 if(cellAmplitude > 0.1) nCellsBigger100MeV[nMod-nModulesStart]++;
2114 if(cellAmplitude > 1.5) nCellsBigger1500MeV[nMod-nModulesStart]++;
2115 if(cellAmplitude > 0.05) EnergyOfMod[nMod-nModulesStart]+=cellAmplitude;
2123 for(
Int_t iModule=0;iModule<nModules;iModule++){
2129 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2130 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2131 delete[] EnergyOfMod;EnergyOfMod=0x0;
2135 TClonesArray * arrClustersExtQA = NULL;
2137 nclus =
event->GetNumberOfCaloClusters();
2139 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2140 if(!arrClustersExtQA)
2141 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2142 nclus = arrClustersExtQA->GetEntries();
2144 AliVCluster* cluster = 0x0;
2145 AliVCluster* clusterMatched = 0x0;
2146 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2147 if(event->IsA()==AliESDEvent::Class()){
2148 if(arrClustersExtQA)
2149 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2151 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2152 }
else if(event->IsA()==AliAODEvent::Class()){
2153 if(arrClustersExtQA)
2154 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2156 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2160 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2163 cluster->GetPosition(clusPos);
2164 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2165 Double_t etaCluster = clusterVector.Eta();
2166 Double_t phiCluster = clusterVector.Phi();
2167 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2171 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2173 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2179 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2180 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2182 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2185 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2187 Int_t largestCellicol = -1, largestCellirow = -1;
2189 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2191 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2193 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2194 if(event->IsA()==AliESDEvent::Class()){
2195 if(arrClustersExtQA)
2196 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2198 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2199 }
else if(event->IsA()==AliAODEvent::Class()){
2200 if(arrClustersExtQA)
2201 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2203 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2207 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2210 clusterMatched->GetPosition(clusPos2);
2211 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2212 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2213 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2214 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2218 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2219 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2220 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2225 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2226 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2227 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2229 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2234 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2236 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2238 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2244 Int_t rowdiff = -100;
2245 Int_t coldiff = -100;
2246 Bool_t calculatedDiff = kFALSE;
2248 Int_t ClusID = largestCelliMod/2;
2249 Int_t matchClusID = matched_largestCelliMod/2;
2251 if( matched_largestCelliMod == largestCelliMod){
2252 rowdiff = largestCellirow - matched_largestCellirow;
2253 coldiff = largestCellicol - matched_largestCellicol;
2254 calculatedDiff = kTRUE;
2255 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2256 if(matched_largestCelliMod%2){
2257 matched_largestCelliMod -= 1;
2258 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2260 matched_largestCelliMod += 1;
2261 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2264 if( matched_largestCelliMod == largestCelliMod ){
2265 rowdiff = largestCellirow - matched_largestCellirow;
2266 coldiff = largestCellicol - matched_largestCellicol;
2267 calculatedDiff = kTRUE;
2274 if( calculatedDiff ){
2275 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2287 delete clusterMatched;
2301 const Int_t nc = cluster->GetNCells();
2303 Int_t absCellIdList[nc];
2314 const Int_t nCells = cluster->GetNCells();
2315 AliVCaloCells* cells = NULL;
2318 cells =
event->GetEMCALCells();
2320 cells =
event->GetPHOSCells();
2326 Int_t iCellMax = -1;
2328 if (nCells < 2)
return idMax;
2329 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2330 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2331 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2332 idMax = cluster->GetCellsAbsId()[iCell];
2338 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2339 if (iCell == iCellMax)
continue;
2340 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2341 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2342 idMax2 = cluster->GetCellsAbsId()[iCell];
2352 const Int_t nCells = cluster->GetNCells();
2353 AliVCaloCells* cells = NULL;
2356 cells =
event->GetEMCALCells();
2358 cells =
event->GetPHOSCells();
2364 if (nCells < 1)
return idMax;
2365 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2366 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2367 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2368 eMax = cells->GetCellAmplitude(cellAbsID);
2383 Int_t absCellId1 = -1;
2384 Int_t absCellId2 = -1;
2385 const Int_t nCells = cluster->GetNCells();
2386 AliVCaloCells* cells = NULL;
2389 cells =
event->GetEMCALCells();
2391 cells =
event->GetPHOSCells();
2397 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2398 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2402 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2403 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2404 idMax = absCellIdList[iCell];
2409 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2411 if (absCellIdList[iCell] >= 0){
2413 absCellId1 = cluster->GetCellsAbsId()[iCell];
2414 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2417 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2419 if (absCellIdList[iCell] == -1)
continue;
2421 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2424 if (absCellId2 == -1)
continue;
2425 if (absCellId1 == absCellId2)
continue;
2428 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2436 absCellIdList[iCellN] = -1;
2438 absCellIdList[iCell] = -1;
2440 absCellIdList[iCell] = -1;
2442 absCellIdList[iCellN] = -1;
2450 Int_t nMaximaNew = 0;
2451 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2453 if (absCellIdList[iCell] > -1){
2454 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2457 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2458 maxEList[nMaximaNew] = en;
2465 if (nMaximaNew == 0){
2468 absCellIdList[0] = idMax;
2479 Bool_t areNeighbours = kFALSE ;
2481 Int_t irow1 = -1, icol1 = -1;
2482 Int_t irow2 = -1, icol2 = -1;
2484 Int_t rowdiff = 0, coldiff = 0;
2490 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2495 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2496 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2499 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2500 coldiff = TMath::Abs( icol1 - icol2 ) ;
2503 if ((coldiff + rowdiff == 1 ))
2504 areNeighbours = kTRUE ;
2506 return areNeighbours;
2516 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2517 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2519 fGeomPHOS = AliPHOSGeometry::GetInstance();
2520 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2523 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2525 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2526 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2529 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2543 AliVCluster* cluster,
2546 AliAODCaloCluster* cluster1,
2547 AliAODCaloCluster* cluster2){
2549 const Int_t ncells = cluster->GetNCells();
2550 Int_t absCellIdList[ncells];
2552 AliVCaloCells* cells = NULL;
2554 cells =
event->GetEMCALCells();
2556 cells =
event->GetPHOSCells();
2562 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2563 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2564 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2575 absCellIdList1[0] = absCellId1 ;
2576 fracList1 [0] = 1. ;
2578 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2582 absCellIdList2[0] = absCellId2 ;
2583 fracList2 [0] = 1. ;
2585 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2590 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2591 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2592 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2596 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2598 Int_t absId = absCellIdList[iCell];
2599 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2601 Float_t ecell = cells->GetCellAmplitude(absId);
2603 absCellIdList1[ncells1] = absId;
2605 fracList1[ncells1] = shareFraction1;
2606 e1 += ecell*shareFraction1;
2608 fracList1[ncells1] = 1.;
2615 absCellIdList2[ncells2]= absId;
2618 fracList2[ncells2] = shareFraction2;
2619 e2 += ecell*shareFraction2;
2621 fracList2[ncells2] = 1.;
2632 cluster1->SetNCells(ncells1);
2633 cluster2->SetNCells(ncells2);
2635 cluster1->SetCellsAbsId(absCellIdList1);
2636 cluster2->SetCellsAbsId(absCellIdList2);
2638 cluster1->SetCellsAmplitudeFraction(fracList1);
2639 cluster2->SetCellsAmplitudeFraction(fracList2);
2666 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2668 Int_t largestCellicol = -1, largestCellirow = -1;
2669 Int_t rowdiff = 0, coldiff = 0;
2672 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2674 Int_t nMinRows = 0, nMaxRows = 0;
2675 Int_t nMinCols = 0, nMaxCols = 0;
2677 Bool_t checkNextSM = kFALSE;
2680 nMinRows = largestCellirow - distanceForLoop;
2681 nMaxRows = largestCellirow + distanceForLoop;
2682 if(nMinRows < 0) nMinRows = 0;
2683 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2685 nMinCols = largestCellicol - distanceForLoop;
2686 nMaxCols = largestCellicol + distanceForLoop;
2688 if(largestCelliMod%2){
2691 checkNextSM = kTRUE;
2693 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2695 if(nMinCols < 0) nMinCols = 0;
2696 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2697 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2698 checkNextSM = kTRUE;
2702 nMinRows = largestCellirow - distanceForLoop;
2703 nMaxRows = largestCellirow + distanceForLoop;
2704 if(nMinRows < 0) nMinRows = 0;
2705 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2707 nMinCols = largestCellicol - distanceForLoop;
2708 nMaxCols = largestCellicol + distanceForLoop;
2709 if(nMinCols < 0) nMinCols = 0;
2722 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2724 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2726 if(irow == largestCellirow && icol == largestCellicol)
continue;
2735 if(iBadCell==0)
continue;
2737 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2738 coldiff = TMath::Abs( largestCellicol - icol ) ;
2754 if(largestCelliMod%2){
2755 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2756 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2758 largestCelliMod -= 1;
2759 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2762 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2764 largestCelliMod += 1;
2765 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2773 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2775 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2778 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2784 if(iBadCell==0)
continue;
2786 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2787 coldiff = TMath::Abs( largestCellicol - icol ) ;
2817 cluster->GetPosition(clusPos);
2818 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2819 Double_t etaCluster = clusterVector.Eta();
2820 Double_t phiCluster = clusterVector.Phi();
2821 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2834 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
2873 cluster->GetPosition(clusPos);
2874 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2875 Double_t etaCluster = clusterVector.Eta();
2876 Double_t phiCluster = clusterVector.Phi();
2877 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2890 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
2932 AliError(
"Task needs AOD or ESD event, returning");
2937 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
2939 Float_t clusterPosition[3] = {0,0,0};
2940 cluster->GetPosition(clusterPosition);
2941 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
2947 for (
Int_t i = 0;i < 2;i++){
2949 AliVTrack *inTrack = 0x0;
2951 if(tracklabel > event->GetNumberOfTracks() )
continue;
2952 inTrack = esdev->GetTrack(tracklabel);
2955 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
2957 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
2958 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
2960 if(inTrack->GetID() == tracklabel) {
2972 Float_t dR2 = dPhi*dPhi + dEta*dEta;
2979 if(inTrack->Charge() > 0) {
2995 Int_t clusterMCLabel = cluster->GetLabel();
2996 Int_t convPhotonDaughterLabel = -1;
2997 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
2999 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3008 Bool_t match_dPhi = kFALSE;
3013 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3014 else match_dEta = kFALSE;
3016 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3017 else match_dPhi = kFALSE;
3020 if(match_dEta && match_dPhi){
3054 TClonesArray * arrClustersMatch = NULL;
3056 nClus =
event->GetNumberOfCaloClusters();
3058 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3059 if(!arrClustersMatch)
3060 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3061 nClus = arrClustersMatch->GetEntries();
3066 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3067 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3070 fGeomPHOS = AliPHOSGeometry::GetInstance();
3071 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
3080 AliError(
"Task needs AOD or ESD event, returning");
3086 AliESDtrackCuts *EsdTrackCuts = 0x0;
3087 if(!isEMCalOnly && esdev){
3089 Int_t runNumber =
event->GetRunNumber();
3091 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3092 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3094 }
else if (runNumber>=209122){
3097 EsdTrackCuts =
new AliESDtrackCuts();
3098 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3099 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3100 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3101 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3102 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3103 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3105 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3106 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3107 AliESDtrackCuts::kAny);
3108 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3109 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3110 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3111 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3112 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3113 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3116 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3118 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3119 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3120 EsdTrackCuts->SetPtRange(0.15);
3125 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3126 AliVTrack *inTrack = 0x0;
3128 inTrack = esdev->GetTrack(itr);
3129 if(!inTrack)
continue;
3130 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3132 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3134 const AliExternalTrackParam *in = esdt->GetInnerParam();
3135 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3137 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3138 if(!inTrack)
continue;
3139 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3141 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3142 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3143 if(aodt->Pt()<0.15)
continue;
3148 Float_t clsPos[3] = {0.,0.,0.};
3149 for(
Int_t iclus=0;iclus < nClus;iclus++){
3150 AliVCluster * cluster = NULL;
3151 if(arrClustersMatch){
3153 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3155 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3157 cluster =
event->GetCaloCluster(iclus);
3161 if(arrClustersMatch)
delete cluster;
3166 if(arrClustersMatch)
delete cluster;
3169 cluster->GetPosition(clsPos);
3170 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3171 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3180 if(inTrack->Charge() > 0) {
3199 Bool_t match_dPhi = kFALSE;
3205 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3206 else match_dEta = kFALSE;
3208 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3209 else match_dPhi = kFALSE;
3212 if(match_dEta && match_dPhi){
3219 if(arrClustersMatch)
delete cluster;
3221 }
else if(isEMCalOnly){
3232 if(arrClustersMatch)
delete cluster;
3236 delete EsdTrackCuts;
3245 vector<Int_t>::iterator it;
3268 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3269 if(analysisCutSelection.Length()!=
kNCuts) {
3270 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3273 if(!analysisCutSelection.IsAlnum()){
3274 AliError(
"Cut selection is not alphanumeric");
3278 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3279 analysisCutSelectionLowerCase.ToLower();
3280 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3281 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3306 }
else return kFALSE;
3313 }
else return kFALSE;
3320 }
else return kFALSE;
3327 }
else return kFALSE;
3334 }
else return kFALSE;
3341 }
else return kFALSE;
3348 }
else return kFALSE;
3355 }
else return kFALSE;
3362 }
else return kFALSE;
3369 }
else return kFALSE;
3376 }
else return kFALSE;
3383 }
else return kFALSE;
3390 }
else return kFALSE;
3397 }
else return kFALSE;
3404 }
else return kFALSE;
3411 }
else return kFALSE;
3418 }
else return kFALSE;
3425 }
else return kFALSE;
3432 }
else return kFALSE;
3435 AliError(
"Cut id out of range");
3439 AliError(
"Cut id %d not recognized");
3456 printf(
"\nCluster cutnumber \n %s", analysisCutSelection.Data());
3460 printf(
"Acceptance cuts: \n");
3461 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3462 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3463 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3464 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3469 printf(
"Cluster Quality cuts: \n");
3483 printf(
"NonLinearity Correction: \n");
3488 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3500 switch(clusterType){
3514 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3563 AliError(Form(
"MinEta Cut not defined %d",minEta));
3612 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3652 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3692 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3701 switch(distanceToBadChannel){
3739 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
3810 AliError(Form(
"Timing Cut not defined %d",timing));
3821 switch(trackMatching){
3868 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3871 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3877 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3880 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3886 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3889 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3895 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3898 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3904 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3907 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3913 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3916 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3921 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
3927 switch(trackMatching){
3955 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3958 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3964 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3967 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3973 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3976 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3981 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4043 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4116 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4158 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4210 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4252 AliError(Form(
"Min N cells Cut not defined %d",minNCells));
4419 AliError(Form(
"Max M02 Cut not defined %d",maxM02));
4432 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0955, 1.86e-3, 9.91 );
4434 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.524, 5.59e-3, 21.9 );
4440 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0, 1.86e-3, 9.91 );
4442 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.424, 5.59e-3, 21.9 );
4448 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.2, 1.86e-3, 9.91 );
4450 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.624, 5.59e-3, 21.9 );
4456 if( (0.27 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.4)
return 0.4;
4457 else return (0.27 + 0.0072 * TMath::Power(clusEnergy,2));
4459 if( (0.31 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4460 else return (0.31 + 0.0072 * TMath::Power(clusEnergy,2));
4462 if( (0.36 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4463 else return (0.36 + 0.0072 * TMath::Power(clusEnergy,2));
4465 if( (0.37 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4466 else return (0.37 + 0.0072 * TMath::Power(clusEnergy,2));
4468 if( (0.30 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4469 else return (0.30 + 0.0072 * TMath::Power(clusEnergy,2));
4471 if( (0.35 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4472 else return (0.35 + 0.0072 * TMath::Power(clusEnergy,2));
4474 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.39)
return 0.39;
4475 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4477 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4478 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4480 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4481 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4483 if( (0.32 + 0.0152 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4484 else return (0.32 + 0.0152 * TMath::Power(clusEnergy,2));
4486 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4487 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4489 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4490 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4492 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4493 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4495 if( (0.34 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4496 else return (0.34 + 0.0072 * TMath::Power(clusEnergy,2));
4498 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4499 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4501 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4502 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4505 AliError(Form(
"Max M02 for merged cluster Cut not defined %d",maxM02));
4518 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.3)
4519 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4523 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.27)
4524 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4528 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.25)
4529 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4533 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0.1, 0., 0. ) > 0.27)
4534 return FunctionM02(clusEnergy, 2.135, -0.245, 0.1, 0., 0. );
4538 if (
FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. ) > 0.27)
4539 return FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. );
4558 AliError(Form(
"Min M02 for merged cluster Cut not defined %d",minM02));
4593 AliError(Form(
"Min M02 not defined %d",minM02));
4624 AliError(Form(
"Min M20 Cut not defined %d",minM20));