1 AliAnalysisTaskCaloTrackCorrelationM *AddTaskCaloTrackCorrM(TString data, TString calorimeter, Bool_t kPrintSettings = kFALSE)
3 // Creates a CaloTrackCorr task, configures it and adds it to the analysis manager.
5 // Get the pointer to the existing analysis manager via the static access method.
6 //==============================================================================
7 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
9 ::Error("AddTaskCaloTrackCorr", "No analysis manager to connect to.");
12 Bool_t kUseKinematics = kFALSE;
13 kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
15 cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
18 //===========================================================================
21 AliCaloTrackReader * reader = 0x0;
22 if(data.Contains("AOD")) reader = new AliCaloTrackAODReader();
23 else if(data=="ESD") reader = new AliCaloTrackESDReader();
24 else if(data=="MC" || (kUseKinematics && data == "ESD")) reader = new AliCaloTrackMCReader();
25 reader->SetDebug(-1);//10 for lots of messages
26 reader->SwitchOnCTS();
28 if(calorimeter == "EMCAL") {
29 reader->SwitchOnEMCALCells();
30 reader->SwitchOnEMCAL();
32 if(calorimeter == "PHOS") {
33 reader->SwitchOnPHOSCells();
34 reader->SwitchOnPHOS();
37 reader->SwitchOnSuspiciousClustersRemoval(); //EMCAL
39 // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
40 if(data.Contains("delta")){
41 reader->SwitchOffEMCAL();
42 reader->SwitchOffPHOS();
43 reader->SwitchOffEMCALCells();
44 reader->SwitchOffPHOSCells();
49 reader->SwitchOnStack();
50 reader->SwitchOffAODMCParticles();
52 else if(data == "AOD"){
53 reader->SwitchOffStack();
54 reader->SwitchOnAODMCParticles();
58 reader->SetZvertexCut(10.);
61 reader->SetEMCALPtMin(0.5);
62 reader->SetPHOSPtMin(0.5);
63 reader->SetCTSPtMin(0.1);
64 reader->SwitchOffWriteDeltaAOD() ;
65 if(kPrintSettings) reader->Print("");
67 // ##### Analysis algorithm settings ####
68 AliCaloPID * pid = new AliCaloPID();
69 pid->SetDispersionCut(1.5);
70 pid->SetTOFCut(5.e-9);
72 if(kPrintSettings) pid->Print("");
74 // AliFiducialCut * fidCut1stYear = new AliFiducialCut();
75 // fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
76 // fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
77 // fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
78 // fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
79 // fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
80 // fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,300.);
81 // -------------------------------------------------
82 // --- Isolation Cut ---
83 // -------------------------------------------------
84 AliIsolationCut * ic = new AliIsolationCut();
86 //ic->SetPtThreshold(0.7);
87 ic->SetPtFraction(0.1);
88 ic->SetPtThreshold(0.7) ;
89 ic->SetSumPtThreshold(1.0) ;
90 //choose different method for IC:
91 //kPtThresIC, kSumPtIC, kPtFracIC, kSumPtFracIC
92 // ic->SetICMethod(AliIsolationCut::kPtThresIC);
93 ic->SetICMethod(AliIsolationCut::kSumPtFracIC);
94 //particle in cone: kNeutralAndCharged=0, kOnlyNeutral=1, kOnlyCharged=2
95 ic->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged);
96 if(kPrintSettings) ic->Print("");
98 //analysis with calorimeter triggers
99 if(calorimeter=="PHOS" || calorimeter=="EMCAL") {
100 AliCalorimeterUtils * cu = new AliCalorimeterUtils();
101 cu->SwitchOnBadChannelsRemoval();
103 cu->SetNumberOfCellsFromEMCALBorder(1) ; //nEMCAL);
104 cu->SetNumberOfCellsFromPHOSBorder(2) ; //nPHOS);
106 // -----------------------------------
107 // --- Photon and Pi0 Analysis ---
108 // -----------------------------------
110 AliAnaPhoton *anaphoton = new AliAnaPhoton();
111 anaphoton->SetDebug(-1); //10 for lots of messages
112 anaphoton->SetMinPt(1.0);
113 anaphoton->SetCaloPID(pid);
114 anaphoton->SetCalorimeter(calorimeter);
115 if(kUseKinematics) anaphoton->SwitchOnDataMC() ;//Access MC stack and fill more histograms
116 else anaphoton->SwitchOffDataMC() ;
117 anaphoton->SwitchOffCaloPID();
118 anaphoton->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
119 anaphoton->SwitchOnFiducialCut();
120 AliFiducialCut * fidCut1stYear = anaphoton->GetFiducialCut();
121 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
122 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
123 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
124 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
125 anaphoton->SwitchOnTrackMatchRejection();
126 //settings for different multiplicity analysis
127 anaphoton->SwitchOffEventSelection() ;
128 anaphoton->SetMultiplicity(80, 120);
130 if(calorimeter == "EMCAL"){
131 anaphoton->SetNCellCut(1);
132 anaphoton->SetMinPt(0.3);
133 //if(!kUseKinematics) anaphoton->SetTimeCut(525, 725);
134 anaphoton->SetMinDistanceToBadChannel(1, 2, 3);
137 anaphoton->SetMinPt(0.3);
138 anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
139 anaphoton->SetNCellCut(2);
141 if(!data.Contains("delta")) {
142 anaphoton->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
143 anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
145 else anaphoton->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
146 anaphoton->AddToHistogramsName("AnaPhoton_");
147 //Set Histograms bins and ranges
148 anaphoton->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
149 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
150 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
152 if(kPrintSettings) anaphoton->Print("");
153 AliAnaPi0 *anapi0 = new AliAnaPi0();
154 anapi0->SetDebug(-1);//10 for lots of messages
155 anapi0->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
156 anapi0->AddToHistogramsName("AnaPi0_");
157 anapi0->SetCaloPID(pid);
158 anapi0->SetCalorimeter(calorimeter);
159 anapi0->SwitchOnFiducialCut();
160 AliFiducialCut * fidCut1stYear = anapi0->GetFiducialCut();
161 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
162 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
163 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
164 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
166 //settings for different multiplicity analysis
167 anapi0->SwitchOnEventSelection() ;
168 anapi0->SetNCentrBin(1);
169 anapi0->SetMultiplicity(80, 120);
170 anapi0->SetMultiBin(1);
171 anapi0->SwitchOffDataMC() ;//Access MC stack and fill more histograms
173 anapi0->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
174 //anapi0->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
175 //anapi0->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.8, 0.8, 200) ;
176 anapi0->GetHistogramRanges()->SetHistoMassRangeAndNBins(0., 1.0, 100) ;
177 anapi0->GetHistogramRanges()->SetHistoAsymmetryRangeAndNBins(0., 1. , 10) ;
178 if(kPrintSettings) anapi0->Print("");
180 // -------------------------------------------------
181 // --- Pi0 EbE Analysis ---
182 // -------------------------------------------------
184 AliNeutralMesonSelection *nms = new AliNeutralMesonSelection();
185 nms->SetInvMassCutRange(0.05, 0.16) ;
186 nms->SwitchOffAngleSelection() ;
187 nms->KeepNeutralMesonSelectionHistos(kTRUE);
188 //Set Histrograms bins and ranges
189 nms->SetHistoERangeAndNBins(0, 50, 100) ;
190 nms->SetHistoPtRangeAndNBins(0, 50, 100) ;
191 // nms->GetHistogramRanges()->SetHistoAngleRangeAndNBins(0, 0.3, 100) ;
192 // nsm->GetHistogramRanges()->SetHistoIMRangeAndNBins(0, 0.4, 100) ;
194 AliAnaPi0EbE *anapi0ebe = new AliAnaPi0EbE();
195 anapi0ebe->SetDebug(-1);//10 for lots of messages
196 anapi0ebe->SetAnalysisType(AliAnaPi0EbE::kIMCalo);
197 anapi0ebe->SetMinPt(0.5);
198 anapi0ebe->SetCalorimeter(calorimeter);
199 anapi0ebe->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
200 if(!data.Contains("delta")) {
201 anapi0ebe->SetOutputAODName(Form("Pi0s%s",calorimeter.Data()));
202 anapi0ebe->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
204 else anapi0ebe->SetOutputAODName(Form("Pi0s%s",calorimeter.Data()));
206 if(kUseKinematics) anapi0ebe->SwitchOnDataMC() ;//Access MC stack and fill more histograms
207 else anapi0ebe->SwitchOffDataMC() ;
208 anapi0ebe->SwitchOffEventSelection() ;
209 anapi0ebe->SetMultiplicity(80, 120);
210 anapi0ebe->SetMultiBin(1);
211 anapi0ebe->SetNeutralMesonSelection(nms);
212 //Set Histrograms bins and ranges
213 anapi0ebe->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
214 // anapi0->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
215 // anapi0->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
216 if(kPrintSettings) anapi0ebe->Print("");
218 // ### Pi0 Correlation with hadrons, not isolated
219 AliAnaParticleHadronCorrelation *anacorrhadronpi0 = new AliAnaParticleHadronCorrelation();
220 anacorrhadronpi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
221 anacorrhadronpi0->AddToHistogramsName("AnaHadronCorrPi0_");
222 anacorrhadronpi0->SetDebug(-1);
223 anacorrhadronpi0->SwitchOffCaloPID();
224 anacorrhadronpi0->SwitchOnFiducialCut();
225 AliFiducialCut * fidCut1stYear = anacorrhadronpi0->GetFiducialCut();
226 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
227 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
228 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
229 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
230 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
231 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
232 anacorrhadronpi0->SwitchOnDecayCorr();
233 anacorrhadronpi0->SetPtCutRange(0.5,50);
234 anacorrhadronpi0->SetDeltaPhiCutRange(1.5,4.5);
235 anacorrhadronpi0->SelectIsolated(kFALSE); // do correlation with non isolated pi0
236 anacorrhadronpi0->SetMultiplicity(80, 100);
237 anacorrhadronpi0->SetMultiBin(1);
238 anacorrhadronpi0->SwitchOffNeutralCorr();
239 anacorrhadronpi0->SwitchOffEventSelection();
240 anacorrhadronpi0->SwitchOnSeveralUECalculation();
241 anacorrhadronpi0->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
242 if(kUseKinematics) anacorrhadronpi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
243 else anacorrhadronpi0->SwitchOffDataMC() ;
244 //if(calorimeter=="PHOS"){
245 // //Correlate with particles in EMCAL
246 // anacorrhadronpi0->SwitchOnCaloPID();
247 // anacorrhadronpi0->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
249 //Set Histograms bins and ranges
250 anacorrhadronpi0->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
251 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
252 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
253 if(kPrintSettings) anacorrhadronpi0->Print("");
255 AliAnaParticleIsolation *anaisolpi0 = new AliAnaParticleIsolation();
256 anaisolpi0->SetDebug(-1);
257 anaisolpi0->SetMinPt(2.);
258 anaisolpi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
259 anaisolpi0->AddToHistogramsName("AnaIsolPi0_");
260 anaisolpi0->SetCalorimeter(calorimeter);
261 if(kUseKinematics) anaisolpi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
262 else anaisolpi0->SwitchOffDataMC() ;
263 //Select clusters with no pair, if both clusters with pi0 mass
264 anaisolpi0->SwitchOffInvariantMass();
265 //anaisol->SetNeutralMesonSelection(nms);
267 anaisolpi0->SetIsolationCut(ic);
268 //Do or not do isolation with previously produced AODs.
269 //No effect if use of SwitchOnSeveralIsolation()
270 anaisolpi0->SwitchOffReIsolation();
272 anaisolpi0->SwitchOffSeveralIsolation() ;
273 //Set Histograms bins and ranges
274 anaisolpi0->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
275 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
276 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
277 if(kPrintSettings) anaisol->Print("");
279 // ### Pi0 Correlation with hadrons, isolated
280 AliAnaParticleHadronCorrelation *anacorrhadronisopi0 = new AliAnaParticleHadronCorrelation();
281 anacorrhadronisopi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
282 anacorrhadronisopi0->AddToHistogramsName("AnaHadronCorrIsoPi0_");
283 anacorrhadronisopi0->SetDebug(-1);
284 anacorrhadronisopi0->SwitchOffCaloPID();
285 anacorrhadronisopi0->SwitchOnFiducialCut();
286 AliFiducialCut * fidCut1stYear = anacorrhadronisopi0->GetFiducialCut();
287 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
288 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
289 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
290 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
291 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
292 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
293 anacorrhadronisopi0->SwitchOnDecayCorr();
294 anacorrhadronisopi0->SetPtCutRange(0.5,50);
295 anacorrhadronisopi0->SetDeltaPhiCutRange(1.5,4.5);
296 anacorrhadronisopi0->SelectIsolated(kTRUE); // do correlation with isolated pi0
297 anacorrhadronisopi0->SetMultiplicity(80, 100);
298 anacorrhadronisopi0->SetMultiBin(1);
299 anacorrhadronisopi0->SwitchOffNeutralCorr();
300 anacorrhadronisopi0->SwitchOffEventSelection();
301 anacorrhadronisopi0->SwitchOnSeveralUECalculation();
302 anacorrhadronisopi0->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
303 if(kUseKinematics) anacorrhadronisopi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
304 else anacorrhadronisopi0->SwitchOffDataMC() ;
305 //if(calorimeter=="PHOS"){
306 // //Correlate with particles in EMCAL
307 // anacorrhadronpi0->SwitchOnCaloPID();
308 // anacorrhadronpi0->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
310 //Set Histograms bins and ranges
311 anacorrhadronisopi0->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
312 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
313 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
314 if(kPrintSettings) anacorrhadronisopi0->Print("");
316 } //analysis in calorimeter
318 //---charge particle trigger---------------------
319 //------------------------------------------------
321 AliAnaChargedParticles *anacharge = new AliAnaChargedParticles();
322 anacharge->SetDebug(-1); //10 for lots of messages
323 anacharge->SetMinPt(1.0);
324 // anacharge->SetCaloPID(pid);
325 if(kUseKinematics) anacharge->SwitchOnDataMC() ;//Access MC stack and fill more histograms
326 else anacharge->SwitchOffDataMC() ;
327 anacharge->SwitchOffCaloPID();
328 anacharge->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
329 anacharge->SwitchOnFiducialCut();
330 AliFiducialCut * fidCut1stYear = anacharge->GetFiducialCut();
331 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
332 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
333 if(!data.Contains("delta")) {
334 anacharge->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
335 anacharge->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
337 else anacharge->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
338 anacharge->AddToHistogramsName("AnaCharge_");
339 //Set Histograms bins and ranges
340 anacharge->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
341 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
342 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
344 if(kPrintSettings) anacharge->Print("");
347 // -------------------------------------------------
348 // --- Correlation Analysis with non-isolated triggers ---
349 // -------------------------------------------------
350 // ### Correlation with hadrons
351 AliAnaParticleHadronCorrelation *anacorrhadron = new AliAnaParticleHadronCorrelation();
352 anacorrhadron->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
353 anacorrhadron->AddToHistogramsName("AnaHadronCorrTrig_");
354 anacorrhadron->SetDebug(-1);
355 anacorrhadron->SwitchOnCaloPID();
356 anacorrhadron->SwitchOnFiducialCut();
357 AliFiducialCut * fidCut1stYear = anacorrhadron->GetFiducialCut();
358 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
359 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
360 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
361 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
362 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
363 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
364 anacorrhadron->SetPtCutRange(0.5,50);
365 anacorrhadron->SetDeltaPhiCutRange(1.5,4.5);
366 anacorrhadron->SetMultiplicity(80, 120);
367 anacorrhadron->SetMultiBin(1);
368 anacorrhadron->SwitchOffNeutralCorr();
369 anacorrhadron->SwitchOffEventSelection();
370 anacorrhadron->SwitchOnSeveralUECalculation();
371 anacorrhadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
372 anacorrhadron->SelectIsolated(kFALSE); // do correlation with isolated photons
373 if(kUseKinematics) anacorrhadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
374 else anacorrhadron->SwitchOffDataMC() ;
375 //if(calorimeter=="PHOS"){
376 //Correlate with particles in EMCAL
377 //anacorrhadron->SwitchOnCaloPID();
378 //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
380 //Set Histograms bins and ranges
381 anacorrhadron->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
382 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
383 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
384 if(kPrintSettings) anacorrhadron->Print("");
388 // ### Isolation analysis ###
389 AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
390 anaisol->SetDebug(-1);
391 anaisol->SetMinPt(2.0);
392 anaisol->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
393 anaisol->AddToHistogramsName("AnaIsolTrig_");
394 anaisol->SetCalorimeter(calorimeter);
395 if(kUseKinematics) anaisol->SwitchOnDataMC() ;//Access MC stack and fill more histograms
396 else anaisol->SwitchOffDataMC() ;
397 //Select clusters with no pair, if both clusters with pi0 mass
398 anaisol->SwitchOffInvariantMass();
399 //anaisol->SetNeutralMesonSelection(nms);
401 anaisol->SetIsolationCut(ic);
402 //Do or not do isolation with previously produced AODs.
403 //No effect if use of SwitchOnSeveralIsolation()
404 anaisol->SwitchOffReIsolation();
406 anaisol->SwitchOffSeveralIsolation() ;
407 //Set Histograms bins and ranges
408 anaisol->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
409 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
410 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
412 if(kPrintSettings) anaisol->Print("");
414 // -------------------------------------------------
415 // --- Correlation Analysis with isolated triggers ---
416 // -------------------------------------------------
417 // ### Correlation with hadrons
418 AliAnaParticleHadronCorrelation *anacorrisohadron = new AliAnaParticleHadronCorrelation();
419 anacorrisohadron->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
420 anacorrisohadron->AddToHistogramsName("AnaHadronCorrIsoTrig_");
421 anacorrisohadron->SetDebug(-1);
422 anacorrisohadron->SwitchOffCaloPID();
423 anacorrisohadron->SwitchOnFiducialCut();
424 AliFiducialCut * fidCut1stYear = anacorrisohadron->GetFiducialCut();
425 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
426 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
427 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
428 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
429 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
430 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
431 anacorrisohadron->SetPtCutRange(0.5,50);
432 anacorrisohadron->SetDeltaPhiCutRange(1.5,4.5);
433 anacorrisohadron->SetMultiplicity(80, 100);
434 anacorrisohadron->SetMultiBin(1);
435 anacorrisohadron->SwitchOffNeutralCorr();
436 anacorrisohadron->SwitchOffEventSelection();
437 anacorrisohadron->SwitchOnSeveralUECalculation();
438 anacorrisohadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
439 anacorrisohadron->SelectIsolated(kTRUE); // do correlation with isolated photons
440 if(kUseKinematics) anacorrisohadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
441 else anacorrisohadron->SwitchOffDataMC() ;
442 //if(calorimeter=="PHOS"){
443 //Correlate with particles in EMCAL
444 //anacorrhadron->SwitchOnCaloPID();
445 //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
447 //Set Histograms bins and ranges
448 anacorrisohadron->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
449 // ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
450 // ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
451 if(kPrintSettings) anacorrisohadron->Print("");
453 // #### Configure Maker ####
454 AliAnaCaloTrackCorrMaker * maker = new AliAnaCaloTrackCorrMaker();
455 maker->SetReader(reader);//pointer to reader
456 Int_t n = 0;//Analysis number, order is important
457 // Particle selection analysis
458 if(calorimeter=="PHOS" || calorimeter=="EMCAL") {
459 maker->SetCaloUtils(cu); //pointer to calorimeter utils
460 maker->AddAnalysis(anaphoton,n++);
461 maker->AddAnalysis(anapi0,n++);
462 maker->AddAnalysis(anapi0ebe,n++);
463 maker->AddAnalysis(anacorrhadronpi0,n++);
464 maker->AddAnalysis(anaisolpi0,n++);
465 maker->AddAnalysis(anacorrhadronisopi0,n++);
467 if(calorimeter=="CTS")
468 maker->AddAnalysis(anacharge,n++);
469 // Correlation analysis
470 maker->AddAnalysis(anacorrhadron,n++);
471 // Isolation analysis
472 maker->AddAnalysis(anaisol,n++);
473 // Correlation analysis with isolated triggers
474 maker->AddAnalysis(anacorrisohadron,n);
475 maker->SetAnaDebug(-1) ;
476 maker->SwitchOnHistogramsMaker() ;
477 if(data.Contains("delta")) maker->SwitchOffAODsMaker() ;
478 else maker->SwitchOnAODsMaker() ;
480 if(kPrintSettings) maker->Print("");
482 printf("======================== \n");
483 printf(" End Configuration of CaloTrackCorr analysis with detector %s \n",calorimeter.Data());
484 printf("======================== \n");
487 //===========================================================================
488 // AliAnalysisTaskCaloTrackCorrelationM * task = new AliAnalysisTaskCaloTrackCorrelationM(Form("CaloTrackCorr%s",calorimeter.Data()));
489 AliAnalysisTaskCaloTrackCorrelationM * task = new AliAnalysisTaskCaloTrackCorrelationM("CaloTrackCorr");
490 task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
491 //task->SetDebugLevel(-1);
492 task->SetAnalysisMaker(maker);
493 //if(!kSimulation)task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before.
497 // sprintf(name,"CaloTrackCorr_%s",calorimeter.Data());
498 // cout<<"Name of task "<<name<<endl;
499 //AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form(name),TList::Class(),
500 // AliAnalysisManager::kOutputContainer, Form("CaloTrackCorr_%s.root",calorimeter.Data()));
502 TString outputfile = AliAnalysisManager::GetCommonFileName();
503 outputfile.ReplaceAll(".root","") ;
504 outputfile.Append("M.root") ;
505 // AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form("CaloTrackCorr_%s",calorimeter.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:CaloTrackCorr_%s",outputfile.Data(),calorimeter.Data()));
506 AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(calorimeter.Data(), TList::Class(),
507 AliAnalysisManager::kOutputContainer,
508 Form("%s:CaloTrackCorr",outputfile.Data()));
510 AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("%sCuts",calorimeter.Data()), TList::Class(),
511 AliAnalysisManager::kParamContainer,
512 Form("%s:CaloTrackCorrCuts",outputfile.Data()));
513 // Create ONLY the output containers for the data produced by the task.
514 // Get and connect other common input/output containers via the manager as below
515 //==============================================================================
516 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
517 // AOD output slot will be used in a different way in future
518 //if(!data.Contains("delta")) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
519 // mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
520 mgr->ConnectOutput (task, 1, cout_pc);
521 mgr->ConnectOutput (task, 2, cout_cuts);