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);
778 fBadChannels =
new TProfile(
"EMCal - Bad Channels",
"EMCal - Bad Channels",nMaxCellsEMCAL,-0.5,nMaxCellsEMCAL-0.5);
784 fBadChannels =
new TProfile(
"PHOS - Bad Channels",
"PHOS - Bad Channels",nMaxCellsPHOS,-0.5,nMaxCellsPHOS-0.5);
788 Int_t nStartCellDCAL = 12288;
790 fBadChannels =
new TProfile(
"DCAL - Bad Channels",
"DCAL - Bad Channels",nMaxCellsDCAL,nStartCellDCAL-0.5,nStartCellDCAL+nMaxCellsDCAL-0.5);
841 nMaxCellsEMCAL, 0, nMaxCellsEMCAL);
850 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
855 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
860 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
866 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
872 nBinsClusterE, arrClusEBinning, 200, -500, 500);
877 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
921 nMaxCellsPHOS,0,nMaxCellsPHOS);
930 nMaxCellsPHOS, 0, nMaxCellsPHOS);
935 nMaxCellsPHOS, 0, nMaxCellsPHOS);
940 nMaxCellsPHOS,0,nMaxCellsPHOS);
946 nMaxCellsPHOS, 0, nMaxCellsPHOS);
952 nBinsClusterE, arrClusEBinning, 200, -500, 500);
957 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
963 Int_t nModulesStart = 12;
964 Int_t nCellsStart = 12288;
1005 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1010 nMaxCellsDCAL+nCellsStart);
1015 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1020 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1025 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1031 nMaxCellsDCAL, nCellsStart, nMaxCellsDCAL+nCellsStart);
1037 nBinsClusterE, arrClusEBinning, 200, -500, 500);
1042 nBinsClusterECell, arrClusEBinningCoarse, 200, -500, 500);
1052 const Int_t nEtaBins = 300;
1053 const Int_t nPhiBins = 300;
1054 const Float_t EtaRange[2] = {-0.3, 0.3};
1055 const Float_t PhiRange[2] = {-0.3, 0.3};
1083 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1088 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1093 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1098 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1103 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1108 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1113 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1118 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1123 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1128 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1133 nBinsClusterEMod, arrClusEBinning);
1138 nBinsClusterEMod, arrClusEBinning);
1143 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1148 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1153 nBinsClusterEMod, arrClusEBinning);
1160 nBinsClusterEMod, arrClusEBinning);
1165 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1170 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsClusterEMod, arrClusEBinning);
1218 const Int_t nEmcalEtaBins = 96;
1219 const Int_t nEmcalPhiBins = 124;
1220 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};
1221 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};
1276 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1281 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1286 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1291 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1296 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1301 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1306 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1312 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1317 nBinsClusterE, arrClusEBinning, 20, -0.5, 19.5);
1323 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1328 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1357 const Int_t nEmcalEtaBins = 96;
1358 const Int_t nEmcalPhiBins = 124;
1359 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};
1360 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};
1367 const Int_t nPhosEtaBins = 56;
1368 const Int_t nPhosPhiBins = 192;
1369 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
1370 const Float_t PhosPhiRange[2] = {4.5, 5.6};
1373 nPhosEtaBins, PhosEtaRange[0], PhosEtaRange[1]);
1379 const Int_t nDcalEtaBins = 96;
1380 const Int_t nDcalPhiBins = 124;
1392 nBinsClusterE, arrClusEBinning, 50, 0, 50);
1397 nBinsClusterE, arrClusEBinning, nBinsClusterE, arrClusEBinning);
1412 TH1::AddDirectory(kTRUE);
1420 AliTender* alitender=0x0;
1423 if(event->IsA()==AliESDEvent::Class()){
1424 alitender = (AliTender*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliTender");
1426 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1428 }
else if( event->IsA()==AliAODEvent::Class()){
1429 emcaltender = (
AliEmcalTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalTenderTask");
1431 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1434 TIter next(alitender->GetSupplies());
1435 AliTenderSupply *supply;
1436 while ((supply=(AliTenderSupply*)next()))
if(supply->IsA()==AliEMCALTenderSupply::Class())
break;
1437 fEMCALRecUtils = ((AliEMCALTenderSupply*)supply)->GetRecoUtils();
1439 }
else if(emcaltender){
1442 }
else if(emcalCorrTask){
1444 if(emcalCorrComponent){
1451 fGeomEMCAL = AliEMCALGeometry::GetInstance();
1452 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
1460 Int_t nMinCellsDCAL = 12288;
1462 Int_t nMaxCells = 0;
1463 Int_t nMinCells = 0;
1465 nMaxCells = nMaxCellsEMCAL;
1468 nMaxCells = nMaxCellsDCAL;
1469 nMinCells = nMinCellsDCAL;
1473 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
1476 for(
Int_t iCell=nMinCells;iCell<nMaxCells;iCell++){
1477 fGeomEMCAL->GetCellIndex(iCell,imod,iTower,iIphi,iIeta);
1479 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
1494 fGeomPHOS = AliPHOSGeometry::GetInstance();
1495 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
1500 AliPHOSTenderTask* aliphostender = (AliPHOSTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"PHOSTenderTask");
1501 AliPHOSTenderSupply *PHOSSupply =((AliPHOSTenderSupply*) aliphostender->GetPHOSTenderSupply()) ;
1504 AliError(Form(
"Can not find PHOSTenderSupply in run %d. No bad channel map could be found for QA!\n",event->GetRunNumber())) ;
1507 AliInfo(
"Setting PHOS bad map from PHOSSupply \n") ;
1508 for(
Int_t mod=0;mod<nModules;mod++){
1509 TH2I * h = (TH2I*)PHOSSupply->GetPHOSBadChannelStatusMap(mod);
1512 AliInfo(Form(
"using bad map for module %d with nch=%f\n",mod,h->Integral()));
1520 for(
Int_t iCell=0;iCell<nMaxCellsPHOS;iCell++){
1521 fGeomPHOS->AbsToRelNumbering(iCell,relid);
1523 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
1546 if(!mcEvent)
return kFALSE;
1547 if(!particle)
return kFALSE;
1549 if (particle->GetPdgCode() == 22){
1555 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 22){
1567 if(!mcEvent)
return kFALSE;
1568 if(!particle)
return kFALSE;
1570 if (TMath::Abs(particle->GetPdgCode()) == 11){
1576 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 11){
1588 if(!aodmcArray)
return kFALSE;
1589 if(!particle)
return kFALSE;
1591 if (TMath::Abs(particle->GetPdgCode()) == 11){
1596 if(particle->GetMother() >-1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 11){
1608 if(!aodmcArray)
return kFALSE;
1609 if(!particle)
return kFALSE;
1611 if (particle->GetPdgCode() == 22){
1615 if(particle->GetMother() > -1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 22){
1640 cluster->GetPosition(clusPos);
1641 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
1642 Double_t etaCluster = clusterVector.Eta();
1643 Double_t phiCluster = clusterVector.Phi();
1644 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
1662 AliVCaloCells* cells = NULL;
1664 if(cluster->IsEMCAL()){
1665 cells =
event->GetEMCALCells();
1666 }
else if(cluster->IsPHOS()){
1667 cells =
event->GetPHOSCells();
1670 Int_t nCellCluster = cluster->GetNCells();
1671 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
1694 Bool_t failedM02 = kFALSE;
1702 if( nLM < fMinNLM || nLM >
fMaxNLM )
1721 if ( !( failed || failedM02 ) ){
1745 if( nLM < fMinNLM || nLM >
fMaxNLM ) {
1754 if( cluster->GetM02()<
fMinM02 || cluster->GetM02() >
fMaxM02 ) {
1769 if( cluster->GetM20()<
fMinM20 || cluster->GetM20() >
fMaxM20 ) {
1794 AliError(
"Task needs AOD or ESD event, returning");
1809 Int_t classification = -1;
1810 Long_t leadMCLabel = -1;
1812 leadMCLabel = ((AliESDCaloCluster*)cluster)->GetLabel();
1814 leadMCLabel = ((AliAODCaloCluster*)cluster)->GetLabel();
1820 if (classification == 5 )
1822 if (classification == 7 )
1824 if (classification == 4)
1826 if (classification == 6){
1828 if (cluster->E() <= 20.)
1830 if (cluster->E() > 20 && cluster->E() <= 50.)
1832 if (cluster->E() > 50.)
1835 if (classification == 0 || classification == 1)
1837 if (classification == 1)
1839 if (classification == 2 || classification == 3)
1841 if ( classification == 3)
1844 Int_t nlabelsMatchedTracks = 0;
1850 if (classification < 4 && classification > -1)
1857 if (cluster->E() <= 20.)
1859 if (cluster->E() > 20 && cluster->E() <= 50.)
1861 if (cluster->E() > 50.)
1874 if (classification == 5 )
1876 if (classification == 4)
1878 if (classification == 0 || classification == 1)
1880 if ( classification == 1)
1882 if (classification == 2 || classification == 3)
1884 if ( classification == 3)
1886 if ( classification == 7)
1888 if ( classification == 6)
1891 vector<Int_t> labelsMatchedTracks;
1902 Bool_t foundLead = kFALSE;
1905 for (
Int_t i = 0; i < (
Int_t)labelsMatchedTracks.size(); i++){
1906 AliVTrack* currTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(labelsMatchedTracks.at(i)));
1907 eSum += currTrack->E();
1908 if (ptMax < currTrack->Pt()){
1909 ptMax = currTrack->Pt();
1910 eMax = currTrack->E();
1913 if (classification == 4 || classification == 5 || classification == 6 || classification == 7){
1914 Long_t mcLabelTrack = -1;
1916 mcLabelTrack = TMath::Abs(((AliESDtrack*)currTrack)->GetLabel());
1918 mcLabelTrack = TMath::Abs(((AliAODTrack*)currTrack)->GetLabel());
1919 if (mcLabelTrack!= -1 && mcLabelTrack == leadMCLabel){
1921 eLead = currTrack->E();
1926 if (classification == 5 || classification == 7 || classification == 6){
1928 if (classification == 5 || classification == 7){
1934 if (classification == 5)
1936 if (classification == 7)
1938 if (classification == 6)
1943 if (classification == 4){
1948 if (classification == 0 )
1950 if (classification == 1)
1952 if (classification == 2)
1954 if (classification == 3)
1957 labelsMatchedTracks.clear();
2001 Int_t nCellCluster = cluster->GetNCells();
2002 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
2003 Int_t cellID = cluster->GetCellAbsId(iCell);
2004 Double_t cellAmp = cells->GetCellAmplitude(cellID);
2005 Double_t cellTime = cells->GetCellTime(cellID);
2019 if(cluster->IsEMCAL()){
2020 Int_t iSuperModule = -1;
2021 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2022 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
2026 }
else if(cluster->IsPHOS()){
2027 Int_t relId[4] = {0,0,0,0};
2028 fGeomPHOS = AliPHOSGeometry::GetInstance();
2029 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
2046 AliVCaloCells* cells = 0x0;
2049 Int_t* nCellsBigger100MeV;
2050 Int_t* nCellsBigger1500MeV;
2055 Int_t nModulesStart = 0;
2057 cells =
event->GetEMCALCells();
2058 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2059 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2061 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2062 if(
fClusterType == 3) {nModules = 8; nModulesStart = 12;}
2064 cells =
event->GetPHOSCells();
2065 fGeomPHOS = AliPHOSGeometry::GetInstance();
2066 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2069 AliError(Form(
"fExtendedMatchAndQA(%i):FillHistogramsExtendedMatchAndQA() not (yet) defined for cluster type (%i)",
fExtendedMatchAndQA,
fClusterType));
2072 nCellsBigger100MeV =
new Int_t[nModules];
2073 nCellsBigger1500MeV =
new Int_t[nModules];
2074 EnergyOfMod =
new Double_t[nModules];
2076 for(
Int_t iModule=0;iModule<nModules;iModule++){nCellsBigger100MeV[iModule]=0;nCellsBigger1500MeV[iModule]=0;EnergyOfMod[iModule]=0;}
2078 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2083 Int_t cellMCLabel=0;
2086 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2087 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2089 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2093 Bool_t doBadCell = kTRUE;
2095 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2096 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2098 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2100 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2101 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2113 if(iBadCell > 0)
continue;
2115 if(cellAmplitude > 0.1) nCellsBigger100MeV[nMod-nModulesStart]++;
2116 if(cellAmplitude > 1.5) nCellsBigger1500MeV[nMod-nModulesStart]++;
2117 if(cellAmplitude > 0.05) EnergyOfMod[nMod-nModulesStart]+=cellAmplitude;
2128 for(
Int_t iModule=0;iModule<nModules;iModule++){
2134 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2135 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2136 delete[] EnergyOfMod;EnergyOfMod=0x0;
2140 TClonesArray * arrClustersExtQA = NULL;
2142 nclus =
event->GetNumberOfCaloClusters();
2144 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2145 if(!arrClustersExtQA)
2146 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2147 nclus = arrClustersExtQA->GetEntries();
2149 AliVCluster* cluster = 0x0;
2150 AliVCluster* clusterMatched = 0x0;
2151 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2152 if(event->IsA()==AliESDEvent::Class()){
2153 if(arrClustersExtQA)
2154 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2156 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2157 }
else if(event->IsA()==AliAODEvent::Class()){
2158 if(arrClustersExtQA)
2159 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2161 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2165 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2168 cluster->GetPosition(clusPos);
2169 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2170 Double_t etaCluster = clusterVector.Eta();
2171 Double_t phiCluster = clusterVector.Phi();
2172 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2176 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2178 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2184 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2185 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2187 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2190 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2192 Int_t largestCellicol = -1, largestCellirow = -1;
2194 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2196 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2198 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2199 if(event->IsA()==AliESDEvent::Class()){
2200 if(arrClustersExtQA)
2201 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2203 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2204 }
else if(event->IsA()==AliAODEvent::Class()){
2205 if(arrClustersExtQA)
2206 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2208 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2212 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2215 clusterMatched->GetPosition(clusPos2);
2216 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2217 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2218 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2219 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2223 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2224 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2225 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2230 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2231 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2232 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2234 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2239 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2241 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2243 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2249 Int_t rowdiff = -100;
2250 Int_t coldiff = -100;
2251 Bool_t calculatedDiff = kFALSE;
2253 Int_t ClusID = largestCelliMod/2;
2254 Int_t matchClusID = matched_largestCelliMod/2;
2256 if( matched_largestCelliMod == largestCelliMod){
2257 rowdiff = largestCellirow - matched_largestCellirow;
2258 coldiff = largestCellicol - matched_largestCellicol;
2259 calculatedDiff = kTRUE;
2260 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2261 if(matched_largestCelliMod%2){
2262 matched_largestCelliMod -= 1;
2263 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2265 matched_largestCelliMod += 1;
2266 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2269 if( matched_largestCelliMod == largestCelliMod ){
2270 rowdiff = largestCellirow - matched_largestCellirow;
2271 coldiff = largestCellicol - matched_largestCellicol;
2272 calculatedDiff = kTRUE;
2279 if( calculatedDiff ){
2280 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2292 delete clusterMatched;
2306 const Int_t nc = cluster->GetNCells();
2308 Int_t absCellIdList[nc];
2319 const Int_t nCells = cluster->GetNCells();
2320 AliVCaloCells* cells = NULL;
2323 cells =
event->GetEMCALCells();
2325 cells =
event->GetPHOSCells();
2331 Int_t iCellMax = -1;
2333 if (nCells < 2)
return idMax;
2334 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2335 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2336 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2337 idMax = cluster->GetCellsAbsId()[iCell];
2343 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2344 if (iCell == iCellMax)
continue;
2345 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2346 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2347 idMax2 = cluster->GetCellsAbsId()[iCell];
2357 const Int_t nCells = cluster->GetNCells();
2358 AliVCaloCells* cells = NULL;
2361 cells =
event->GetEMCALCells();
2363 cells =
event->GetPHOSCells();
2369 if (nCells < 1)
return idMax;
2370 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2371 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2372 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2373 eMax = cells->GetCellAmplitude(cellAbsID);
2388 Int_t absCellId1 = -1;
2389 Int_t absCellId2 = -1;
2390 const Int_t nCells = cluster->GetNCells();
2391 AliVCaloCells* cells = NULL;
2394 cells =
event->GetEMCALCells();
2396 cells =
event->GetPHOSCells();
2402 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2403 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2407 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2408 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2409 idMax = absCellIdList[iCell];
2414 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2416 if (absCellIdList[iCell] >= 0){
2418 absCellId1 = cluster->GetCellsAbsId()[iCell];
2419 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2422 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2424 if (absCellIdList[iCell] == -1)
continue;
2426 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2429 if (absCellId2 == -1)
continue;
2430 if (absCellId1 == absCellId2)
continue;
2433 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2441 absCellIdList[iCellN] = -1;
2443 absCellIdList[iCell] = -1;
2445 absCellIdList[iCell] = -1;
2447 absCellIdList[iCellN] = -1;
2455 Int_t nMaximaNew = 0;
2456 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2458 if (absCellIdList[iCell] > -1){
2459 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2462 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2463 maxEList[nMaximaNew] = en;
2470 if (nMaximaNew == 0){
2473 absCellIdList[0] = idMax;
2484 Bool_t areNeighbours = kFALSE ;
2486 Int_t irow1 = -1, icol1 = -1;
2487 Int_t irow2 = -1, icol2 = -1;
2489 Int_t rowdiff = 0, coldiff = 0;
2495 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2500 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2501 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2504 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2505 coldiff = TMath::Abs( icol1 - icol2 ) ;
2508 if ((coldiff + rowdiff == 1 ))
2509 areNeighbours = kTRUE ;
2511 return areNeighbours;
2521 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2522 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2524 fGeomPHOS = AliPHOSGeometry::GetInstance();
2525 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2528 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2530 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2531 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2534 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2548 AliVCluster* cluster,
2551 AliAODCaloCluster* cluster1,
2552 AliAODCaloCluster* cluster2){
2554 const Int_t ncells = cluster->GetNCells();
2555 Int_t absCellIdList[ncells];
2557 AliVCaloCells* cells = NULL;
2559 cells =
event->GetEMCALCells();
2561 cells =
event->GetPHOSCells();
2567 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2568 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2569 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2580 absCellIdList1[0] = absCellId1 ;
2581 fracList1 [0] = 1. ;
2583 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2587 absCellIdList2[0] = absCellId2 ;
2588 fracList2 [0] = 1. ;
2590 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2595 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2596 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2597 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2601 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2603 Int_t absId = absCellIdList[iCell];
2604 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2606 Float_t ecell = cells->GetCellAmplitude(absId);
2608 absCellIdList1[ncells1] = absId;
2610 fracList1[ncells1] = shareFraction1;
2611 e1 += ecell*shareFraction1;
2613 fracList1[ncells1] = 1.;
2620 absCellIdList2[ncells2]= absId;
2623 fracList2[ncells2] = shareFraction2;
2624 e2 += ecell*shareFraction2;
2626 fracList2[ncells2] = 1.;
2637 cluster1->SetNCells(ncells1);
2638 cluster2->SetNCells(ncells2);
2640 cluster1->SetCellsAbsId(absCellIdList1);
2641 cluster2->SetCellsAbsId(absCellIdList2);
2643 cluster1->SetCellsAmplitudeFraction(fracList1);
2644 cluster2->SetCellsAmplitudeFraction(fracList2);
2671 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2673 Int_t largestCellicol = -1, largestCellirow = -1;
2674 Int_t rowdiff = 0, coldiff = 0;
2677 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2679 Int_t nMinRows = 0, nMaxRows = 0;
2680 Int_t nMinCols = 0, nMaxCols = 0;
2682 Bool_t checkNextSM = kFALSE;
2685 nMinRows = largestCellirow - distanceForLoop;
2686 nMaxRows = largestCellirow + distanceForLoop;
2687 if(nMinRows < 0) nMinRows = 0;
2688 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2690 nMinCols = largestCellicol - distanceForLoop;
2691 nMaxCols = largestCellicol + distanceForLoop;
2693 if(largestCelliMod%2){
2696 checkNextSM = kTRUE;
2698 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2700 if(nMinCols < 0) nMinCols = 0;
2701 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2702 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2703 checkNextSM = kTRUE;
2707 nMinRows = largestCellirow - distanceForLoop;
2708 nMaxRows = largestCellirow + distanceForLoop;
2709 if(nMinRows < 0) nMinRows = 0;
2710 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2712 nMinCols = largestCellicol - distanceForLoop;
2713 nMaxCols = largestCellicol + distanceForLoop;
2714 if(nMinCols < 0) nMinCols = 0;
2727 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2729 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2731 if(irow == largestCellirow && icol == largestCellicol)
continue;
2740 if(iBadCell==0)
continue;
2742 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2743 coldiff = TMath::Abs( largestCellicol - icol ) ;
2759 if(largestCelliMod%2){
2760 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2761 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2763 largestCelliMod -= 1;
2764 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2767 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2769 largestCelliMod += 1;
2770 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2778 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2780 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2783 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2789 if(iBadCell==0)
continue;
2791 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2792 coldiff = TMath::Abs( largestCellicol - icol ) ;
2822 cluster->GetPosition(clusPos);
2823 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2824 Double_t etaCluster = clusterVector.Eta();
2825 Double_t phiCluster = clusterVector.Phi();
2826 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2839 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
2878 cluster->GetPosition(clusPos);
2879 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2880 Double_t etaCluster = clusterVector.Eta();
2881 Double_t phiCluster = clusterVector.Phi();
2882 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2895 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
2937 AliError(
"Task needs AOD or ESD event, returning");
2942 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
2944 Float_t clusterPosition[3] = {0,0,0};
2945 cluster->GetPosition(clusterPosition);
2946 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
2952 for (
Int_t i = 0;i < 2;i++){
2954 AliVTrack *inTrack = 0x0;
2956 if(tracklabel > event->GetNumberOfTracks() )
continue;
2957 inTrack = esdev->GetTrack(tracklabel);
2960 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
2962 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
2963 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
2965 if(inTrack->GetID() == tracklabel) {
2977 Float_t dR2 = dPhi*dPhi + dEta*dEta;
2984 if(inTrack->Charge() > 0) {
3000 Int_t clusterMCLabel = cluster->GetLabel();
3001 Int_t convPhotonDaughterLabel = -1;
3002 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
3004 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3013 Bool_t match_dPhi = kFALSE;
3018 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3019 else match_dEta = kFALSE;
3021 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3022 else match_dPhi = kFALSE;
3025 if(match_dEta && match_dPhi){
3059 TClonesArray * arrClustersMatch = NULL;
3061 nClus =
event->GetNumberOfCaloClusters();
3063 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3064 if(!arrClustersMatch)
3065 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3066 nClus = arrClustersMatch->GetEntries();
3071 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3072 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3075 fGeomPHOS = AliPHOSGeometry::GetInstance();
3076 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
3085 AliError(
"Task needs AOD or ESD event, returning");
3091 AliESDtrackCuts *EsdTrackCuts = 0x0;
3092 if(!isEMCalOnly && esdev){
3094 Int_t runNumber =
event->GetRunNumber();
3096 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3097 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3099 }
else if (runNumber>=209122){
3102 EsdTrackCuts =
new AliESDtrackCuts();
3103 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3104 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3105 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3106 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3107 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3108 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3110 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3111 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3112 AliESDtrackCuts::kAny);
3113 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3114 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3115 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3116 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3117 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3118 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3121 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3123 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3124 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3125 EsdTrackCuts->SetPtRange(0.15);
3130 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3131 AliVTrack *inTrack = 0x0;
3133 inTrack = esdev->GetTrack(itr);
3134 if(!inTrack)
continue;
3135 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3137 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3139 const AliExternalTrackParam *in = esdt->GetInnerParam();
3140 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3142 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3143 if(!inTrack)
continue;
3144 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3146 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3147 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3148 if(aodt->Pt()<0.15)
continue;
3153 Float_t clsPos[3] = {0.,0.,0.};
3154 for(
Int_t iclus=0;iclus < nClus;iclus++){
3155 AliVCluster * cluster = NULL;
3156 if(arrClustersMatch){
3158 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3160 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3162 cluster =
event->GetCaloCluster(iclus);
3166 if(arrClustersMatch)
delete cluster;
3171 if(arrClustersMatch)
delete cluster;
3174 cluster->GetPosition(clsPos);
3175 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3176 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3185 if(inTrack->Charge() > 0) {
3204 Bool_t match_dPhi = kFALSE;
3210 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3211 else match_dEta = kFALSE;
3213 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3214 else match_dPhi = kFALSE;
3217 if(match_dEta && match_dPhi){
3224 if(arrClustersMatch)
delete cluster;
3226 }
else if(isEMCalOnly){
3237 if(arrClustersMatch)
delete cluster;
3241 delete EsdTrackCuts;
3250 vector<Int_t>::iterator it;
3273 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3274 if(analysisCutSelection.Length()!=
kNCuts) {
3275 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3278 if(!analysisCutSelection.IsAlnum()){
3279 AliError(
"Cut selection is not alphanumeric");
3283 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3284 analysisCutSelectionLowerCase.ToLower();
3285 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3286 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3311 }
else return kFALSE;
3318 }
else return kFALSE;
3325 }
else return kFALSE;
3332 }
else return kFALSE;
3339 }
else return kFALSE;
3346 }
else return kFALSE;
3353 }
else return kFALSE;
3360 }
else return kFALSE;
3367 }
else return kFALSE;
3374 }
else return kFALSE;
3381 }
else return kFALSE;
3388 }
else return kFALSE;
3395 }
else return kFALSE;
3402 }
else return kFALSE;
3409 }
else return kFALSE;
3416 }
else return kFALSE;
3423 }
else return kFALSE;
3430 }
else return kFALSE;
3437 }
else return kFALSE;
3440 AliError(
"Cut id out of range");
3444 AliError(
"Cut id %d not recognized");
3461 printf(
"\nCluster cutnumber \n %s", analysisCutSelection.Data());
3465 printf(
"Acceptance cuts: \n");
3466 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3467 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3468 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3469 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3474 printf(
"Cluster Quality cuts: \n");
3488 printf(
"NonLinearity Correction: \n");
3493 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3505 switch(clusterType){
3519 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3568 AliError(Form(
"MinEta Cut not defined %d",minEta));
3617 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3657 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3697 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3706 switch(distanceToBadChannel){
3744 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
3815 AliError(Form(
"Timing Cut not defined %d",timing));
3826 switch(trackMatching){
3873 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3876 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3882 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3885 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3891 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3894 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3900 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3903 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3909 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3912 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3918 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3921 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3926 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
3932 switch(trackMatching){
3960 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3963 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3969 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3972 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3978 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3981 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3986 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4048 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4121 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4163 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4215 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4257 AliError(Form(
"Min N cells Cut not defined %d",minNCells));
4424 AliError(Form(
"Max M02 Cut not defined %d",maxM02));
4437 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0955, 1.86e-3, 9.91 );
4439 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.524, 5.59e-3, 21.9 );
4445 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0, 1.86e-3, 9.91 );
4447 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.424, 5.59e-3, 21.9 );
4453 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.2, 1.86e-3, 9.91 );
4455 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.624, 5.59e-3, 21.9 );
4461 if( (0.27 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.4)
return 0.4;
4462 else return (0.27 + 0.0072 * TMath::Power(clusEnergy,2));
4464 if( (0.31 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4465 else return (0.31 + 0.0072 * TMath::Power(clusEnergy,2));
4467 if( (0.36 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4468 else return (0.36 + 0.0072 * TMath::Power(clusEnergy,2));
4470 if( (0.37 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4471 else return (0.37 + 0.0072 * TMath::Power(clusEnergy,2));
4473 if( (0.30 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4474 else return (0.30 + 0.0072 * TMath::Power(clusEnergy,2));
4476 if( (0.35 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4477 else return (0.35 + 0.0072 * TMath::Power(clusEnergy,2));
4479 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.39)
return 0.39;
4480 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4482 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4483 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4485 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4486 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4488 if( (0.32 + 0.0152 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4489 else return (0.32 + 0.0152 * TMath::Power(clusEnergy,2));
4491 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4492 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4494 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4495 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4497 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4498 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4500 if( (0.34 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4501 else return (0.34 + 0.0072 * TMath::Power(clusEnergy,2));
4503 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4504 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4506 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4507 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4510 AliError(Form(
"Max M02 for merged cluster Cut not defined %d",maxM02));
4523 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.3)
4524 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4528 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.27)
4529 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4533 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.25)
4534 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 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. );
4543 if (
FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. ) > 0.27)
4544 return FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. );
4563 AliError(Form(
"Min M02 for merged cluster Cut not defined %d",minM02));
4598 AliError(Form(
"Min M02 not defined %d",minM02));
4629 AliError(Form(
"Min M20 Cut not defined %d",minM20));