AliPhysics  9b6b435 (9b6b435)
AddTaskIsoPhoton.C
Go to the documentation of this file.
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 
3 // ROOT
4 #include <TString.h>
5 #include <TSystem.h>
6 #include <TROOT.h>
7 
8 // AliPhysics
9 #include "AliAnalysisManager.h"
10 #include "AliInputEventHandler.h"
11 #include "AliVTrack.h"
12 #include "AliAODTrack.h"
13 #include "AliESDtrack.h"
14 #include "AliESDtrackCuts.h"
15 
16 // CaloTrackCorrelations frame
17 #include "AliCaloTrackESDReader.h"
18 #include "AliCaloTrackAODReader.h"
19 #include "AliCalorimeterUtils.h"
22 
23 // Analusis
24 #include "AliAnaPhoton.h"
25 #include "AliHistogramRanges.h"
27 #include "AliAnaChargedParticles.h"
28 #include "AliAnaCalorimeterQA.h"
29 #include "AliAnaRandomTrigger.h"
30 
31 // Macros
32 R__ADD_INCLUDE_PATH($ALICE_PHYSICS)
33 //#include "PWGGA/CaloTrackCorrelations/macros/ConfigureAndGetEventTriggerMaskAndCaloTriggerString.C"
34 #include "PWGJE/macros/CreateTrackCutsPWGJE.C"
35 //#include "PWGGA/CaloTrackCorrelations/macros/CheckActiveEMCalTriggerPerPeriod.C"
36 
37 #endif
38 
49 
51 
52 TString kCalorimeter = "EMCAL";
53 TString kData = "" ;
54 
55 
60 {
61  if(simu) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
62  else ana->SwitchOffDataMC() ;
63 }
64 
69 {
70  histoRanges->SetHistoPtRangeAndNBins(0., 100., 200) ; // Energy and pt histograms
71 
72  if(calorimeter=="EMCAL")
73  {
74  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
75  histoRanges->SetHistoXRangeAndNBins(-600,90,200); // QA
76  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
77 
78  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
79  }
80  else
81  {
82  histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 320*TMath::DegToRad(), 60) ;
83  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
84  }
85 
86  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
87 
88  // Invariant mass histoRangeslysis
89  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
90  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
91 
92  // check if time calibration is on
93  histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
94  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
95 
96  // track-cluster residuals
97  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
98  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
99  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
100 
101  // QA, electron, charged
102  histoRanges->SetHistoEOverPRangeAndNBins(0, 2.5 ,500);
103  histoRanges->SetHistodEdxRangeAndNBins (0.,250.0,500);
104 
105  // QA
106  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
107  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,100);
108  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
109  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
110  histoRanges->SetHistoZRangeAndNBins(-400,400,200);
111  histoRanges->SetHistoRRangeAndNBins(400,450,25);
112  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
113  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
114  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);
115 
116  // Isolation
117  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
118  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
119 }
120 
125 {
126  if(trigger=="EMC7")
127  {
128  printf("CaloTrackCorr trigger EMC7\n");
129  return AliVEvent::kEMC7;
130  }
131  else if (trigger=="INT7")
132  {
133  printf("CaloTrackCorr trigger INT7\n");
134  return AliVEvent::kINT7;
135  }
136  else if(trigger=="EMC1")
137  {
138  printf("CaloTrackCorr trigger EMC1\n");
139  return AliVEvent::kEMC1;
140  }
141  else if(trigger=="MB")
142  {
143  printf("CaloTrackCorr trigger MB\n");
144  return AliVEvent::kMB;
145  }
146  else if(trigger=="PHOS")
147  {
148  printf("CaloTrackCorr trigger PHOS\n");
149  return AliVEvent::kPHI7;
150  }
151  else if(trigger=="PHOSPb")
152  {
153  printf("CaloTrackCorr trigger PHOSPb\n");
154  return AliVEvent::kPHOSPb;
155  }
156  else if(trigger=="AnyINT")
157  {
158  printf("CaloTrackCorr trigger AnyINT\n");
159  return AliVEvent::kAnyINT;
160  }
161  else if(trigger=="INT")
162  {
163  printf("CaloTrackCorr trigger AnyINT\n");
164  return AliVEvent::kAny;
165  }
166  else if(trigger=="EMCEGA")
167  {
168  printf("CaloTrackCorr trigger EMC Gamma\n");
169  return AliVEvent::kEMCEGA;
170  }
171  else if(trigger=="EMCEJE")
172  {
173  printf("CaloTrackCorr trigger EMC Jet\n");
174  return AliVEvent::kEMCEJE;
175  }
176  else if(trigger=="Central")
177  {
178  printf("CaloTrackCorr trigger Central\n");
179  return (AliVEvent::kCentral | AliVEvent::kMB);
180  }
181  else if(trigger=="CentralEGA")
182  {
183  printf("CaloTrackCorr trigger Central+EMCEGA\n");
184  return (AliVEvent::kCentral | AliVEvent::kEMCEGA);
185  }
186  else if(trigger=="SemiCentral")
187  {
188  printf("CaloTrackCorr trigger SemiCentral\n");
189  return (AliVEvent::kSemiCentral | AliVEvent::kMB);
190  }
191  else if(trigger=="SemiOrCentral")
192  {
193  printf("CaloTrackCorr trigger SemiCentral Or Central\n");
194  return (AliVEvent::kSemiCentral | AliVEvent::kCentral | AliVEvent::kMB);
195  }
196 
197  return AliVEvent::kAny;
198 }
199 
200 
204 AliCaloTrackReader * ConfigureReader(TString inputDataType = "AOD",
205  Bool_t useKinematics = kFALSE,
206  Bool_t simu = kFALSE,
207  TString calorimeter = "EMCAL",
208  Bool_t nonlin = kTRUE, Bool_t timecut = kFALSE,
209  Bool_t primvtx = kFALSE,
210  Bool_t notrackcut = kFALSE,
211  Float_t tmin = -2000, Float_t tmax = 2000,
212  Bool_t trackTcut = kFALSE,
213  Float_t minCen = -1, Float_t maxCen = -1,
214  Int_t debug = -1,
215  Bool_t print = kFALSE,
216  Int_t SSsmearing = 0,
217  TString clustListName ="")
218 {
219  if(simu)
220  {
221  if (!useKinematics && inputDataType=="AOD") useKinematics = kTRUE; //AOD primary should be available ...
222  }
223 
224  cout<<"********* ACCESS KINE? "<<useKinematics<< endl;
225 
226  AliCaloTrackReader * reader = 0;
227  if (inputDataType=="AOD") reader = new AliCaloTrackAODReader();
228  else if(inputDataType=="ESD") reader = new AliCaloTrackESDReader();
229  else printf("AliCaloTrackReader::ConfigureReader() - Data not known inputData=%s\n",inputDataType.Data());
230 
231  reader->SetDebug(debug);//10 for lots of messages
232 
235 
236  reader->SwitchOffWriteDeltaAOD() ;
237 
238  if(SSsmearing != 0)
239  {
240  reader->SwitchOnShowerShapeSmearing();
241  if(SSsmearing == 1) //Gustavo's settings
242  {
244  reader->SetShowerShapeSmearWidth(0.005);
245  }
246  else if(SSsmearing == 2) //Astrid's settings
247  {
249  reader->SetShowerShapeSmearWidth(0.035);
250  }
251  }
252 
253  //------------------------
254  // Detector input filling
255  //------------------------
256 
257  if(clustListName!="")
258  reader->SetEMCALClusterListName(clustListName);
259  //Min cluster/track E
260  reader->SetEMCALEMin(0.3);
261  reader->SetEMCALEMax(1000);
262  reader->SetPHOSEMin(0.3);
263  reader->SetPHOSEMax(1000);
264  reader->SetCTSPtMin(0.2);
265  reader->SetCTSPtMax(1000);
266 
267  // Time cuts
268  if(simu)
269  {
270  reader->SwitchOffUseTrackTimeCut();
272  reader->SwitchOffUseEMCALTimeCut();
273  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
274  }
275  else
276  {
278 
279  if(timecut)
280  {
281  printf("Set time cut \n");
282  reader->SwitchOnUseEMCALTimeCut();
283  //Absolute window
284  reader->SetEMCALTimeCut(tmin,tmax); // default is -25ns-20ns
285  }
286  else
287  {
288  printf("Off time cuts time cut \n");
289  reader->SwitchOffUseEMCALTimeCut();
290  //Absolute window
291  reader->SetEMCALTimeCut(-1.e6,1.e6);
292  }
293  }
294 
295  reader->SwitchOffFiducialCut();
296  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
297 
298  // Tracks
299  reader->SwitchOnCTS();
300 
301 
304 
305 if(trackTcut)
306  reader->SwitchOnUseTrackTimeCut();
307 else
308  reader->SwitchOffUseTrackTimeCut();
309 
310  reader->SetTrackTimeCut(0,50);
311 
312  reader->SwitchOffUseTrackDCACut();
313  //reader->SetTrackDCACut(0,0.0105);
314  //reader->SetTrackDCACut(1,0.035);
315  //reader->SetTrackDCACut(2,1.1);
316 
317  if(inputDataType=="ESD")
318  {
319  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
320  //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
321  //reader->SetTrackCuts(esdTrackCuts);
322  //reader->SwitchOnConstrainTrackToVertex();
323 
324 // if(kYears>2010)
325 // {
326  //Hybrids 2011
327  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
328  reader->SetTrackCuts(esdTrackCuts);
329  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
330  reader->SetTrackComplementaryCuts(esdTrackCuts2);
331 // }
332 // else
333 // {
334 // //Hybrids 2010
335 // AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
336 // reader->SetTrackCuts(esdTrackCuts);
337 // AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
338 // reader->SetTrackComplementaryCuts(esdTrackCuts2);
339 // }
340  }
341  else if(inputDataType=="AOD")
342  {
343  //reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid
344  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
345  reader->SetTrackStatus(AliVTrack::kITSrefit);
346  //reader->SwitchOnTrackHitSPDSelection(); // Check that the track has at least a hit on the SPD, not much sense to use for hybrid or TPC only tracks
347  }
348 
349  // Calorimeter
350 
352 
353 
354  // CAREFUL
355  if(!nonlin) reader->SwitchOffClusterELinearityCorrection();
357 
358  if(calorimeter == "EMCAL") {
359  reader->SwitchOnEMCALCells();
360  reader->SwitchOnEMCAL();
361  }
362  if(calorimeter == "PHOS") { // Should be on if QA is activated with correlation on
363  reader->SwitchOffPHOSCells();
364  reader->SwitchOffPHOS();
365  }
366 
367  //-----------------
368  // Event selection
369  //-----------------
370 
371  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
372 
373  // reader->RejectFastClusterEvents() ;
374 
375  reader->SwitchOnEventTriggerAtSE();
376 
377  reader->SetZvertexCut(10.); // Open cut
378  if(primvtx)
379  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
380  else
382  if(notrackcut)
383  reader->SwitchOnRejectNoTrackEvents();
384  else
386 
387  reader->SwitchOffPileUpEventRejection(); // remove pileup
388  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
389 
390  if(maxCen > 0 )
391  {
392  // Centrality
393  reader->SetCentralityClass("V0M");
394  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
395  reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
396 
397  // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
398  reader->SetEventPlaneMethod("V0");
399  }
400 
401  if(print) reader->Print("");
402 
403  return reader;
404 }
405 
409 AliCalorimeterUtils* ConfigureCaloUtils(Bool_t nonlin = kTRUE, Bool_t exotic = kTRUE ,Bool_t simu = kFALSE, Bool_t timecut = kFALSE, Int_t debug = -1, Bool_t print = kFALSE)
410 {
412  cu->SetDebug(debug);
413 
414  // Remove clusters close to borders, at least max energy cell is 1 cell away
415  cu->SetNumberOfCellsFromEMCALBorder(0);//this was originally set to one
417 
419 
421 
422  //EMCAL settings
423 
424  if(simu)
426 
427  /* AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
428 
429  cu->SwitchOffRecalibration();
430  cu->SwitchOffRunDepCorrection();
431 
432  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
433  ConfigureEMCALRecoUtils(recou,
434  simu,
435  exotic,
436  nonlin,
437  kFALSE, // e calib
438  kFALSE, // bad map
439  kFALSE); // time calib
440  if(timecut) recou->SetExoticCellDiffTimeCut(50.);
441  */
442  if( nonlin)
443  {
444  printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
446  }
447  /*
448  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
449  printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
450  */
452 
453  if(print) cu->Print("");
454 
455  return cu;
456 }
457 
463  Int_t tm = 0,
464  Float_t eOpMax = 1000,
465  Float_t deltaphicut = 0.02,
466  Float_t deltaetacut = 0.03,
467  Int_t disttobad=0,
468  Int_t nlmMax = 2,
469  Bool_t simu = kFALSE,
470  Int_t debug = -1,
471  Bool_t print = kFALSE)
472 {
473  AliAnaPhoton *ana = new AliAnaPhoton();
474  ana->SetDebug(debug); //10 for lots of messages
475 
476  // cluster selection cuts
477 
478  ana->SwitchOffFiducialCut();
479 
481 
482  if(calorimeter == "PHOS")
483  {
484  ana->SetNCellCut(2);// At least 3 cells
485  ana->SetMinPt(0.3);
486  ana->SetMinDistanceToBadChannel(2, 4, 5);
487  ana->SetTimeCut(-1e10,1e10); // open cut
488  }
489  else
490  {//EMCAL
491  ana->SetNCellCut(1);// At least 2 cells
492  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
493  ana->SetMaxEnergy(1000);
494  // ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
495  // restrict to less than 100 ns when time calibration is on
496  ana->SetMinDistanceToBadChannel(disttobad, 4, 6);
497 
498  // NLM cut, used in all, exclude clusters with more than 2 maxima
499  // Not needed if M02 cut is already strong or clusterizer V2
500  ana->SetNLMCut(1, nlmMax) ;
501  }
502 
503  if(tm)
504  {
506  ana->SwitchOffTMHistoFill() ;
507  }
508  else
509  {
511  ana->SwitchOnTMHistoFill() ;
512  }
513 
514  //PID cuts (shower shape)
515  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
516  AliCaloPID* caloPID = ana->GetCaloPID();
517  //Not used in bayesian
518 
519  //EMCAL
520  caloPID->SetEMCALLambda0CutMax(1000.);
521  caloPID->SetEMCALLambda0CutMin(0.);
522 
523  // caloPID->SetEMCALDEtaCut(0.025);
524  // caloPID->SetEMCALDPhiCut(0.030);
525  caloPID->SetEMCALDEtaCut(deltaetacut);
526  caloPID->SetEMCALDPhiCut(deltaphicut);
527 
528  // pT track dependent cuts
529  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
530 
531  caloPID->SetEOverP(0,eOpMax);
532 
533  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
534  if(!simu) ana->SwitchOnFillPileUpHistograms();
535 
536  // Input / output delta AOD settings
537 
538  ana->SetOutputAODName(Form("Photon%s",kAnaIsoPhotonName.Data()));
539  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
540 
541  //Set Histograms name tag, bins and ranges
542 
543  ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",tm));
544  SetHistoRangeAndNBins(ana->GetHistogramRanges(), calorimeter); // see method below
545 
546  // Number of particle type MC histograms
547  ana->FillNOriginHistograms(20);
548  ana->FillNPrimaryHistograms(20);
549 
550  ConfigureMC(ana,simu);
551 
552  if(print) ana->Print("");
553 
554  return ana;
555 }
556 
561  TString particle="Photon",
564  Float_t cone = 0.3,
565  Float_t pth = 0.3,
566  Int_t tm = 0,
567  Float_t eOpMax = 1000,
568  Bool_t leading = kTRUE,
569  Bool_t multi = kFALSE, Bool_t simu = kFALSE,
570  Int_t debug = -1, Bool_t print = kFALSE,
571  Bool_t tmInCone = kTRUE )
572 {
574  ana->SetDebug(debug);
575 
576  ana->SwitchOnFiducialCut();
577  //Avoid borders of EMCal
578  if(calorimeter=="EMCAL")
579  {
580  //ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.6, 86, 174) ;
581  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.27, 103, 157) ;
582  }
583 
584  ana->SetMinPt(5);
585 
586  // Input / output delta AOD settings
587 
588  ana->SetInputAODName(Form("%s%s",particle.Data(),kAnaIsoPhotonName.Data()));
589  ana->SetAODObjArrayName(Form("IC%s_%s",particle.Data(),kAnaIsoPhotonName.Data()));
590 
592 
593  if(!tm) ana->SwitchOnTMHistoFill();
594  else ana->SwitchOffTMHistoFill();
595  // ana->SwitchOnTMHistoFill();
596 
597  // ana->SwitchOffSSHistoFill();
598  // if(!kSimulation) ana->SwitchOnFillPileUpHistograms();
599  ana->SwitchOnSSHistoFill();
600  if(leading) ana->SwitchOnLeadingOnly();
601  else ana->SwitchOffLeadingOnly();
602  if(!simu) ana->SwitchOnFillPileUpHistograms();
603 
604  //Do settings for main isolation cut class
605  AliIsolationCut * ic = ana->GetIsolationCut();
606  ic->SetDebug(debug);
607 
608  printf("\t *** Set: R = %2.2f, Threshold %2.2f, Method %d, Neutral/Charged option %d ***\n",cone,pth,thresType,partInCone);
609 
610  //Main parameters
611  //****
612  ic->SetConeSize(cone);
613 
614  ic->SetPtFraction (0.1);
615  ic->SetPtThreshold (pth);
616  ic->SetSumPtThreshold(pth);
617 
618  ic->SetParticleTypeInCone(partInCone);
619 
620  ic->SetICMethod(thresType);
621 
623  //****
624 
625  //Do or not do isolation with previously produced AODs.
626  //No effect if use of SwitchOnSeveralIsolation()
627  ana->SwitchOffReIsolation();
628 
629  //Multiple IC
630  if(multi)
631  {
632  ic->SetConeSize(1.); // Take all for first iteration
633  ic->SetPtThreshold(100);// Take all for first iteration
634  ana->SwitchOnSeveralIsolation() ;
635  ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),tm));
636 
637  ana->SetNCones(4);
638  ana->SetNPtThresFrac(4);
639  ana->SetConeSizes(0,0.3); ana->SetConeSizes(1,0.4);
640  ana->SetConeSizes(2,0.5); ana->SetConeSizes(3,0.6);
641  ana->SetPtThresholds(0, 0.5); ana->SetPtThresholds(1, 1); ana->SetPtThresholds(2, 2);
642  ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1); ana->SetPtFractions (2, 0.2) ; ana->SetPtFractions (3, 0.3) ;
643  ana->SetSumPtThresholds(0, 1) ; ana->SetSumPtThresholds(1, 3) ; ana->SetSumPtThresholds(2, 5); ana->SetSumPtThresholds(3, 7) ;
644 
645  ana->SwitchOffTMHistoFill();
646  ana->SwitchOffSSHistoFill();
647  }
648  else
650 
651  AliCaloPID* caloPID = ana->GetCaloPID();
652  caloPID->SetEMCALDEtaCut(0.02);
653  caloPID->SetEMCALDPhiCut(0.030);
654 
655  // pT track dependent cuts
656  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
657 
658  caloPID->SetEOverP(0,eOpMax);
659 
660 
661  //Set Histograms name tag, bins and ranges
662 
663  if(!multi)ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_",particle.Data(),tm));
664  else ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),tm));
665 
666  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
667 
668  if(particle=="Hadron" || particle.Contains("CTS"))
669  {
670  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
671  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
672  }
673 
674  ConfigureMC(ana,simu);
675 
676  if(print) ic ->Print("");
677  if(print) ana->Print("");
678 
679  return ana;
680 }
681 
685 AliAnaCalorimeterQA* ConfigureQAAnalysis(TString calorimeter = "EMCAL", Bool_t simu = kFALSE, Int_t debug = -1, Bool_t print = kFALSE)
686 {
688  ana->SetDebug(debug); //10 for lots of messages
690 
691  ana->SetTimeCut(-1e10,1e10); // Open time cut
692  ana->SwitchOffCorrelation();
693 
694  // Study exotic clusters PHOS and EMCAL
696 
697  ana->SwitchOffFiducialCut();
703 
704  ana->AddToHistogramsName("QA_"); //Begining of histograms name
705  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
706 
707  ConfigureMC(ana,simu);
708 
709  if(print) ana->Print("");
710 
711  return ana;
712 }
713 
718 {
720  ana->SetDebug(debugLevel); //10 for lots of messages
721 
722  // selection cuts
723 
724  ana->SetMinPt(0.5);
725  ana->SwitchOnFiducialCut();
726  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
727 
729  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
730 
731  // Input / output delta AOD settings
732 
733  ana->SetOutputAODName(Form("Hadron%s",kAnaIsoPhotonName.Data()));
734  ana->SetOutputAODClassName("AliCaloTrackParticle");
735  ana->SetInputAODName(Form("Hadron%s",kAnaIsoPhotonName.Data()));
736 
737  //Set Histograms name tag, bins and ranges
738 
739  ana->AddToHistogramsName("AnaHadrons_");
740  SetHistoRangeAndNBins(ana->GetHistogramRanges(),""); // see method below
741 
742  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
743  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
744 
745  if(debugLevel > 0) ana->Print("");
746 
747  return ana;
748 }
749 
754 {
756  ana->SetDebug(debug); //10 for lots of messages
757 
758  if(detector=="") detector = kCalorimeter;
759  ana->SetTriggerDetector(detector);
760 
761  // selection cuts
762  ana->SetMinPt(4.);
763  ana->SetMaxPt(61.);
764 
765  if (detector=="EMCAL")
766  {
767  ana->SetEtaCut(-0.27,0.27);
768  //ana->SetPhiCut(103*TMath::DegToRad(), 157*TMath::DegToRad());
769  ana->SetPhiCut(1.8, 2.75);
770  }
771  else if(detector=="PHOS")
772  {
773  ana->SetEtaCut(-0.13,0.13);
774  ana->SetPhiCut(260*TMath::DegToRad(), 320*TMath::DegToRad());
775  }
776  else if(detector=="CTS")
777  {
778  ana->SetEtaCut(-0.9,0.9);
779  ana->SetPhiCut(0, TMath::TwoPi());
780  }
781 
782  // AOD branch
783  if(!kData.Contains("delta"))
784  {
785  ana->SetOutputAODName(Form("RandomTrigger%s%s",detector.Data(),kAnaIsoPhotonName.Data()));
786  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
787  }
788  else
789  ana->SetInputAODName(Form("RandomTrigger%s%s",detector.Data(),kAnaIsoPhotonName.Data()));
790 
791  printf("Set RandomTrigger%s%s\n",detector.Data(),kAnaIsoPhotonName.Data());
792 
793  //Set Histograms name tag, bins and ranges
794 
795  ana->AddToHistogramsName(Form("AnaRandomTrigger%s_",detector.Data()));
796 
797  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
798 
799  if(detector=="CTS")
800  {
801  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
802  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
803  }
804 
805  return ana;
806 }
807 
845  const Float_t pth = 2.,
846  const Bool_t leading = kFALSE,
847  const Bool_t timecut = kFALSE,
848  const TString calorimeter = "EMCAL",
849  const Bool_t simu = kFALSE,
850  const Bool_t exotic = kTRUE,
851  const Bool_t nonlin = kFALSE,
852  const TString trigger = "EMC7",
853  const Int_t tm = 2,
854  const Float_t eOpMax = 1000,
855  const Int_t minCen = -1,
856  const Int_t maxCen = -1,
857  const Float_t deltaphicut = 0.03,
858  const Float_t deltaetacut = 0.02,
859  const Float_t tmin = -30.,
860  const Float_t tmax = 30.,
861  const Bool_t trackTcut = kFALSE,
862  const Int_t disttobad = 2,
863  const Int_t nlmMax = 20,
864  const Bool_t qaan = kFALSE,
865  const Bool_t primvtx = kTRUE,
866  const Bool_t notrackcut = kTRUE,
867  const Bool_t rdmtrigger = kFALSE,
868  const TString tag = "",
869  const Int_t debug = -1,
870  const Bool_t print = kFALSE,
871  const Bool_t tmInCone = kTRUE,
872  const Int_t SSsmearing = 0,
873  const TString clustListName = "",
874  const Int_t isocut = 1
875  )
876 {
877  kCalorimeter = calorimeter ;
878 
879  printf("AddTaskIsoPhoton() - Settings: cone %2.2f, pth %2.2f, timeCut On %d, NLM max cut %d, calorimeter %s, simu %d, exotic %d, non lin %d, trigger %s, TM %d, qa %d, debug %d, centrality %d-%d\n",
880  cone, pth, timecut , nlmMax, calorimeter.Data(),simu, exotic, nonlin, trigger.Data(), tm, qaan, debug, minCen, maxCen );
881 
882  // Get the pointer to the existing analysis manager via the static access method.
883 
884  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
885  if (!mgr)
886  {
887  ::Error("AddTask", "No analysis manager to connect to.");
888  return NULL;
889  }
890 
891  // Check the analysis type using the event handlers connected to the analysis manager.
892 
893  if (!mgr->GetInputEventHandler())
894  {
895  ::Error("AddTask", "This task requires an input event handler");
896  return NULL;
897  }
898 
899  // Make sure the B field is enabled for track selection, some cuts need it
900  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
901 
902  Bool_t useKinematics = kFALSE;
903  useKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
904 
905  // Name for containers
906 
907  if(tag!="")
908  kAnaIsoPhotonName = Form("%s_Trig%s_TM%d_%1.3f_dB%d_R%1.1f_Pt%1.1f_%s",calorimeter.Data(), trigger.Data(),tm,deltaphicut,disttobad,cone,pth,tag.Data());
909  else
910  kAnaIsoPhotonName = Form("%s_Trig%s_TM%d_%1.3f_dB%d_R%1.1f_Pt%1.1f",calorimeter.Data(), trigger.Data(),tm,deltaphicut,disttobad,cone,pth);
911 
912  if(maxCen>=0) kAnaIsoPhotonName+=Form("Cen%d_%d",minCen,maxCen);
913 
914  printf("<<<< NAME: %s >>>>>\n",kAnaIsoPhotonName.Data());
915 
916  // #### Configure analysis ####
917 
919 
920  //maker->SetScaleFactor(scaleFactor); // for MC, negative (not scaled) by default
921 
922  // General frame setting and configuration
923  maker->SetReader (ConfigureReader (mgr->GetInputEventHandler()->GetDataType(),useKinematics,simu,
924  calorimeter,nonlin, timecut, primvtx, notrackcut,tmin,tmax,trackTcut,minCen, maxCen, debug,print,SSsmearing,clustListName));
925  maker->SetCaloUtils(ConfigureCaloUtils(nonlin,exotic,simu,timecut,debug,print));
926 
927  // Analysis tasks setting and configuration
928  Int_t n = 0;//Analysis number, order is important
929 
930  // Isolation settings
931  Int_t partInCone = -1;
932  if(isocut == 0)
933  partInCone = AliIsolationCut::kOnlyCharged;
934  else
936 
937  // Int_t thresType = AliIsolationCut::kPtThresIC;// AliIsolationCut::kSumPtFracIC ;
938  Int_t thresType = AliIsolationCut::kSumPtIC ;
939 
940  if(!rdmtrigger)
941  {
942  // Photon analysis
943  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,tm,eOpMax,deltaphicut,deltaetacut,disttobad,nlmMax,simu,debug,print), n++); // Photon cluster selection
944 
945  // Isolation analysis
946  maker->AddAnalysis(ConfigureIsolationAnalysis(calorimeter,"Photon", partInCone,thresType,cone, pth,tm,leading,kFALSE,simu,debug,print,tmInCone), n++); // Photon isolation
947  }
948  else
949  {
950  maker->AddAnalysis(ConfigureRandomTriggerAnalysis("",debug), n++);
951  maker->AddAnalysis(ConfigureIsolationAnalysis(calorimeter,Form("RandomTrigger%s",kCalorimeter.Data()), partInCone,thresType,cone, pth,tm, eOpMax, leading,kFALSE,simu,debug,print,tmInCone), n++);// Ghost trigger isolation
952  }
953 
954 
955  // QA histograms on clusters or tracks
956  if(qaan)
957  {
958  maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,simu,debug,print),n++);
959  maker->AddAnalysis(ConfigureChargedAnalysis(simu,debug), n++); // charged tracks plots
960  }
961 
962  maker->SetAnaDebug(debug) ;
963  maker->SwitchOnHistogramsMaker() ;
964  maker->SwitchOnAODsMaker() ;
965 
966  if(print) maker->Print("");
967 
968  maker->SwitchOffDataControlHistograms();
969 
970  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, calorimeter.Data());
971 
972  // Create task
973 
974  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (Form("CaloTrackCorr%s",kAnaIsoPhotonName.Data()));
975  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
976  task->SetDebugLevel(debug);
977  task->SetBranches("ESD:AliESDRun.,AliESDHeader");
978  task->SetAnalysisMaker(maker);
979  mgr->AddTask(task);
980 
981  //Create containers
982 
983  TString outputfile = AliAnalysisManager::GetCommonFileName();
984 
985  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kAnaIsoPhotonName, TList::Class(),
986  AliAnalysisManager::kOutputContainer,
987  Form("%s",outputfile.Data()));
988 
989  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kAnaIsoPhotonName.Data()), TList::Class(),
990  AliAnalysisManager::kParamContainer,
991  "AnalysisParameters.root");
992 
993  // Create ONLY the output containers for the data produced by the task.
994  // Get and connect other common input/output containers via the manager as below
995  //==============================================================================
996  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
997  // AOD output slot will be used in a different way in future
998  mgr->ConnectOutput (task, 1, cout_pc);
999  mgr->ConnectOutput (task, 2, cout_cuts);
1000 
1001  // Set the trigger selection
1002  UInt_t mask = SetTriggerMaskFromName(trigger);
1003  task->SelectCollisionCandidates(mask);
1004 
1005  return task;
1006 }
void SetSumPtThresholds(Int_t i, Float_t pt)
void SetPtThreshold(Float_t pt)
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetNumberOfCellsFromPHOSBorder(Int_t n)
void SetPhiCut(Float_t min, Float_t max)
void SetShowerShapeSmearWidth(Float_t w)
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)
void SwitchOnFillAllTrackMatchingHistogram()
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:137
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:99
Class with utils to perform Isolation Cuts.
virtual void SwitchOnAODHybridTrackSelection()
virtual void SetCentralityBin(Int_t min, Int_t max)
void SetConeSize(Float_t r)
void SetPtFraction(Float_t pt)
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:148
void SwitchOffClusterELinearityCorrection()
void SetCTSPtMax(Float_t pt)
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetDebug(Int_t d)
void SetSmearingFunction(Int_t smfu)
virtual void SetInputAODName(TString name)
AliAnaChargedParticles * ConfigureChargedAnalysis(Bool_t simulation, Int_t debugLevel)
virtual void SetTrackComplementaryCuts(AliESDtrackCuts *)
virtual AliIsolationCut * GetIsolationCut()
void SetHistoRangeAndNBins(AliHistogramRanges *histoRanges, TString calorimeter="EMCAL")
void SetEMCALEMin(Float_t en)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:120
TString kCalorimeter
Global name to be composed of the settings, used to set the AOD branch name.
void SwitchOffTMHistoFill()
Definition: AliAnaPhoton.h:100
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
virtual void SetOutputAODClassName(TString name)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetSumPtThreshold(Float_t s)
Class for the Calorimeter QA analysis.
AliAnaPhoton * ConfigurePhotonAnalysis(TString calorimeter="EMCAL", Int_t tm=0, Float_t eOpMax=1000, Float_t deltaphicut=0.02, Float_t deltaetacut=0.03, Int_t disttobad=0, Int_t nlmMax=2, Bool_t simu=kFALSE, Int_t debug=-1, Bool_t print=kFALSE)
void SetHistodRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetNumberOfCellsFromEMCALBorder(Int_t n)
void SetNCellCut(Int_t n)
Definition: AliAnaPhoton.h:128
void SetTriggerDetector(TString det)
Set the detrimeter for the analysis.
void SetPtFractions(Int_t i, Float_t pt)
const TString calorimeter
Definition: anaM.C:36
void SetHistoTrackResidualEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Class for event, clusters and tracks filtering and preparation for the AOD analysis.
void SetCTSPtMin(Float_t pt)
AliAnaParticleIsolation * ConfigureIsolationAnalysis(TString calorimeter="EMCAL", TString particle="Photon", Int_t partInCone=AliIsolationCut::kOnlyCharged, Int_t thresType=AliIsolationCut::kSumPtFracIC, Float_t cone=0.3, Float_t pth=0.3, Int_t tm=0, Float_t eOpMax=1000, Bool_t leading=kTRUE, Bool_t multi=kFALSE, Bool_t simu=kFALSE, Int_t debug=-1, Bool_t print=kFALSE, Bool_t tmInCone=kTRUE)
void SetEMCALDPhiCut(Float_t dcut)
Definition: AliCaloPID.h:224
virtual void SetOutputAODName(TString name)
void SwitchOffRecalculateClusterTrackMatching()
AliCalorimeterUtils * ConfigureCaloUtils(Bool_t nonlin=kTRUE, Bool_t exotic=kTRUE, Bool_t simu=kFALSE, Bool_t timecut=kFALSE, Int_t debug=-1, Bool_t print=kFALSE)
void SetICMethod(Int_t i)
void SwitchOffVertexBCEventSelection()
virtual void SetCalorimeter(TString calo)
Set the calorimeter for the analysis. A string.
Base class for CaloTrackCorr analysis algorithms.
void SwitchOffTrackMatchRejection()
Definition: AliAnaPhoton.h:138
void SetHistoPtInConeRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void SetDebug(Int_t d)
virtual AliFiducialCut * GetFiducialCut()
virtual AliFiducialCut * GetFiducialCut()
virtual void SetCentralityOpt(Int_t opt)
void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
int Int_t
Definition: External.C:63
virtual AliHistogramRanges * GetHistogramRanges()
unsigned int UInt_t
Definition: External.C:33
TString kData
Global setting of calorimeter of photon.
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
float Float_t
Definition: External.C:68
void SetTrackStatus(ULong_t bit)
UInt_t SetTriggerMaskFromName(TString trigger)
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)
void SetEtaCut(Float_t min, Float_t max)
void SetHistoEOverPRangeAndNBins(Float_t min, Float_t max, Int_t n)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetEMCALClusterListName(TString name)
Base class for event, clusters and tracks filtering and preparation for the analysis.
void SetHistoNClusterCellRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SwitchOffBadTriggerEventsRemoval()
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
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
virtual void SetZvertexCut(Float_t zcut=10.)
void SetNumberOfSuperModulesUsed(Int_t nSM)
void SetEOverP(Float_t min, Float_t max)
Definition: AliCaloPID.h:218
Class containing more common histogram axis types.
void SetEMCALLambda0CutMax(Float_t lcut)
Definition: AliCaloPID.h:202
Class for event, clusters and tracks filtering and preparation for the ESD analysis.
AliCaloTrackReader * ConfigureReader(TString inputDataType="AOD", Bool_t useKinematics=kFALSE, Bool_t simu=kFALSE, TString calorimeter="EMCAL", Bool_t nonlin=kTRUE, Bool_t timecut=kFALSE, Bool_t primvtx=kFALSE, Bool_t notrackcut=kFALSE, Float_t tmin=-2000, Float_t tmax=2000, Bool_t trackTcut=kFALSE, Float_t minCen=-1, Float_t maxCen=-1, Int_t debug=-1, Bool_t print=kFALSE, Int_t SSsmearing=0, TString clustListName="")
virtual void SetEventPlaneMethod(TString m)
void SetPHOSEMin(Float_t en)
virtual void SetTrackCuts(AliESDtrackCuts *)
AliAnalysisTaskCaloTrackCorrelation * AddTaskIsoPhoton(const Float_t cone=0.4, const Float_t pth=2., const Bool_t leading=kFALSE, const Bool_t timecut=kFALSE, const TString calorimeter="EMCAL", const Bool_t simu=kFALSE, const Bool_t exotic=kTRUE, const Bool_t nonlin=kFALSE, const TString trigger="EMC7", const Int_t tm=2, const Float_t eOpMax=1000, const Int_t minCen=-1, const Int_t maxCen=-1, const Float_t deltaphicut=0.03, const Float_t deltaetacut=0.02, const Float_t tmin=-30., const Float_t tmax=30., const Bool_t trackTcut=kFALSE, const Int_t disttobad=2, const Int_t nlmMax=20, const Bool_t qaan=kFALSE, const Bool_t primvtx=kTRUE, const Bool_t notrackcut=kTRUE, const Bool_t rdmtrigger=kFALSE, const TString tag="", const Int_t debug=-1, const Bool_t print=kFALSE, const Bool_t tmInCone=kTRUE, const Int_t SSsmearing=0, const TString clustListName="", const Int_t isocut=1)
Track selection for correlation analysis.
void SetTrackMatchedClusterRejectionInCone(Bool_t tm)
virtual void SwitchOffFiducialCut()
virtual void SetCentralityClass(TString name)
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 SwitchOnClusterELinearityCorrection()
void SetTrackTimeCut(Double_t a, Double_t b)
void SetEMCALTimeCut(Double_t a, Double_t b)
Gerenate a random trigger.
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)
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
AliAnaRandomTrigger * ConfigureRandomTriggerAnalysis(TString detector="", Bool_t debug=kFALSE)
void SetHistoZRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0SignalRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetHistoTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoFinePtRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALEMax(Float_t en)
Class for PID selection with calorimeters.
Definition: AliCaloPID.h:53
void FillNOriginHistograms(Int_t n)
Definition: AliAnaPhoton.h:146
void SetHistoShowerShapeRangeAndNBins(Float_t min, Float_t max, Int_t n)
bool Bool_t
Definition: External.C:53
void SetPHOSEMax(Float_t en)
void SetHistodEdxRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class with utils specific to calorimeter clusters/cells.
AliAnaCalorimeterQA * ConfigureQAAnalysis(TString calorimeter="EMCAL", Bool_t simu=kFALSE, Int_t debug=-1, Bool_t print=kFALSE)
void ana(anaModes mode=mGRID)
Definition: ana.C:1036
void SwitchOffPrimaryVertexSelection()
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 ConfigureMC(AliAnaCaloTrackCorrBaseClass *ana, Bool_t simu=kFALSE)
Global string for data type.
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:221
void SwitchOffUseParametrizedTimeCut()
void SetPtThresholds(Int_t i, Float_t pt)
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
TString kAnaIsoPhotonName
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPhoton.h:131
Steering class of package CaloTrackCorrelartions.