AliPhysics  56f1704 (56f1704)
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 "AliAnaPi0EbE.h"
33 #include "AliHistogramRanges.h"
36 #include "AliAnaChargedParticles.h"
37 #include "AliAnaCalorimeterQA.h"
39 #include "AliAnaGeneratorKine.h"
42 #endif
43 
46 
48 TString kAnaCutsString = ""; // "Photon_MergedPi0_DecayPi0_Isolation_Correlation_Bkg_QA_Charged",
49 
67  TString col, Bool_t simulation,
68  Bool_t printSettings, Int_t debug)
69 {
70  //
71  // Histograms ranges
72  //
73  AliHistogramRanges* histoRanges = ana->GetHistogramRanges();
74 
75  if ( histoString != "" )
76  ana->AddToHistogramsName(Form("%s_%s", histoString.Data(), (ana->GetAddedHistogramsStringToName()).Data()) );
77 
78 
79  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
80 
81  if(calorimeter=="EMCAL")
82  {
83  ana->SetFirstSMCoveredByTRD(-1);
84 
85  if ( year == 2010 )
86  {
87  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
88  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
89  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
90  }
91  else if ( year < 2014 )
92  {
93  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 104) ;
94  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
95  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
96 
97  if (year == 2011) ana->SetFirstSMCoveredByTRD( 6);
98  else if(year == 2012 ||
99  year == 2013) ana->SetFirstSMCoveredByTRD( 4);
100  }
101  else // Run2
102  {
103  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 189*TMath::DegToRad(), 111) ;
104  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA, revise
105  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA, revise
106  }
107 
108  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
109  }
110  else if(calorimeter=="DCAL")
111  {
112  histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 327*TMath::DegToRad(), 67) ;
113  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
114  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA, revise
115  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA, revise
116  }
117  else if(calorimeter=="PHOS")
118  {
119  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
120  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
121  }
122  else if(calorimeter=="CTS")
123  {
124  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
125  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
126  }
127 
128  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 2.9, 300);
129 
130  // Invariant mass histo
131  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
132  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
133 
134  // check if time calibration is on
135  //histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
136  histoRanges->SetHistoTimeRangeAndNBins(-400.,400,400);
137  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
138 
139  // track-cluster residuals
140  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.06,0.06,120);
141  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.06,0.06,120);
142  histoRanges->SetHistodRRangeAndNBins(0.,0.06,60);//QA
143 
144  // QA, electron, charged
145  histoRanges->SetHistoPOverERangeAndNBins(0,1.5,150);
146  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
147 
148  // QA
149  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
150  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
151  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
152  histoRanges->SetHistoRRangeAndNBins(430,460,30);
153  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
154  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
155 
156  // QA, correlation
157  if(col=="PbPb")
158  {
159  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
160  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
161  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
162  }
163  else
164  {
165  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
166  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
167  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
168  }
169 
170  // xE, zT
171  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
172  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
173 
174  // Isolation
175  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
176  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
177 
178  //
179  // MC histograms?
180  //
181  if(simulation) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
182  else ana->SwitchOffDataMC() ;
183 
184  //Set here generator name, default pythia
185  //ana->GetMCAnalysisUtils()->SetMCGenerator("");
186 
187  //
188  // Debug
189  //
190  if(printSettings) ana->Print("");
191 
192  ana->SetDebug(debug); // 10 for lots of messages
193 }
194 
209  TString calorimeter, Int_t year, Int_t tm,
210  Bool_t printSettings, Int_t debug,
211  TString histoString )
212 {
213  AliAnaPhoton *ana = new AliAnaPhoton();
214 
215  // cluster selection cuts
216 
218 
219  ana->SwitchOffFiducialCut();
220 
221  ana->SetCalorimeter(calorimeter);
222  if(calorimeter == "DCAL")
223  {
224  TString calo = "EMCAL";
225  ana->SetCalorimeter(calo);
226  }
227 
228  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
229  if( kAnaCutsString.Contains("MultiIso") ) ana->SwitchOffFillShowerShapeHistograms();
230 
231  if ( kAnaCutsString.Contains("PerSM") )
233 
234  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
235 
236  if(tm) ana->SwitchOnTrackMatchRejection() ;
237  else ana->SwitchOffTrackMatchRejection() ;
238 
239  // Fill track matching histograms if track matching activated
240  // and only once in case of multiple analysis
241  if ( tm && !kAnaCutsString.Contains("MultiIso") )
242  {
243  ana->SwitchOnTMHistoFill() ;
244  if(tm > 1) ana->SwitchOnTMTrackPtHistoFill() ;
245  }
246 
247  if(calorimeter == "PHOS")
248  {
249  ana->SetNCellCut(2);// At least 3 cells
250  ana->SetMinPt(0.3);
251  ana->SetMinDistanceToBadChannel(2, 4, 5);
252  ana->SetTimeCut(-1e10,1e10); // open cut
253  }
254  else
255  {//EMCAL
256  ana->SetNCellCut(1);// At least 2 cells
257  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
258  ana->SetMaxEnergy(100);
259  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
260  // restrict to less than 100 ns when time calibration is on
261  ana->SetMinDistanceToBadChannel(2, 4, 6);
262 
263  // NLM cut, used in all, exclude clusters with more than 2 maxima
264  // Not needed if M02 cut is already strong or clusterizer V2
265  ana->SetNLMCut(1, 2) ;
266  }
267 
268  //PID cuts (shower shape)
269  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
270  AliCaloPID* caloPID = ana->GetCaloPID();
271  //Not used in bayesian
272 
273  // EMCAL
274 
275  //caloPID->SetEMCALLambda0CutMax(0.27);
276  caloPID->SetEMCALLambda0CutMax(10); // open, full shower shape needed for isolation studies
277  caloPID->SetEMCALLambda0CutMin(0.10);
278 
279  // Track matching
280  // tm = 1, fixed cuts
281  caloPID->SetEMCALDEtaCut(0.025);
282  caloPID->SetEMCALDPhiCut(0.030);
283 
284  // pT track dependent cuts
285  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
286 
287  // PHOS
288  caloPID->SetPHOSDispersionCut(2.5);
289  caloPID->SetPHOSRCut(2.);
290  //if(kInputData=="AOD") caloPID->SetPHOSRCut(2000.); // Open cut since dX, dZ not stored
291 
292  // Branch AOD settings
293  ana->SetOutputAODName(Form("PhotonTrigger_%s",kAnaCaloTrackCorr.Data()));
294  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
295 
296  //Set Histograms name tag, bins and ranges
297  //ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",tm));
298  ana->AddToHistogramsName("AnaPhoton_");
299 
300  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug) ; // see method below
301 
302  if(ana->GetFirstSMCoveredByTRD() > 0)
303  printf("ConfigurePhotonAnalysis() >>> Set first SM covered by TRD, SM=%d <<< year %d \n", ana->GetFirstSMCoveredByTRD(),year);
304 
305  // Number of particle type MC histograms
306  ana->FillNOriginHistograms (17); // 18 max
307  ana->FillNPrimaryHistograms(6); // 6 max
308 
309  return ana;
310 }
311 
330  Bool_t useSSIso, Bool_t useAsy,
331  TString col, Bool_t simulation,
332  TString calorimeter, Int_t year, Int_t tm,
333  Bool_t printSettings, Int_t debug,
334  TString histoString )
335 {
336  // Configuration of pi0 event by event selection
337 
338  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
339 
340  ana->SetDebug(debug);
341 
342  ana->SetAnalysisType((AliAnaPi0EbE::anaTypes)analysis);
343  TString opt = "";
344  if(analysis==AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
345  if(analysis==AliAnaPi0EbE::kSSCalo) opt = "SS";
346 
349 
351  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
352  //if(!kTime && !simulation) ana->SwitchOnFillEMCALBCHistograms();
353 
354  if(tm) ana->SwitchOnTrackMatchRejection() ;
355  else ana->SwitchOffTrackMatchRejection() ;
356 
357  if ( tm && !kAnaCutsString.Contains("Photon") && !kAnaCutsString.Contains("MultiIso") )
358  ana->SwitchOnTMHistoFill() ;
359  else
360  ana->SwitchOffTMHistoFill() ;
361 
362  ana->SetCalorimeter(calorimeter);
363  if(calorimeter == "DCAL")
364  {
365  TString calo = "EMCAL";
366  ana->SetCalorimeter(calo);
367  }
368 
369  // Branch AOD settings
370  ana->SetOutputAODName(Form("%s%sTrigger_%s",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
371  printf("ConfigurePi0EbEAnalysis() *** Out branch %s***\n",ana->GetOutputAODName().Data());
372  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
373 
374  if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
375 
376  //Set Histograms name tag, bins and ranges
377 
378  //ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),tm));
379  ana->AddToHistogramsName(Form("Ana%s%sEbE_",particle.Data(),opt.Data()));
380 
381  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
382 
384  if(analysis!=AliAnaPi0EbE::kSSCalo)
385  {
386  ana->SetInputAODName(Form("PhotonTrigger_%s",kAnaCaloTrackCorr.Data()));
387 
388  ana->SetM02CutForInvMass(0.1,0.35); // Loose SS cut
389 
391  ana->SetR(0.4);
393 
394  if(useSSIso)
395  {
397  //ana->AddToHistogramsName(Form("Ana%s%sEbEIsoDecay_TM%d_",particle.Data(),opt.Data(),tm));
398  ana->AddToHistogramsName(Form("Ana%s%sEbEIsoDecay_",particle.Data(),opt.Data()));
399  ana->SetOutputAODName(Form("%s%sIsoDecayTrigger_%s",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
400  }
401 
402  if ( calorimeter.Contains("CAL") && !simulation ) ana->SetPairTimeCut(100);
403 
405  nms->SetParticle(particle);
406 
407  //****
408  nms->SetInvMassCutMaxParameters(0,0,0); // Overrule the setting in SetParticle for Pi0 option
409  //****
410 
411  // Tighten a bit mass cut with respect to default window
412  if(particle=="Pi0") nms->SetInvMassCutRange(0.110,0.160);
413  if(particle=="Eta") nms->SetInvMassCutRange(0.520,0.580);
414 
415  //if(!particle.Contains("SideBand")) nms->SwitchOnAngleSelection();
416  //else nms->SwitchOnAngleSelection();
417 
419 
420  if(particle.Contains("Pi0SideBand")) // For pi0, do not consider left band
421  nms->SetSideBandCutRanges(-1,0,0.190,0.240);
422 
423  if(particle.Contains("EtaSideBand")) // For pi0, do not consider left band
424  nms->SetSideBandCutRanges(0.410,0.470,0.620,0.680);
425 
427  //nms->SetAngleMaxParam(2,0.2);
428  nms->SetHistoERangeAndNBins(0, 20, 80) ;
429  //nms->SetHistoIMRangeAndNBins(0, 1, 400);
430  }
431  else
432  {
433  // cluster splitting settings
434  ana->SetMinEnergy(6);
435  ana->SetMaxEnergy(100.);
436 
437  ana->SetNLMMinEnergy(0, 10);
438  ana->SetNLMMinEnergy(1, 6);
439  ana->SetNLMMinEnergy(2, 6);
440 
441  // NLM cut, used in all, exclude clusters with more than 2 maxima
442  ana->SetNLMCut(1, 2) ;
443 
444  //
445  ana->SetMinDistanceToBadChannel(2, 4, 6);
447  ana->SetTimeCut(-1e10,1e10); // Open time cut
448 
449  AliCaloPID* caloPID = ana->GetCaloPID();
450 
451  // Track matching
452  // tm = 1, fixed cuts
453  caloPID->SetEMCALDEtaCut(0.025);
454  caloPID->SetEMCALDPhiCut(0.030);
455 
456  // pT track dependent cuts
457  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
458 
459  caloPID->SetSplitWidthSigma(3); // cut at 3 sigma of the mean pi0 peak.
460 
461  if(!useSSIso)
462  {
463  printf("ConfigurePi0EbEAnalysis() << Do not apply SS cut on merged pi0 analysis >> \n");
464  caloPID->SwitchOffSplitShowerShapeCut() ;
465  //ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),tm));
466  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_",particle.Data(),opt.Data()));
467  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenSS",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
468  caloPID->SetClusterSplittingM02Cut(0.1,10);
469  }
470  else
471  {
472  caloPID->SetClusterSplittingM02Cut(0.3,4); // Do the selection in the analysis class and not in the PID method to fill SS histograms
473  caloPID->SwitchOnSplitShowerShapeCut() ;
474  }
475 
476  if(useAsy)
477  {
478  caloPID->SwitchOnSplitAsymmetryCut() ;
480  ana->GetCaloPID()->SetSubClusterEnergyMinimum(1,0.5);
481  ana->GetCaloPID()->SetSubClusterEnergyMinimum(2,0.5);
482  }
483  else
484  {
485  caloPID->SwitchOffSplitAsymmetryCut() ;
486  if(!useSSIso)
487  {
488  //ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),tm));
489  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_",particle.Data(),opt.Data()));
490  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
491  }
492  else
493  {
494  //ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),tm));
495  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_",particle.Data(),opt.Data()));
496  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenAsy",particle.Data(), opt.Data(), kAnaCaloTrackCorr.Data()));
497  }
498  }
499 
500  // For Pi0 only if SwitchOnSimpleSplitMassCut()
501  caloPID->SetPi0MassRange(0.10, 0.18);
502  caloPID->SetEtaMassRange(0.50, 0.60);
503  caloPID->SetPhotonMassRange(0.00, 0.08);
504 
505  caloPID->SetClusterSplittingMinNCells(6);
506 
507  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
508  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
509  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
510 
511  if(col=="PbPb" || kAnaCaloTrackCorr.Contains("150"))
512  {
513  caloPID->SetClusterSplittingMinNCells(4);
514  //caloPID->SetPi0MassShiftHighECell(0.005);
515  }
516  }
518 
519  return ana;
520 }
521 
543  Int_t partInCone, Int_t thresType,
544  Float_t cone, Float_t coneMin,
545  Float_t pth, Bool_t multi,
546  TString col, Bool_t simulation,
547  TString calorimeter, Int_t year, Int_t tm,
548  Bool_t printSettings, Int_t debug,
549  TString histoString )
550 {
552 
553  ana->SetDebug(debug);
554 
555  ana->SetMinPt(5);
556  ana->SetCalorimeter(calorimeter);
557  if(calorimeter == "DCAL")
558  {
559  TString calo = "EMCAL";
560  ana->SetCalorimeter(calo);
561  }
562 
564  ana->SwitchOffCellHistoFill() ;
565 
566  ana->SwitchOffLeadingOnly();
568  if( leading > 0 ) ana->SwitchOnLeadingOnly();
569  if( leading == 2 ||
570  leading == 4) ana->SwitchOnCheckNeutralClustersForLeading();
571 
572  // MC
575 
576  ana->SwitchOffSSHistoFill();
577 
578  if(particle.Contains("Photon"))
579  {
580  ana->SwitchOnSSHistoFill();
581 
582  if(kAnaCutsString.Contains("Decay"))
583  {
585  ana->SetNDecayBits(5);
586  }
587  }
588 
589  if ( kAnaCutsString.Contains("PerSM") )
590  {
592  ana->SwitchOnStudyNCellsCut();
593  }
594 
595  if ( kAnaCutsString.Contains("PerTCard") )
597 
598  if(kAnaCutsString.Contains("Bkg"))
599  {
600  printf("ConfigureIsolationAnalysis() *** Activate analysis on PtTrig and Bkg bins >> \n");
602  ana->SetNPtTrigBins(6);
603  //ana->SetPtTrigLimits(0,8); ana->SetPtTrigLimits(1,12); ana->SetPtTrigLimits(2,16); ana->SetPtTrigLimits(3,25);
604 
606  ana->SetNBackgroundBins(11);
607  //ana->SetBackgroundLimits(0,0); ana->SetBackgroundLimits(1,0.2); ana->SetBackgroundLimits(2,3); ana->SetBackgroundLimits(3,0.4);
608  }
609 
610  if(!tm) ana->SwitchOnTMHistoFill();
611  else ana->SwitchOffTMHistoFill();
612 
613  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
614 
615  // Avoid borders of calorimeter
617  ana->SwitchOnFiducialCut();
618  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
619  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
620  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
621 
622  // Same Eta as EMCal, cut in phi if EMCAL was triggering
623  if(particle=="Hadron" || particle.Contains("CTS"))
624  {
625  //if(trigger.Contains("EMC"))
626  // ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
627  //else
628  ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
629  }
630 
631  // Branch AOD settings
632 
633  ana->SetInputAODName(Form("%sTrigger_%s",particle.Data(),kAnaCaloTrackCorr.Data()));
634  ana->SetAODObjArrayName(Form("IC%sTrigger_%s_R%1.1f_ThMin%1.1f",particle.Data(),kAnaCaloTrackCorr.Data(),cone,pth));
635 
636  //
637  // Do settings for main isolation cut class
638  //
639  AliIsolationCut * ic = ana->GetIsolationCut();
640  ic->SetDebug(debug);
641  ic->SetParticleTypeInCone(partInCone);
642  ic->SetICMethod(thresType);
643  ic->SetPtFraction(0.1);
644  ic->SetPtThreshold(0.5); // default, change in next lines
645  ic->SetSumPtThreshold(1.0); // default, change in next lines
646 
647  if(cone > 0 && pth > 0)
648  {
649  ic->SetConeSize(cone);
650  ic->SetMinDistToTrigger(coneMin);
651  ic->SetPtThresholdMax(10000);
652 
653  if(thresType == AliIsolationCut::kPtThresIC)
654  {
655  printf("ConfigureIsolationAnalysis() *** Iso *** PtThresMin = %1.1f GeV/c *** R = %1.2f *** R min %1.2f\n",pth,cone,coneMin);
656  ic->SetPtThreshold(pth);
657  }
658 
659  if(thresType == AliIsolationCut::kSumPtIC)
660  {
661  printf("ConfigureIsolationAnalysis() *** Iso *** SumPtMin = %1.1f GeV/c *** R = %1.1f *** R min %1.2f\n",pth,cone,coneMin);
662  ic->SetSumPtThreshold(pth);
663  }
664  }
665  else
666  {
667  if(col=="pp")
668  {
669  ic->SetPtThreshold(0.5);
670  ic->SetSumPtThreshold(1.0) ;
671  ic->SetConeSize(0.4);
672  ic->SetMinDistToTrigger(-1);
673  }
674  if(col=="PbPb")
675  {
676  ic->SetPtThreshold(3.);
677  ic->SetSumPtThreshold(3.0) ;
678  ic->SetConeSize(0.3);
679  ic->SetMinDistToTrigger(-1);
680  }
681  }
682 
683 
684  // Do or not do isolation with previously produced AODs.
685  // No effect if use of SwitchOnSeveralIsolation()
686  ana->SwitchOffReIsolation();
687 
688  // Multiple IC
689  if(multi)
690  {
691  ic->SetConeSize(1.); // Take all for first iteration
692  ic->SetPtThreshold(100);// Take all for first iteration
693  ic->SetMinDistToTrigger(-1);
694 
695  ana->SwitchOnSeveralIsolation() ;
696  //ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),tm));
697  ana->SetAODObjArrayName(Form("MultiIC%s",particle.Data()));
698 
699  ana->SetNCones(3);
700  ana->SetNPtThresFrac(2);
701  ana->SetConeSizes(0,0.3); ana->SetConeSizes(1,0.4); ana->SetConeSizes(2,0.5);
702  ana->SetPtThresholds(0, 0.5); ana->SetPtThresholds(1, 1); ana->SetPtThresholds(2, 1.5); ana->SetPtThresholds(3, 2);
703  ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1); ana->SetPtFractions (2, 0.2) ; ana->SetPtFractions (3, 0.3) ;
704  ana->SetSumPtThresholds(0, 0.5) ; ana->SetSumPtThresholds(1, 1) ; ana->SetSumPtThresholds(2, 1.5); ana->SetSumPtThresholds(3, 2) ;
705  //ana->SetPtThresholds(0, 0.5);
706 
707  ana->SwitchOffTMHistoFill();
708  ana->SwitchOffSSHistoFill();
709  }
710  else
712 
713  AliCaloPID* caloPID = ana->GetCaloPID();
714 
715  // Track matching
716  // tm = 1, fixed cuts
717  caloPID->SetEMCALDEtaCut(0.025);
718  caloPID->SetEMCALDPhiCut(0.030);
719 
720  // pT track dependent cuts
721  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
722 
723  //Set Histograms name tag, bins and ranges
724 
725 // if(!multi) ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_" ,particle.Data(),tm));
726 // else ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),tm));
727  if(!multi) ana->AddToHistogramsName(Form("AnaIsol%s_" ,particle.Data()));
728  else ana->AddToHistogramsName(Form("AnaMultiIsol%s_",particle.Data()));
729 
730  SetAnalysisCommonParameters(ana,histoString, calorimeter,year,col,simulation,printSettings,debug); // see method below
731 
732  if(particle=="Hadron" || particle.Contains("CTS"))
733  {
734  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
735  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
736  }
737 
738  if(printSettings) ic ->Print("");
739 
740  return ana;
741 }
742 
765  Bool_t bIsolated, Float_t shshMax,
766  Int_t partInCone, Int_t thresType,
767  Float_t cone, Float_t coneMin,
768  Float_t pth, Bool_t mixOn,
769  TString col, Bool_t simulation,
770  TString calorimeter, Int_t year, Int_t tm,
771  Bool_t printSettings, Int_t debug,
772  TString histoString )
773 {
775 
776  ana->SetTriggerPtRange(5,100);
777  ana->SetAssociatedPtRange(0.2,100);
778  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
779 
780  // Underlying event
781  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
783 
784  ana->SwitchOffAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
785  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
787 
788  if(leading > 0 && leading < 3 ) ana->SwitchOnAbsoluteLeading();
789  if(leading > 2 ) ana->SwitchOnNearSideLeading();
790  if(leading == 2 || leading == 4 ) ana->SwitchOnCheckNeutralClustersForLeading();
791 
795 
797 
799 
800  if(particle.Contains("Photon"))
801  {
802  if(kAnaCutsString.Contains("Decay"))
803  {
804  printf("ConfigureHadronCorrelationAnalysis() *** Activate analysis on Tagged clusters as Decay product >> \n");
806  ana->SetNDecayBits(5);
808  if ( kAnaCutsString.Contains("Bkg") && !bIsolated )
810  }
811 
812  //printf("ConfigureHadronCorrelationAnalysis() *** SET M02 limits in correlation task *** \n");
813  ana->SetM02Cut(0.10,shshMax);
814  }
815 
816  if ( kAnaCutsString.Contains("PerSM") )
818 
819  if ( kAnaCutsString.Contains("PerTCard") )
821 
822  ana->SetMCGenType(0,7); // Change to higher to include Tagged decays
823 
824  ana->SwitchOffLeadHadronSelection(); // Open cuts, just fill histograms
826 
827  if ( kAnaCutsString.Contains("Bkg") && !bIsolated )
828  {
829  printf("ConfigureHadronCorrelationAnalysis() *** Activate analysis on PtTrig and Bkg bins,\n"
830  " \t make sure isolation runs first even if not used to select trigger >> \n");
832  }
833 
834  ana->SetLeadHadronPhiCut(TMath::DegToRad()*130, TMath::DegToRad()*230.);
835  ana->SetLeadHadronPtCut(0.5, 1000);
836 
837  // if triggering on PHOS and EMCAL is on
838  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
839  //ana->SetPi0AODBranchName("Pi0EMCAL_TrigEMC7_Cl_TM1");
840 
842 
844 
845  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
846 
847  ana->SetNAssocPtBins(8);
848  ana->SetAssocPtBinLimit(0, 1) ;
849  ana->SetAssocPtBinLimit(1, 2) ;
850  ana->SetAssocPtBinLimit(2, 3) ;
851  ana->SetAssocPtBinLimit(3, 4) ;
852  ana->SetAssocPtBinLimit(4, 5) ;
853  ana->SetAssocPtBinLimit(5, 8) ;
854  ana->SetAssocPtBinLimit(6, 10) ;
855  ana->SetAssocPtBinLimit(7, 100);
856 
857  ana->SelectIsolated(bIsolated); // do correlation with isolated photons
858 
859  // Mixing with own pool
860  if(mixOn)
861  {
862  ana->SwitchOnOwnMix();
864 
865  if(bIsolated)
866  {
867  //Do settings for main isolation cut class
868  AliIsolationCut * ic = ana->GetIsolationCut();
869  ic->SetDebug(debug);
870 
871  if(cone >0 && pth > 0)
872  {
873  //printf("ConfigureHadronCorrelationAnalysis() *** PtThres = %1.1f GeV/c *** R = %1.1f *** R min = %1.2f\n",pth,cone,coneMin);
874  ic->SetPtThreshold(pth);
875  ic->SetConeSize(cone);
876  ic->SetMinDistToTrigger(coneMin);
877  }
878  else
879  {
880  if(col=="pp")
881  {
882  ic->SetPtThreshold(0.5);
883  ic->SetConeSize(0.4);
884  ic->SetMinDistToTrigger(-1);
885  }
886  if(col=="PbPb")
887  {
888  ic->SetPtThreshold(3.);
889  //ic->SetPtThreshold(1.);
890  ic->SetConeSize(0.3);
891  ic->SetMinDistToTrigger(-1);
892  }
893  }
894 
895  ic->SetPtFraction(0.1);
896  ic->SetSumPtThreshold(1.0) ;
897  ic->SetParticleTypeInCone(partInCone);
898  ic->SetICMethod(thresType);
899  }
900  }
901  else
902  ana->SwitchOffOwnMix();
903 
904  ana->SetNZvertBin(20);
905 
906  if(col=="pp")
907  {
908  ana->SetNMaxEvMix(100);
909  ana->SwitchOnTrackMultBins();
910  ana->SetNTrackMultBin(10);
911  ana->SetNRPBin(1);
912  }
913  else
914  {
915  ana->SetNMaxEvMix(10);
916  ana->SwitchOffTrackMultBins(); // centrality bins
917  ana->SetNCentrBin(12);
918  ana->SetNRPBin(3);
919  if(kAnaCaloTrackCorr.Contains("60_90"))
920  {
921  //printf("ConfigureHadronCorrelationAnalysis() *** Set mixing for peripheral ***\n");
922  ana->SetNMaxEvMix(50);
923  ana->SetNCentrBin(2);
924  }
925  }
926 
927  // Avoid borders of calorimeter, same as for isolation
928  //
929  ana->SwitchOnFiducialCut();
930  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
931  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
932  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
933 
934  // Track matching, in case of mixing and specially in isolation case
935  //
936  AliCaloPID* caloPID = ana->GetCaloPID();
937  // tm = 1, fixed cuts
938  caloPID->SetEMCALDEtaCut(0.025);
939  caloPID->SetEMCALDPhiCut(0.030);
940 
941  // pT track dependent cuts
942  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
943 
944  // Input / output delta AOD settings
945  //
946  ana->SetInputAODName(Form("%sTrigger_%s",particle.Data(),kAnaCaloTrackCorr.Data()));
947  ana->SetAODObjArrayName(Form("%sHadronCorrIso%dTrigger_%s",particle.Data(),bIsolated,kAnaCaloTrackCorr.Data()));
948  //ana->SetAODNamepTInConeHisto(Form("IC%s_%s_R%1.1f_ThMin%1.1f" ,particle.Data(),kAnaCaloTrackCorr.Data(),cone,pth));
949 
950  //Set Histograms name tag, bins and ranges
951  //
952  //ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_TM%d_",particle.Data(),bIsolated,tm));
953  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_",particle.Data(),bIsolated));
954 
955  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
956 
957  if(particle=="Hadron" || particle.Contains("CTS"))
958  {
959  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
960  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
961  }
962 
963  return ana;
964 }
965 
975 ( Bool_t simulation, Bool_t printSettings, Int_t debug, TString histoString )
976 {
978 
979  ana->SetDebug(debug);
980 
981  // selection cuts
982 
983  ana->SetMinPt(0.2);
984  ana->SwitchOnFiducialCut();
985  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
986 
988 
991 
992  // Branch AOD settings
993 
994  ana->SetOutputAODName(Form("HadronTrigger_%s",kAnaCaloTrackCorr.Data()));
995  ana->SetOutputAODClassName("AliCaloTrackParticle"); // use if no correlation done
996 
997  //Set Histograms name tag, bins and ranges
998 
999  ana->AddToHistogramsName("AnaHadrons_");
1000 
1001  SetAnalysisCommonParameters(ana,histoString,"CTS",2012,"pp",simulation,printSettings,debug); // see method below
1002 
1003  return ana;
1004 }
1005 
1019 (Int_t tm, TString col , Bool_t simulation,
1020  TString calorimeter, Int_t year,
1021  Bool_t printSettings, Int_t debug, TString histoString )
1022 {
1024 
1025  ana->SetM02Min(-1);
1026  ana->SetNCellsPerClusterMin(-1);
1027 
1028  ana->SetCalorimeter(calorimeter);
1029  if(calorimeter == "DCAL")
1030  {
1031  TString calo = "EMCAL";
1032  ana->SetCalorimeter(calo);
1033  }
1034 
1035  if(simulation) ana->SetConstantTimeShift(615);
1036 
1037  ana->SwitchOffFiducialCut();
1038 
1040 
1042 
1044 
1045  ana->SwitchOffStudyMatchedPID() ;
1046 
1047  ana->SwitchOffStudyWeight();
1048 
1049  ana->SetNCellBinLimits(-1); // no analysis on predefined bins in nCell
1050 
1052  ana->SwitchOffStudyExotic();
1055  ana->SwitchOffStudyCellTime() ;
1056 
1057  // PID cuts (Track-matching)
1058  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
1059  AliCaloPID* caloPID = ana->GetCaloPID();
1060 
1061  if(tm > 1)
1062  {
1063  // track pT dependent cut
1065 
1066  // Begining of histograms name
1067  ana->AddToHistogramsName("Shape_TMDep_");
1068  }
1069  else if ( tm )
1070  {
1071  // Fix
1073  caloPID->SetEMCALDEtaCut(0.025);
1074  caloPID->SetEMCALDPhiCut(0.030);
1075 
1076  // Begining of histograms name
1077  ana->AddToHistogramsName("Shape_TMFix_");
1078  }
1079 
1080  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1081 
1082  AliHistogramRanges* histoRanges = ana->GetHistogramRanges();
1083  histoRanges->SetHistoPtRangeAndNBins(0, 50, 100) ; // Reduce a bit size
1084 
1085  return ana;
1086 }
1087 
1100  TString calorimeter, Int_t year,
1101  Bool_t printSettings, Int_t debug,
1102  TString histoString )
1103 {
1105 
1106  ana->SetCalorimeter(calorimeter);
1107  if(calorimeter == "DCAL")
1108  {
1109  TString calo = "EMCAL";
1110  ana->SetCalorimeter(calo);
1111  }
1112 
1113  ana->SetTimeCut(-1e10,1e10); // Open time cut
1114 
1115  ana->SwitchOffCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1116 
1118 
1119  ana->SwitchOffFiducialCut();
1123  ana->SwitchOffStudyBadClusters() ;
1125 
1127 
1128  ana->AddToHistogramsName("QA_"); // Begining of histograms name
1129 
1130  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1131 
1132  return ana;
1133 }
1134 
1151  Float_t cone, Float_t coneMin,
1152  TString col, Bool_t simulation,
1153  TString calorimeter, Int_t year,
1154  Bool_t printSettings, Int_t debug,
1155  TString histoString )
1156 {
1158 
1159  // Trigger detector, acceptance and pT cut
1160  ana->SetTriggerDetector(calorimeter);
1161  if(calorimeter == "DCAL")
1162  {
1163  TString calo = "EMCAL";
1164  ana->SetTriggerDetector(calo);
1165  }
1166 
1167  ana->SetMinPt(2); // Trigger photon, pi0 minimum pT
1168  if ( calorimeter == "EMCAL" ) ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
1169  else if ( calorimeter == "DCAL" ) ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
1170  else if ( calorimeter == "PHOS" ) ana->GetFiducialCutForTrigger()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
1171 
1172  // Particles associated to trigger or isolation cone acceptance and pT cut
1173  ana->SetCalorimeter(calorimeter);
1174  if(calorimeter == "DCAL")
1175  {
1176  TString calo = "EMCAL";
1177  ana->SetCalorimeter(calo);
1178  }
1179 
1180  ana->SetMinChargedPt(0.2);
1181  ana->SetMinNeutralPt(0.3);
1182 
1183  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 80, 174) ;
1184  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 260, 327) ;
1185  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.12, 250, 320) ;
1186  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.9, 0, 360);
1187 
1188  // Isolation paramters
1189  AliIsolationCut * ic = ana->GetIsolationCut();
1190  ic->SetDebug(debug);
1191  ic->SetPtThreshold(pth);
1192  ic->SetConeSize(cone);
1193  ic->SetMinDistToTrigger(coneMin);
1194  ic->SetSumPtThreshold(1.0) ;
1195  ic->SetICMethod(thresType);
1196 
1197  ana->AddToHistogramsName("AnaGenKine_");
1198 
1199  SetAnalysisCommonParameters(ana,histoString,calorimeter,year,col,simulation,printSettings,debug); // see method below
1200 
1201  return ana;
1202 }
1203 
1230  TList* anaList = 0x0,
1231  TString calorimeter = "EMCAL", // "DCAL", "PHOS"
1232  Bool_t simulation = kFALSE,
1233  Int_t year = 2011,
1234  TString col = "pp",
1235  TString analysisString= "Photon_MergedPi0_DecayPi0_Isolation_Correlation_QA_Charged",
1236  TString histoString = "",
1237  Float_t shshMax = 0.27,
1238  Float_t isoCone = 0.4,
1239  Float_t isoConeMin = -1,
1240  Float_t isoPtTh = 2,
1241  Int_t isoMethod = AliIsolationCut::kSumPtIC,
1243  Int_t leading = 0,
1244  Int_t tm = 2,
1245  Bool_t mixOn = kTRUE,
1246  Bool_t printSettings = kFALSE,
1247  Int_t debug = 0
1248 )
1249 {
1250  if ( !anaList )
1251  {
1252  printf("ConfigureCaloTrackCorrAnalysis() << No analysis list passed. Stop >>\n");
1253  return;
1254  }
1255 
1256  // Check the passed variables
1257  //
1258  printf("ConfigureCaloTrackCorrAnalysis() << Settings: Base string <%s>, Analysis string <%s>, "
1259  "\n calorimeter <%s>, simulation <%d>, year <%d>, col <%s>, "
1260  "\n shshMax <%2.2f>, R <%1.2f>, Rmin <%1.2f>, isoPtTh <%2.2f>, isoMethod <%d>,isoContent <%d>,"
1261  "\n leading <%d>, tm <%d>, mixOn <%d>, printSettings <%d>, debug <%d>\n",
1262  anaList->GetName(), analysisString.Data(),
1263  calorimeter.Data(), simulation, year, col.Data(),
1264  shshMax,isoCone,isoConeMin,isoPtTh,isoMethod,isoContent,
1265  leading,tm,mixOn,printSettings,debug);
1266 
1267  kAnaCutsString = analysisString;
1268 
1269  kAnaCaloTrackCorr = Form("%s",anaList->GetName());
1270 
1271  if ( analysisString.Contains("Isolation") )
1272  kAnaCaloTrackCorr+= Form("_Iso_Meth%d_Part%d_Pt%1.2f_R%1.2f",isoMethod,isoContent,isoPtTh,isoCone);
1273  if ( analysisString.Contains("Corr") && analysisString.Contains("Photon") && shshMax > 0)
1274  kAnaCaloTrackCorr+= Form("_CorrM02_%1.2f",shshMax);
1275 
1276  if ( isoConeMin > 0 ) kAnaCaloTrackCorr+=Form("_Rmin%1.2f",isoConeMin);
1277  if ( leading > 0 ) kAnaCaloTrackCorr+=Form("_Lead%d" ,leading);
1278  if ( tm > 0 ) kAnaCaloTrackCorr+=Form("_TM%d" ,tm);
1279 
1280  printf("ConfigureCaloTrackCorrAnalysis() <<<< TMP branch internal NAME: %s >>>>>\n",kAnaCaloTrackCorr.Data());
1281 
1282  // #### Configure analysis ####
1283 
1284 
1285  Int_t n = anaList->GetEntries();//Analysis number, order is important
1286 
1287  //
1288  // Photon analysis
1289  //
1290  if ( analysisString.Contains("Photon") )
1291  {
1292  anaList->AddAt(ConfigurePhotonAnalysis
1293  (col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Photon cluster selection
1294 
1295  if ( analysisString.Contains("DecayPi0") )
1296  {
1297  anaList->AddAt(ConfigurePi0EbEAnalysis
1298  ("Pi0" , AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1299  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 event by event selection, invariant mass and photon tagging from decay
1300 
1301  anaList->AddAt(ConfigurePi0EbEAnalysis
1302  ("Eta" , AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1303  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Eta event by event selection, invariant mass and photon tagging from decay
1304 
1305  anaList->AddAt(ConfigurePi0EbEAnalysis
1306  ("Pi0SideBand", AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1307  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 out of peak event by event selection, and photon tagging from decay
1308 
1309  anaList->AddAt(ConfigurePi0EbEAnalysis
1310  ("EtaSideBand", AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
1311  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Eta out of peak event by event selection, and photon tagging from decay
1312  }
1313 
1314  if ( analysisString.Contains("Isolation") )
1315  {
1316  anaList->AddAt(ConfigureIsolationAnalysis
1317  ("Photon", leading, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, kFALSE,
1318  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Photon isolation
1319 
1320  }
1321 
1322  if( analysisString.Contains("Correlation") )
1323  {
1324  if ( !analysisString.Contains("MultiIso") )
1325  {
1326  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1327  ("Photon", leading, kFALSE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1328  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Gamma-hadron correlation
1329  }
1330 
1331  if ( analysisString.Contains("Isolation") )
1332  {
1333  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1334  ("Photon", leading, kTRUE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1335  col,simulation,calorimeter,year,tm,printSettings,debug,histoString) , n++); // Isolated gamma hadron correlation
1336  }
1337  } // correlation
1338  }
1339 
1340  //
1341  // Merged pi0 analysis
1342  //
1343  if ( analysisString.Contains("MergedPi0") )
1344  {
1345  anaList->AddAt(ConfigurePi0EbEAnalysis
1346  ("Pi0", AliAnaPi0EbE::kSSCalo,kTRUE,kTRUE,
1347  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 event by event selection, cluster splitting
1348  if ( analysisString.Contains("Isolation") )
1349  {
1350  anaList->AddAt(ConfigureIsolationAnalysis
1351  ("Pi0SS", leading, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, kFALSE,
1352  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0 isolation, cluster splits
1353 
1354  }
1355 
1356  if( analysisString.Contains("Correlation") )
1357  {
1358  if ( !analysisString.Contains("MultiIso") )
1359  {
1360  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1361  ("Pi0SS", leading, kFALSE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1362  col,simulation,calorimeter,year,tm,printSettings,debug,histoString), n++); // Pi0-hadron correlation
1363  }
1364 
1365  if ( analysisString.Contains("Isolation") )
1366  {
1367  anaList->AddAt(ConfigureHadronCorrelationAnalysis
1368  ("Pi0SS", leading, kTRUE, shshMax, isoContent,isoMethod,isoCone,isoConeMin,isoPtTh, mixOn,
1369  col,simulation,calorimeter,year,tm,printSettings,debug,histoString) , n++); // Isolated pi0-hadron correlation
1370  }
1371  } // correlation
1372  }
1373 
1374  // Check the generated kinematics
1375  if(simulation && analysisString.Contains("Generator"))
1376  {
1377  anaList->AddAt(ConfigureGenKineAnalysis
1378  (isoMethod,isoPtTh,isoCone,isoConeMin,
1379  col,simulation,calorimeter,year,printSettings,debug,histoString), n++);
1380  }
1381 
1382  // Charged analysis
1383  if ( analysisString.Contains("Charged") )
1384  {
1385  anaList->AddAt(ConfigureChargedAnalysis(simulation,printSettings,debug,histoString), n++); // track selection checks
1386  }
1387 
1388  // Cluster Shape studies
1389  if ( analysisString.Contains("ClusterShape") )
1390  {
1391  anaList->AddAt(ConfigureClusterShape(tm,col,simulation,calorimeter,year,printSettings,debug,histoString) , n++);
1392  }
1393 
1394  // Calo QA
1395  if ( analysisString.Contains("QA") )
1396  {
1397  anaList->AddAt(ConfigureQAAnalysis(col,simulation,calorimeter,year,printSettings,debug,histoString) , n++);
1398  }
1399 
1400  printf("ConfigureCaloTrackCorrAnalysis() << End configuration for %s with total analysis %d>>\n",
1401  kAnaCaloTrackCorr.Data(), n);
1402 }
1403 
1404 
1405 
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 SetTimeCut(Double_t min, Double_t max)
void ana(Int_t mode=mGRID)
Definition: ana.C:162
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:283
const int debug
Definition: scanAll.C:15
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:134
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:264
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:260
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:96
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 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 FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:145
void SwitchOffSplitShowerShapeCut()
Definition: AliCaloPID.h:261
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:267
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetDebug(Int_t d)
void SetMinChargedPt(Float_t pt)
virtual void SetCalorimeter(TString &calo)
Set the calorimeter for the analysis. A string.
virtual void SetInputAODName(TString name)
void SetM02CutForInvMass(Float_t min=0, Float_t max=10)
Definition: AliAnaPi0EbE.h:117
virtual AliIsolationCut * GetIsolationCut()
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:117
void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
void KeepNeutralMesonSelectionHistos(Bool_t keep)
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
virtual void SetOutputAODClassName(TString name)
void SwitchOnTMTrackPtHistoFill()
Definition: AliAnaPhoton.h:99
void SwitchOffFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:74
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
void SetSumPtThreshold(Float_t s)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPi0EbE.h:133
Class for the Calorimeter QA analysis.
void SwitchOnFillShowerShapeHistogramsPerSM()
Definition: AliAnaPhoton.h:79
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:257
void SetAnalysisType(anaTypes ana)
Definition: AliAnaPi0EbE.h:92
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:125
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)
2 calorimeter clusters invariant mass selection
Definition: AliAnaPi0EbE.h:86
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:221
void SetLeadHadronPtCut(Float_t min, Float_t max)
virtual void SetOutputAODName(TString name)
void SetICMethod(Int_t i)
void SetR(Float_t r)
Definition: AliAnaPi0EbE.h:121
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.
Base class for CaloTrackCorr analysis algorithms.
void SwitchOffTrackMatchRejection()
Definition: AliAnaPhoton.h:135
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)
void SetHistoPOverERangeAndNBins(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:256
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:33
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 SwitchOnUEBandSubtractionHistoFill(Int_t lev=1)
void SetM02Cut(Float_t min=0, Float_t max=10)
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 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:120
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:305
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:304
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)
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:73
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 SetTriggerDetector(TString &det)
Set the calorimeter 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:228
virtual void SetAODObjArrayName(TString name)
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 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:143
virtual void SetNMaxEvMix(Int_t n=20)
Number of bins in track multiplicity.
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:229
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:273
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:218
void SetPhotonMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:306
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:128
void SetMinDistToTrigger(Float_t md)
void SetAssocPtBinLimit(Int_t ibin, Float_t pt)
Set the list of pT limits for the of associated charged (neutral) hadrons.
Int_t GetFirstSMCoveredByTRD() const
Time cut in ns.
void SetTriggerPtRange(Float_t min, Float_t max)