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();
57 reader->SetEMCALPtMin(0.5);
58 reader->SetPHOSPtMin(0.5);
59 reader->SetCTSPtMin(0.1);
60 reader->SwitchOffWriteDeltaAOD() ;
61 if(kPrintSettings) reader->Print("");
63 // ##### Analysis algorithm settings ####
64 AliCaloPID * pid = new AliCaloPID();
65 pid->SetDispersionCut(1.5);
66 pid->SetTOFCut(5.e-9);
68 if(kPrintSettings) pid->Print("");
70 // AliFiducialCut * fidCut1stYear = new AliFiducialCut();
71 // fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
72 // fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
73 // fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
74 // fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
75 // fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
76 // fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,300.);
77 // -------------------------------------------------
78 // --- Isolation Cut ---
79 // -------------------------------------------------
80 AliIsolationCut * ic = new AliIsolationCut();
82 //ic->SetPtThreshold(0.7);
83 ic->SetPtFraction(0.1);
84 ic->SetPtThreshold(0.7) ;
85 ic->SetSumPtThreshold(1.0) ;
86 //choose different method for IC:
87 //kPtThresIC, kSumPtIC, kPtFracIC, kSumPtFracIC
88 // ic->SetICMethod(AliIsolationCut::kPtThresIC);
89 ic->SetICMethod(AliIsolationCut::kSumPtFracIC);
90 //particle in cone: kNeutralAndCharged=0, kOnlyNeutral=1, kOnlyCharged=2
91 ic->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged);
92 if(kPrintSettings) ic->Print("");
94 //analysis with calorimeter triggers
95 if(calorimeter=="PHOS" || calorimeter=="EMCAL") {
96 AliCalorimeterUtils * cu = new AliCalorimeterUtils();
97 cu->SwitchOnBadChannelsRemoval();
99 cu->SetNumberOfCellsFromEMCALBorder(1) ; //nEMCAL);
100 cu->SetNumberOfCellsFromPHOSBorder(2) ; //nPHOS);
101 // cu->SwitchOnNoFiducialBorderInEMCALEta0();
102 cu->SetPHOSChannelStatus(1,48, 8); //PHOS new hot channel
104 // // Remove EMCAL hottest channels from Gustavo list
106 cu->SetEMCALChannelStatus(0,3,13); cu->SetEMCALChannelStatus(0,44,1); cu->SetEMCALChannelStatus(0,3,13); //warm
107 cu->SetEMCALChannelStatus(0,20,7); cu->SetEMCALChannelStatus(0,38,2); //hot
109 cu->SetEMCALChannelStatus(1,4,7); cu->SetEMCALChannelStatus(1,4,13); cu->SetEMCALChannelStatus(1,9,20);
110 cu->SetEMCALChannelStatus(1,14,15); cu->SetEMCALChannelStatus(1,23,16); cu->SetEMCALChannelStatus(1,32,23);
111 cu->SetEMCALChannelStatus(1,37,5); cu->SetEMCALChannelStatus(1,40,1); cu->SetEMCALChannelStatus(1,40,2);
112 cu->SetEMCALChannelStatus(1,40,5); cu->SetEMCALChannelStatus(1,41,0); cu->SetEMCALChannelStatus(1,41,1);
113 cu->SetEMCALChannelStatus(1,41,2); cu->SetEMCALChannelStatus(1,41,4);
115 cu->SetEMCALChannelStatus(2,14,15); cu->SetEMCALChannelStatus(2,18,16); cu->SetEMCALChannelStatus(2,18,17);
116 cu->SetEMCALChannelStatus(2,18,18); cu->SetEMCALChannelStatus(2,18,20); cu->SetEMCALChannelStatus(2,18,21);
117 cu->SetEMCALChannelStatus(2,18,23); cu->SetEMCALChannelStatus(2,19,16); cu->SetEMCALChannelStatus(2,19,17);
118 cu->SetEMCALChannelStatus(2,19,19); cu->SetEMCALChannelStatus(2,19,20); cu->SetEMCALChannelStatus(2,19,21);
119 cu->SetEMCALChannelStatus(2,19,22);
121 cu->SetEMCALChannelStatus(3,4,7);
123 // -----------------------------------
124 // --- Photon and Pi0 Analysis ---
125 // -----------------------------------
127 AliAnaPhoton *anaphoton = new AliAnaPhoton();
128 anaphoton->SetDebug(-1); //10 for lots of messages
129 anaphoton->SetMinPt(1.0);
130 anaphoton->SetCaloPID(pid);
131 anaphoton->SetCalorimeter(calorimeter);
132 if(kUseKinematics) anaphoton->SwitchOnDataMC() ;//Access MC stack and fill more histograms
133 else anaphoton->SwitchOffDataMC() ;
134 anaphoton->SwitchOffCaloPID();
135 anaphoton->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
136 anaphoton->SwitchOnFiducialCut();
137 AliFiducialCut * fidCut1stYear = anaphoton->GetFiducialCut();
138 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
139 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
140 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
141 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
142 anaphoton->SwitchOnTrackMatchRejection();
143 //settings for different multiplicity analysis
144 anaphoton->SwitchOffEventSelection() ;
145 anaphoton->SetZvertexCut(10.);
146 anaphoton->SetMultiplicity(80, 120);
148 if(calorimeter == "EMCAL"){
149 anaphoton->SetNCellCut(1);
150 if(!kUseKinematics) anaphoton->SetTimeCut(525, 725);
151 anaphoton->SetMinDistanceToBadChannel(4, 5, 10);
154 anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
155 anaphoton->SetNCellCut(2);
157 if(!data.Contains("delta")) {
158 anaphoton->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
159 anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
161 else anaphoton->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
162 anaphoton->AddToHistogramsName("AnaPhoton_");
163 //Set Histograms bins and ranges
164 anaphoton->SetHistoPtRangeAndNBins(0, 50, 100) ;
165 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
166 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
168 if(kPrintSettings) anaphoton->Print("");
169 AliAnaPi0 *anapi0 = new AliAnaPi0();
170 anapi0->SetDebug(-1);//10 for lots of messages
171 anapi0->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
172 anapi0->AddToHistogramsName("AnaPi0_");
173 anapi0->SetCaloPID(pid);
174 anapi0->SetCalorimeter(calorimeter);
175 anapi0->SwitchOnFiducialCut();
176 AliFiducialCut * fidCut1stYear = anapi0->GetFiducialCut();
177 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
178 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
179 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
180 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
182 //settings for different multiplicity analysis
183 anapi0->SwitchOnEventSelection() ;
184 anapi0->SetNCentrBin(1);
185 anapi0->SetZvertexCut(10.);
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->SetZvertexCut(10.);
228 anapi0ebe->SetMultiplicity(80, 120);
229 anapi0ebe->SetMultiBin(1);
230 anapi0ebe->SetNeutralMesonSelection(nms);
231 //Set Histrograms bins and ranges
232 anapi0ebe->SetHistoPtRangeAndNBins(0, 50, 100) ;
233 // anapi0->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
234 // anapi0->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
235 if(kPrintSettings) anapi0ebe->Print("");
237 // ### Pi0 Correlation with hadrons, not isolated
238 AliAnaParticleHadronCorrelation *anacorrhadronpi0 = new AliAnaParticleHadronCorrelation();
239 anacorrhadronpi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
240 anacorrhadronpi0->AddToHistogramsName("AnaHadronCorrPi0_");
241 anacorrhadronpi0->SetDebug(-1);
242 anacorrhadronpi0->SwitchOffCaloPID();
243 anacorrhadronpi0->SwitchOnFiducialCut();
244 AliFiducialCut * fidCut1stYear = anacorrhadronpi0->GetFiducialCut();
245 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
246 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
247 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
248 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
249 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
250 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
251 anacorrhadronpi0->SwitchOnDecayCorr();
252 anacorrhadronpi0->SetPtCutRange(0.5,50);
253 anacorrhadronpi0->SetDeltaPhiCutRange(1.5,4.5);
254 anacorrhadronpi0->SelectIsolated(kFALSE); // do correlation with non isolated pi0
255 anacorrhadronpi0->SetMultiplicity(80, 100);
256 anacorrhadronpi0->SetMultiBin(1);
257 anacorrhadronpi0->SetZvertexCut(10.);
258 anacorrhadronpi0->SwitchOffNeutralCorr();
259 anacorrhadronpi0->SwitchOffEventSelection();
260 anacorrhadronpi0->SwitchOnSeveralUECalculation();
261 anacorrhadronpi0->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
262 if(kUseKinematics) anacorrhadronpi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
263 else anacorrhadronpi0->SwitchOffDataMC() ;
264 //if(calorimeter=="PHOS"){
265 // //Correlate with particles in EMCAL
266 // anacorrhadronpi0->SwitchOnCaloPID();
267 // anacorrhadronpi0->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
269 //Set Histograms bins and ranges
270 anacorrhadronpi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
271 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
272 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
273 if(kPrintSettings) anacorrhadronpi0->Print("");
275 AliAnaParticleIsolation *anaisolpi0 = new AliAnaParticleIsolation();
276 anaisolpi0->SetDebug(-1);
277 anaisolpi0->SetMinPt(2.);
278 anaisolpi0->SetZvertexCut(10.);
279 anaisolpi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
280 anaisolpi0->AddToHistogramsName("AnaIsolPi0_");
281 anaisolpi0->SetCalorimeter(calorimeter);
282 if(kUseKinematics) anaisolpi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
283 else anaisolpi0->SwitchOffDataMC() ;
284 //Select clusters with no pair, if both clusters with pi0 mass
285 anaisolpi0->SwitchOffInvariantMass();
286 //anaisol->SetNeutralMesonSelection(nms);
288 anaisolpi0->SetIsolationCut(ic);
289 //Do or not do isolation with previously produced AODs.
290 //No effect if use of SwitchOnSeveralIsolation()
291 anaisolpi0->SwitchOffReIsolation();
293 anaisolpi0->SwitchOffSeveralIsolation() ;
294 //Set Histograms bins and ranges
295 anaisolpi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
296 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
297 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
298 if(kPrintSettings) anaisol->Print("");
300 // ### Pi0 Correlation with hadrons, isolated
301 AliAnaParticleHadronCorrelation *anacorrhadronisopi0 = new AliAnaParticleHadronCorrelation();
302 anacorrhadronisopi0->SetInputAODName(Form("Pi0s%s",calorimeter.Data()));
303 anacorrhadronisopi0->AddToHistogramsName("AnaHadronCorrIsoPi0_");
304 anacorrhadronisopi0->SetDebug(-1);
305 anacorrhadronisopi0->SwitchOffCaloPID();
306 anacorrhadronisopi0->SwitchOnFiducialCut();
307 AliFiducialCut * fidCut1stYear = anacorrhadronisopi0->GetFiducialCut();
308 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
309 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
310 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
311 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
312 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
313 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
314 anacorrhadronisopi0->SwitchOnDecayCorr();
315 anacorrhadronisopi0->SetPtCutRange(0.5,50);
316 anacorrhadronisopi0->SetDeltaPhiCutRange(1.5,4.5);
317 anacorrhadronisopi0->SelectIsolated(kTRUE); // do correlation with isolated pi0
318 anacorrhadronisopi0->SetMultiplicity(80, 100);
319 anacorrhadronisopi0->SetMultiBin(1);
320 anacorrhadronisopi0->SetZvertexCut(10.);
321 anacorrhadronisopi0->SwitchOffNeutralCorr();
322 anacorrhadronisopi0->SwitchOffEventSelection();
323 anacorrhadronisopi0->SwitchOnSeveralUECalculation();
324 anacorrhadronisopi0->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
325 if(kUseKinematics) anacorrhadronisopi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
326 else anacorrhadronisopi0->SwitchOffDataMC() ;
327 //if(calorimeter=="PHOS"){
328 // //Correlate with particles in EMCAL
329 // anacorrhadronpi0->SwitchOnCaloPID();
330 // anacorrhadronpi0->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
332 //Set Histograms bins and ranges
333 anacorrhadronisopi0->SetHistoPtRangeAndNBins(0, 50, 100) ;
334 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
335 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
336 if(kPrintSettings) anacorrhadronisopi0->Print("");
338 } //analysis in calorimeter
340 //---charge particle trigger---------------------
341 //------------------------------------------------
343 AliAnaChargedParticles *anacharge = new AliAnaChargedParticles();
344 anacharge->SetDebug(-1); //10 for lots of messages
345 anacharge->SetMinPt(1.0);
346 // anacharge->SetCaloPID(pid);
347 anacharge->SetZvertexCut(10.);
348 if(kUseKinematics) anacharge->SwitchOnDataMC() ;//Access MC stack and fill more histograms
349 else anacharge->SwitchOffDataMC() ;
350 anacharge->SwitchOffCaloPID();
351 anacharge->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
352 anacharge->SwitchOnFiducialCut();
353 AliFiducialCut * fidCut1stYear = anacharge->GetFiducialCut();
354 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
355 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
356 if(!data.Contains("delta")) {
357 anacharge->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
358 anacharge->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
360 else anacharge->SetOutputAODName(Form("Triggers%s",calorimeter.Data()));
361 anacharge->AddToHistogramsName("AnaCharge_");
362 //Set Histograms bins and ranges
363 anacharge->SetHistoPtRangeAndNBins(0, 50, 100) ;
364 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
365 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
367 if(kPrintSettings) anacharge->Print("");
370 // -------------------------------------------------
371 // --- Correlation Analysis with non-isolated triggers ---
372 // -------------------------------------------------
373 // ### Correlation with hadrons
374 AliAnaParticleHadronCorrelation *anacorrhadron = new AliAnaParticleHadronCorrelation();
375 anacorrhadron->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
376 anacorrhadron->AddToHistogramsName("AnaHadronCorrTrig_");
377 anacorrhadron->SetDebug(-1);
378 anacorrhadron->SwitchOnCaloPID();
379 anacorrhadron->SwitchOnFiducialCut();
380 AliFiducialCut * fidCut1stYear = anacorrhadron->GetFiducialCut();
381 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
382 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
383 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
384 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
385 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
386 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
387 anacorrhadron->SetPtCutRange(0.5,50);
388 anacorrhadron->SetDeltaPhiCutRange(1.5,4.5);
389 anacorrhadron->SetMultiplicity(80, 120);
390 anacorrhadron->SetMultiBin(1);
391 anacorrhadron->SetZvertexCut(10.);
392 anacorrhadron->SwitchOffNeutralCorr();
393 anacorrhadron->SwitchOffEventSelection();
394 anacorrhadron->SwitchOnSeveralUECalculation();
395 anacorrhadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
396 anacorrhadron->SelectIsolated(kFALSE); // do correlation with isolated photons
397 if(kUseKinematics) anacorrhadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
398 else anacorrhadron->SwitchOffDataMC() ;
399 //if(calorimeter=="PHOS"){
400 //Correlate with particles in EMCAL
401 //anacorrhadron->SwitchOnCaloPID();
402 //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
404 //Set Histograms bins and ranges
405 anacorrhadron->SetHistoPtRangeAndNBins(0, 50, 100) ;
406 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
407 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
408 if(kPrintSettings) anacorrhadron->Print("");
412 // ### Isolation analysis ###
413 AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
414 anaisol->SetDebug(-1);
415 anaisol->SetMinPt(2.0);
416 anaisol->SetZvertexCut(10.);
417 anaisol->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
418 anaisol->AddToHistogramsName("AnaIsolTrig_");
419 anaisol->SetCalorimeter(calorimeter);
420 if(kUseKinematics) anaisol->SwitchOnDataMC() ;//Access MC stack and fill more histograms
421 else anaisol->SwitchOffDataMC() ;
422 //Select clusters with no pair, if both clusters with pi0 mass
423 anaisol->SwitchOffInvariantMass();
424 //anaisol->SetNeutralMesonSelection(nms);
426 anaisol->SetIsolationCut(ic);
427 //Do or not do isolation with previously produced AODs.
428 //No effect if use of SwitchOnSeveralIsolation()
429 anaisol->SwitchOffReIsolation();
431 anaisol->SwitchOffSeveralIsolation() ;
432 //Set Histograms bins and ranges
433 anaisol->SetHistoPtRangeAndNBins(0, 50, 100) ;
434 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
435 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
437 if(kPrintSettings) anaisol->Print("");
439 // -------------------------------------------------
440 // --- Correlation Analysis with isolated triggers ---
441 // -------------------------------------------------
442 // ### Correlation with hadrons
443 AliAnaParticleHadronCorrelation *anacorrisohadron = new AliAnaParticleHadronCorrelation();
444 anacorrisohadron->SetInputAODName(Form("Triggers%s",calorimeter.Data()));
445 anacorrisohadron->AddToHistogramsName("AnaHadronCorrIsoTrig_");
446 anacorrisohadron->SetDebug(-1);
447 anacorrisohadron->SwitchOffCaloPID();
448 anacorrisohadron->SwitchOnFiducialCut();
449 AliFiducialCut * fidCut1stYear = anacorrisohadron->GetFiducialCut();
450 fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
451 fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
452 fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
453 fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
454 fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
455 fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);
456 anacorrisohadron->SetPtCutRange(0.5,50);
457 anacorrisohadron->SetDeltaPhiCutRange(1.5,4.5);
458 anacorrisohadron->SetMultiplicity(80, 100);
459 anacorrisohadron->SetMultiBin(1);
460 anacorrisohadron->SetZvertexCut(10.);
461 anacorrisohadron->SwitchOffNeutralCorr();
462 anacorrisohadron->SwitchOffEventSelection();
463 anacorrisohadron->SwitchOnSeveralUECalculation();
464 anacorrisohadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
465 anacorrisohadron->SelectIsolated(kTRUE); // do correlation with isolated photons
466 if(kUseKinematics) anacorrisohadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
467 else anacorrisohadron->SwitchOffDataMC() ;
468 //if(calorimeter=="PHOS"){
469 //Correlate with particles in EMCAL
470 //anacorrhadron->SwitchOnCaloPID();
471 //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
473 //Set Histograms bins and ranges
474 anacorrisohadron->SetHistoPtRangeAndNBins(0, 50, 100) ;
475 // ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
476 // ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
477 if(kPrintSettings) anacorrisohadron->Print("");
479 // #### Configure Maker ####
480 AliAnaPartCorrMaker * maker = new AliAnaPartCorrMaker();
481 maker->SetReader(reader);//pointer to reader
482 Int_t n = 0;//Analysis number, order is important
483 // Particle selection analysis
484 if(calorimeter=="PHOS" || calorimeter=="EMCAL") {
485 maker->SetCaloUtils(cu); //pointer to calorimeter utils
486 maker->AddAnalysis(anaphoton,n++);
487 maker->AddAnalysis(anapi0,n++);
488 maker->AddAnalysis(anapi0ebe,n++);
489 maker->AddAnalysis(anacorrhadronpi0,n++);
490 maker->AddAnalysis(anaisolpi0,n++);
491 maker->AddAnalysis(anacorrhadronisopi0,n++);
493 if(calorimeter=="CTS")
494 maker->AddAnalysis(anacharge,n++);
495 // Correlation analysis
496 maker->AddAnalysis(anacorrhadron,n++);
497 // Isolation analysis
498 maker->AddAnalysis(anaisol,n++);
499 // Correlation analysis with isolated triggers
500 maker->AddAnalysis(anacorrisohadron,n);
501 maker->SetAnaDebug(-1) ;
502 maker->SwitchOnHistogramsMaker() ;
503 if(data.Contains("delta")) maker->SwitchOffAODsMaker() ;
504 else maker->SwitchOnAODsMaker() ;
506 if(kPrintSettings) maker->Print("");
508 printf("======================== \n");
509 printf(" End Configuration of PartCorr analysis with detector %s \n",calorimeter.Data());
510 printf("======================== \n");
513 //===========================================================================
514 // AliAnalysisTaskParticleCorrelationM * task = new AliAnalysisTaskParticleCorrelationM(Form("PartCorr%s",calorimeter.Data()));
515 AliAnalysisTaskParticleCorrelationM * task = new AliAnalysisTaskParticleCorrelationM("PartCorr");
516 task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
517 //task->SetDebugLevel(-1);
518 task->SetAnalysisMaker(maker);
519 //if(!kSimulation)task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before.
523 // sprintf(name,"PartCorr_%s",calorimeter.Data());
524 // cout<<"Name of task "<<name<<endl;
525 //AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form(name),TList::Class(),
526 // AliAnalysisManager::kOutputContainer, Form("PartCorr_%s.root",calorimeter.Data()));
528 TString outputfile = AliAnalysisManager::GetCommonFileName();
529 outputfile.ReplaceAll(".root","") ;
530 outputfile.Append("M.root") ;
531 // AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form("PartCorr_%s",calorimeter.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:PartCorr_%s",outputfile.Data(),calorimeter.Data()));
532 AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(calorimeter.Data(), TList::Class(),
533 AliAnalysisManager::kOutputContainer,
534 Form("%s:PartCorr",outputfile.Data()));
536 AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("%sCuts",calorimeter.Data()), TList::Class(),
537 AliAnalysisManager::kParamContainer,
538 Form("%s:PartCorrCuts",outputfile.Data()));
539 // Create ONLY the output containers for the data produced by the task.
540 // Get and connect other common input/output containers via the manager as below
541 //==============================================================================
542 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
543 // AOD output slot will be used in a different way in future
544 //if(!data.Contains("delta")) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
545 // mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
546 mgr->ConnectOutput (task, 1, cout_pc);
547 mgr->ConnectOutput (task, 2, cout_cuts);