AliPhysics  9b6b435 (9b6b435)
ConfigureCaloTrackCorrAnalysis.C
Go to the documentation of this file.
1 
23 // Set includes for compilation
24 
25 #if !defined(__CINT__) || defined(__MAKECINT__)
26 
27 #include <TString.h>
28 #include <TSystem.h>
29 #include <TROOT.h>
30 
31 #include "AliAnaPhoton.h"
32 #include "AliAnaElectron.h"
33 #include "AliAnaPi0.h"
34 #include "AliAnaPi0EbE.h"
35 #include "AliHistogramRanges.h"
38 #include "AliAnaChargedParticles.h"
39 #include "AliAnaCalorimeterQA.h"
41 #include "AliAnaGeneratorKine.h"
44 #endif
45 
48 
50 // Some examples of strings: "Photon_MergedPi0_DecayPi0_Isolation_Correlation_Bkg_QA_Charged_HighMult_MultiIso_PerSM_PerTCard",
52 
70  TString col, Bool_t simulation,
71  Bool_t printSettings, Int_t debug)
72 {
73  //
74  // Histograms ranges
75  //
76  AliHistogramRanges* histoRanges = ana->GetHistogramRanges();
77 
78  if ( histoString != "" )
79  ana->AddToHistogramsName(Form("%s_%s", histoString.Data(), (ana->GetAddedHistogramsStringToName()).Data()) );
80 
81  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
82 
83  if(calorimeter=="EMCAL")
84  {
85  ana->SetFirstSMCoveredByTRD(-1);
86 
87  if ( year == 2010 )
88  {
89  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
90  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
91  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
92  }
93  else if ( year < 2014 )
94  {
95  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 104) ;
96  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
97  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
98 
99  if (year == 2011) ana->SetFirstSMCoveredByTRD( 6);
100  else if(year == 2012 ||
101  year == 2013) ana->SetFirstSMCoveredByTRD( 4);
102  }
103  else // Run2
104  {
105  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 189*TMath::DegToRad(), 111) ;
106  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA, revise
107  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA, revise
108  }
109 
110  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
111  }
112  else if(calorimeter=="DCAL")
113  {
114  histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 327*TMath::DegToRad(), 67) ;
115  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
116  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA, revise
117  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA, revise
118  }
119  else if(calorimeter=="PHOS")
120  {
121  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
122  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
123  }
124  else if(calorimeter=="CTS")
125  {
126  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
127  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
128  }
129 
130  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 2.9, 300);
131 
132  // Invariant mass histo
133  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
134  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
135 
136  // check if time calibration is on
137  //histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
138  histoRanges->SetHistoTimeRangeAndNBins(-400.,400,400);
139  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
140 
141  // track-cluster residuals
142  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.06,0.06,120);
143  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.06,0.06,120);
144  histoRanges->SetHistodRRangeAndNBins(0.,0.06,60);//QA
145 
146  // QA, electron, charged
147  histoRanges->SetHistoEOverPRangeAndNBins(0,1.5,150);
148  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
149 
150  // QA
151  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
152  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
153  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
154  histoRanges->SetHistoRRangeAndNBins(430,460,30);
155  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
156  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
157 
158  // QA, correlation
159  if(col=="PbPb")
160  {
161  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
162  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
163  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
164  }
165  else
166  {
167  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
168  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
169  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
170  }
171 
172  // xE, zT
173  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
174  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
175 
176  // Isolation
177  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
178  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
179 
180  //
181  // MC histograms?
182  //
183  if(simulation) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
184  else ana->SwitchOffDataMC() ;
185 
186 
187  //
188  // Specialized histograms on multiplicity
189  //
190  if ( kAnaCutsString.Contains("HighMult") )
192  else
194 
195  // Consider real calo acceptance (borders, bad map holes)
196  // at generator level
197  if ( kAnaCutsString.Contains("MCRealCaloAcc") )
199  else
201 
202  //
203  // Debug
204  //
205  if(printSettings) ana->Print("");
206 
207  ana->SetDebug(debug); // 10 for lots of messages
208 }
209 
224  TString calorimeter, Int_t year, Int_t tm,
225  Bool_t printSettings, Int_t debug,
226  TString histoString )
227 {
228  AliAnaPhoton *ana = new AliAnaPhoton();
229 
230  // cluster selection cuts
231 
232  ana->SwitchOnFiducialCut();
233  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
234  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
235 
236  if ( kAnaCutsString.Contains("TightAcc") )
237  {
238  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.27, 103, 157) ; // EMC
239  }
240 
241  if ( calorimeter.Contains("CAL") ) ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
242 
243  ana->SetCalorimeter(calorimeter);
244  if(calorimeter == "DCAL")
245  {
246  TString calo = "EMCAL";
247  ana->SetCalorimeter(calo);
248  }
249 
250  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
251  if ( kAnaCutsString.Contains("MultiIso") ) ana->SwitchOffFillShowerShapeHistograms();
252 
253  if ( kAnaCutsString.Contains("PerSM") )
255 
256  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
257 
258  if(tm) ana->SwitchOnTrackMatchRejection() ;
259  else ana->SwitchOffTrackMatchRejection() ;
260 
261  // Fill track matching histograms if track matching activated
262  // and only once in case of multiple analysis
263  if ( tm && !kAnaCutsString.Contains("MultiIso") )
264  {
265  ana->SwitchOnTMHistoFill() ;
266  if(tm > 1) ana->SwitchOnTMTrackPtHistoFill() ;
267  }
268  else
269  {
270  ana->SwitchOffTMHistoFill() ;
272  }
273 
274  if(calorimeter == "PHOS")
275  {
276  ana->SetNCellCut(2);// At least 3 cells
277  ana->SetMinPt(0.3);
278  ana->SetMinDistanceToBadChannel(2, 4, 5);
279  ana->SetTimeCut(-1e10,1e10); // open cut
280  }
281  else
282  {//EMCAL
283  ana->SetNCellCut(1);// At least 2 cells
284  ana->SetMinEnergy(0.5);
285  ana->SetMaxEnergy(100);
286  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
287  // restrict to less than 100 ns when time calibration is on
288  ana->SetMinDistanceToBadChannel(2, 4, 6);
289 
290  // NLM cut, used in all, exclude clusters with more than 2 maxima
291  // Not needed if M02 cut is already strong or clusterizer V2
292  ana->SetNLMCut(1, 2) ;
293  }
294 
295  //PID cuts (shower shape)
296  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
297  AliCaloPID* caloPID = ana->GetCaloPID();
298  //Not used in bayesian
299 
300  // EMCAL
301 
302  //caloPID->SetEMCALLambda0CutMax(0.27);
303  caloPID->SetEMCALLambda0CutMax(10); // open, full shower shape needed for isolation studies
304  caloPID->SetEMCALLambda0CutMin(0.10);
305 
306  // Track matching
307 
308  // E/p
309  if ( kAnaCutsString.Contains("TMEoP10" ) ) caloPID->SetEOverP(0,10);
310  if ( kAnaCutsString.Contains("TMEoP5" ) ) caloPID->SetEOverP(0,5);
311  if ( kAnaCutsString.Contains("TMEoP3" ) ) caloPID->SetEOverP(0,3);
312  if ( kAnaCutsString.Contains("TMEoP2" ) ) caloPID->SetEOverP(0,2);
313  if ( kAnaCutsString.Contains("TMEoP1.5") ) caloPID->SetEOverP(0,1.5);
314 
315  // tm = 1, fixed cuts
316  caloPID->SetEMCALDEtaCut(0.025);
317  caloPID->SetEMCALDPhiCut(0.030);
318 
319  // pT track dependent cuts
320  if ( tm > 1 ) caloPID->SwitchOnEMCTrackPtDepResMatching();
321 
322  // PHOS
323  caloPID->SetPHOSDispersionCut(2.5);
324  caloPID->SetPHOSRCut(2.);
325  //if(kInputData=="AOD") caloPID->SetPHOSRCut(2000.); // Open cut since dX, dZ not stored
326 
327  // Branch AOD settings
328  ana->SetOutputAODName(Form("PhotonTrigger_%s",kAnaCaloTrackCorr.Data()));
329  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
330 
331  //Set Histograms name tag, bins and ranges
332  //ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",tm));
333  ana->AddToHistogramsName("AnaPhoton_");
334 
335  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug) ; // see method below
336 
337  if(ana->GetFirstSMCoveredByTRD() > 0)
338  printf("ConfigurePhotonAnalysis() >>> Set first SM covered by TRD, SM=%d <<< year %d \n", ana->GetFirstSMCoveredByTRD(),year);
339 
340  // Number of particle type MC histograms
341  ana->FillNOriginHistograms (17); // 18 max
342  ana->FillNPrimaryHistograms(6); // 6 max
343 
344  return ana;
345 }
346 
360  TString calorimeter, Int_t year,
361  Bool_t printSettings, Int_t debug,
362  TString histoString)
363 {
365  ana->SetDebug(debug); //10 for lots of messages
366 
367  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
368  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
369 
370  if ( calorimeter.Contains("CAL") ) ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
371 
372  ana->SetCalorimeter(calorimeter);
373  if(calorimeter == "DCAL")
374  {
375  TString calo = "EMCAL";
376  ana->SetCalorimeter(calo);
377  }
378 
379  // What particles to select:
380  //ana->FillAODWithElectrons();
381  //ana->FillAODWithHadrons();
382  ana->FillAODWithAny(); // Both
383 
384  if(calorimeter == "PHOS")
385  {
386  ana->SetNCellCut(2);// At least 2 cells
387  ana->SetMinPt(0.3);
389  }
390  else
391  {// EMCAL
392  ana->SetNCellCut(1);// At least 2 cells
393  ana->SetMinPt(0.5); // no effect minium EMCAL cut.
394  ana->SetMaxPt(100);
395  //ana->SetTimeCut(400,900);// Time window of [400-900] ns
397  }
398 
399  // Electron selection cuts with tracks
400  //ana->SetM02Range(0.05, 0.35);
401  //ana->SetM20Range(-10, 0.3);
402  //ana->SetEOverP(0.9, 1.2);
403  //ana->SetNSigma(-1, 3);
404  //ana->SetNSigmaForHadron(-10, -4);
405 
406 // if (kRunNumber < 146861) ana->SetdEdxCut(72, 90);
407 // else if(kRunNumber < 154000) ana->SetdEdxCut(54, 70);
408 // else ana->SetdEdxCut(74, 90);
409 //
410 // if(simulation) ana->SetdEdxCut(80, 100);
411 
413 
415 
416  ana->SetOutputAODName(Form("Electron_%s",kAnaCaloTrackCorr.Data()));
417  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
418 
419  // Set Histograms name tag, bins and ranges
420 
421  //ana->AddToHistogramsName(Form("AnaElectron_TM%d_",tm));
422  ana->AddToHistogramsName("AnaElectron_");
423 
424  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug) ; // see method below
425 
426  //if(printSettings)
427  ana->Print("");
428 
429  return ana ;
430 }
431 
450  Bool_t useSSIso, Bool_t useAsy,
451  TString col, Bool_t simulation,
452  TString calorimeter, Int_t year, Int_t tm,
453  Bool_t printSettings, Int_t debug,
454  TString histoString )
455 {
456  // Configuration of pi0 event by event selection
457 
458  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
459 
460  ana->SetDebug(debug);
461 
462  ana->SetAnalysisType((AliAnaPi0EbE::anaTypes)analysis);
463  TString opt = "";
464  if(analysis==AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
465  if(analysis==AliAnaPi0EbE::kSSCalo) opt = "SS";
466 
469 
471  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
472  //if(!kTime && !simulation) ana->SwitchOnFillEMCALBCHistograms();
473 
474  if(tm) ana->SwitchOnTrackMatchRejection() ;
475  else ana->SwitchOffTrackMatchRejection() ;
476 
477  if ( tm && !kAnaCutsString.Contains("Photon") && !kAnaCutsString.Contains("MultiIso") )
478  ana->SwitchOnTMHistoFill() ;
479  else
480  ana->SwitchOffTMHistoFill() ;
481 
482  ana->SetCalorimeter(calorimeter);
483  if(calorimeter == "DCAL")
484  {
485  TString calo = "EMCAL";
486  ana->SetCalorimeter(calo);
487  }
488 
489  // Branch AOD settings
490  ana->SetOutputAODName(Form("%s%sTrigger_%s",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
491  printf("ConfigurePi0EbEAnalysis() *** Out branch %s***\n",ana->GetOutputAODName().Data());
492  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
493 
494  if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
495 
496  //Set Histograms name tag, bins and ranges
497 
498  //ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),tm));
499  ana->AddToHistogramsName(Form("Ana%s%sEbE_",particle.Data(),opt.Data()));
500 
501  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
502 
504  if(analysis!=AliAnaPi0EbE::kSSCalo)
505  {
506  ana->SetInputAODName(Form("PhotonTrigger_%s",kAnaCaloTrackCorr.Data()));
507 
508  ana->SetM02CutForInvMass(0.1,0.35); // Loose SS cut
509 
511  ana->SetR(0.4);
513 
514  if(useSSIso)
515  {
517  //ana->AddToHistogramsName(Form("Ana%s%sEbEIsoDecay_TM%d_",particle.Data(),opt.Data(),tm));
518  ana->AddToHistogramsName(Form("Ana%s%sEbEIsoDecay_",particle.Data(),opt.Data()));
519  ana->SetOutputAODName(Form("%s%sIsoDecayTrigger_%s",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
520  }
521 
522  if ( calorimeter.Contains("CAL") && !simulation ) ana->SetPairTimeCut(100);
523 
525  nms->SetParticle(particle);
526 
527  //****
528  nms->SetInvMassCutMaxParameters(0,0,0); // Overrule the setting in SetParticle for Pi0 option
529  //****
530 
531  // Tighten a bit mass cut with respect to default window
532  if(particle=="Pi0") nms->SetInvMassCutRange(0.110,0.160);
533  if(particle=="Eta") nms->SetInvMassCutRange(0.520,0.580);
534 
535  //if(!particle.Contains("SideBand")) nms->SwitchOnAngleSelection();
536  //else nms->SwitchOnAngleSelection();
537 
539 
540  if(particle.Contains("Pi0SideBand")) // For pi0, do not consider left band
541  nms->SetSideBandCutRanges(-1,0,0.190,0.240);
542 
543  if(particle.Contains("EtaSideBand")) // For pi0, do not consider left band
544  nms->SetSideBandCutRanges(0.410,0.470,0.620,0.680);
545 
547  //nms->SetAngleMaxParam(2,0.2);
548  nms->SetHistoERangeAndNBins(0, 20, 80) ;
549  //nms->SetHistoIMRangeAndNBins(0, 1, 400);
550  }
551  else
552  {
553  ana->SwitchOnFiducialCut();
554  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
555  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
556 
557  if ( kAnaCutsString.Contains("TightAcc") )
558  {
559  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.27, 103, 157) ; // EMC
560  }
561 
562  if ( calorimeter.Contains("CAL") ) ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
563 
564  // cluster splitting settings
565  ana->SetMinEnergy(6);
566  ana->SetMaxEnergy(100.);
567 
568  ana->SetNLMMinEnergy(0, 10);
569  ana->SetNLMMinEnergy(1, 6);
570  ana->SetNLMMinEnergy(2, 6);
571 
572  // NLM cut, used in all, exclude clusters with more than 2 maxima
573  ana->SetNLMCut(1, 2) ;
574 
575  //
576  ana->SetMinDistanceToBadChannel(2, 4, 6);
578  ana->SetTimeCut(-1e10,1e10); // Open time cut
579 
580  AliCaloPID* caloPID = ana->GetCaloPID();
581 
582  // Track matching
583 
584  // E/p
585  if ( kAnaCutsString.Contains("TMEoP10" ) ) caloPID->SetEOverP(0,10);
586  if ( kAnaCutsString.Contains("TMEoP5" ) ) caloPID->SetEOverP(0,5);
587  if ( kAnaCutsString.Contains("TMEoP3" ) ) caloPID->SetEOverP(0,3);
588  if ( kAnaCutsString.Contains("TMEoP2" ) ) caloPID->SetEOverP(0,2);
589  if ( kAnaCutsString.Contains("TMEoP1.5") ) caloPID->SetEOverP(0,1.5);
590 
591  // tm = 1, fixed cuts
592  caloPID->SetEMCALDEtaCut(0.025);
593  caloPID->SetEMCALDPhiCut(0.030);
594 
595  // pT track dependent cuts
596  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
597 
598  caloPID->SetSplitWidthSigma(3); // cut at 3 sigma of the mean pi0 peak.
599 
600  if(!useSSIso)
601  {
602  printf("ConfigurePi0EbEAnalysis() << Do not apply SS cut on merged pi0 analysis >> \n");
603  caloPID->SwitchOffSplitShowerShapeCut() ;
604  //ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),tm));
605  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_",particle.Data(),opt.Data()));
606  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenSS",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
607  caloPID->SetClusterSplittingM02Cut(0.1,10);
608  }
609  else
610  {
611  caloPID->SetClusterSplittingM02Cut(0.3,4); // Do the selection in the analysis class and not in the PID method to fill SS histograms
612  caloPID->SwitchOnSplitShowerShapeCut() ;
613  }
614 
615  if(useAsy)
616  {
617  caloPID->SwitchOnSplitAsymmetryCut() ;
619  ana->GetCaloPID()->SetSubClusterEnergyMinimum(1,0.5);
620  ana->GetCaloPID()->SetSubClusterEnergyMinimum(2,0.5);
621  }
622  else
623  {
624  caloPID->SwitchOffSplitAsymmetryCut() ;
625  if(!useSSIso)
626  {
627  //ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),tm));
628  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_",particle.Data(),opt.Data()));
629  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
630  }
631  else
632  {
633  //ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),tm));
634  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_",particle.Data(),opt.Data()));
635  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenAsy",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
636  }
637  }
638 
639  // For Pi0 only if SwitchOnSimpleSplitMassCut()
640  caloPID->SetPi0MassRange(0.10, 0.18);
641  caloPID->SetEtaMassRange(0.50, 0.60);
642  caloPID->SetPhotonMassRange(0.00, 0.08);
643 
644  caloPID->SetClusterSplittingMinNCells(6);
645 
646  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
647  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
648  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
649 
650  if(col=="PbPb" || kAnaCaloTrackCorr.Contains("150"))
651  {
652  caloPID->SetClusterSplittingMinNCells(4);
653  //caloPID->SetPi0MassShiftHighECell(0.005);
654  }
655  }
657 
658  return ana;
659 }
660 
661 
677 (TString col, Bool_t simulation,
678  TString calorimeter, Bool_t bothCalo,
679  Int_t year, Bool_t mixOn,
680  Bool_t printSettings, Int_t debug,
681  TString histoString )
682 {
683  AliAnaPi0 *ana = new AliAnaPi0();
684 
685  ana->SetDebug(debug);
686 
687  // Input delta AOD settings
688  ana->SetInputAODName(Form("PhotonTrigger_%s",kAnaCaloTrackCorr.Data()));
689 
690  if(bothCalo)
691  {
693 
694  TString otherDetector = Form("PhotonTrigger_%s",kAnaCaloTrackCorr.Data());
695 
696  if ( calorimeter == "EMCAL" )
697  otherDetector.ReplaceAll("PhotonTrigger_EMCAL","PhotonTrigger_PHOS");
698  else
699  otherDetector.ReplaceAll("PhotonTrigger_PHOS","PhotonTrigger_EMCAL");
700 
701  ana->SetOtherDetectorInputName(otherDetector);
702  }
703 
704  // Calorimeter settings
705  ana->SetCalorimeter(calorimeter);
706  if(calorimeter == "DCAL")
707  {
708  TString calo = "EMCAL";
709  ana->SetCalorimeter(calo);
710  }
711 
712  // Acceptance plots
713  ana->SwitchOnFiducialCut();
714  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
715  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
716 
717  if ( calorimeter.Contains("CAL") ) ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
718 
719  // settings for pp collision mixing
720  if(mixOn) ana->SwitchOnOwnMix();
721  else ana->SwitchOffOwnMix();
722 
723  // Cuts
724  if (calorimeter == "EMCAL" )
725  {
726  if(year < 2014) ana->SetPairTimeCut(50);
727  else ana->SetPairTimeCut(200); // REMEMBER to remove this when time calib is on
728  }
729 
730  ana->SetNPIDBits(1);
731  ana->SetNAsymCuts(1); // no asymmetry cut, previous studies showed small effect.
732  // In EMCAL assymetry cut prevents combination of assymetric decays which is the main source of pi0 at high E.
733 
734  if (col == "pp" )
735  {
736  printf("ConfigureInvariantMassAnalysis() - Set pp configuration\n");
737  ana->SetNCentrBin(1);
738  ana->SwitchOffTrackMultBins();
739  ana->SetNZvertBin(10);
740  ana->SetNRPBin(1);
741  ana->SetNMaxEvMix(100);
742  ana->SetMinPt(0.7);
743  }
744  else if(col == "PbPb")
745  {
746  printf("ConfigureInvariantMassAnalysis() - Set PbPb configuration\n");
747  ana->SetNCentrBin(10);
748  ana->SetNZvertBin(10);
749  ana->SetNRPBin(4);
750  ana->SetNMaxEvMix(10);
751  ana->SetMinPt(1.5);
752  }
753  else if(col =="pPb")
754  {
755  printf("ConfigureInvariantMassAnalysis() - Set pPb configuration\n");
756  ana->SetNCentrBin(1);
757  ana->SetNZvertBin(10);
758  ana->SetNRPBin(4);
759  ana->SetNMaxEvMix(100);
760  ana->SetMinPt(0.7);
761  }
762 
763  // Angle cut, avoid pairs with too large angle
764  ana->SwitchOnAngleSelection();
765  ana->SetAngleMaxCut(TMath::DegToRad()*80.); // EMCal: 4 SM in phi, 2 full SMs in eta
766  ana->SetAngleCut(0.017); // Minimum angle open, cell size
767 
768  if ( kAnaCutsString.Contains("PerSM") ) //&& !bothCalo )
769  ana->SwitchOnSMCombinations();
770 
772  ana->SwitchOnFillAngleHisto();
773  ana->SwitchOnFillOriginHisto(); // MC
774 
775  // Set Histograms name tag, bins and ranges
776  if(!bothCalo) ana->AddToHistogramsName(Form("AnaPi0_"));
777  else ana->AddToHistogramsName(Form("AnaPi0_2Det_"));
778 
779  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
780  if(printSettings) ana->Print("");
781 
782  return ana;
783 }
784 
785 
807  Int_t partInCone, Int_t thresType,
808  Float_t cone, Float_t coneMin,
809  Float_t pth, Bool_t multi,
810  TString col, Bool_t simulation,
811  TString calorimeter, Int_t year, Int_t tm,
812  Bool_t printSettings, Int_t debug,
813  TString histoString )
814 {
816 
817  ana->SetDebug(debug);
818 
819  ana->SetMinPt(5);
820  ana->SetCalorimeter(calorimeter);
821  if(calorimeter == "DCAL")
822  {
823  TString calo = "EMCAL";
824  ana->SetCalorimeter(calo);
825  }
826 
828  ana->SwitchOffCellHistoFill() ;
829 
830  ana->SwitchOffLeadingOnly();
832  if( leading > 0 ) ana->SwitchOnLeadingOnly();
833  if( leading == 2 ||
834  leading == 4) ana->SwitchOnCheckNeutralClustersForLeading();
835 
836  // MC
839 
840  ana->SwitchOffSSHistoFill();
841 
842  if(particle.Contains("Photon"))
843  {
844  ana->SwitchOnSSHistoFill();
845 
846  if(kAnaCutsString.Contains("Decay"))
847  {
849  ana->SetNDecayBits(5);
850  }
851  }
852 
853  if ( kAnaCutsString.Contains("PerSM") )
854  {
856  ana->SwitchOnStudyNCellsCut();
857  }
858 
859  if ( kAnaCutsString.Contains("PerTCard") )
861 
862  if(kAnaCutsString.Contains("Bkg"))
863  {
864  printf("ConfigureIsolationAnalysis() *** Activate analysis on PtTrig and Bkg bins >> \n");
866  ana->SetNPtTrigBins(6);
867  //ana->SetPtTrigLimits(0,8); ana->SetPtTrigLimits(1,12); ana->SetPtTrigLimits(2,16); ana->SetPtTrigLimits(3,25);
868 
870  ana->SetNBackgroundBins(11);
871  //ana->SetBackgroundLimits(0,0); ana->SetBackgroundLimits(1,0.2); ana->SetBackgroundLimits(2,3); ana->SetBackgroundLimits(3,0.4);
872  }
873 
874  if(!tm) ana->SwitchOnTMHistoFill();
875  else ana->SwitchOffTMHistoFill();
876 
877  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
878 
879  // Avoid borders of calorimeter
880  ana->SwitchOnFiducialCut();
881  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
882  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
883  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
884 
885  if ( kAnaCutsString.Contains("TightAcc") )
886  {
887  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.27, 103, 157) ; // EMC
888  }
889 
890  // Same Eta as EMCal, cut in phi if EMCAL was triggering
891  if(particle=="Hadron" || particle.Contains("CTS"))
892  {
893  //if(trigger.Contains("EMC"))
894  // ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
895  //else
896  ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
897  }
898 
899  // Branch AOD settings
900 
901  ana->SetInputAODName(Form("%sTrigger_%s",particle.Data(),kAnaCaloTrackCorr.Data()));
902  ana->SetAODObjArrayName(Form("IC%sTrigger_%s_R%1.1f_ThMin%1.1f",particle.Data(),kAnaCaloTrackCorr.Data(),cone,pth));
903 
904  //
905  // Do settings for main isolation cut class
906  //
907  AliIsolationCut * ic = ana->GetIsolationCut();
908  ic->SetDebug(debug);
909  ic->SetParticleTypeInCone(partInCone);
910  ic->SetICMethod(thresType);
911  ic->SetPtFraction(0.1);
912  ic->SetPtThreshold(0.5); // default, change in next lines
913  ic->SetSumPtThreshold(1.0); // default, change in next lines
914 
915  if(cone > 0 && pth > 0)
916  {
917  ic->SetConeSize(cone);
918  ic->SetMinDistToTrigger(coneMin);
919  ic->SetPtThresholdMax(10000);
920 
921  if(thresType == AliIsolationCut::kPtThresIC)
922  {
923  printf("ConfigureIsolationAnalysis() *** Iso *** PtThresMin = %1.1f GeV/c *** R = %1.2f *** R min %1.2f\n",pth,cone,coneMin);
924  ic->SetPtThreshold(pth);
925  }
926 
927  if(thresType == AliIsolationCut::kSumPtIC)
928  {
929  printf("ConfigureIsolationAnalysis() *** Iso *** SumPtMin = %1.1f GeV/c *** R = %1.1f *** R min %1.2f\n",pth,cone,coneMin);
930  ic->SetSumPtThreshold(pth);
931  }
932  }
933  else
934  {
935  if(col=="pp")
936  {
937  ic->SetPtThreshold(0.5);
938  ic->SetSumPtThreshold(1.0) ;
939  ic->SetConeSize(0.4);
940  ic->SetMinDistToTrigger(-1);
941  }
942  if(col=="PbPb")
943  {
944  ic->SetPtThreshold(3.);
945  ic->SetSumPtThreshold(3.0) ;
946  ic->SetConeSize(0.3);
947  ic->SetMinDistToTrigger(-1);
948  }
949  }
950 
951 
952  // Do or not do isolation with previously produced AODs.
953  // No effect if use of SwitchOnSeveralIsolation()
954  ana->SwitchOffReIsolation();
955 
956  // Multiple IC
957  if(multi)
958  {
959  ic->SetConeSize(1.); // Take all for first iteration
960  ic->SetPtThreshold(100);// Take all for first iteration
961  ic->SetMinDistToTrigger(-1);
962 
963  ana->SwitchOnSeveralIsolation() ;
964  //ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),tm));
965  ana->SetAODObjArrayName(Form("MultiIC%s",particle.Data()));
966 
967  ana->SetNCones(3);
968  ana->SetNPtThresFrac(2);
969  ana->SetConeSizes(0,0.3); ana->SetConeSizes(1,0.4); ana->SetConeSizes(2,0.5);
970  ana->SetPtThresholds(0, 0.5); ana->SetPtThresholds(1, 1); ana->SetPtThresholds(2, 1.5); ana->SetPtThresholds(3, 2);
971  ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1); ana->SetPtFractions (2, 0.2) ; ana->SetPtFractions (3, 0.3) ;
972  ana->SetSumPtThresholds(0, 0.5) ; ana->SetSumPtThresholds(1, 1) ; ana->SetSumPtThresholds(2, 1.5); ana->SetSumPtThresholds(3, 2) ;
973  //ana->SetPtThresholds(0, 0.5);
974 
975  ana->SwitchOffTMHistoFill();
976  ana->SwitchOffSSHistoFill();
977  }
978  else
980 
981  // Track matching
982  //
983  // By default apply always a TM cut in cone if charged and neutrals
984  // in isolation cone
985  if ( partInCone == AliIsolationCut::kNeutralAndCharged )
986  {
987  AliCaloPID* caloPID = ana->GetCaloPID();
988 
989  // E/p
990  if ( kAnaCutsString.Contains("TMEoP10" ) ) caloPID->SetEOverP(0,10);
991  if ( kAnaCutsString.Contains("TMEoP5" ) ) caloPID->SetEOverP(0,5);
992  if ( kAnaCutsString.Contains("TMEoP3" ) ) caloPID->SetEOverP(0,3);
993  if ( kAnaCutsString.Contains("TMEoP2" ) ) caloPID->SetEOverP(0,2);
994  if ( kAnaCutsString.Contains("TMEoP1.5") ) caloPID->SetEOverP(0,1.5);
995 
996  if ( tm == 1 )
997  {
998  // tm = 1, fixed cuts
999 
1000  caloPID->SetEMCALDEtaCut(0.025);
1001  caloPID->SetEMCALDPhiCut(0.030);
1002  }
1003  else
1004  {
1005  // pT track dependent cuts
1007  }
1008  }
1009 
1010  // Set Histograms name tag, bins and ranges
1011 
1012 // if(!multi) ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_" ,particle.Data(),tm));
1013 // else ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),tm));
1014  if(!multi) ana->AddToHistogramsName(Form("AnaIsol%s_" ,particle.Data()));
1015  else ana->AddToHistogramsName(Form("AnaMultiIsol%s_",particle.Data()));
1016 
1017  SetAnalysisCommonParameters(ana,histoString, calorimeter,year,col,simulation,printSettings,debug); // see method below
1018 
1019  if ( particle=="Hadron" || particle.Contains("CTS") )
1020  {
1021  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1022  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1023  }
1024 
1025  if ( printSettings ) ic ->Print("");
1026 
1027  return ana;
1028 }
1029 
1052  Bool_t bIsolated, Float_t shshMax,
1053  Int_t partInCone, Int_t thresType,
1054  Float_t cone, Float_t coneMin,
1055  Float_t pth, Bool_t mixOn,
1056  TString col, Bool_t simulation,
1057  TString calorimeter, Int_t year, Int_t tm,
1058  Bool_t printSettings, Int_t debug,
1059  TString histoString )
1060 {
1062 
1063  ana->SetTriggerPtRange(5,100);
1064  ana->SetAssociatedPtRange(0.2,100);
1065  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
1066 
1067  // Underlying event
1068  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
1070 
1071  ana->SwitchOffAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
1072  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
1074 
1075  if(leading > 0 && leading < 3 ) ana->SwitchOnAbsoluteLeading();
1076  if(leading > 2 ) ana->SwitchOnNearSideLeading();
1077  if(leading == 2 || leading == 4 ) ana->SwitchOnCheckNeutralClustersForLeading();
1078 
1080  ana->SwitchOffCorrelationVzBin() ;
1082 
1084 
1085  if(particle.Contains("Photon"))
1086  {
1087  if(kAnaCutsString.Contains("Decay"))
1088  {
1089  printf("ConfigureHadronCorrelationAnalysis() *** Activate analysis on Tagged clusters as Decay product >> \n");
1091  ana->SetNDecayBits(5);
1093  if ( kAnaCutsString.Contains("Bkg") && !bIsolated )
1095  }
1096 
1097  //printf("ConfigureHadronCorrelationAnalysis() *** SET M02 limits in correlation task *** \n");
1098  ana->SetM02Cut(0.10,shshMax);
1099  }
1100 
1101  if ( kAnaCutsString.Contains("PerSM") )
1103 
1104  if ( kAnaCutsString.Contains("PerTCard") )
1106 
1107  ana->SetMCGenType(0,7); // Change to higher to include Tagged decays
1108 
1109  ana->SwitchOffLeadHadronSelection(); // Open cuts, just fill histograms
1111 
1112  if ( kAnaCutsString.Contains("Bkg") && !bIsolated )
1113  {
1114  printf("ConfigureHadronCorrelationAnalysis() *** Activate analysis on PtTrig and Bkg bins,\n"
1115  " \t make sure isolation runs first even if not used to select trigger >> \n");
1117  }
1118 
1119  ana->SetLeadHadronPhiCut(TMath::DegToRad()*130, TMath::DegToRad()*230.);
1120  ana->SetLeadHadronPtCut(0.5, 1000);
1121 
1122  // if triggering on PHOS and EMCAL is on
1123  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
1124  //ana->SetPi0AODBranchName("Pi0EMCAL_TrigEMC7_Cl_TM1");
1125 
1127 
1129 
1130  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
1131 
1133 
1134  ana->SetNAssocPtBins(16); // set last bin [20,30] GeV/c
1135  // See AliAnaParticleCorrelation::InitParameters();
1136  // Default bins{0.2,0.5,1,2,3,4,5,6,7,8,9,10,12,14,16,20,30,40,50,100} GeV/c
1137  // If you want to change it:
1138  // ana->SetAssocPtBinLimit(0, 1) ;
1139  // ana->SetAssocPtBinLimit(1, 2) ;
1140  // ana->SetAssocPtBinLimit(2, 3) ;
1141  // ana->SetAssocPtBinLimit(3, 4) ;
1142  // ana->SetAssocPtBinLimit(4, 5) ;
1143  // ana->SetAssocPtBinLimit(5, 8) ;
1144  // ana->SetAssocPtBinLimit(6, 10) ;
1145  // ana->SetAssocPtBinLimit(7, 100);
1146 
1147  ana->SetNTriggerPtBins(5); // set last bin [25,30] GeV/c
1148  // See AliAnaParticleCorrelation::InitParameters();
1149  // Default bins{10,12,16,20,25,30,40,50,75,100} GeV/c
1150  // If you want to change it:
1151  // ana->SetTriggerPtBinLimit(0, 5) ;
1152  // ana->SetTriggerPtBinLimit(1, 10) ;
1153 
1154  ana->SelectIsolated(bIsolated); // do correlation with isolated photons
1155 
1156  // Mixing with own pool
1157  if(mixOn)
1158  {
1159  ana->SwitchOnOwnMix();
1161 
1162  if(bIsolated)
1163  {
1164  //Do settings for main isolation cut class
1165  AliIsolationCut * ic = ana->GetIsolationCut();
1166  ic->SetDebug(debug);
1167 
1168  if(cone >0 && pth > 0)
1169  {
1170  //printf("ConfigureHadronCorrelationAnalysis() *** PtThres = %1.1f GeV/c *** R = %1.1f *** R min = %1.2f\n",pth,cone,coneMin);
1171  ic->SetPtThreshold(pth);
1172  ic->SetConeSize(cone);
1173  ic->SetMinDistToTrigger(coneMin);
1174  }
1175  else
1176  {
1177  if(col=="pp")
1178  {
1179  ic->SetPtThreshold(0.5);
1180  ic->SetConeSize(0.4);
1181  ic->SetMinDistToTrigger(-1);
1182  }
1183  if(col=="PbPb")
1184  {
1185  ic->SetPtThreshold(3.);
1186  //ic->SetPtThreshold(1.);
1187  ic->SetConeSize(0.3);
1188  ic->SetMinDistToTrigger(-1);
1189  }
1190  }
1191 
1192  ic->SetPtFraction(0.1);
1193  ic->SetSumPtThreshold(1.0) ;
1194  ic->SetParticleTypeInCone(partInCone);
1195  ic->SetICMethod(thresType);
1196  }
1197  }
1198  else
1199  ana->SwitchOffOwnMix();
1200 
1201  ana->SetNZvertBin(20);
1202 
1203  if(col=="pp")
1204  {
1205  ana->SetNMaxEvMix(100);
1206  ana->SwitchOnTrackMultBins();
1207  ana->SetNTrackMultBin(10);
1208  ana->SetNRPBin(1);
1209  }
1210  else
1211  {
1212  ana->SetNMaxEvMix(10);
1213  ana->SwitchOffTrackMultBins(); // centrality bins
1214  ana->SetNCentrBin(12);
1215  ana->SetNRPBin(3);
1216  if(kAnaCaloTrackCorr.Contains("60_90"))
1217  {
1218  //printf("ConfigureHadronCorrelationAnalysis() *** Set mixing for peripheral ***\n");
1219  ana->SetNMaxEvMix(50);
1220  ana->SetNCentrBin(2);
1221  }
1222  }
1223 
1224  // Avoid borders of calorimeter, same as for isolation
1225  //
1226  ana->SwitchOnFiducialCut();
1227  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
1228  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
1229  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
1230 
1231  // Track matching, in case of mixing and specially in isolation case
1232  //
1233  AliCaloPID* caloPID = ana->GetCaloPID();
1234 
1235  // E/p
1236  if ( kAnaCutsString.Contains("TMEoP10" ) ) caloPID->SetEOverP(0,10);
1237  if ( kAnaCutsString.Contains("TMEoP5" ) ) caloPID->SetEOverP(0,5);
1238  if ( kAnaCutsString.Contains("TMEoP3" ) ) caloPID->SetEOverP(0,3);
1239  if ( kAnaCutsString.Contains("TMEoP2" ) ) caloPID->SetEOverP(0,2);
1240  if ( kAnaCutsString.Contains("TMEoP1.5") ) caloPID->SetEOverP(0,1.5);
1241 
1242  // tm = 1, fixed cuts
1243  caloPID->SetEMCALDEtaCut(0.025);
1244  caloPID->SetEMCALDPhiCut(0.030);
1245 
1246  // pT track dependent cuts
1247  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
1248 
1249  // Input / output delta AOD settings
1250  //
1251  ana->SetInputAODName(Form("%sTrigger_%s",particle.Data(),kAnaCaloTrackCorr.Data()));
1252  ana->SetAODObjArrayName(Form("%sHadronCorrIso%dTrigger_%s",particle.Data(),bIsolated,kAnaCaloTrackCorr.Data()));
1253  //ana->SetAODNamepTInConeHisto(Form("IC%s_%s_R%1.1f_ThMin%1.1f" ,particle.Data(),kAnaCaloTrackCorr.Data(),cone,pth));
1254 
1255  //Set Histograms name tag, bins and ranges
1256  //
1257  //ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_TM%d_",particle.Data(),bIsolated,tm));
1258  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_",particle.Data(),bIsolated));
1259 
1260  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1261 
1262  if(particle=="Hadron" || particle.Contains("CTS"))
1263  {
1264  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1265  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1266  }
1267 
1268  return ana;
1269 }
1270 
1280 ( Bool_t simulation, Bool_t printSettings, Int_t debug, TString histoString )
1281 {
1283 
1284  ana->SetDebug(debug);
1285 
1286  // selection cuts
1287 
1288  ana->SetMinPt(0.2);
1289  ana->SwitchOnFiducialCut();
1290  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
1291 
1293 
1296 
1297  // Branch AOD settings
1298 
1299  ana->SetOutputAODName(Form("HadronTrigger_%s",kAnaCaloTrackCorr.Data()));
1300  ana->SetOutputAODClassName("AliCaloTrackParticle"); // use if no correlation done
1301 
1302  //Set Histograms name tag, bins and ranges
1303 
1304  ana->AddToHistogramsName("AnaHadrons_");
1305 
1306  SetAnalysisCommonParameters(ana,histoString,"CTS",2012,"pp",simulation,printSettings,debug); // see method below
1307 
1308  return ana;
1309 }
1310 
1324 (Int_t tm, TString col , Bool_t simulation,
1325  TString calorimeter, Int_t year,
1326  Bool_t printSettings, Int_t debug, TString histoString )
1327 {
1329 
1330  ana->SetM02Min(-1);
1331  ana->SetNCellsPerClusterMin(-1);
1332 
1333  ana->SetCalorimeter(calorimeter);
1334  if(calorimeter == "DCAL")
1335  {
1336  TString calo = "EMCAL";
1337  ana->SetCalorimeter(calo);
1338  }
1339 
1340  if(simulation) ana->SetConstantTimeShift(615);
1341 
1342  ana->SwitchOffFiducialCut();
1343 
1345 
1347 
1349 
1351 
1352  ana->SwitchOffStudyMatchedPID() ;
1353 
1354  ana->SwitchOffStudyWeight();
1355 
1356  ana->SetNCellBinLimits(3); // set to -1 for no analysis on predefined bins in nCell
1357  ana->SetDistToBadMin(2);
1358 
1360  ana->SwitchOffStudyExotic();
1362  ana->SwitchOffStudyCellTime() ;
1363 
1364  // PID cuts (Track-matching)
1365  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
1366  AliCaloPID* caloPID = ana->GetCaloPID();
1367 
1368  // E/p
1369  if ( kAnaCutsString.Contains("TMEoP10" ) ) caloPID->SetEOverP(0,10);
1370  if ( kAnaCutsString.Contains("TMEoP5" ) ) caloPID->SetEOverP(0,5);
1371  if ( kAnaCutsString.Contains("TMEoP3" ) ) caloPID->SetEOverP(0,3);
1372  if ( kAnaCutsString.Contains("TMEoP2" ) ) caloPID->SetEOverP(0,2);
1373  if ( kAnaCutsString.Contains("TMEoP1.5") ) caloPID->SetEOverP(0,1.5);
1374 
1375  if(tm > 1)
1376  {
1377  // track pT dependent cut
1379 
1380  // Begining of histograms name
1381  ana->AddToHistogramsName("Shape_TMDep_");
1382  }
1383  else if ( tm )
1384  {
1385  // Fix
1387  caloPID->SetEMCALDEtaCut(0.025);
1388  caloPID->SetEMCALDPhiCut(0.030);
1389 
1390  // Begining of histograms name
1391  ana->AddToHistogramsName("Shape_TMFix_");
1392  }
1393 
1394  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1395 
1396  AliHistogramRanges* histoRanges = ana->GetHistogramRanges();
1397  histoRanges->SetHistoPtRangeAndNBins(0, 50, 100) ; // Reduce a bit size
1398 
1399  return ana;
1400 }
1401 
1414  TString calorimeter, Int_t year,
1415  Bool_t printSettings, Int_t debug,
1416  TString histoString )
1417 {
1419 
1420  ana->SetCalorimeter(calorimeter);
1421  if(calorimeter == "DCAL")
1422  {
1423  TString calo = "EMCAL";
1424  ana->SetCalorimeter(calo);
1425  }
1426 
1427  ana->SetTimeCut(-1e10,1e10); // Open time cut
1428 
1429  ana->SwitchOffCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1430 
1431  ana->SwitchOffFiducialCut();
1435  ana->SwitchOffStudyBadClusters() ;
1437 
1439 
1440  ana->AddToHistogramsName("QA_"); // Begining of histograms name
1441 
1442  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1443 
1444  return ana;
1445 }
1446 
1463  Float_t cone, Float_t coneMin,
1464  TString col, Bool_t simulation,
1465  TString calorimeter, Int_t year,
1466  Bool_t printSettings, Int_t debug,
1467  TString histoString )
1468 {
1470 
1471  // Trigger detector, acceptance and pT cut
1472  ana->SetTriggerDetector(calorimeter);
1473  if(calorimeter == "DCAL")
1474  {
1475  TString calo = "EMCAL";
1476  ana->SetTriggerDetector(calo);
1477  }
1478 
1479  ana->SetMinPt(2); // Trigger photon, pi0 minimum pT
1480  if ( calorimeter == "EMCAL" ) ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
1481  else if ( calorimeter == "DCAL" ) ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
1482  else if ( calorimeter == "PHOS" ) ana->GetFiducialCutForTrigger()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
1483 
1484  // Particles associated to trigger or isolation cone acceptance and pT cut
1485  ana->SetCalorimeter(calorimeter);
1486  if(calorimeter == "DCAL")
1487  {
1488  TString calo = "EMCAL";
1489  ana->SetCalorimeter(calo);
1490  }
1491 
1492  ana->SetMinChargedPt(0.2);
1493  ana->SetMinNeutralPt(0.5);
1494 
1495  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 80, 174) ;
1496  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 260, 327) ;
1497  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.12, 250, 320) ;
1498  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.9, 0, 360);
1499 
1500  // Isolation paramters
1501  AliIsolationCut * ic = ana->GetIsolationCut();
1502  ic->SetDebug(debug);
1503  ic->SetPtThreshold(pth);
1504  ic->SetConeSize(cone);
1505  ic->SetMinDistToTrigger(coneMin);
1506  ic->SetSumPtThreshold(pth) ;
1507  ic->SetICMethod(thresType);
1508 
1509  ana->AddToHistogramsName("AnaGenKine_");
1510 
1511  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1512 
1513  return ana;
1514 }
1515 
1542  TList* anaList = 0x0,
1543  TString calorimeter = "EMCAL", // "DCAL", "PHOS"
1544  Bool_t simulation = kFALSE,
1545  Int_t year = 2011,
1546  TString col = "pp",
1547  TString analysisString= "Photon_MergedPi0_DecayPi0_Isolation_Correlation_QA_Charged",
1548  TString histoString = "",
1549  Float_t shshMax = 0.27,
1550  Float_t isoCone = 0.4,
1551  Float_t isoConeMin = -1,
1552  Float_t isoPtTh = 2,
1553  Int_t isoMethod = AliIsolationCut::kSumPtIC,
1555  Int_t leading = 0,
1556  Int_t tm = 2,
1557  Bool_t mixOn = kTRUE,
1558  Bool_t printSettings = kFALSE,
1559  Int_t debug = 0
1560 )
1561 {
1562  if ( !anaList )
1563  {
1564  printf("ConfigureCaloTrackCorrAnalysis() << No analysis list passed. Stop >>\n");
1565  return;
1566  }
1567 
1568  // Check the passed variables
1569  //
1570  printf("ConfigureCaloTrackCorrAnalysis() << Settings: Base string <%s>, Analysis string <%s>, "
1571  "\n calorimeter <%s>, simulation <%d>, year <%d>, col <%s>, "
1572  "\n shshMax <%2.2f>, R <%1.2f>, Rmin <%1.2f>, isoPtTh <%2.2f>, isoMethod <%d>,isoContent <%d>,"
1573  "\n leading <%d>, tm <%d>, mixOn <%d>, printSettings <%d>, debug <%d>\n",
1574  anaList->GetName(), analysisString.Data(),
1575  calorimeter.Data(), simulation, year, col.Data(),
1576  shshMax,isoCone,isoConeMin,isoPtTh,isoMethod,isoContent,
1577  leading,tm,mixOn,printSettings,debug);
1578 
1579  kAnaCutsString = analysisString;
1580 
1581  kAnaCaloTrackCorr = Form("%s",anaList->GetName());
1582 
1583  if ( analysisString.Contains("Isolation") )
1584  kAnaCaloTrackCorr+= Form("_Iso_Meth%d_Part%d_Pt%1.2f_R%1.2f",isoMethod,isoContent,isoPtTh,isoCone);
1585  if ( analysisString.Contains("Corr") && analysisString.Contains("Photon") && shshMax > 0)
1586  kAnaCaloTrackCorr+= Form("_CorrM02_%1.2f",shshMax);
1587 
1588  if ( isoConeMin > 0 ) kAnaCaloTrackCorr+=Form("_Rmin%1.2f",isoConeMin);
1589  if ( leading > 0 ) kAnaCaloTrackCorr+=Form("_Lead%d" ,leading);
1590  if ( tm > 0 ) kAnaCaloTrackCorr+=Form("_TM%d" ,tm);
1591 
1592  printf("ConfigureCaloTrackCorrAnalysis() <<<< TMP branch internal NAME: %s >>>>>\n",kAnaCaloTrackCorr.Data());
1593 
1594  // #### Configure analysis ####
1595 
1596 
1597  Int_t n = anaList->GetEntries();//Analysis number, order is important
1598 
1599  //
1600  // Photon analysis
1601  //
1602  if ( analysisString.Contains("Photon") )
1603  {
1604  anaList->AddAt(ConfigurePhotonAnalysis
1605  (col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Photon cluster selection
1606 
1607  if ( analysisString.Contains("InvMass") )
1608  anaList->AddAt(ConfigureInvariantMassAnalysis
1609  (col,simulation,calorimeter,/*bothCalo*/kFALSE,
1610  year,/*mix*/kTRUE,printSettings,debug,histoString), n++);
1611 
1612  if ( analysisString.Contains("DecayPi0") )
1613  {
1614  anaList->AddAt(ConfigurePi0EbEAnalysis
1615  ("Pi0" , AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1616  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 event by event selection, invariant mass and photon tagging from decay
1617 
1618  anaList->AddAt(ConfigurePi0EbEAnalysis
1619  ("Eta" , AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1620  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Eta event by event selection, invariant mass and photon tagging from decay
1621 
1622  anaList->AddAt(ConfigurePi0EbEAnalysis
1623  ("Pi0SideBand", AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1624  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 out of peak event by event selection, and photon tagging from decay
1625 
1626  anaList->AddAt(ConfigurePi0EbEAnalysis
1627  ("EtaSideBand", AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1628  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Eta out of peak event by event selection, and photon tagging from decay
1629  }
1630 
1631  if ( analysisString.Contains("Isolation") )
1632  {
1633  anaList->AddAt(ConfigureIsolationAnalysis
1634  ("Photon", leading, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, kFALSE,
1635  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Photon isolation
1636 
1637  }
1638 
1639  if( analysisString.Contains("Correlation") )
1640  {
1641  if ( !analysisString.Contains("MultiIso") )
1642  {
1643  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1644  ("Photon", leading, kFALSE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1645  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Gamma-hadron correlation
1646  }
1647 
1648  if ( analysisString.Contains("Isolation") )
1649  {
1650  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1651  ("Photon", leading, kTRUE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1652  col,simulation,calorimeter,year,tm,printSettings,debug,histoString) , n++); // Isolated gamma hadron correlation
1653  }
1654  } // correlation
1655  }
1656 
1657  //
1658  // Merged pi0 analysis
1659  //
1660  if ( analysisString.Contains("MergedPi0") )
1661  {
1662  anaList->AddAt(ConfigurePi0EbEAnalysis
1663  ("Pi0", AliAnaPi0EbE::kSSCalo,kTRUE,kTRUE,
1664  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 event by event selection, cluster splitting
1665  if ( analysisString.Contains("Isolation") )
1666  {
1667  anaList->AddAt(ConfigureIsolationAnalysis
1668  ("Pi0SS", leading, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, kFALSE,
1669  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 isolation, cluster splits
1670 
1671  }
1672 
1673  if( analysisString.Contains("Correlation") )
1674  {
1675  if ( !analysisString.Contains("MultiIso") )
1676  {
1677  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1678  ("Pi0SS", leading, kFALSE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1679  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0-hadron correlation
1680  }
1681 
1682  if ( analysisString.Contains("Isolation") )
1683  {
1684  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1685  ("Pi0SS", leading, kTRUE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1686  col,simulation,calorimeter,year,tm,printSettings,debug,histoString) , n++); // Isolated pi0-hadron correlation
1687  }
1688  } // correlation
1689  }
1690 
1691  // Check the generated kinematics
1692  if(simulation && analysisString.Contains("Generator"))
1693  {
1694  anaList->AddAt(ConfigureGenKineAnalysis
1695  (isoMethod,isoPtTh,isoCone,isoConeMin,
1696  col,simulation,calorimeter,year,printSettings,debug,histoString), n++);
1697  }
1698 
1699  // Charged analysis
1700  if ( analysisString.Contains("Charged") )
1701  {
1702  anaList->AddAt(ConfigureChargedAnalysis(simulation,printSettings,debug,histoString), n++); // track selection checks
1703  }
1704 
1705  // Charged analysis
1706  if ( analysisString.Contains("Electron") )
1707  {
1708  anaList->AddAt(ConfigureElectronAnalysis
1709  (col,simulation,calorimeter,year,printSettings,debug,histoString), n++); // electron/hadron selection checks
1710  }
1711 
1712  // Cluster Shape studies
1713  if ( analysisString.Contains("ClusterShape") )
1714  {
1715  anaList->AddAt(ConfigureClusterShape(tm,col,simulation,calorimeter,year,printSettings,debug,histoString) , n++);
1716  }
1717 
1718  // Calo QA
1719  if ( analysisString.Contains("QA") )
1720  {
1721  anaList->AddAt(ConfigureQAAnalysis(col,simulation,calorimeter,year,printSettings,debug,histoString) , n++);
1722  }
1723 
1724  printf("ConfigureCaloTrackCorrAnalysis() << End configuration for %s with total analysis %d>>\n",
1725  kAnaCaloTrackCorr.Data(), n);
1726 }
1727 
1728 
1729 
void SetSumPtThresholds(Int_t i, Float_t pt)
void SwitchOffSelectedClusterHistoFill()
Definition: AliAnaPi0EbE.h:112
void SetPtThreshold(Float_t pt)
void ConfigureCaloTrackCorrAnalysis(TList *anaList=0x0, TString calorimeter="EMCAL", Bool_t simulation=kFALSE, Int_t year=2011, TString col="pp", TString analysisString="Photon_MergedPi0_DecayPi0_Isolation_Correlation_QA_Charged", TString histoString="", Float_t shshMax=0.27, Float_t isoCone=0.4, Float_t isoConeMin=-1, Float_t isoPtTh=2, Int_t isoMethod=AliIsolationCut::kSumPtIC, Int_t isoContent=AliIsolationCut::kNeutralAndCharged, Int_t leading=0, Int_t tm=2, Bool_t mixOn=kTRUE, Bool_t printSettings=kFALSE, Int_t debug=0)
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
TString kAnaCaloTrackCorr
Global name to be composed of the settings, used to set the AOD branch name.
void SetAngleCut(Float_t a)
Definition: AliAnaPi0.h:77
void SwitchOnPairWithOtherDetector()
Definition: AliAnaPi0.h:155
void SwitchOnFillOriginHisto()
Definition: AliAnaPi0.h:139
void SetTimeCut(Double_t min, Double_t max)
void SetSimpleCTSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void AddToHistogramsName(TString add)
TString kAnaCutsString
Global name to be composed of the analysis components chain and some internal settings.
void SwitchOnFillAllTrackMatchingHistogram()
void SetSplitWidthSigma(Float_t s)
Definition: AliCaloPID.h:286
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:137
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:267
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:263
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:99
void SetAssociatedPtRange(Float_t min, Float_t max)
Class with utils to perform Isolation Cuts.
AliAnaGeneratorKine * ConfigureGenKineAnalysis(Int_t thresType, Float_t pth, Float_t cone, Float_t coneMin, TString col, Bool_t simulation, TString calorimeter, Int_t year, Bool_t printSettings, Int_t debug, TString histoString)
void SetNPIDBits(Int_t s)
Definition: AliAnaPi0.h:123
void SwitchOnFillShowerShapeHistograms()
void SetConeSize(Float_t r)
void SetPtFraction(Float_t pt)
void SwitchOnSelectPairInIsolationCone()
Definition: AliAnaPi0EbE.h:127
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPi0EbE.h:142
void SetMinDistanceToBadChannel(Float_t m)
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:148
void SwitchOffSplitShowerShapeCut()
Definition: AliCaloPID.h:264
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:270
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
Selected photon clusters invariant mass analysis.
Definition: AliAnaPi0.h:39
void SetDebug(Int_t d)
void SetMinChargedPt(Float_t pt)
virtual void SetInputAODName(TString name)
void SetM02CutForInvMass(Float_t min=0, Float_t max=10)
Definition: AliAnaPi0EbE.h:117
virtual AliIsolationCut * GetIsolationCut()
void SwitchOnSMCombinations()
Definition: AliAnaPi0.h:94
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:120
void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
void KeepNeutralMesonSelectionHistos(Bool_t keep)
void SetTriggerDetector(TString det)
Set the calorimeter for the analysis.
void SwitchOffTMHistoFill()
Definition: AliAnaPhoton.h:100
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
AliAnaElectron * ConfigureElectronAnalysis(TString col, Bool_t simulation, TString calorimeter, Int_t year, Bool_t printSettings, Int_t debug, TString histoString)
void SwitchOnAngleSelection()
Definition: AliAnaPi0.h:71
virtual void SetOutputAODClassName(TString name)
void SwitchOnTMTrackPtHistoFill()
Definition: AliAnaPhoton.h:102
void SwitchOffFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:76
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
void SetSumPtThreshold(Float_t s)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPi0EbE.h:133
void SwitchOffMultipleCutAnalysis()
Definition: AliAnaPi0.h:115
Class for the Calorimeter QA analysis.
void SwitchOnFillShowerShapeHistogramsPerSM()
Definition: AliAnaPhoton.h:81
void SetHistodRRangeAndNBins(Float_t min, Float_t max, Int_t n)
Get trigger particles/partons/jets and correlations at generator level.
void SwitchOffSplitAsymmetryCut()
Definition: AliCaloPID.h:260
void SetAnalysisType(anaTypes ana)
Definition: AliAnaPi0EbE.h:92
void SwitchOffFillWeightHistograms()
void SwitchOffTMHistoFill()
Definition: AliAnaPi0EbE.h:109
AliAnaCalorimeterQA * ConfigureQAAnalysis(TString col, Bool_t simulation, TString calorimeter, Int_t year, Bool_t printSettings, Int_t debug, TString histoString)
void SetNCellCut(Int_t n)
Definition: AliAnaPhoton.h:128
AliAnaPi0 * ConfigureInvariantMassAnalysis(TString col, Bool_t simulation, TString calorimeter, Bool_t bothCalo, Int_t year, Bool_t mixOn, Bool_t printSettings, Int_t debug, TString histoString)
Select cluster pairs or single merged clusters with pi0 or eta invariant mass.
Definition: AliAnaPi0EbE.h:30
AliAnaPhoton * ConfigurePhotonAnalysis(TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug, TString histoString)
void SetSimplePHOSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
AliAnaChargedParticles * ConfigureChargedAnalysis(Bool_t simulation, Bool_t printSettings, Int_t debug, TString histoString)
void SetPtFractions(Int_t i, Float_t pt)
void SetAngleMaxCut(Float_t a)
Definition: AliAnaPi0.h:78
2 calorimeter clusters invariant mass selection
Definition: AliAnaPi0EbE.h:86
Selection of electron clusters in calorimeter.
const TString calorimeter
Definition: anaM.C:36
void SetHistoTrackResidualEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetIsolationCandidateMinPt(Float_t min)
Definition: AliAnaPi0EbE.h:122
void SetAnalysisCommonParameters(AliAnaCaloTrackCorrBaseClass *ana, TString histoString, TString calorimeter, Int_t year, TString col, Bool_t simulation, Bool_t printSettings, Int_t debug)
void SetPHOSRCut(Float_t rcut)
Definition: AliCaloPID.h:213
void SetEMCALDPhiCut(Float_t dcut)
Definition: AliCaloPID.h:224
void SetLeadHadronPtCut(Float_t min, Float_t max)
virtual void SetOutputAODName(TString name)
void SetICMethod(Int_t i)
void SwitchOnFillAngleHisto()
Definition: AliAnaPi0.h:80
void SetR(Float_t r)
Definition: AliAnaPi0EbE.h:121
virtual void SetCalorimeter(TString calo)
Set the calorimeter for the analysis. A string.
Correlate trigger particles (photon, pi0, tracks) and charged tracks: Azimuthal correlations, xE distributions.
virtual void SetNTrackMultBin(Int_t n=1)
Number of bins in centrality.
void DoEMCALFiducialCut(Bool_t b)
Base class for CaloTrackCorr analysis algorithms.
void SwitchOffTrackMatchRejection()
Definition: AliAnaPhoton.h:138
void SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
void SetUeDeltaPhiCutRange(Double_t uephimin, Double_t uephimax)
1 calorimeter cluster and 1 photon conversion pair invariant mass selection
Definition: AliAnaPi0EbE.h:88
void SetHistoPtInConeRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual AliFiducialCut * GetFiducialCut()
void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
int Int_t
Definition: External.C:63
void SetSideBandCutRanges(Double_t lmin, Double_t lmax, Double_t rmin, Double_t rmax)
virtual AliHistogramRanges * GetHistogramRanges()
void SwitchOnSplitAsymmetryCut()
Definition: AliCaloPID.h:259
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
float Float_t
Definition: External.C:68
Filter EMCal/PHOS clusters for photon analysis.
Definition: AliAnaPhoton.h:34
void SetHistoTrackResidualPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetConeSizes(Int_t i, Float_t r)
Class for cluster shape, cell T-Card correlation and exoticity.
void SwitchOnSelectIsolatedDecay()
Definition: AliAnaPi0EbE.h:124
void SwitchOffTMTrackPtHistoFill()
Definition: AliAnaPhoton.h:103
void SwitchOnUEBandSubtractionHistoFill(Int_t lev=1)
void SetM02Cut(Float_t min=0, Float_t max=10)
void SetHistoEOverPRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnSplitClusterDistToBad()
Definition: AliAnaPi0EbE.h:160
void SwitchOffTrackMatchRejection()
Definition: AliAnaPi0EbE.h:149
virtual void SetHistoERangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetInputAODGammaConvName(TString name)
Definition: AliAnaPi0EbE.h:98
void SetHistoNClusterCellRangeAndNBins(Int_t min, Int_t max, Int_t n)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Definition: AliAnaPi0.cxx:2615
void SetMinNeutralPt(Float_t pt)
anaTypes
Analysis types.
Definition: AliAnaPi0EbE.h:84
void SetParticle(TString particleName)
Set some default parameters for selection of pi0 or eta.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPhoton.h:123
AliAnaParticleIsolation * ConfigureIsolationAnalysis(TString particle, Int_t leading, Int_t partInCone, Int_t thresType, Float_t cone, Float_t coneMin, Float_t pth, Bool_t multi, TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug, TString histoString)
AliAnaClusterShapeCorrelStudies * ConfigureClusterShape(Int_t tm, TString col, Bool_t simulation, TString calorimeter, Int_t year, Bool_t printSettings, Int_t debug, TString histoString)
virtual TString GetAddedHistogramsStringToName() const
void SetPtThresholdMax(Float_t pt)
AliFiducialCut * GetFiducialCutForTrigger()
void SetEtaMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:308
void SetEOverP(Float_t min, Float_t max)
Definition: AliCaloPID.h:218
void SwitchOnTMHistoFill()
Definition: AliAnaPi0EbE.h:108
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
void SetPi0MassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:307
Class containing more common histogram axis types.
void SetEMCALLambda0CutMax(Float_t lcut)
Definition: AliCaloPID.h:202
void SwitchOnTrackMatchRejection()
Definition: AliAnaPi0EbE.h:148
virtual void SetNCentrBin(Int_t n=1)
Number of bins in reaction plain.
AliAnaPi0EbE * ConfigurePi0EbEAnalysis(TString particle, Int_t analysis, Bool_t useSSIso, Bool_t useAsy, TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug, TString histoString)
void SetNAsymCuts(Int_t s)
Definition: AliAnaPi0.h:121
virtual void SetNRPBin(Int_t n=1)
Number of bins for vertex position.
void SetPHOSDispersionCut(Float_t dcut)
Definition: AliCaloPID.h:208
void SetHistoNClustersRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPi0EbE.h:100
Track selection for correlation analysis.
void SetMCGenType(Int_t min=0, Int_t max=6)
void SwitchOnFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:75
Select clusters/tracks with low particle environment in their vecinity, isolated within a cone...
void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOffFillWeightHistograms()
Definition: AliAnaPi0EbE.h:152
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0MultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SwitchOnEMCTrackPtDepResMatching()
Definition: AliCaloPID.h:231
virtual void SetAODObjArrayName(TString name)
void SetNTriggerPtBins(Int_t n)
Set number of associated charged (neutral) hadrons pT bins.
AliAnaParticleHadronCorrelation * ConfigureHadronCorrelationAnalysis(TString particle, Int_t leading, Bool_t bIsolated, Float_t shshMax, Int_t partInCone, Int_t thresType, Float_t cone, Float_t coneMin, Float_t pth, Bool_t mixOn, TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug, TString histoString)
void SetHistoZRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0SignalRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Class that contains methods to select candidate cluster pairs to neutral meson.
void SetHistoTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoFinePtRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetOtherDetectorInputName(TString name)
Definition: AliAnaPi0.h:157
void SetNAssocPtBins(Int_t n)
Set number of associated charged (neutral) hadrons pT bins.
Class for PID selection with calorimeters.
Definition: AliCaloPID.h:53
1 calorimeter cluster shower shape and split invariatn mass selection
Definition: AliAnaPi0EbE.h:87
void FillNOriginHistograms(Int_t n)
Definition: AliAnaPhoton.h:146
virtual void SetNMaxEvMix(Int_t n=20)
Number of bins in track multiplicity.
void SetNCellCut(Int_t n)
void SetNLMMinEnergy(Int_t i, Float_t min)
Definition: AliAnaPi0EbE.h:138
void SetHistoShowerShapeRangeAndNBins(Float_t min, Float_t max, Int_t n)
bool Bool_t
Definition: External.C:53
void SetLeadHadronPhiCut(Float_t min, Float_t max)
void SetHistodEdxRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOffEMCTrackPtDepResMatching()
Definition: AliCaloPID.h:232
void ana(anaModes mode=mGRID)
Definition: ana.C:1036
void SetInvMassCutMaxParameters(Float_t a, Float_t b, Float_t c)
void SetHistoHBPRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALLambda0CutMin(Float_t lcut)
Definition: AliCaloPID.h:205
void SetHistoRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetParticleTypeInCone(Int_t i)
void SetHistoVertexDistRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetSubClusterEnergyMinimum(Int_t i, Float_t min)
Definition: AliCaloPID.h:276
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:221
void SetPhotonMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:309
void SetPtThresholds(Int_t i, Float_t pt)
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOffAllNLMHistoFill()
Definition: AliAnaPi0EbE.h:106
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPhoton.h:131
void SetMinDistToTrigger(Float_t md)
Int_t GetFirstSMCoveredByTRD() const
Time cut in ns.
void SetTriggerPtRange(Float_t min, Float_t max)