1 AliAnalysisTaskParticleCorrelationM *AddTaskPartCorrM(TString data, TString calorimeter, Bool_t kPrintSettings = kFALSE)
3 // Creates a PartCorr 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("AddTaskPartCorr", "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 // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
38 if(data.Contains("delta")){
39 reader->SwitchOffEMCAL();
40 reader->SwitchOffPHOS();
41 reader->SwitchOffEMCALCells();
42 reader->SwitchOffPHOSCells();
47 reader->SwitchOnStack();
48 reader->SwitchOffAODMCParticles();
50 else if(data == "AOD"){
51 reader->SwitchOffStack();
52 reader->SwitchOnAODMCParticles();
56 reader->SetZvertexCut(10.);
59 reader->SetEMCALPtMin(0.5);
60 reader->SetPHOSPtMin(0.5);
61 reader->SetCTSPtMin(0.1);
62 reader->SwitchOffWriteDeltaAOD() ;
63 if(kPrintSettings) reader->Print("");
65 // ##### Analysis algorithm settings ####
66 AliCaloPID * pid = new AliCaloPID();
67 pid->SetDispersionCut(1.5);
68 pid->SetTOFCut(5.e-9);
70 if(kPrintSettings) pid->Print("");
72 // AliFiducialCut * fidCut1stYear = new AliFiducialCut();
73 // fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
74 // fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
75 // fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
76 // fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
77 // fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
78 // fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,300.);
79 // -------------------------------------------------
80 // --- Isolation Cut ---
81 // -------------------------------------------------
82 AliIsolationCut * ic = new AliIsolationCut();
84 //ic->SetPtThreshold(0.7);
85 ic->SetPtFraction(0.1);
86 ic->SetPtThreshold(0.7) ;
87 ic->SetSumPtThreshold(1.0) ;
88 //choose different method for IC:
89 //kPtThresIC, kSumPtIC, kPtFracIC, kSumPtFracIC
90 // ic->SetICMethod(AliIsolationCut::kPtThresIC);
91 ic->SetICMethod(AliIsolationCut::kSumPtFracIC);
92 //particle in cone: kNeutralAndCharged=0, kOnlyNeutral=1, kOnlyCharged=2
93 ic->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged);
94 if(kPrintSettings) ic->Print("");
96 //analysis with calorimeter triggers
97 if(calorimeter=="PHOS" || calorimeter=="EMCAL") {
98 AliCalorimeterUtils * cu = new AliCalorimeterUtils();
99 cu->SwitchOnBadChannelsRemoval();
101 cu->SetNumberOfCellsFromEMCALBorder(1) ; //nEMCAL);
102 cu->SetNumberOfCellsFromPHOSBorder(2) ; //nPHOS);
103 // cu->SwitchOnNoFiducialBorderInEMCALEta0();
104 cu->SetPHOSChannelStatus(1,48, 8); //PHOS new hot channel
106 // // Remove EMCAL hottest channels from Gustavo list
108 cu->SetEMCALChannelStatus(0,3,13); cu->SetEMCALChannelStatus(0,44,1); cu->SetEMCALChannelStatus(0,3,13); //warm
109 cu->SetEMCALChannelStatus(0,20,7); cu->SetEMCALChannelStatus(0,38,2); //hot
111 cu->SetEMCALChannelStatus(1,4,7); cu->SetEMCALChannelStatus(1,4,13); cu->SetEMCALChannelStatus(1,9,20);
112 cu->SetEMCALChannelStatus(1,14,15); cu->SetEMCALChannelStatus(1,23,16); cu->SetEMCALChannelStatus(1,32,23);
113 cu->SetEMCALChannelStatus(1,37,5); cu->SetEMCALChannelStatus(1,40,1); cu->SetEMCALChannelStatus(1,40,2);
114 cu->SetEMCALChannelStatus(1,40,5); cu->SetEMCALChannelStatus(1,41,0); cu->SetEMCALChannelStatus(1,41,1);
115 cu->SetEMCALChannelStatus(1,41,2); cu->SetEMCALChannelStatus(1,41,4);
117 cu->SetEMCALChannelStatus(2,14,15); cu->SetEMCALChannelStatus(2,18,16); cu->SetEMCALChannelStatus(2,18,17);
118 cu->SetEMCALChannelStatus(2,18,18); cu->SetEMCALChannelStatus(2,18,20); cu->SetEMCALChannelStatus(2,18,21);
119 cu->SetEMCALChannelStatus(2,18,23); cu->SetEMCALChannelStatus(2,19,16); cu->SetEMCALChannelStatus(2,19,17);
120 cu->SetEMCALChannelStatus(2,19,19); cu->SetEMCALChannelStatus(2,19,20); cu->SetEMCALChannelStatus(2,19,21);
121 cu->SetEMCALChannelStatus(2,19,22);
123 cu->SetEMCALChannelStatus(3,4,7);
125 // -----------------------------------
126 // --- Photon and Pi0 Analysis ---
127 // -----------------------------------
129 AliAnaPhoton *anaphoton = new AliAnaPhoton();
130 anaphoton->SetDebug(-1); //10 for lots of messages
131 anaphoton->SetMinPt(1.0);
132 anaphoton->SetCaloPID(pid);
133 anaphoton->SetCalorimeter(calorimeter);
134 if(kUseKinematics) anaphoton->SwitchOnDataMC() ;//Access MC stack and fill more histograms
135 else anaphoton->SwitchOffDataMC() ;
136 anaphoton->SwitchOffCaloPID();
137 anaphoton->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
138 anaphoton->SwitchOnFiducialCut();
139 AliFiducialCut * fidCut1stYear = anaphoton->GetFiducialCut();
140 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
141 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
142 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
143 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
144 anaphoton->SwitchOnTrackMatchRejection();
145 //settings for different multiplicity analysis
146 anaphoton->SwitchOffEventSelection() ;
147 anaphoton->SetMultiplicity(80, 120);
149 if(calorimeter == "EMCAL"){
150 anaphoton->SetNCellCut(1);
151 if(!kUseKinematics) anaphoton->SetTimeCut(525, 725);
152 anaphoton->SetMinDistanceToBadChannel(4, 5, 10);
155 anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
156 anaphoton->SetNCellCut(2);
158 if(!data.Contains("delta")) {
159 anaphoton->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
160 anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
162 else anaphoton->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
163 anaphoton->AddToHistogramsName("AnaPhoton_");
164 //Set Histograms bins and ranges
165 anaphoton->SetHistoPtRangeAndNBins(0, 50, 100) ;
166 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
167 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
169 if(kPrintSettings) anaphoton->Print("");
170 AliAnaPi0 *anapi0 = new AliAnaPi0();
171 anapi0->SetDebug(-1);//10 for lots of messages
172 anapi0->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
173 anapi0->AddToHistogramsName("AnaPi0_");
174 anapi0->SetCaloPID(pid);
175 anapi0->SetCalorimeter(calorimeter);
176 anapi0->SwitchOnFiducialCut();
177 AliFiducialCut * fidCut1stYear = anapi0->GetFiducialCut();
178 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
179 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
180 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
181 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
183 //settings for different multiplicity analysis
184 anapi0->SwitchOnEventSelection() ;
185 anapi0->SetNCentrBin(1);
186 anapi0->SetMultiplicity(80, 120);
187 anapi0->SetMultiBin(1);
188 anapi0->SwitchOffDataMC() ;//Access MC stack and fill more histograms
189 if(calorimeter=="PHOS") anapi0->SetNumberOfModules(3); //PHOS first year
190 else if(calorimeter=="EMCAL") anapi0->SetNumberOfModules(4); //EMCAL first year
191 anapi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
192 //anapi0->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
193 //anapi0->SetHistoEtaRangeAndNBins(-0.8, 0.8, 200) ;
194 anapi0->SetHistoMassRangeAndNBins(0., 1.0, 100) ;
195 anapi0->SetHistoAsymmetryRangeAndNBins(0., 1. , 10) ;
196 if(kPrintSettings) anapi0->Print("");
198 // -------------------------------------------------
199 // --- Pi0 EbE Analysis ---
200 // -------------------------------------------------
202 AliNeutralMesonSelection *nms = new AliNeutralMesonSelection();
203 nms->SetInvMassCutRange(0.05, 0.16) ;
204 nms->SwitchOffAngleSelection() ;
205 nms->KeepNeutralMesonSelectionHistos(kTRUE);
206 //Set Histrograms bins and ranges
207 nms->SetHistoERangeAndNBins(0, 50, 100) ;
208 nms->SetHistoPtRangeAndNBins(0, 50, 100) ;
209 // nms->SetHistoAngleRangeAndNBins(0, 0.3, 100) ;
210 // nsm->SetHistoIMRangeAndNBins(0, 0.4, 100) ;
212 AliAnaPi0EbE *anapi0ebe = new AliAnaPi0EbE();
213 anapi0ebe->SetDebug(-1);//10 for lots of messages
214 anapi0ebe->SetAnalysisType(AliAnaPi0EbE::kIMCalo);
215 anapi0ebe->SetMinPt(0.5);
216 anapi0ebe->SetCalorimeter(calorimeter);
217 anapi0ebe->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
218 if(!data.Contains("delta")) {
219 anapi0ebe->SetOutputAODName(Form("Pi0s%s",calorimeter.Data()));
220 anapi0ebe->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
222 else anapi0ebe->SetOutputAODName(Form("Pi0s%s",calorimeter.Data()));
224 if(kUseKinematics) anapi0ebe->SwitchOnDataMC() ;//Access MC stack and fill more histograms
225 else anapi0ebe->SwitchOffDataMC() ;
226 anapi0ebe->SwitchOffEventSelection() ;
227 anapi0ebe->SetMultiplicity(80, 120);
228 anapi0ebe->SetMultiBin(1);
229 anapi0ebe->SetNeutralMesonSelection(nms);
230 //Set Histrograms bins and ranges
231 anapi0ebe->SetHistoPtRangeAndNBins(0, 50, 100) ;
232 // anapi0->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
233 // anapi0->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
234 if(kPrintSettings) anapi0ebe->Print("");
236 // ### Pi0 Correlation with hadrons, not isolated
237 AliAnaParticleHadronCorrelation *anacorrhadronpi0 = new AliAnaParticleHadronCorrelation();
238 anacorrhadronpi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
239 anacorrhadronpi0->AddToHistogramsName("AnaHadronCorrPi0_");
240 anacorrhadronpi0->SetDebug(-1);
241 anacorrhadronpi0->SwitchOffCaloPID();
242 anacorrhadronpi0->SwitchOnFiducialCut();
243 AliFiducialCut * fidCut1stYear = anacorrhadronpi0->GetFiducialCut();
244 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
245 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
246 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
247 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
248 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
249 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
250 anacorrhadronpi0->SwitchOnDecayCorr();
251 anacorrhadronpi0->SetPtCutRange(0.5,50);
252 anacorrhadronpi0->SetDeltaPhiCutRange(1.5,4.5);
253 anacorrhadronpi0->SelectIsolated(kFALSE); // do correlation with non isolated pi0
254 anacorrhadronpi0->SetMultiplicity(80, 100);
255 anacorrhadronpi0->SetMultiBin(1);
256 anacorrhadronpi0->SwitchOffNeutralCorr();
257 anacorrhadronpi0->SwitchOffEventSelection();
258 anacorrhadronpi0->SwitchOnSeveralUECalculation();
259 anacorrhadronpi0->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
260 if(kUseKinematics) anacorrhadronpi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
261 else anacorrhadronpi0->SwitchOffDataMC() ;
262 //if(calorimeter=="PHOS"){
263 // //Correlate with particles in EMCAL
264 // anacorrhadronpi0->SwitchOnCaloPID();
265 // anacorrhadronpi0->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
267 //Set Histograms bins and ranges
268 anacorrhadronpi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
269 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
270 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
271 if(kPrintSettings) anacorrhadronpi0->Print("");
273 AliAnaParticleIsolation *anaisolpi0 = new AliAnaParticleIsolation();
274 anaisolpi0->SetDebug(-1);
275 anaisolpi0->SetMinPt(2.);
276 anaisolpi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
277 anaisolpi0->AddToHistogramsName("AnaIsolPi0_");
278 anaisolpi0->SetCalorimeter(calorimeter);
279 if(kUseKinematics) anaisolpi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
280 else anaisolpi0->SwitchOffDataMC() ;
281 //Select clusters with no pair, if both clusters with pi0 mass
282 anaisolpi0->SwitchOffInvariantMass();
283 //anaisol->SetNeutralMesonSelection(nms);
285 anaisolpi0->SetIsolationCut(ic);
286 //Do or not do isolation with previously produced AODs.
287 //No effect if use of SwitchOnSeveralIsolation()
288 anaisolpi0->SwitchOffReIsolation();
290 anaisolpi0->SwitchOffSeveralIsolation() ;
291 //Set Histograms bins and ranges
292 anaisolpi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
293 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
294 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
295 if(kPrintSettings) anaisol->Print("");
297 // ### Pi0 Correlation with hadrons, isolated
298 AliAnaParticleHadronCorrelation *anacorrhadronisopi0 = new AliAnaParticleHadronCorrelation();
299 anacorrhadronisopi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
300 anacorrhadronisopi0->AddToHistogramsName("AnaHadronCorrIsoPi0_");
301 anacorrhadronisopi0->SetDebug(-1);
302 anacorrhadronisopi0->SwitchOffCaloPID();
303 anacorrhadronisopi0->SwitchOnFiducialCut();
304 AliFiducialCut * fidCut1stYear = anacorrhadronisopi0->GetFiducialCut();
305 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
306 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
307 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
308 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
309 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
310 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
311 anacorrhadronisopi0->SwitchOnDecayCorr();
312 anacorrhadronisopi0->SetPtCutRange(0.5,50);
313 anacorrhadronisopi0->SetDeltaPhiCutRange(1.5,4.5);
314 anacorrhadronisopi0->SelectIsolated(kTRUE); // do correlation with isolated pi0
315 anacorrhadronisopi0->SetMultiplicity(80, 100);
316 anacorrhadronisopi0->SetMultiBin(1);
317 anacorrhadronisopi0->SwitchOffNeutralCorr();
318 anacorrhadronisopi0->SwitchOffEventSelection();
319 anacorrhadronisopi0->SwitchOnSeveralUECalculation();
320 anacorrhadronisopi0->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
321 if(kUseKinematics) anacorrhadronisopi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
322 else anacorrhadronisopi0->SwitchOffDataMC() ;
323 //if(calorimeter=="PHOS"){
324 // //Correlate with particles in EMCAL
325 // anacorrhadronpi0->SwitchOnCaloPID();
326 // anacorrhadronpi0->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
328 //Set Histograms bins and ranges
329 anacorrhadronisopi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
330 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
331 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
332 if(kPrintSettings) anacorrhadronisopi0->Print("");
334 } //analysis in calorimeter
336 //---charge particle trigger---------------------
337 //------------------------------------------------
339 AliAnaChargedParticles *anacharge = new AliAnaChargedParticles();
340 anacharge->SetDebug(-1); //10 for lots of messages
341 anacharge->SetMinPt(1.0);
342 // anacharge->SetCaloPID(pid);
343 if(kUseKinematics) anacharge->SwitchOnDataMC() ;//Access MC stack and fill more histograms
344 else anacharge->SwitchOffDataMC() ;
345 anacharge->SwitchOffCaloPID();
346 anacharge->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
347 anacharge->SwitchOnFiducialCut();
348 AliFiducialCut * fidCut1stYear = anacharge->GetFiducialCut();
349 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
350 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
351 if(!data.Contains("delta")) {
352 anacharge->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
353 anacharge->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
355 else anacharge->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
356 anacharge->AddToHistogramsName("AnaCharge_");
357 //Set Histograms bins and ranges
358 anacharge->SetHistoPtRangeAndNBins(0, 50, 100) ;
359 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
360 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
362 if(kPrintSettings) anacharge->Print("");
365 // -------------------------------------------------
366 // --- Correlation Analysis with non-isolated triggers ---
367 // -------------------------------------------------
368 // ### Correlation with hadrons
369 AliAnaParticleHadronCorrelation *anacorrhadron = new AliAnaParticleHadronCorrelation();
370 anacorrhadron->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
371 anacorrhadron->AddToHistogramsName("AnaHadronCorrTrig_");
372 anacorrhadron->SetDebug(-1);
373 anacorrhadron->SwitchOnCaloPID();
374 anacorrhadron->SwitchOnFiducialCut();
375 AliFiducialCut * fidCut1stYear = anacorrhadron->GetFiducialCut();
376 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
377 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
378 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
379 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
380 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
381 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
382 anacorrhadron->SetPtCutRange(0.5,50);
383 anacorrhadron->SetDeltaPhiCutRange(1.5,4.5);
384 anacorrhadron->SetMultiplicity(80, 120);
385 anacorrhadron->SetMultiBin(1);
386 anacorrhadron->SwitchOffNeutralCorr();
387 anacorrhadron->SwitchOffEventSelection();
388 anacorrhadron->SwitchOnSeveralUECalculation();
389 anacorrhadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
390 anacorrhadron->SelectIsolated(kFALSE); // do correlation with isolated photons
391 if(kUseKinematics) anacorrhadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
392 else anacorrhadron->SwitchOffDataMC() ;
393 //if(calorimeter=="PHOS"){
394 //Correlate with particles in EMCAL
395 //anacorrhadron->SwitchOnCaloPID();
396 //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
398 //Set Histograms bins and ranges
399 anacorrhadron->SetHistoPtRangeAndNBins(0, 50, 100) ;
400 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
401 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
402 if(kPrintSettings) anacorrhadron->Print("");
406 // ### Isolation analysis ###
407 AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
408 anaisol->SetDebug(-1);
409 anaisol->SetMinPt(2.0);
410 anaisol->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
411 anaisol->AddToHistogramsName("AnaIsolTrig_");
412 anaisol->SetCalorimeter(calorimeter);
413 if(kUseKinematics) anaisol->SwitchOnDataMC() ;//Access MC stack and fill more histograms
414 else anaisol->SwitchOffDataMC() ;
415 //Select clusters with no pair, if both clusters with pi0 mass
416 anaisol->SwitchOffInvariantMass();
417 //anaisol->SetNeutralMesonSelection(nms);
419 anaisol->SetIsolationCut(ic);
420 //Do or not do isolation with previously produced AODs.
421 //No effect if use of SwitchOnSeveralIsolation()
422 anaisol->SwitchOffReIsolation();
424 anaisol->SwitchOffSeveralIsolation() ;
425 //Set Histograms bins and ranges
426 anaisol->SetHistoPtRangeAndNBins(0, 50, 100) ;
427 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
428 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
430 if(kPrintSettings) anaisol->Print("");
432 // -------------------------------------------------
433 // --- Correlation Analysis with isolated triggers ---
434 // -------------------------------------------------
435 // ### Correlation with hadrons
436 AliAnaParticleHadronCorrelation *anacorrisohadron = new AliAnaParticleHadronCorrelation();
437 anacorrisohadron->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
438 anacorrisohadron->AddToHistogramsName("AnaHadronCorrIsoTrig_");
439 anacorrisohadron->SetDebug(-1);
440 anacorrisohadron->SwitchOffCaloPID();
441 anacorrisohadron->SwitchOnFiducialCut();
442 AliFiducialCut * fidCut1stYear = anacorrisohadron->GetFiducialCut();
443 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
444 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
445 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
446 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
447 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
448 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
449 anacorrisohadron->SetPtCutRange(0.5,50);
450 anacorrisohadron->SetDeltaPhiCutRange(1.5,4.5);
451 anacorrisohadron->SetMultiplicity(80, 100);
452 anacorrisohadron->SetMultiBin(1);
453 anacorrisohadron->SwitchOffNeutralCorr();
454 anacorrisohadron->SwitchOffEventSelection();
455 anacorrisohadron->SwitchOnSeveralUECalculation();
456 anacorrisohadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
457 anacorrisohadron->SelectIsolated(kTRUE); // do correlation with isolated photons
458 if(kUseKinematics) anacorrisohadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
459 else anacorrisohadron->SwitchOffDataMC() ;
460 //if(calorimeter=="PHOS"){
461 //Correlate with particles in EMCAL
462 //anacorrhadron->SwitchOnCaloPID();
463 //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
465 //Set Histograms bins and ranges
466 anacorrisohadron->SetHistoPtRangeAndNBins(0, 50, 100) ;
467 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
468 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
469 if(kPrintSettings) anacorrisohadron->Print("");
471 // #### Configure Maker ####
472 AliAnaPartCorrMaker * maker = new AliAnaPartCorrMaker();
473 maker->SetReader(reader);//pointer to reader
474 Int_t n = 0;//Analysis number, order is important
475 // Particle selection analysis
476 if(calorimeter=="PHOS" || calorimeter=="EMCAL") {
477 maker->SetCaloUtils(cu); //pointer to calorimeter utils
478 maker->AddAnalysis(anaphoton,n++);
479 maker->AddAnalysis(anapi0,n++);
480 maker->AddAnalysis(anapi0ebe,n++);
481 maker->AddAnalysis(anacorrhadronpi0,n++);
482 maker->AddAnalysis(anaisolpi0,n++);
483 maker->AddAnalysis(anacorrhadronisopi0,n++);
485 if(calorimeter=="CTS")
486 maker->AddAnalysis(anacharge,n++);
487 // Correlation analysis
488 maker->AddAnalysis(anacorrhadron,n++);
489 // Isolation analysis
490 maker->AddAnalysis(anaisol,n++);
491 // Correlation analysis with isolated triggers
492 maker->AddAnalysis(anacorrisohadron,n);
493 maker->SetAnaDebug(-1) ;
494 maker->SwitchOnHistogramsMaker() ;
495 if(data.Contains("delta")) maker->SwitchOffAODsMaker() ;
496 else maker->SwitchOnAODsMaker() ;
498 if(kPrintSettings) maker->Print("");
500 printf("======================== \n");
501 printf(" End Configuration of PartCorr analysis with detector %s \n",calorimeter.Data());
502 printf("======================== \n");
505 //===========================================================================
506 // AliAnalysisTaskParticleCorrelationM * task = new AliAnalysisTaskParticleCorrelationM(Form("PartCorr%s",calorimeter.Data()));
507 AliAnalysisTaskParticleCorrelationM * task = new AliAnalysisTaskParticleCorrelationM("PartCorr");
508 task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
509 //task->SetDebugLevel(-1);
510 task->SetAnalysisMaker(maker);
511 //if(!kSimulation)task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before.
515 // sprintf(name,"PartCorr_%s",calorimeter.Data());
516 // cout<<"Name of task "<<name<<endl;
517 //AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form(name),TList::Class(),
518 // AliAnalysisManager::kOutputContainer, Form("PartCorr_%s.root",calorimeter.Data()));
520 TString outputfile = AliAnalysisManager::GetCommonFileName();
521 outputfile.ReplaceAll(".root","") ;
522 outputfile.Append("M.root") ;
523 // AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form("PartCorr_%s",calorimeter.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:PartCorr_%s",outputfile.Data(),calorimeter.Data()));
524 AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(calorimeter.Data(), TList::Class(),
525 AliAnalysisManager::kOutputContainer,
526 Form("%s:PartCorr",outputfile.Data()));
528 AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("%sCuts",calorimeter.Data()), TList::Class(),
529 AliAnalysisManager::kParamContainer,
530 Form("%s:PartCorrCuts",outputfile.Data()));
531 // Create ONLY the output containers for the data produced by the task.
532 // Get and connect other common input/output containers via the manager as below
533 //==============================================================================
534 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
535 // AOD output slot will be used in a different way in future
536 //if(!data.Contains("delta")) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
537 // mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
538 mgr->ConnectOutput (task, 1, cout_pc);
539 mgr->ConnectOutput (task, 2, cout_cuts);