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);
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-109);
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;
2126 for(
Int_t iModule=0;iModule<nModules;iModule++){
2132 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2133 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2134 delete[] EnergyOfMod;EnergyOfMod=0x0;
2138 TClonesArray * arrClustersExtQA = NULL;
2140 nclus =
event->GetNumberOfCaloClusters();
2142 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2143 if(!arrClustersExtQA)
2144 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2145 nclus = arrClustersExtQA->GetEntries();
2147 AliVCluster* cluster = 0x0;
2148 AliVCluster* clusterMatched = 0x0;
2149 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2150 if(event->IsA()==AliESDEvent::Class()){
2151 if(arrClustersExtQA)
2152 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2154 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2155 }
else if(event->IsA()==AliAODEvent::Class()){
2156 if(arrClustersExtQA)
2157 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2159 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2163 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2166 cluster->GetPosition(clusPos);
2167 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2168 Double_t etaCluster = clusterVector.Eta();
2169 Double_t phiCluster = clusterVector.Phi();
2170 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2174 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2176 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2182 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2183 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2185 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2188 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2190 Int_t largestCellicol = -1, largestCellirow = -1;
2192 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2194 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2196 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2197 if(event->IsA()==AliESDEvent::Class()){
2198 if(arrClustersExtQA)
2199 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2201 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2202 }
else if(event->IsA()==AliAODEvent::Class()){
2203 if(arrClustersExtQA)
2204 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2206 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2210 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2213 clusterMatched->GetPosition(clusPos2);
2214 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2215 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2216 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2217 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2221 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2222 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2223 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2228 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2229 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2230 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2232 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2237 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2239 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2241 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2247 Int_t rowdiff = -100;
2248 Int_t coldiff = -100;
2249 Bool_t calculatedDiff = kFALSE;
2251 Int_t ClusID = largestCelliMod/2;
2252 Int_t matchClusID = matched_largestCelliMod/2;
2254 if( matched_largestCelliMod == largestCelliMod){
2255 rowdiff = largestCellirow - matched_largestCellirow;
2256 coldiff = largestCellicol - matched_largestCellicol;
2257 calculatedDiff = kTRUE;
2258 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2259 if(matched_largestCelliMod%2){
2260 matched_largestCelliMod -= 1;
2261 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2263 matched_largestCelliMod += 1;
2264 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2267 if( matched_largestCelliMod == largestCelliMod ){
2268 rowdiff = largestCellirow - matched_largestCellirow;
2269 coldiff = largestCellicol - matched_largestCellicol;
2270 calculatedDiff = kTRUE;
2277 if( calculatedDiff ){
2278 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2290 delete clusterMatched;
2304 const Int_t nc = cluster->GetNCells();
2306 Int_t absCellIdList[nc];
2317 const Int_t nCells = cluster->GetNCells();
2318 AliVCaloCells* cells = NULL;
2321 cells =
event->GetEMCALCells();
2323 cells =
event->GetPHOSCells();
2329 Int_t iCellMax = -1;
2331 if (nCells < 2)
return idMax;
2332 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2333 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2334 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2335 idMax = cluster->GetCellsAbsId()[iCell];
2341 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2342 if (iCell == iCellMax)
continue;
2343 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2344 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2345 idMax2 = cluster->GetCellsAbsId()[iCell];
2355 const Int_t nCells = cluster->GetNCells();
2356 AliVCaloCells* cells = NULL;
2359 cells =
event->GetEMCALCells();
2361 cells =
event->GetPHOSCells();
2367 if (nCells < 1)
return idMax;
2368 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2369 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2370 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2371 eMax = cells->GetCellAmplitude(cellAbsID);
2386 Int_t absCellId1 = -1;
2387 Int_t absCellId2 = -1;
2388 const Int_t nCells = cluster->GetNCells();
2389 AliVCaloCells* cells = NULL;
2392 cells =
event->GetEMCALCells();
2394 cells =
event->GetPHOSCells();
2400 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2401 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2405 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2406 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2407 idMax = absCellIdList[iCell];
2412 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2414 if (absCellIdList[iCell] >= 0){
2416 absCellId1 = cluster->GetCellsAbsId()[iCell];
2417 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2420 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2422 if (absCellIdList[iCell] == -1)
continue;
2424 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2427 if (absCellId2 == -1)
continue;
2428 if (absCellId1 == absCellId2)
continue;
2431 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2439 absCellIdList[iCellN] = -1;
2441 absCellIdList[iCell] = -1;
2443 absCellIdList[iCell] = -1;
2445 absCellIdList[iCellN] = -1;
2453 Int_t nMaximaNew = 0;
2454 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2456 if (absCellIdList[iCell] > -1){
2457 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2460 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2461 maxEList[nMaximaNew] = en;
2468 if (nMaximaNew == 0){
2471 absCellIdList[0] = idMax;
2482 Bool_t areNeighbours = kFALSE ;
2484 Int_t irow1 = -1, icol1 = -1;
2485 Int_t irow2 = -1, icol2 = -1;
2487 Int_t rowdiff = 0, coldiff = 0;
2493 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2498 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2499 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2502 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2503 coldiff = TMath::Abs( icol1 - icol2 ) ;
2506 if ((coldiff + rowdiff == 1 ))
2507 areNeighbours = kTRUE ;
2509 return areNeighbours;
2519 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2520 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2522 fGeomPHOS = AliPHOSGeometry::GetInstance();
2523 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2526 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2528 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2529 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2532 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2546 AliVCluster* cluster,
2549 AliAODCaloCluster* cluster1,
2550 AliAODCaloCluster* cluster2){
2552 const Int_t ncells = cluster->GetNCells();
2553 Int_t absCellIdList[ncells];
2555 AliVCaloCells* cells = NULL;
2557 cells =
event->GetEMCALCells();
2559 cells =
event->GetPHOSCells();
2565 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2566 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2567 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2578 absCellIdList1[0] = absCellId1 ;
2579 fracList1 [0] = 1. ;
2581 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2585 absCellIdList2[0] = absCellId2 ;
2586 fracList2 [0] = 1. ;
2588 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2593 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2594 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2595 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2599 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2601 Int_t absId = absCellIdList[iCell];
2602 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2604 Float_t ecell = cells->GetCellAmplitude(absId);
2606 absCellIdList1[ncells1] = absId;
2608 fracList1[ncells1] = shareFraction1;
2609 e1 += ecell*shareFraction1;
2611 fracList1[ncells1] = 1.;
2618 absCellIdList2[ncells2]= absId;
2621 fracList2[ncells2] = shareFraction2;
2622 e2 += ecell*shareFraction2;
2624 fracList2[ncells2] = 1.;
2635 cluster1->SetNCells(ncells1);
2636 cluster2->SetNCells(ncells2);
2638 cluster1->SetCellsAbsId(absCellIdList1);
2639 cluster2->SetCellsAbsId(absCellIdList2);
2641 cluster1->SetCellsAmplitudeFraction(fracList1);
2642 cluster2->SetCellsAmplitudeFraction(fracList2);
2669 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2671 Int_t largestCellicol = -1, largestCellirow = -1;
2672 Int_t rowdiff = 0, coldiff = 0;
2675 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2677 Int_t nMinRows = 0, nMaxRows = 0;
2678 Int_t nMinCols = 0, nMaxCols = 0;
2680 Bool_t checkNextSM = kFALSE;
2683 nMinRows = largestCellirow - distanceForLoop;
2684 nMaxRows = largestCellirow + distanceForLoop;
2685 if(nMinRows < 0) nMinRows = 0;
2686 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2688 nMinCols = largestCellicol - distanceForLoop;
2689 nMaxCols = largestCellicol + distanceForLoop;
2691 if(largestCelliMod%2){
2694 checkNextSM = kTRUE;
2696 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2698 if(nMinCols < 0) nMinCols = 0;
2699 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2700 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2701 checkNextSM = kTRUE;
2705 nMinRows = largestCellirow - distanceForLoop;
2706 nMaxRows = largestCellirow + distanceForLoop;
2707 if(nMinRows < 0) nMinRows = 0;
2708 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2710 nMinCols = largestCellicol - distanceForLoop;
2711 nMaxCols = largestCellicol + distanceForLoop;
2712 if(nMinCols < 0) nMinCols = 0;
2725 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2727 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2729 if(irow == largestCellirow && icol == largestCellicol)
continue;
2738 if(iBadCell==0)
continue;
2740 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2741 coldiff = TMath::Abs( largestCellicol - icol ) ;
2757 if(largestCelliMod%2){
2758 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2759 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2761 largestCelliMod -= 1;
2762 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2765 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2767 largestCelliMod += 1;
2768 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2776 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2778 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2781 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2787 if(iBadCell==0)
continue;
2789 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2790 coldiff = TMath::Abs( largestCellicol - icol ) ;
2820 cluster->GetPosition(clusPos);
2821 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2822 Double_t etaCluster = clusterVector.Eta();
2823 Double_t phiCluster = clusterVector.Phi();
2824 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2837 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
2876 cluster->GetPosition(clusPos);
2877 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2878 Double_t etaCluster = clusterVector.Eta();
2879 Double_t phiCluster = clusterVector.Phi();
2880 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2893 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
2935 AliError(
"Task needs AOD or ESD event, returning");
2940 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
2942 Float_t clusterPosition[3] = {0,0,0};
2943 cluster->GetPosition(clusterPosition);
2944 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
2950 for (
Int_t i = 0;i < 2;i++){
2952 AliVTrack *inTrack = 0x0;
2954 if(tracklabel > event->GetNumberOfTracks() )
continue;
2955 inTrack = esdev->GetTrack(tracklabel);
2958 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
2960 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
2961 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
2963 if(inTrack->GetID() == tracklabel) {
2975 Float_t dR2 = dPhi*dPhi + dEta*dEta;
2982 if(inTrack->Charge() > 0) {
2998 Int_t clusterMCLabel = cluster->GetLabel();
2999 Int_t convPhotonDaughterLabel = -1;
3000 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
3002 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3011 Bool_t match_dPhi = kFALSE;
3016 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3017 else match_dEta = kFALSE;
3019 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3020 else match_dPhi = kFALSE;
3023 if(match_dEta && match_dPhi){
3057 TClonesArray * arrClustersMatch = NULL;
3059 nClus =
event->GetNumberOfCaloClusters();
3061 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3062 if(!arrClustersMatch)
3063 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3064 nClus = arrClustersMatch->GetEntries();
3069 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3070 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3073 fGeomPHOS = AliPHOSGeometry::GetInstance();
3074 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
3083 AliError(
"Task needs AOD or ESD event, returning");
3089 AliESDtrackCuts *EsdTrackCuts = 0x0;
3090 if(!isEMCalOnly && esdev){
3092 Int_t runNumber =
event->GetRunNumber();
3094 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3095 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3097 }
else if (runNumber>=209122){
3100 EsdTrackCuts =
new AliESDtrackCuts();
3101 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3102 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3103 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3104 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3105 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3106 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3108 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3109 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3110 AliESDtrackCuts::kAny);
3111 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3112 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3113 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3114 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3115 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3116 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3119 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3121 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3122 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3123 EsdTrackCuts->SetPtRange(0.15);
3128 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3129 AliVTrack *inTrack = 0x0;
3131 inTrack = esdev->GetTrack(itr);
3132 if(!inTrack)
continue;
3133 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3135 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3137 const AliExternalTrackParam *in = esdt->GetInnerParam();
3138 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3140 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3141 if(!inTrack)
continue;
3142 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3144 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3145 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3146 if(aodt->Pt()<0.15)
continue;
3151 Float_t clsPos[3] = {0.,0.,0.};
3152 for(
Int_t iclus=0;iclus < nClus;iclus++){
3153 AliVCluster * cluster = NULL;
3154 if(arrClustersMatch){
3156 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3158 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3160 cluster =
event->GetCaloCluster(iclus);
3164 if(arrClustersMatch)
delete cluster;
3169 if(arrClustersMatch)
delete cluster;
3172 cluster->GetPosition(clsPos);
3173 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3174 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3183 if(inTrack->Charge() > 0) {
3202 Bool_t match_dPhi = kFALSE;
3208 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3209 else match_dEta = kFALSE;
3211 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3212 else match_dPhi = kFALSE;
3215 if(match_dEta && match_dPhi){
3222 if(arrClustersMatch)
delete cluster;
3224 }
else if(isEMCalOnly){
3235 if(arrClustersMatch)
delete cluster;
3239 delete EsdTrackCuts;
3248 vector<Int_t>::iterator it;
3271 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3272 if(analysisCutSelection.Length()!=
kNCuts) {
3273 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3276 if(!analysisCutSelection.IsAlnum()){
3277 AliError(
"Cut selection is not alphanumeric");
3281 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3282 analysisCutSelectionLowerCase.ToLower();
3283 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3284 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3309 }
else return kFALSE;
3316 }
else return kFALSE;
3323 }
else return kFALSE;
3330 }
else return kFALSE;
3337 }
else return kFALSE;
3344 }
else return kFALSE;
3351 }
else return kFALSE;
3358 }
else return kFALSE;
3365 }
else return kFALSE;
3372 }
else return kFALSE;
3379 }
else return kFALSE;
3386 }
else return kFALSE;
3393 }
else return kFALSE;
3400 }
else return kFALSE;
3407 }
else return kFALSE;
3414 }
else return kFALSE;
3421 }
else return kFALSE;
3428 }
else return kFALSE;
3435 }
else return kFALSE;
3438 AliError(
"Cut id out of range");
3442 AliError(
"Cut id %d not recognized");
3459 printf(
"\nCluster cutnumber \n %s", analysisCutSelection.Data());
3463 printf(
"Acceptance cuts: \n");
3464 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3465 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3466 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3467 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3472 printf(
"Cluster Quality cuts: \n");
3486 printf(
"NonLinearity Correction: \n");
3491 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3503 switch(clusterType){
3517 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3566 AliError(Form(
"MinEta Cut not defined %d",minEta));
3615 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3655 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3695 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3704 switch(distanceToBadChannel){
3742 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
3813 AliError(Form(
"Timing Cut not defined %d",timing));
3824 switch(trackMatching){
3871 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3874 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3880 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3883 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3889 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3892 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3898 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3901 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3907 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3910 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3916 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3919 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3924 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
3930 switch(trackMatching){
3958 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3961 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3967 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3970 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3976 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3979 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3984 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4046 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4119 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4161 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4213 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4255 AliError(Form(
"Min N cells Cut not defined %d",minNCells));
4422 AliError(Form(
"Max M02 Cut not defined %d",maxM02));
4435 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0955, 1.86e-3, 9.91 );
4437 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.524, 5.59e-3, 21.9 );
4443 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0, 1.86e-3, 9.91 );
4445 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.424, 5.59e-3, 21.9 );
4451 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.2, 1.86e-3, 9.91 );
4453 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.624, 5.59e-3, 21.9 );
4459 if( (0.27 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.4)
return 0.4;
4460 else return (0.27 + 0.0072 * TMath::Power(clusEnergy,2));
4462 if( (0.31 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4463 else return (0.31 + 0.0072 * TMath::Power(clusEnergy,2));
4465 if( (0.36 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4466 else return (0.36 + 0.0072 * TMath::Power(clusEnergy,2));
4468 if( (0.37 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4469 else return (0.37 + 0.0072 * TMath::Power(clusEnergy,2));
4471 if( (0.30 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4472 else return (0.30 + 0.0072 * TMath::Power(clusEnergy,2));
4474 if( (0.35 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4475 else return (0.35 + 0.0072 * TMath::Power(clusEnergy,2));
4477 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.39)
return 0.39;
4478 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4480 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4481 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4483 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4484 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4486 if( (0.32 + 0.0152 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4487 else return (0.32 + 0.0152 * TMath::Power(clusEnergy,2));
4489 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4490 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4492 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4493 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4495 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4496 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4498 if( (0.34 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4499 else return (0.34 + 0.0072 * TMath::Power(clusEnergy,2));
4501 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4502 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4504 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4505 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4508 AliError(Form(
"Max M02 for merged cluster Cut not defined %d",maxM02));
4521 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.3)
4522 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4526 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.27)
4527 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4531 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.25)
4532 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4536 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0.1, 0., 0. ) > 0.27)
4537 return FunctionM02(clusEnergy, 2.135, -0.245, 0.1, 0., 0. );
4541 if (
FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. ) > 0.27)
4542 return FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. );
4561 AliError(Form(
"Min M02 for merged cluster Cut not defined %d",minM02));
4596 AliError(Form(
"Min M02 not defined %d",minM02));
4627 AliError(Form(
"Min M20 Cut not defined %d",minM20));