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 fMaxDispersion(1000),
165 fSwitchNonLinearity(0),
166 fUseNonLinearity(kFALSE),
168 fVectorMatchedClusterIDs(0),
172 fHistAcceptanceCuts(NULL),
173 fHistClusterIdentificationCuts(NULL),
174 fHistClusterEtavsPhiBeforeAcc(NULL),
175 fHistClusterEtavsPhiAfterAcc(NULL),
176 fHistClusterEtavsPhiAfterQA(NULL),
177 fHistClusterTimevsEBeforeQA(NULL),
178 fHistClusterTimevsEAfterQA(NULL),
179 fHistEnergyOfClusterBeforeNL(NULL),
180 fHistEnergyOfClusterAfterNL(NULL),
181 fHistEnergyOfClusterBeforeQA(NULL),
182 fHistEnergyOfClusterAfterQA(NULL),
183 fHistNCellsBeforeQA(NULL),
184 fHistNCellsAfterQA(NULL),
185 fHistM02BeforeQA(NULL),
186 fHistM02AfterQA(NULL),
187 fHistM20BeforeQA(NULL),
188 fHistM20AfterQA(NULL),
189 fHistDispersionBeforeQA(NULL),
190 fHistDispersionAfterQA(NULL),
191 fHistNLMBeforeQA(NULL),
192 fHistNLMAfterQA(NULL),
193 fHistNLMVsNCellsAfterQA(NULL),
194 fHistNLMVsEAfterQA(NULL),
196 fHistClusterEnergyvsMod(NULL),
197 fHistNCellsBigger100MeVvsMod(NULL),
198 fHistNCellsBigger1500MeVvsMod(NULL),
199 fHistEnergyOfModvsMod(NULL),
200 fHistClusterEnergyvsNCells(NULL),
201 fHistCellEnergyvsCellID(NULL),
202 fHistCellTimevsCellID(NULL),
203 fHistClusterEM02BeforeQA(NULL),
204 fHistClusterEM02AfterQA(NULL),
205 fHistClusterIncludedCellsBeforeQA(NULL),
206 fHistClusterIncludedCellsAfterQA(NULL),
207 fHistClusterEnergyFracCellsBeforeQA(NULL),
208 fHistClusterEnergyFracCellsAfterQA(NULL),
209 fHistClusterIncludedCellsTimingAfterQA(NULL),
210 fHistClusterIncludedCellsTimingEnergyAfterQA(NULL),
211 fHistClusterDistanceInTimeCut(NULL),
212 fHistClusterDistanceOutTimeCut(NULL),
213 fHistClusterDistance1DInTimeCut(NULL),
214 fHistClusterRBeforeQA(NULL),
215 fHistClusterRAfterQA(NULL),
216 fHistClusterdEtadPhiBeforeQA(NULL),
217 fHistClusterdEtadPhiAfterQA(NULL),
218 fHistDistanceTrackToClusterBeforeQA(NULL),
219 fHistDistanceTrackToClusterAfterQA(NULL),
220 fHistClusterdEtadPhiPosTracksBeforeQA(NULL),
221 fHistClusterdEtadPhiNegTracksBeforeQA(NULL),
222 fHistClusterdEtadPhiPosTracksAfterQA(NULL),
223 fHistClusterdEtadPhiNegTracksAfterQA(NULL),
224 fHistClusterdEtadPhiPosTracksP_000_075BeforeQA(NULL),
225 fHistClusterdEtadPhiPosTracksP_075_125BeforeQA(NULL),
226 fHistClusterdEtadPhiPosTracksP_125_999BeforeQA(NULL),
227 fHistClusterdEtadPhiNegTracksP_000_075BeforeQA(NULL),
228 fHistClusterdEtadPhiNegTracksP_075_125BeforeQA(NULL),
229 fHistClusterdEtadPhiNegTracksP_125_999BeforeQA(NULL),
230 fHistClusterdEtadPtBeforeQA(NULL),
231 fHistClusterdEtadPtAfterQA(NULL),
232 fHistClusterdEtadPtTrueMatched(NULL),
233 fHistClusterdPhidPtPosTracksBeforeQA(NULL),
234 fHistClusterdPhidPtNegTracksBeforeQA(NULL),
235 fHistClusterdPhidPtAfterQA(NULL),
236 fHistClusterdPhidPtPosTracksTrueMatched(NULL),
237 fHistClusterdPhidPtNegTracksTrueMatched(NULL),
238 fHistClusterM20M02BeforeQA(NULL),
239 fHistClusterM20M02AfterQA(NULL),
240 fHistClusterEtavsPhiExotics(NULL),
241 fHistClusterEM02Exotics(NULL),
242 fHistClusterEnergyvsNCellsExotics(NULL),
243 fHistClusterEEstarExotics(NULL),
244 fHistClusterTMEffiInput(NULL),
245 fHistClusterElecEtaPhiBeforeTM_00_20(NULL),
246 fHistClusterElecEtaPhiBeforeTM_20_50(NULL),
247 fHistClusterElecEtaPhiBeforeTM_50_00(NULL),
248 fHistClusterElecEtaPhiAfterTM_00_20(NULL),
249 fHistClusterElecEtaPhiAfterTM_20_50(NULL),
250 fHistClusterElecEtaPhiAfterTM_50_00(NULL),
251 fHistClusterEvsTrackECharged(NULL),
252 fHistClusterEvsTrackEChargedLead(NULL),
253 fHistClusterEvsTrackENeutral(NULL),
254 fHistClusterEvsTrackENeutralSubCharged(NULL),
255 fHistClusterEvsTrackEGamma(NULL),
256 fHistClusterEvsTrackEGammaSubCharged(NULL),
257 fHistClusterEvsTrackEConv(NULL),
258 fHistClusterENMatchesNeutral(NULL),
259 fHistClusterENMatchesCharged(NULL),
260 fHistClusterEvsTrackEPrimaryButNoElec(NULL),
261 fHistClusterEvsTrackSumEPrimaryButNoElec(NULL),
264 fIsAcceptedForBasic(kFALSE)
274 AliAnalysisCuts(ref),
474 TH1::AddDirectory(kFALSE);
503 Int_t nBinsClusterEFine = 400;
504 Int_t nBinsClusterECoarse = 100;
507 Int_t nBinsCellECoarse = 150;
510 Int_t nBinsModuleECoarse = 400;
550 const Int_t nEmcalEtaBins = 96;
551 const Int_t nEmcalPhiBins = 124;
552 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};
553 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};
570 const Int_t nPhosEtaBins = 56;
571 const Int_t nPhosPhiBins = 256;
572 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
573 const Float_t PhosPhiRange[2] = {4.355, 5.6};
590 const Int_t nDcalEtaBins = 96;
591 const Int_t nDcalPhiBins = 124;
621 }
else{AliError(Form(
"Cluster Type is not EMCAL nor PHOS nor all: %i",
fClusterType));}
641 nBinsClusterECoarse, minClusterELog, maxClusterELog);
649 nBinsClusterECoarse, minClusterELog, maxClusterELog);
656 nBinsClusterEFine, minClusterELog, maxClusterELog);
661 nBinsClusterEFine, minClusterELog, maxClusterELog);
763 fBadChannels =
new TProfile(
"EMCal - Bad Channels",
"EMCal - Bad Channels",nMaxCellsEMCAL,-0.5,nMaxCellsEMCAL-0.5);
768 fBadChannels =
new TProfile(
"PHOS - Bad Channels",
"PHOS - Bad Channels",nMaxCellsPHOS,-0.5,nMaxCellsPHOS-0.5);
772 Int_t nStartCellDCAL = 12288;
774 fBadChannels =
new TProfile(
"DCAL - Bad Channels",
"DCAL - Bad Channels",nMaxCellsDCAL,nStartCellDCAL-0.5,nStartCellDCAL+nMaxCellsDCAL-0.5);
828 nMaxCellsEMCAL, 0, nMaxCellsEMCAL);
838 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
843 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
848 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
854 nMaxCellsEMCAL,0,nMaxCellsEMCAL);
860 nBinsClusterECoarse, minClusterELog, maxClusterELog, 200, -500, 500);
866 nBinsCellECoarse, minCellELog, maxCellELog, 200, -500, 500);
914 nMaxCellsPHOS,0,nMaxCellsPHOS);
924 nMaxCellsPHOS, 0, nMaxCellsPHOS);
929 nMaxCellsPHOS, 0, nMaxCellsPHOS);
934 nMaxCellsPHOS,0,nMaxCellsPHOS);
940 nMaxCellsPHOS, 0, nMaxCellsPHOS);
946 nBinsClusterECoarse, minClusterELog, maxClusterELog, 200, -500, 500);
952 nBinsCellECoarse, minCellELog, maxCellELog, 200, -500, 500);
959 Int_t nModulesStart = 12;
960 Int_t nCellsStart = 12288;
1004 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 nBinsClusterECoarse, minClusterELog, maxClusterELog, 200, -500, 500);
1043 nBinsCellECoarse, minCellELog, maxCellELog, 200, -500, 500);
1054 const Int_t nEtaBins = 300;
1055 const Int_t nPhiBins = 300;
1056 const Float_t EtaRange[2] = {-0.3, 0.3};
1057 const Float_t PhiRange[2] = {-0.3, 0.3};
1085 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1090 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1095 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1100 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1105 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1110 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1115 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1120 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1125 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1130 nEtaBins, EtaRange[0], EtaRange[1], nPhiBins, PhiRange[0], PhiRange[1]);
1135 nBinsModuleECoarse, minClusterELog, maxClusterELog);
1141 nBinsModuleECoarse, minClusterELog, maxClusterELog);
1147 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsModuleECoarse, minClusterELog, maxClusterELog);
1153 2*nPhiBins, 2*PhiRange[0], 2*PhiRange[1], nBinsModuleECoarse, minClusterELog, maxClusterELog);
1159 nBinsModuleECoarse, minClusterELog, maxClusterELog);
1167 nBinsModuleECoarse, minClusterELog, maxClusterELog);
1173 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsModuleECoarse, minClusterELog, maxClusterELog);
1179 2*nPhiBins,2*PhiRange[0],2*PhiRange[1], nBinsModuleECoarse, minClusterELog, maxClusterELog);
1228 const Int_t nEmcalEtaBins = 96;
1229 const Int_t nEmcalPhiBins = 124;
1230 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};
1231 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};
1287 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1294 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1301 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1308 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1315 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1322 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1329 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1337 nBinsClusterEFine, minClusterELog, maxClusterELog, 20, -0.5, 19.5);
1343 nBinsClusterEFine, minClusterELog, maxClusterELog, 20, -0.5, 19.5);
1350 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1357 nBinsClusterEFine, minClusterELog, maxClusterELog, nBinsClusterEFine, minClusterELog, maxClusterELog);
1388 const Int_t nEmcalEtaBins = 96;
1389 const Int_t nEmcalPhiBins = 124;
1390 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};
1391 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};
1398 const Int_t nPhosEtaBins = 56;
1399 const Int_t nPhosPhiBins = 192;
1400 const Float_t PhosEtaRange[2] = {-0.16, 0.16};
1401 const Float_t PhosPhiRange[2] = {4.5, 5.6};
1404 nPhosEtaBins, PhosEtaRange[0], PhosEtaRange[1]);
1410 const Int_t nDcalEtaBins = 96;
1411 const Int_t nDcalPhiBins = 124;
1424 nBinsClusterECoarse, minClusterELog, maxClusterELog, 50, 0, 50);
1430 nBinsClusterECoarse, minClusterELog, maxClusterELog, nBinsClusterECoarse, minClusterELog, maxClusterELog);
1447 TH1::AddDirectory(kTRUE);
1455 AliTender* alitender=0x0;
1458 if(event->IsA()==AliESDEvent::Class()){
1459 alitender = (AliTender*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliTender");
1461 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1463 }
else if( event->IsA()==AliAODEvent::Class()){
1464 emcaltender = (
AliEmcalTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalTenderTask");
1466 emcalCorrTask = (
AliEmcalCorrectionTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"AliEmcalCorrectionTask_defaultSetting");
1469 TIter next(alitender->GetSupplies());
1470 AliTenderSupply *supply;
1471 while ((supply=(AliTenderSupply*)next()))
if(supply->IsA()==AliEMCALTenderSupply::Class())
break;
1472 fEMCALRecUtils = ((AliEMCALTenderSupply*)supply)->GetRecoUtils();
1474 }
else if(emcaltender){
1477 }
else if(emcalCorrTask){
1479 if(emcalCorrComponent){
1486 fGeomEMCAL = AliEMCALGeometry::GetInstance();
1487 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
1495 Int_t nMinCellsDCAL = 12288;
1497 Int_t nMaxCells = 0;
1498 Int_t nMinCells = 0;
1500 nMaxCells = nMaxCellsEMCAL;
1503 nMaxCells = nMaxCellsDCAL;
1504 nMinCells = nMinCellsDCAL;
1508 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
1511 for(
Int_t iCell=nMinCells;iCell<nMaxCells;iCell++){
1512 fGeomEMCAL->GetCellIndex(iCell,imod,iTower,iIphi,iIeta);
1514 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
1529 fGeomPHOS = AliPHOSGeometry::GetInstance();
1530 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
1535 AliPHOSTenderTask* aliphostender = (AliPHOSTenderTask*) AliAnalysisManager::GetAnalysisManager()->GetTopTasks()->FindObject(
"PHOSTenderTask");
1536 AliPHOSTenderSupply *PHOSSupply =((AliPHOSTenderSupply*) aliphostender->GetPHOSTenderSupply()) ;
1539 AliError(Form(
"Can not find PHOSTenderSupply in run %d. No bad channel map could be found for QA!\n",event->GetRunNumber())) ;
1542 AliInfo(
"Setting PHOS bad map from PHOSSupply \n") ;
1543 for(
Int_t mod=0;mod<nModules;mod++){
1544 TH2I * h = (TH2I*)PHOSSupply->GetPHOSBadChannelStatusMap(mod);
1547 AliInfo(Form(
"using bad map for module %d with nch=%f\n",mod,h->Integral()));
1555 for(
Int_t iCell=0;iCell<nMaxCellsPHOS;iCell++){
1556 fGeomPHOS->AbsToRelNumbering(iCell,relid);
1558 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
1581 if(!mcEvent)
return kFALSE;
1582 if(!particle)
return kFALSE;
1584 if (particle->GetPdgCode() == 22){
1590 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 22){
1602 if(!mcEvent)
return kFALSE;
1603 if(!particle)
return kFALSE;
1605 if (TMath::Abs(particle->GetPdgCode()) == 11){
1611 if(particle->GetMother(0) >-1 && mcEvent->Particle(particle->GetMother(0))->GetPdgCode() == 11){
1623 if(!aodmcArray)
return kFALSE;
1624 if(!particle)
return kFALSE;
1626 if (TMath::Abs(particle->GetPdgCode()) == 11){
1631 if(particle->GetMother() >-1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 11){
1643 if(!aodmcArray)
return kFALSE;
1644 if(!particle)
return kFALSE;
1646 if (particle->GetPdgCode() == 22){
1650 if(particle->GetMother() > -1 && (
static_cast<AliAODMCParticle*
>(aodmcArray->At(particle->GetMother())))->GetPdgCode() == 22){
1675 cluster->GetPosition(clusPos);
1676 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
1677 Double_t etaCluster = clusterVector.Eta();
1678 Double_t phiCluster = clusterVector.Phi();
1679 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
1697 AliVCaloCells* cells = NULL;
1699 if(cluster->IsEMCAL()){
1700 cells =
event->GetEMCALCells();
1701 }
else if(cluster->IsPHOS()){
1702 cells =
event->GetPHOSCells();
1705 Int_t nCellCluster = cluster->GetNCells();
1706 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
1729 Bool_t failedM02 = kFALSE;
1737 if( nLM < fMinNLM || nLM >
fMaxNLM )
1756 if ( !( failed || failedM02 ) ){
1780 if( nLM < fMinNLM || nLM >
fMaxNLM ) {
1789 if( cluster->GetM02()<
fMinM02 || cluster->GetM02() >
fMaxM02 ) {
1804 if( cluster->GetM20()<
fMinM20 || cluster->GetM20() >
fMaxM20 ) {
1829 AliError(
"Task needs AOD or ESD event, returning");
1844 Int_t classification = -1;
1845 Long_t leadMCLabel = -1;
1847 leadMCLabel = ((AliESDCaloCluster*)cluster)->GetLabel();
1849 leadMCLabel = ((AliAODCaloCluster*)cluster)->GetLabel();
1855 if (classification == 5 )
1857 if (classification == 7 )
1859 if (classification == 4)
1861 if (classification == 6){
1863 if (cluster->E() <= 20.)
1865 if (cluster->E() > 20 && cluster->E() <= 50.)
1867 if (cluster->E() > 50.)
1870 if (classification == 0 || classification == 1)
1872 if (classification == 1)
1874 if (classification == 2 || classification == 3)
1876 if ( classification == 3)
1879 Int_t nlabelsMatchedTracks = 0;
1885 if (classification < 4 && classification > -1)
1892 if (cluster->E() <= 20.)
1894 if (cluster->E() > 20 && cluster->E() <= 50.)
1896 if (cluster->E() > 50.)
1909 if (classification == 5 )
1911 if (classification == 4)
1913 if (classification == 0 || classification == 1)
1915 if ( classification == 1)
1917 if (classification == 2 || classification == 3)
1919 if ( classification == 3)
1921 if ( classification == 7)
1923 if ( classification == 6)
1926 vector<Int_t> labelsMatchedTracks;
1937 Bool_t foundLead = kFALSE;
1940 for (
Int_t i = 0; i < (
Int_t)labelsMatchedTracks.size(); i++){
1941 AliVTrack* currTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(labelsMatchedTracks.at(i)));
1942 eSum += currTrack->E();
1943 if (ptMax < currTrack->Pt()){
1944 ptMax = currTrack->Pt();
1945 eMax = currTrack->E();
1948 if (classification == 4 || classification == 5 || classification == 6 || classification == 7){
1949 Long_t mcLabelTrack = -1;
1951 mcLabelTrack = TMath::Abs(((AliESDtrack*)currTrack)->GetLabel());
1953 mcLabelTrack = TMath::Abs(((AliAODTrack*)currTrack)->GetLabel());
1954 if (mcLabelTrack!= -1 && mcLabelTrack == leadMCLabel){
1956 eLead = currTrack->E();
1961 if (classification == 5 || classification == 7 || classification == 6){
1963 if (classification == 5 || classification == 7){
1969 if (classification == 5)
1971 if (classification == 7)
1973 if (classification == 6)
1978 if (classification == 4){
1983 if (classification == 0 )
1985 if (classification == 1)
1987 if (classification == 2)
1989 if (classification == 3)
1992 labelsMatchedTracks.clear();
2036 Int_t nCellCluster = cluster->GetNCells();
2037 for(
Int_t iCell=0;iCell<nCellCluster;iCell++){
2038 Int_t cellID = cluster->GetCellAbsId(iCell);
2039 Double_t cellAmp = cells->GetCellAmplitude(cellID);
2040 Double_t cellTime = cells->GetCellTime(cellID);
2054 if(cluster->IsEMCAL()){
2055 Int_t iSuperModule = -1;
2056 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2057 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
2061 }
else if(cluster->IsPHOS()){
2062 Int_t relId[4] = {0,0,0,0};
2063 fGeomPHOS = AliPHOSGeometry::GetInstance();
2064 if(!
fGeomPHOS){ AliFatal(
"PHOS geometry not initialized!");}
2081 AliVCaloCells* cells = 0x0;
2084 Int_t* nCellsBigger100MeV;
2085 Int_t* nCellsBigger1500MeV;
2090 Int_t nModulesStart = 0;
2092 cells =
event->GetEMCALCells();
2093 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2094 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2096 nModules =
fGeomEMCAL->GetNumberOfSuperModules();
2097 if(
fClusterType == 3) {nModules = 8; nModulesStart = 12;}
2099 cells =
event->GetPHOSCells();
2100 fGeomPHOS = AliPHOSGeometry::GetInstance();
2101 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2104 AliError(Form(
"fExtendedMatchAndQA(%i):FillHistogramsExtendedMatchAndQA() not (yet) defined for cluster type (%i)",
fExtendedMatchAndQA,
fClusterType));
2107 nCellsBigger100MeV =
new Int_t[nModules];
2108 nCellsBigger1500MeV =
new Int_t[nModules];
2109 EnergyOfMod =
new Double_t[nModules];
2111 for(
Int_t iModule=0;iModule<nModules;iModule++){nCellsBigger100MeV[iModule]=0;nCellsBigger1500MeV[iModule]=0;EnergyOfMod[iModule]=0;}
2113 for(
Int_t iCell=0;iCell<cells->GetNumberOfCells();iCell++){
2118 Int_t cellMCLabel=0;
2121 cells->GetCell(iCell,cellNumber,cellAmplitude,cellTime,cellMCLabel,cellEFrac);
2122 if(
fClusterType == 3 && cellNumber < 12288){
continue;}
2124 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2128 Bool_t doBadCell = kTRUE;
2130 nMod =
fGeomEMCAL->GetSuperModuleNumber(cellNumber);
2131 fGeomEMCAL->GetCellIndex(cellNumber,imod,iTower,iIphi,iIeta);
2133 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2135 fGeomPHOS->AbsToRelNumbering(cellNumber,relid);
2136 if(relid[1]!=0) AliFatal(
"PHOS CPV in PHOS cell array?");
2148 if(iBadCell > 0)
continue;
2150 if(cellAmplitude > 0.1) nCellsBigger100MeV[nMod-nModulesStart]++;
2151 if(cellAmplitude > 1.5) nCellsBigger1500MeV[nMod-nModulesStart]++;
2152 if(cellAmplitude > 0.05) EnergyOfMod[nMod-nModulesStart]+=cellAmplitude;
2160 for(
Int_t iModule=0;iModule<nModules;iModule++){
2166 delete[] nCellsBigger100MeV;nCellsBigger100MeV=0x0;
2167 delete[] nCellsBigger1500MeV;nCellsBigger1500MeV=0x0;
2168 delete[] EnergyOfMod;EnergyOfMod=0x0;
2172 TClonesArray * arrClustersExtQA = NULL;
2174 nclus =
event->GetNumberOfCaloClusters();
2176 arrClustersExtQA =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
2177 if(!arrClustersExtQA)
2178 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
2179 nclus = arrClustersExtQA->GetEntries();
2181 AliVCluster* cluster = 0x0;
2182 AliVCluster* clusterMatched = 0x0;
2183 for(
Int_t iClus=0; iClus<nclus ; iClus++){
2184 if(event->IsA()==AliESDEvent::Class()){
2185 if(arrClustersExtQA)
2186 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus));
2188 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus));
2189 }
else if(event->IsA()==AliAODEvent::Class()){
2190 if(arrClustersExtQA)
2191 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus));
2193 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus));
2197 if(
fClusterType == 2 && cluster->GetType() !=AliVCluster::kPHOSNeutral){
delete cluster;
continue;}
2200 cluster->GetPosition(clusPos);
2201 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2202 Double_t etaCluster = clusterVector.Eta();
2203 Double_t phiCluster = clusterVector.Phi();
2204 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2208 if (
fUseEtaCut && (etaCluster < fMinEtaCut || etaCluster >
fMaxEtaCut)){
delete cluster;
continue;}
2210 if (
fUsePhiCut && (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut)){
delete cluster;
continue;}
2216 if (
fUseNLM && (nLM < fMinNLM || nLM >
fMaxNLM)){
delete cluster;
continue;}
2217 if (
fUseM02 == 1 && (cluster->GetM02() <
fMinM02 || cluster->GetM02() >
fMaxM02)){
delete cluster;
continue;}
2219 if (
fUseM20 && (cluster->GetM20() <
fMinM20 || cluster->GetM20() >
fMaxM20)){
delete cluster;
continue;}
2222 if (!(isMC>0) && (cluster->GetTOF() <
fMinTimeDiff || cluster->GetTOF() >
fMaxTimeDiff)){
delete cluster;
continue;}
2224 Int_t largestCellicol = -1, largestCellirow = -1;
2226 if(largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2228 if(largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2230 for(
Int_t iClus2=iClus+1; iClus2<nclus; iClus2++){
2231 if(event->IsA()==AliESDEvent::Class()){
2232 if(arrClustersExtQA)
2233 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersExtQA->At(iClus2));
2235 clusterMatched =
new AliESDCaloCluster(*(AliESDCaloCluster*)event->GetCaloCluster(iClus2));
2236 }
else if(event->IsA()==AliAODEvent::Class()){
2237 if(arrClustersExtQA)
2238 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersExtQA->At(iClus2));
2240 clusterMatched =
new AliAODCaloCluster(*(AliAODCaloCluster*)event->GetCaloCluster(iClus2));
2244 if(
fClusterType == 2 && clusterMatched->GetType() !=AliVCluster::kPHOSNeutral){
delete clusterMatched;
continue;}
2247 clusterMatched->GetPosition(clusPos2);
2248 TVector3 clusterMatchedVector(clusPos2[0],clusPos2[1],clusPos2[2]);
2249 Double_t etaclusterMatched = clusterMatchedVector.Eta();
2250 Double_t phiclusterMatched = clusterMatchedVector.Phi();
2251 if (phiclusterMatched < 0) phiclusterMatched += 2*TMath::Pi();
2255 if (
fUseEtaCut && (etaclusterMatched < fMinEtaCut || etaclusterMatched > fMaxEtaCut)){
delete clusterMatched;
continue;}
2256 if (
fUseEtaCut &&
fClusterType == 3 && etaclusterMatched < fMaxEtaInnerEdge && etaclusterMatched > fMinEtaInnerEdge ) {
delete clusterMatched;
continue;}
2257 if (
fUsePhiCut && (phiclusterMatched < fMinPhiCut || phiclusterMatched > fMaxPhiCut)){
delete clusterMatched;
continue;}
2262 if (
fUseNCells && (clusterMatched->GetNCells() <
fMinNCells)){
delete clusterMatched;
continue;}
2263 if (
fUseNLM && (nLMMatched < fMinNLM || nLMMatched > fMaxNLM)){
delete clusterMatched;
continue;}
2264 if (
fUseM02 == 1 && (clusterMatched->GetM02() <
fMinM02 || clusterMatched->GetM02() >
fMaxM02)){
delete clusterMatched;
continue;}
2266 if (
fUseM20 && (clusterMatched->GetM20() <
fMinM20 || clusterMatched->GetM20() >
fMaxM20)){
delete clusterMatched;
continue;}
2271 Int_t matched_largestCellicol = -1, matched_largestCellirow = -1;
2273 if(matched_largestCellID==-1) AliFatal(
"FillHistogramsExtendedQA: FindLargestCellInCluster found cluster with NCells<1?");
2275 if(matched_largestCelliMod < 0) AliFatal(
"FillHistogramsExtendedQA: GetModuleNumberAndCellPosition found SM with ID<0?");
2281 Int_t rowdiff = -100;
2282 Int_t coldiff = -100;
2283 Bool_t calculatedDiff = kFALSE;
2285 Int_t ClusID = largestCelliMod/2;
2286 Int_t matchClusID = matched_largestCelliMod/2;
2288 if( matched_largestCelliMod == largestCelliMod){
2289 rowdiff = largestCellirow - matched_largestCellirow;
2290 coldiff = largestCellicol - matched_largestCellicol;
2291 calculatedDiff = kTRUE;
2292 }
else if( TMath::Abs(matched_largestCelliMod - largestCelliMod) == 1 && (ClusID == matchClusID) ){
2293 if(matched_largestCelliMod%2){
2294 matched_largestCelliMod -= 1;
2295 matched_largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2297 matched_largestCelliMod += 1;
2298 matched_largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2301 if( matched_largestCelliMod == largestCelliMod ){
2302 rowdiff = largestCellirow - matched_largestCellirow;
2303 coldiff = largestCellicol - matched_largestCellicol;
2304 calculatedDiff = kTRUE;
2311 if( calculatedDiff ){
2312 Float_t dist1D = TMath::Sqrt(TMath::Power(etaCluster-etaclusterMatched,2)+TMath::Power(phiCluster-phiclusterMatched,2));
2324 delete clusterMatched;
2338 const Int_t nc = cluster->GetNCells();
2340 Int_t absCellIdList[nc];
2351 const Int_t nCells = cluster->GetNCells();
2352 AliVCaloCells* cells = NULL;
2355 cells =
event->GetEMCALCells();
2357 cells =
event->GetPHOSCells();
2363 Int_t iCellMax = -1;
2365 if (nCells < 2)
return idMax;
2366 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2367 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2368 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2369 idMax = cluster->GetCellsAbsId()[iCell];
2375 for (
Int_t iCell = 1;iCell < nCells;iCell++){
2376 if (iCell == iCellMax)
continue;
2377 if (cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell])> eMax){
2378 eMax = cells->GetCellAmplitude(cluster->GetCellsAbsId()[iCell]);
2379 idMax2 = cluster->GetCellsAbsId()[iCell];
2389 const Int_t nCells = cluster->GetNCells();
2390 AliVCaloCells* cells = NULL;
2393 cells =
event->GetEMCALCells();
2395 cells =
event->GetPHOSCells();
2401 if (nCells < 1)
return idMax;
2402 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2403 Int_t cellAbsID = cluster->GetCellsAbsId()[iCell];
2404 if (cells->GetCellAmplitude(cellAbsID)> eMax){
2405 eMax = cells->GetCellAmplitude(cellAbsID);
2420 Int_t absCellId1 = -1;
2421 Int_t absCellId2 = -1;
2422 const Int_t nCells = cluster->GetNCells();
2423 AliVCaloCells* cells = NULL;
2426 cells =
event->GetEMCALCells();
2428 cells =
event->GetPHOSCells();
2434 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2435 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2439 if (cells->GetCellAmplitude(absCellIdList[iCell])> eMax){
2440 eMax = cells->GetCellAmplitude(absCellIdList[iCell]);
2441 idMax = absCellIdList[iCell];
2446 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2448 if (absCellIdList[iCell] >= 0){
2450 absCellId1 = cluster->GetCellsAbsId()[iCell];
2451 Float_t en1 = cells->GetCellAmplitude(absCellId1);
2454 for (
Int_t iCellN = 0;iCellN < nCells;iCellN++){
2456 if (absCellIdList[iCell] == -1)
continue;
2458 absCellId2 = cluster->GetCellsAbsId()[iCellN];
2461 if (absCellId2 == -1)
continue;
2462 if (absCellId1 == absCellId2)
continue;
2465 Float_t en2 = cells->GetCellAmplitude(absCellId2);
2473 absCellIdList[iCellN] = -1;
2475 absCellIdList[iCell] = -1;
2477 absCellIdList[iCell] = -1;
2479 absCellIdList[iCellN] = -1;
2487 Int_t nMaximaNew = 0;
2488 for (
Int_t iCell = 0;iCell < nCells;iCell++){
2490 if (absCellIdList[iCell] > -1){
2491 Float_t en = cells->GetCellAmplitude(absCellIdList[iCell]);
2494 absCellIdList[nMaximaNew] = absCellIdList[iCell];
2495 maxEList[nMaximaNew] = en;
2502 if (nMaximaNew == 0){
2505 absCellIdList[0] = idMax;
2516 Bool_t areNeighbours = kFALSE ;
2518 Int_t irow1 = -1, icol1 = -1;
2519 Int_t irow2 = -1, icol2 = -1;
2521 Int_t rowdiff = 0, coldiff = 0;
2527 if (nSupMod1== -1 || nSupMod2 == -1)
return areNeighbours;
2532 if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
2533 else icol2+=AliEMCALGeoParams::fgkEMCALCols;
2536 rowdiff = TMath::Abs( irow1 - irow2 ) ;
2537 coldiff = TMath::Abs( icol1 - icol2 ) ;
2540 if ((coldiff + rowdiff == 1 ))
2541 areNeighbours = kTRUE ;
2543 return areNeighbours;
2553 fGeomEMCAL = AliEMCALGeometry::GetInstance();
2554 if(!
fGeomEMCAL) AliFatal(
"EMCal geometry not initialized!");
2556 fGeomPHOS = AliPHOSGeometry::GetInstance();
2557 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
2560 Int_t imod = -1;
Int_t iTower = -1, iIphi = -1, iIeta = -1;
2562 fGeomEMCAL->GetCellIndex(absCellId,imod,iTower,iIphi,iIeta);
2563 fGeomEMCAL->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,irow,icol);
2566 fGeomPHOS->AbsToRelNumbering(absCellId,relId);
2580 AliVCluster* cluster,
2583 AliAODCaloCluster* cluster1,
2584 AliAODCaloCluster* cluster2){
2586 const Int_t ncells = cluster->GetNCells();
2587 Int_t absCellIdList[ncells];
2589 AliVCaloCells* cells = NULL;
2591 cells =
event->GetEMCALCells();
2593 cells =
event->GetPHOSCells();
2599 for(
Int_t iCell = 0;iCell < ncells;iCell++ ) {
2600 absCellIdList[iCell] = cluster->GetCellsAbsId()[iCell];
2601 Float_t ec = cells->GetCellAmplitude(absCellIdList[iCell]);
2612 absCellIdList1[0] = absCellId1 ;
2613 fracList1 [0] = 1. ;
2615 Float_t ecell1 = cells->GetCellAmplitude(absCellId1);
2619 absCellIdList2[0] = absCellId2 ;
2620 fracList2 [0] = 1. ;
2622 Float_t ecell2 = cells->GetCellAmplitude(absCellId2);
2627 Float_t eRemain = (eCluster-ecell1-ecell2)/2;
2628 Float_t shareFraction1 = (ecell1+eRemain)/eCluster;
2629 Float_t shareFraction2 = (ecell2+eRemain)/eCluster;
2633 for(
Int_t iCell = 0;iCell < ncells;iCell++){
2635 Int_t absId = absCellIdList[iCell];
2636 if ( absId==absCellId1 || absId==absCellId2 || absId < 0 )
continue;
2638 Float_t ecell = cells->GetCellAmplitude(absId);
2640 absCellIdList1[ncells1] = absId;
2642 fracList1[ncells1] = shareFraction1;
2643 e1 += ecell*shareFraction1;
2645 fracList1[ncells1] = 1.;
2652 absCellIdList2[ncells2]= absId;
2655 fracList2[ncells2] = shareFraction2;
2656 e2 += ecell*shareFraction2;
2658 fracList2[ncells2] = 1.;
2669 cluster1->SetNCells(ncells1);
2670 cluster2->SetNCells(ncells2);
2672 cluster1->SetCellsAbsId(absCellIdList1);
2673 cluster2->SetCellsAbsId(absCellIdList2);
2675 cluster1->SetCellsAmplitudeFraction(fracList1);
2676 cluster2->SetCellsAmplitudeFraction(fracList2);
2703 if(largestCellID==-1) AliFatal(
"CheckDistanceToBadChannel: FindLargestCellInCluster found cluster with NCells<1?");
2705 Int_t largestCellicol = -1, largestCellirow = -1;
2706 Int_t rowdiff = 0, coldiff = 0;
2709 if(largestCelliMod < 0) AliFatal(
"CheckDistanceToBadChannel: GetModuleNumberAndCellPosition found SM with ID<0?");
2711 Int_t nMinRows = 0, nMaxRows = 0;
2712 Int_t nMinCols = 0, nMaxCols = 0;
2714 Bool_t checkNextSM = kFALSE;
2717 nMinRows = largestCellirow - distanceForLoop;
2718 nMaxRows = largestCellirow + distanceForLoop;
2719 if(nMinRows < 0) nMinRows = 0;
2720 if(nMaxRows > AliEMCALGeoParams::fgkEMCALRows) nMaxRows = AliEMCALGeoParams::fgkEMCALRows;
2722 nMinCols = largestCellicol - distanceForLoop;
2723 nMaxCols = largestCellicol + distanceForLoop;
2725 if(largestCelliMod%2){
2728 checkNextSM = kTRUE;
2730 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols) nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2732 if(nMinCols < 0) nMinCols = 0;
2733 if(nMaxCols > AliEMCALGeoParams::fgkEMCALCols){
2734 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2735 checkNextSM = kTRUE;
2739 nMinRows = largestCellirow - distanceForLoop;
2740 nMaxRows = largestCellirow + distanceForLoop;
2741 if(nMinRows < 0) nMinRows = 0;
2742 if(nMaxRows > AliEMCALGeoParams::fgkEMCALCols) nMaxRows = AliEMCALGeoParams::fgkEMCALCols;
2744 nMinCols = largestCellicol - distanceForLoop;
2745 nMaxCols = largestCellicol + distanceForLoop;
2746 if(nMinCols < 0) nMinCols = 0;
2759 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2761 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2763 if(irow == largestCellirow && icol == largestCellicol)
continue;
2772 if(iBadCell==0)
continue;
2774 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2775 coldiff = TMath::Abs( largestCellicol - icol ) ;
2791 if(largestCelliMod%2){
2792 nMinCols = largestCellicol - distanceForLoop + AliEMCALGeoParams::fgkEMCALCols;
2793 nMaxCols = AliEMCALGeoParams::fgkEMCALCols;
2795 largestCelliMod -= 1;
2796 largestCellicol += AliEMCALGeoParams::fgkEMCALCols;
2799 nMaxCols = largestCellicol + distanceForLoop - AliEMCALGeoParams::fgkEMCALCols;
2801 largestCelliMod += 1;
2802 largestCellicol -= AliEMCALGeoParams::fgkEMCALCols;
2810 for (
Int_t irow = nMinRows;irow < nMaxRows;irow++)
2812 for (
Int_t icol = nMinCols;icol < nMaxCols;icol++)
2815 if(
fClusterType == 1 && largestCelliMod<fEMCALBadChannelsMap->GetEntries()){
2821 if(iBadCell==0)
continue;
2823 rowdiff = TMath::Abs( largestCellirow - irow ) ;
2824 coldiff = TMath::Abs( largestCellicol - icol ) ;
2854 cluster->GetPosition(clusPos);
2855 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2856 Double_t etaCluster = clusterVector.Eta();
2857 Double_t phiCluster = clusterVector.Phi();
2858 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2871 if (
fClusterType == 2 && !( cluster->GetType() == AliVCluster::kPHOSNeutral)){
2910 cluster->GetPosition(clusPos);
2911 TVector3 clusterVector(clusPos[0],clusPos[1],clusPos[2]);
2912 Double_t etaCluster = clusterVector.Eta();
2913 Double_t phiCluster = clusterVector.Phi();
2914 if (phiCluster < 0) phiCluster += 2*TMath::Pi();
2927 if (phiCluster < fMinPhiCut || phiCluster >
fMaxPhiCut){
2969 AliError(
"Task needs AOD or ESD event, returning");
2974 if(!cluster->IsEMCAL() && !cluster->IsPHOS()){AliError(
"Cluster is neither EMCAL nor PHOS, returning");
return kFALSE;}
2976 Float_t clusterPosition[3] = {0,0,0};
2977 cluster->GetPosition(clusterPosition);
2978 Double_t clusterR = TMath::Sqrt( clusterPosition[0]*clusterPosition[0] + clusterPosition[1]*clusterPosition[1] );
2984 for (
Int_t i = 0;i < 2;i++){
2986 AliVTrack *inTrack = 0x0;
2988 if(tracklabel > event->GetNumberOfTracks() )
continue;
2989 inTrack = esdev->GetTrack(tracklabel);
2992 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(tracklabel));
2994 for(
Int_t ii=0;ii<
event->GetNumberOfTracks();ii++) {
2995 inTrack =
dynamic_cast<AliVTrack*
>(
event->GetTrack(ii));
2997 if(inTrack->GetID() == tracklabel) {
3009 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3016 if(inTrack->Charge() > 0) {
3032 Int_t clusterMCLabel = cluster->GetLabel();
3033 Int_t convPhotonDaughterLabel = -1;
3034 if(inTrack->Charge() > 0) convPhotonDaughterLabel = convPhoton->
GetMCLabelPositive();
3036 if( (convPhotonDaughterLabel != -1) && (clusterMCLabel != -1) && (convPhotonDaughterLabel == clusterMCLabel)){
3045 Bool_t match_dPhi = kFALSE;
3050 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3051 else match_dEta = kFALSE;
3053 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3054 else match_dPhi = kFALSE;
3057 if(match_dEta && match_dPhi){
3091 TClonesArray * arrClustersMatch = NULL;
3093 nClus =
event->GetNumberOfCaloClusters();
3095 arrClustersMatch =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3096 if(!arrClustersMatch)
3097 AliFatal(Form(
"%sClustersBranch was not found in AliCaloPhotonCuts::FillHistogramsExtendedQA! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3098 nClus = arrClustersMatch->GetEntries();
3103 fGeomEMCAL = AliEMCALGeometry::GetInstance();
3104 if(!
fGeomEMCAL){ AliFatal(
"EMCal geometry not initialized!");}
3107 fGeomPHOS = AliPHOSGeometry::GetInstance();
3108 if(!
fGeomPHOS) AliFatal(
"PHOS geometry not initialized!");
3117 AliError(
"Task needs AOD or ESD event, returning");
3123 AliESDtrackCuts *EsdTrackCuts = 0x0;
3124 if(!isEMCalOnly && esdev){
3126 Int_t runNumber =
event->GetRunNumber();
3128 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
3129 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
3131 }
else if (runNumber>=209122){
3134 EsdTrackCuts =
new AliESDtrackCuts();
3135 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
3136 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
3137 EsdTrackCuts->AliESDtrackCuts::SetCutOutDistortedRegionsTPC(kTRUE);
3138 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
3139 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
3140 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
3142 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
3143 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
3144 AliESDtrackCuts::kAny);
3145 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
3146 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
3147 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
3148 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
3149 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
3150 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
3153 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
3155 EsdTrackCuts->SetMaxDCAToVertexZ(2);
3156 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
3157 EsdTrackCuts->SetPtRange(0.15);
3162 for (
Int_t itr=0;itr<
event->GetNumberOfTracks();itr++){
3163 AliExternalTrackParam *trackParam = 0;
3164 AliVTrack *inTrack = 0x0;
3166 inTrack = esdev->GetTrack(itr);
3167 if(!inTrack)
continue;
3168 AliESDtrack *esdt =
dynamic_cast<AliESDtrack*
>(inTrack);
3170 if(!EsdTrackCuts->AcceptTrack(esdt))
continue;
3173 const AliExternalTrackParam *in = esdt->GetInnerParam();
3174 if (!in){AliDebug(2,
"Could not get InnerParam of Track, continue");
continue;}
3175 trackParam =
new AliExternalTrackParam(*in);
3177 inTrack =
dynamic_cast<AliVTrack*
>(aodev->GetTrack(itr));
3178 if(!inTrack)
continue;
3179 AliAODTrack *aodt =
dynamic_cast<AliAODTrack*
>(inTrack);
3181 if(!aodt->IsHybridGlobalConstrainedGlobal())
continue;
3182 if(TMath::Abs(aodt->Eta())>0.8)
continue;
3183 if(aodt->Pt()<0.15)
continue;
3188 Float_t clsPos[3] = {0.,0.,0.};
3189 for(
Int_t iclus=0;iclus < nClus;iclus++){
3190 AliVCluster * cluster = NULL;
3191 if(arrClustersMatch){
3193 cluster =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMatch->At(iclus));
3195 cluster =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMatch->At(iclus));
3197 cluster =
event->GetCaloCluster(iclus);
3200 if (!cluster)
continue;
3203 cluster->GetPosition(clsPos);
3204 Float_t clusterR = TMath::Sqrt( clsPos[0]*clsPos[0] + clsPos[1]*clsPos[1] );
3205 Float_t dR2 = dPhi*dPhi + dEta*dEta;
3214 if(inTrack->Charge() > 0) {
3233 Bool_t match_dPhi = kFALSE;
3239 if( TMath::Abs(dEta) <
fFuncPtDepEta->Eval(inTrack->Pt())) match_dEta = kTRUE;
3240 else match_dEta = kFALSE;
3242 if( TMath::Abs(dPhi) <
fFuncPtDepPhi->Eval(inTrack->Pt())) match_dPhi = kTRUE;
3243 else match_dPhi = kFALSE;
3246 if(match_dEta && match_dPhi){
3254 }
else if(isEMCalOnly){
3271 delete EsdTrackCuts;
3280 vector<Int_t>::iterator it;
3303 AliInfo(Form(
"Set CaloCut Number: %s",analysisCutSelection.Data()));
3304 if(analysisCutSelection.Length()!=
kNCuts) {
3305 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
3308 if(!analysisCutSelection.IsAlnum()){
3309 AliError(
"Cut selection is not alphanumeric");
3313 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
3314 analysisCutSelectionLowerCase.ToLower();
3315 const char *cutSelection = analysisCutSelectionLowerCase.Data();
3316 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 3341 }
else return kFALSE;
3348 }
else return kFALSE;
3355 }
else return kFALSE;
3362 }
else return kFALSE;
3369 }
else return kFALSE;
3376 }
else return kFALSE;
3383 }
else return kFALSE;
3390 }
else return kFALSE;
3397 }
else return kFALSE;
3404 }
else return kFALSE;
3411 }
else return kFALSE;
3418 }
else return kFALSE;
3425 }
else return kFALSE;
3432 }
else return kFALSE;
3439 }
else return kFALSE;
3446 }
else return kFALSE;
3453 }
else return kFALSE;
3460 }
else return kFALSE;
3467 }
else return kFALSE;
3470 AliError(
"Cut id out of range");
3474 AliError(
"Cut id %d not recognized");
3491 printf(
"\nCluster cutnumber \n");
3493 printf(
"%d",
fCuts[ic]);
3498 printf(
"Acceptance cuts: \n");
3499 if (
fClusterType == 0) printf(
"\tall calorimeter clusters are used\n");
3500 if (
fClusterType == 1) printf(
"\tEMCAL calorimeter clusters are used\n");
3501 if (
fClusterType == 2) printf(
"\tPHOS calorimeter clusters are used\n");
3502 if (
fClusterType == 3) printf(
"\tDCAL calorimeter clusters are used\n");
3507 printf(
"Cluster Quality cuts: \n");
3520 printf(
"NonLinearity Correction: \n");
3525 else printf(
"\t No NonLinearity Correction on AnalysisTask level has been chosen\n");
3537 switch(clusterType){
3551 AliError(Form(
"ClusterTypeCut not defined %d",clusterType));
3600 AliError(Form(
"MinEta Cut not defined %d",minEta));
3649 AliError(Form(
"MaxEta Cut not defined %d",maxEta));
3689 AliError(Form(
"MinPhi Cut not defined %d",minPhi));
3729 AliError(Form(
"Max Phi Cut not defined %d",maxPhi));
3738 switch(distanceToBadChannel){
3776 AliError(Form(
"minimum distance to bad channel Cut not defined %d",distanceToBadChannel));
3847 AliError(Form(
"Timing Cut not defined %d",timing));
3858 switch(trackMatching){
3905 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3908 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3914 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3917 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3923 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3926 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3932 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3935 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3941 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3944 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3950 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3953 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3958 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
3964 switch(trackMatching){
3992 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
3995 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4001 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4004 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4010 fFuncPtDepEta =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4013 fFuncPtDepPhi =
new TF1(
"func",
"[1] + 1 / pow(x + pow(1 / ([0] - [1]), 1 / [2]), [2])");
4018 AliError(Form(
"Track Matching Cut not defined %d",trackMatching));
4080 AliError(Form(
"Exotic cell Cut not defined %d",exoticCell));
4141 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4183 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4235 AliError(Form(
"Minimum Energy Cut not defined %d",minEnergy));
4277 AliError(Form(
"Min N cells Cut not defined %d",minNCells));
4444 AliError(Form(
"Max M02 Cut not defined %d",maxM02));
4457 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0955, 1.86e-3, 9.91 );
4459 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.524, 5.59e-3, 21.9 );
4465 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.0, 1.86e-3, 9.91 );
4467 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.424, 5.59e-3, 21.9 );
4473 return FunctionM02(clusEnergy, 0.0662, -0.0201, -0.2, 1.86e-3, 9.91 );
4475 return FunctionM02(clusEnergy, 0.353, -0.0264, -0.624, 5.59e-3, 21.9 );
4481 if( (0.27 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.4)
return 0.4;
4482 else return (0.27 + 0.0072 * TMath::Power(clusEnergy,2));
4484 if( (0.31 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4485 else return (0.31 + 0.0072 * TMath::Power(clusEnergy,2));
4487 if( (0.36 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4488 else return (0.36 + 0.0072 * TMath::Power(clusEnergy,2));
4490 if( (0.37 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4491 else return (0.37 + 0.0072 * TMath::Power(clusEnergy,2));
4493 if( (0.30 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4494 else return (0.30 + 0.0072 * TMath::Power(clusEnergy,2));
4496 if( (0.35 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4497 else return (0.35 + 0.0072 * TMath::Power(clusEnergy,2));
4499 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.39)
return 0.39;
4500 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4502 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4503 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4505 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4506 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4508 if( (0.32 + 0.0152 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4509 else return (0.32 + 0.0152 * TMath::Power(clusEnergy,2));
4511 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4512 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4514 if( (0.27 + 0.0092 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4515 else return (0.27 + 0.0092 * TMath::Power(clusEnergy,2));
4517 if( (0.32 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4518 else return (0.32 + 0.0072 * TMath::Power(clusEnergy,2));
4520 if( (0.34 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.7)
return 0.7;
4521 else return (0.34 + 0.0072 * TMath::Power(clusEnergy,2));
4523 if( (0.25 + 0.0072 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4524 else return (0.25 + 0.0072 * TMath::Power(clusEnergy,2));
4526 if( (0.32 + 0.0238 * TMath::Power(clusEnergy,2)) >= 0.5)
return 0.5;
4527 else return (0.32 + 0.0238 * TMath::Power(clusEnergy,2));
4530 AliError(Form(
"Max M02 for merged cluster Cut not defined %d",maxM02));
4543 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.3)
4544 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4548 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.27)
4549 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4553 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. ) > 0.25)
4554 return FunctionM02(clusEnergy, 2.135, -0.245, 0., 0., 0. );
4558 if (
FunctionM02(clusEnergy, 2.135, -0.245, 0.1, 0., 0. ) > 0.27)
4559 return FunctionM02(clusEnergy, 2.135, -0.245, 0.1, 0., 0. );
4563 if (
FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. ) > 0.27)
4564 return FunctionM02(clusEnergy, 2.135, -0.245, -0.1, 0., 0. );
4583 AliError(Form(
"Min M02 for merged cluster Cut not defined %d",minM02));