AliPhysics  8417398 (8417398)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AddTaskCaloTrackPi0Flow.C
Go to the documentation of this file.
1 //
2 // AddTask macro for AliAnaPi0Flow within the framework of CaloTrackCorrelation,
3 // similar to AddTaskCaloTrackCorr.C
4 //
5 
6 // Global variables to be accessed by the different methods
7 TString kData = ""; //< Declare data MC or deltaAOD
8 TString kInputDataType = "AOD"; //< Declare data ESD/AOD
9 TString kCalorimeter = "EMCAL"; //< Use main analysis detector EMCal or PHOS or CTS
10 Bool_t kSimulation = kFALSE; //< Declare the analysis simulation
11 Bool_t kEventSelection= kFALSE; //< Remove bad events
12 Bool_t kExotic = kTRUE; //< Remove exotic clusters
13 Bool_t kNonLinearity = kFALSE; //< Correct cluster non linearity
14 Int_t kYears = 2011; //< Declare the year of the data
15 TString kCollisions = "PbPb"; //< Declare the collision type of the data
16 TString kTrig = "SemiOrCentral"; //< Set the trigger type to analyze in data
17 TString kClusterArray = "V1_Ecell150_Eseed300_DT0_WT0"; //< Name of branch with clusters, from AliAnalysisTaskEMCALClusterize
18 Bool_t kRecalTM = kFALSE; //< Recalculate track-cluster matching
19 Bool_t kTM = kTRUE; //< Remove matched clusters to tracks
20 Int_t kMinCen = -1; //< Set the minimum centrality to be analyzed
21 Int_t kMaxCen = -1; //< Set the maximum centrality to be analyzed
22 Bool_t kCalibE = kTRUE; //< Calibrate energy of clusters
23 Bool_t kBadMap = kTRUE; //< Reject bad cells/clusters
24 Bool_t kCalibT = kTRUE; //< Calibrate time of clusters
25 Bool_t kTender = kFALSE; //< Declare that tender was executed
26 Bool_t kOutputAOD = kFALSE; //< Create output AOD with generated particle AOD objects
27 Bool_t kPrint = kFALSE; //< Print setted parameters when configuring
28 Int_t kRunNumber = -1; //< Declare the run number
29 Bool_t kPhosCali = kTRUE; //< Switch on EP flattening by phos
30 Bool_t kCentFlat = kTRUE; //< Switch on Centrality flattening
31 Int_t kDebug = 0; //< Do the analysis with this debug level
32 
33 Bool_t kUseKinematics = kFALSE; //< Use the MC information
34 TString kName = ""; //< Name of the analysis, used in created AOD branches and histo container
35 
36 //
37 // Main method calling all the configuration
38 // Creates a CaloTrackCorr task, configures it and adds it to the analysis manager.
39 //
41  const TString dataType = "AOD",
42  const TString calorimeter = "EMCAL",
43  const Bool_t simulation = kFALSE,
44  const Bool_t eventsel = kFALSE,
45  const Bool_t exotic = kTRUE,
46  const Bool_t nonlin = kFALSE,
47  const Int_t year = 2011,
48  const TString col = "PbPb",
49  const TString trigger = "SemiOrCentral",
50  const TString clustersArray = "V1_Ecell150_Eseed300_DT0_WT0",
51  const Bool_t recaltm = kFALSE,
52  const Bool_t tm = kTRUE,
53  const Int_t minCen = -1,
54  const Int_t maxCen = -1,
55  const Bool_t calibE = kTRUE,
56  const Bool_t badmap = kTRUE,
57  const Bool_t calibT = kTRUE,
58  const Bool_t tender = kFALSE,
59  const Bool_t outputAOD = kFALSE,
60  const Bool_t printSettings = kFALSE,
61  const Int_t runNumber = -1,
62  const Bool_t isPhosCali = kTRUE,
63  const Bool_t isCentFlat = kTRUE,
64  const Int_t debug = 0
65  )
66 {
67  kData = data;
68  kInputDataType = dataType;
70  kSimulation = simulation;
71  kEventSelection = eventsel;
72  kExotic = exotic;
73  kNonLinearity = nonlin;
74  kYears = year;
75  kCollisions = col;
76  kTrig = trigger;
77  kClusterArray = clustersArray;
78  kRecalTM = recaltm;
79  kTM = tm;
80  kMinCen = minCen;
81  kMaxCen = maxCen;
82  kCalibE = calibE;
83  kBadMap = badmap;
84  kCalibT = calibT;
85  kTender = tender;
86  kOutputAOD = outputAOD;
87  kPrint = printSettings;
88  kRunNumber = runNumber;
89  kPhosCali = isPhosCali;
90  kCentFlat = isCentFlat;
91  kDebug = debug;
92 
93  // Get the pointer to the existing analysis manager via the static access method.
94  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
95  if (!mgr)
96  {
97  ::Error("AddTask", "No analysis manager to connect to.");
98  return NULL;
99  }
100  // Check the analysis type using the event handlers connected to the analysis manager.
101  if (!mgr->GetInputEventHandler())
102  {
103  ::Error("AddTask", "This task requires an input event handler");
104  return NULL;
105  }
106  // Make sure the B field is enabled for track selection, some cuts need it
107  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
108  kInputDataType = "AOD";
109  if(!kData.Contains("delta"))
110  kInputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
111  if(kSimulation)
112  {
113  kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
114  if (!kUseKinematics && data=="AOD" && kInputDataType != "ESD") kUseKinematics = kTRUE; //AOD primary should be available ...
115  }
116  cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
117  // Name for containers
118  kName = Form("%s_Trig%s_Cl%s_TM%d",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data(),kTM);
119  if (kCollisions=="PbPb" && kMaxCen>=0) kName+=Form("Cen%d_%d",kMinCen,kMaxCen);
120  printf("<<<< NAME: %s >>>>>\n",kName.Data());
121 
122  //
123  // Create maker
124  //
126  // General frame setting and configuration
127  maker->SetReader (ConfigureReader() );
128  maker->SetCaloUtils(ConfigureCaloUtils());
129 
130  //
131  // Add and configure analysis
132  //
133  Int_t n = 0; // Analysis number, order is important
134 
135  // Photon analysis
136  // maker->AddAnalysis(ConfigurePhotonAnalysis(), n++); // Photon cluster selection
137  // maker->AddAnalysis(ConfigurePi0Analysis(), n++); // Invariant mass of photon clusters
138 
139  // Split cluster analysis
140  if (kCalorimeter == "EMCAL") {
141  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kSSCalo), n++); // Pi0 event by event selection, cluster splitting
142  }
143  maker->AddAnalysis(ConfigurePi0Flow(), n++);
144 
145  maker->SetAnaDebug(kDebug) ;
146  maker->SwitchOnHistogramsMaker() ;
147  if(kData.Contains("delta")) maker->SwitchOffAODsMaker() ;
148  else maker->SwitchOnAODsMaker() ;
149  if(kPrint) maker->Print("");
150  if(kSimulation) maker->SwitchOffDataControlHistograms();
151  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, kCalorimeter.Data());
152 
153  //
154  // Create task
155  //
156  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation(Form("CaloTrackCorr%s",kName.Data()));
157  task->SetConfigFileName(""); // Don't configure the analysis via configuration file.
158  task->SetDebugLevel(kDebug);
159  // task->SetBranches("ESD:AliESDRun.,AliESDHeader");
160  UInt_t mask = SetTriggerMaskFromName();
161  task->SelectCollisionCandidates(mask);
162  task->SetAnalysisMaker(maker);
163  mgr->AddTask(task);
164 
165  //
166  // Create and set containers
167  //
168  TString outputfile = AliAnalysisManager::GetCommonFileName();
169  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kName, TList::Class(),
170  AliAnalysisManager::kOutputContainer,
171  Form("%s",outputfile.Data()));
172  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kName.Data()), TList::Class(),
173  AliAnalysisManager::kParamContainer,
174  "AnalysisParameters.root");
175  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
176  mgr->ConnectOutput (task, 1, cout_pc);
177  mgr->ConnectOutput (task, 2, cout_cuts);
178 
179  return task;
180 }
181 
182 //
183 // Configure the class handling the events and cluster/tracks filtering.
184 //
186 {
187  AliCaloTrackReader * reader = 0;
188  if (kInputDataType == "ESD"&& kData=="MC" )
189  reader = new AliCaloTrackMCReader();
190  else if(kInputDataType=="AOD" || kData.Contains("AOD"))
191  reader = new AliCaloTrackAODReader();
192  else if(kInputDataType=="ESD")
193  reader = new AliCaloTrackESDReader();
194  else
195  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known kData=%s, kInputData=%s\n",kData.Data(),kInputDataType.Data());
196 
197  reader->SetDebug(0);//10 for lots of messages
198 
199  //Delta AOD?
200  //reader->SetDeltaAODFileName("");
201  if(kOutputAOD) reader->SwitchOnWriteDeltaAOD() ;
202 
203  // MC settings
204  if(kUseKinematics){
205  if(kInputDataType == "ESD"){
206  reader->SwitchOnStack();
207  reader->SwitchOffAODMCParticles();
208  }
209  else if(kInputDataType == "AOD"){
210  reader->SwitchOffStack();
211  reader->SwitchOnAODMCParticles();
212  }
213  }
214 
215  //------------------------
216  // Detector input filling
217  //------------------------
218 
219  //Min cluster/track E
220  reader->SetEMCALEMin(0.3);
221  reader->SetEMCALEMax(1000);
222  reader->SetPHOSEMin(0.3);
223  reader->SetPHOSEMax(1000);
224  reader->SetCTSPtMin(0.2);
225  reader->SetCTSPtMax(1000);
226 
227  // Time cuts
228  if(kSimulation)
229  {
230  reader->SwitchOffUseTrackTimeCut();
232  reader->SwitchOffUseEMCALTimeCut();
233  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
234  }
235  else
236  {
237  if(kCalibT)
238  {
239  printf("Set time cut parameters for run %d\n",kRunNumber);
240  reader->SwitchOnUseEMCALTimeCut();
242 
243  //Absolute window
244  reader->SetEMCALTimeCut(-25,20);
245 
246  //Parametrization
247  if (kRunNumber >= 151636 && kRunNumber <= 155384 )
248  {
249  printf("Set time parameters for LHC11c");
252  }
253  else if(kRunNumber >= 156447 && kRunNumber <= 159635 )
254  {
255  printf("Set time parameters for LHC11d");
258  }
259  else
260  {
262  }
263  }
264  else
265  {
267  reader->SwitchOffUseEMCALTimeCut();
268  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
269  }
270  }
271 
272  reader->SwitchOnFiducialCut();
273  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
274 
275  // Tracks
276  reader->SwitchOnCTS();
278 
281 
282  reader->SwitchOffUseTrackTimeCut();
283  reader->SetTrackTimeCut(0,50);
284 
285  reader->SwitchOffUseTrackDCACut();
286  //reader->SetTrackDCACut(0,0.0105);
287  //reader->SetTrackDCACut(1,0.035);
288  //reader->SetTrackDCACut(2,1.1);
289 
290  if(kInputDataType=="ESD")
291  {
292  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
293  //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
294  //reader->SetTrackCuts(esdTrackCuts);
295  //reader->SwitchOnConstrainTrackToVertex();
296 
297  if(kYears>2010)
298  {
299  //Hybrids 2011
300  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
301  reader->SetTrackCuts(esdTrackCuts);
302  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
303  reader->SetTrackComplementaryCuts(esdTrackCuts2);
304  }
305  else
306  {
307  //Hybrids 2010
308  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
309  reader->SetTrackCuts(esdTrackCuts);
310  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
311  reader->SetTrackComplementaryCuts(esdTrackCuts2);
312  }
313  }
314  else if(kInputDataType=="AOD")
315  {
316  //reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid
317  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
318  reader->SetTrackStatus(AliVTrack::kITSrefit);
319  //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
320  }
321 
322  // Calorimeter
323 
325  if(kClusterArray == "" && !kTender)
326  {
327  printf("**************** Standard EMCAL clusters branch analysis **************** \n");
329  // Check in ConfigureCaloUtils that the recalibration and bad map are ON
330  }
331  else
332  {
333  printf("**************** Input for analysis is Clusterizer %s **************** \n", kClusterArray.Data());
335  }
336 
338 
339  //if(kCalorimeter == "EMCAL") {
340  reader->SwitchOnEMCALCells();
341  reader->SwitchOnEMCAL();
342  //}
343  //if(kCalorimeter == "PHOS") {
344  reader->SwitchOnPHOSCells();
345  reader->SwitchOnPHOS();
346  //}
347 
348  // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
349  if(kData.Contains("delta"))
350  {
351  reader->SwitchOffEMCAL();
352  reader->SwitchOffPHOS();
353  reader->SwitchOffEMCALCells();
354  reader->SwitchOffPHOSCells();
355  }
356 
357  //-----------------
358  // Event selection
359  //-----------------
360 
361  //reader->RejectFastClusterEvents() ;
362 
363  // Event triggered selection settings
365  reader->SwitchOnBadTriggerEventsRemoval(); // only if SwitchOnTriggerPatchMatching();
366  reader->SwitchOnUnMatchedTriggerEventsRemoval(); // only if SwitchOnBadTriggerEventsRemoval();
367  //reader->SwitchOffTriggerClusterTimeRecal() ;
368 
369  reader->SetTriggerPatchTimeWindow(8,9); // L0
370  if (kRunNumber < 146861) reader->SetEventTriggerL0Threshold(3.);
371  else if(kRunNumber < 154000) reader->SetEventTriggerL0Threshold(4.);
372  else if(kRunNumber < 165000) reader->SetEventTriggerL0Threshold(5.5);
373 
374  //redefine for other periods, triggers
375 
376  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
377 
378  reader->SwitchOnEventTriggerAtSE();
379 
380  reader->SetZvertexCut(10.); // Open cut
381  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
382 
383  if(kEventSelection)
384  {
385  reader->SwitchOnEventPileUpRejection(); // remove pileup by default
386  reader->SwitchOnV0ANDSelection() ; // and besides v0 AND
387  }
388  else
389  {
390  reader->SwitchOffPileUpEventRejection();// remove pileup by default
391  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
392  }
393 
394  if(kCollisions=="PbPb")
395  {
396  // Centrality
397  reader->SetCentralityClass("V0M");
398  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
399  reader->SetCentralityBin(kMinCen,kMaxCen); // Accept all events, if not select range
400 
401  // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
402  reader->SetEventPlaneMethod("V0");
403  }
404 
405  if(kPrint) reader->Print("");
406 
407  return reader;
408 }
409 
410 //
411 // Configure the class handling the calorimeter clusters specific methods
412 //
414 {
416  cu->SetDebug(0);
417 
418  // Remove clusters close to borders, at least max energy cell is 1 cell away
421 
422  // Search of local maxima in cluster
423  if(kCollisions=="pp")
424  {
425  cu->SetLocalMaximaCutE(0.1);
426  cu->SetLocalMaximaCutEDiff(0.03);
427  if(kName.Contains("150"))
428  {
429  printf("Reclusterize with 150 threshold, set PbPb settings\n");
430  cu->SetLocalMaximaCutE(0.2);
431  cu->SetLocalMaximaCutEDiff(0.03);
432  }
433  }
434  else
435  {
436  cu->SetLocalMaximaCutE(0.2);
437  cu->SetLocalMaximaCutEDiff(0.03);
438  }
439 
440  cu->SwitchOffClusterPlot();
441 
442  if (kRecalTM) cu->SwitchOnRecalculateClusterTrackMatching(); // Done in clusterization
444 
446 
447  //EMCAL settings
448 
449  if(!kSimulation)
451 
452  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
453 
454  if(!kSimulation)
455  {
456  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
457  if(kClusterArray == "" && !kTender) cu->SwitchOnRunDepCorrection();
458  }
459 
460  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
462  kSimulation,
463  kExotic,
464  kTRUE,//kNonLinearity,
465  kCalibE,
466  kBadMap,
467  kCalibT);
468  //recou->SetExoticCellDiffTimeCut(50.);
469 
470 
471  if( kNonLinearity )
472  {
473  printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
475  }
476 
477  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
478  printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
479 
480 
481  if(kCalorimeter=="PHOS")
482  {
483  if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(3);
484  else cu->SetNumberOfSuperModulesUsed(4);
485  }
486  else
487  {
488  if (kYears == 2010) cu->SetNumberOfSuperModulesUsed(4); //EMCAL first year
489  else if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(10);
490  else cu->SetNumberOfSuperModulesUsed(20);
491  }
492 
493  // PHOS
495 
496  if(kPrint) cu->Print("");
497 
498  return cu;
499 }
500 
501 //
502 // Configure the task doing the first photon cluster selections
503 // Basically the track matching, minor shower shape cut, NLM selection ...
504 //
506 {
507  AliAnaPhoton *ana = new AliAnaPhoton();
508  ana->SetDebug(kDebug); //10 for lots of messages
509 
510  // cluster selection cuts
511 
512  ana->SwitchOffFiducialCut();
513 
515 
516  if(kCalorimeter == "PHOS")
517  {
518  ana->SetNCellCut(2);// At least 3 cells
519  ana->SetMinPt(0.3);
520  ana->SetMinDistanceToBadChannel(2, 4, 5);
521  ana->SetTimeCut(-1e10,1e10); // open cut
522  }
523  else
524  {//EMCAL
525  ana->SetNCellCut(1);// At least 2 cells
526  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
527  ana->SetMaxEnergy(1000);
528  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
529  // restrict to less than 100 ns when time calibration is on
530  ana->SetMinDistanceToBadChannel(2, 4, 6);
531 
532  // NLM cut, used in all, exclude clusters with more than 2 maxima
533  // Not needed if M02 cut is already strong or clusterizer V2
534  ana->SetNLMCut(1, 2) ;
535  }
536 
537  if(kTM)
538  {
540  ana->SwitchOffTMHistoFill() ;
541  }
542  else
543  {
545  ana->SwitchOnTMHistoFill() ;
546  }
547 
548  //PID cuts (shower shape)
549  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
550  AliCaloPID* caloPID = ana->GetCaloPID();
551  //Not used in bayesian
552 
553  //EMCAL
554  caloPID->SetEMCALLambda0CutMax(0.27);
555  caloPID->SetEMCALLambda0CutMin(0.10);
556 
557  caloPID->SetEMCALDEtaCut(0.025);
558  caloPID->SetEMCALDPhiCut(0.030);
559 
560  //PHOS
561  caloPID->SetPHOSDispersionCut(2.5);
562  caloPID->SetPHOSRCut(2.);
563  if(kInputDataType=="AOD") caloPID->SetPHOSRCut(2000.); // Open cut since dX, dZ not stored
564 
565  ana->SwitchOffFillShowerShapeHistograms(); // Filled before photon shower shape selection
567  //if(!kSimulation) ana->SwitchOnFillEMCALBCHistograms();
568 
569  // Input / output delta AOD settings
570 
571  if(!kData.Contains("delta"))
572  {
573  ana->SetOutputAODName(Form("Photon%s",kName.Data()));
574  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
575  //ana->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
576  }
577  else ana->SetInputAODName(Form("Photon%s",kName.Data()));
578 
579  //Set Histograms name tag, bins and ranges
580 
581  ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",kTM));
582  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
583 
584  // Number of particle type MC histograms
585  ana->FillNOriginHistograms(20);
586  ana->FillNPrimaryHistograms(20);
587 
588  ana->SwitchOnRealCaloAcceptance(); // primary particle acceptance histograms
589  // ConfigureMC(ana);
590 
591  if(kPrint) ana->Print("");
592 
593  return ana;
594 }
595 
596 //
597 // Configure the task doing the pi0 even by event selection via the split method.
598 // Here the pairs, clusters, are added to an AOD branch to be used by other analysis
599 // unlike in ConfigurePi0Analysis.
600 //
602  Int_t analysis, Bool_t useSS = kTRUE, Bool_t useAsy = kTRUE)
603 {
604  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
605  ana->SetDebug(kDebug);//10 for lots of messages
606 
607  ana->SetAnalysisType(analysis);
608  TString opt = "";
609  if (analysis == AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
610  if (analysis == AliAnaPi0EbE::kSSCalo) opt = "SS";
611  if (analysis == AliAnaPi0EbE::kIMCalo && kCalorimeter=="EMCAL" && !kSimulation) ana->SetPairTimeCut(100);
612  if (analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
613 
614  // Common settings for all 3 type of analysis
617 
618  //Set Histograms name tag, bins and ranges
619  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
620 
621  // Specific settings for different type of analysis
622 
625 
626  if (kTM) {
627  //printf("--->>>REMOVE MATCHED Pi0\n");
629  ana->SwitchOffTMHistoFill() ;
630  } else {
631  //printf("---->>>ACCEPT MATCHED Pi0\n");
633  ana->SwitchOnTMHistoFill() ;
634  }
635 
636  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
637 
638  //ana->SwitchOnFillEMCALBCHistograms();
639 
640  if (!kInputDataType.Contains("delta")) {
641  ana->SetOutputAODName(Form("%s%s%s",particle.Data(), opt.Data(), kName.Data()));
642  ana->SetOutputAODClassName("AliAODPWG4Particle");
643  } else
644  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
645 
646  // cluster splitting settings
647  ana->SetMinEnergy(6);
648  ana->SetMaxEnergy(200.);
649  ana->SetNLMMinEnergy(0, 10);
650  ana->SetNLMMinEnergy(1, 6);
651  ana->SetNLMMinEnergy(2, 6);
652  ana->SetMinDistanceToBadChannel(2, 4, 6); // only use the first one
654  ana->SetTimeCut(-1e10,1e10); // Open time cut
655 
656  // NLM cut, used in all, exclude clusters with more than 2 maxima
657  ana->SetNLMCut(1, 2) ;
658 
659  AliCaloPID* caloPID = ana->GetCaloPID();
660  caloPID->SetSplitWidthSigma(3.); // cut at 3 sigma of the mean pi0 peak.
661 
662  if (!useSS) {
663  printf("Do not apply SS cut on merged pi0 analysis \n");
664  caloPID->SwitchOffSplitShowerShapeCut() ;
665  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),kTM));
666  ana->SetOutputAODName(Form("%s%s%s_OpenSS",particle.Data(), opt.Data(), kName.Data()));
667  caloPID->SetClusterSplittingM02Cut(0.1,10000);
668  } else {
669  caloPID->SetClusterSplittingM02Cut(0.3,5); // Do the selection in the analysis class and not in the PID method to fill SS histograms
670  caloPID->SwitchOnSplitShowerShapeCut() ;
671  }
672 
673  if (useAsy) caloPID->SwitchOnSplitAsymmetryCut() ;
674  else {
675  caloPID->SwitchOffSplitAsymmetryCut() ;
676  if (!useSS) {
677  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
678  ana->SetOutputAODName(Form("%s%s%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
679  } else {
680  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
681  ana->SetOutputAODName(Form("%s%s%s_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
682  }
683  }
684 
685  //For Pi0 only if SwitchOnSimpleSplitMassCut()
686  caloPID->SetPi0MassRange(0.10, 0.18);
687  caloPID->SetEtaMassRange(0.40, 0.60);
688  caloPID->SetPhotonMassRange(0.00, 0.08);
689  caloPID->SetClusterSplittingMinNCells(6);
690  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
691  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
692  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
693  if (kCollisions=="PbPb" || kName.Contains("150")) {
694  caloPID->SetClusterSplittingMinNCells(4);
695  caloPID->SetPi0MassShiftHighECell(0.005);
696  }
697 
698  if (kPrint) ana->Print("");
699  return ana;
700 }
701 
702 //
703 // Configure the task doing the pi0 flow.
704 // Input AOD branch is from task AliAnaPi0EbE.
705 //
707 {
709  ana->SetDebug(kDebug);
710 
711  TString particle = "Pi0";
712  TString opt = "SS";
713  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
714  ana->IsPHOSCali(kPhosCali);
715  ana->IsCentFlat(kCentFlat);
716 
717  if (kPrint) ana->Print("");
718  return ana;
719 }
720 
721 //
722 // Set common histograms binning and ranges
723 //
725 {
726  // Set common bins for all analysis and MC histograms filling
727 
728  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
729 
730  if(kCalorimeter=="EMCAL")
731  {
732  if ( kYears == 2010 )
733  {
734  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
735  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
736  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
737  }
738  else if ( kYears < 2014 )
739  {
740  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
741  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
742  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
743  }
744  else // Run2
745  {
746  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 329*TMath::DegToRad(), 250) ;
747  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
748  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
749  }
750 
751  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
752  }
753  else
754  {
755  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
756  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
757  }
758 
759  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
760 
761  // Invariant mass histoRangeslysis
762  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
763  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
764 
765  // check if time calibration is on
766  histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
767  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
768 
769  // track-cluster residuals
770  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
771  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
772  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
773 
774  // QA, electron, charged
775  histoRanges->SetHistoPOverERangeAndNBins(0,2.,200);
776  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
777 
778  // QA
779  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
780  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
781  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
782  histoRanges->SetHistoRRangeAndNBins(430,460,30);
783  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
784  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
785 
786  // QA, correlation
787  if(kCollisions=="PbPb")
788  {
789  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
790  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
791  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
792  }
793  else
794  {
795  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
796  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
797  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
798  }
799 
800  // xE, zT
801  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
802  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
803 
804  // Isolation
805  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
806  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
807 
808 }
809 
810 //
811 // Set the trigger requested for the analysis,
812 // depending on a string given
813 //
815 {
816  if(kTrig=="EMC7")
817  {
818  printf("CaloTrackCorr trigger EMC7\n");
819  return AliVEvent::kEMC7;
820  }
821  else if (kTrig=="INT7")
822  {
823  printf("CaloTrackCorr trigger INT7\n");
824  return AliVEvent::kINT7;
825  }
826  else if(kTrig=="EMC1")
827  {
828  printf("CaloTrackCorr trigger EMC1\n");
829  return AliVEvent::kEMC1;
830  }
831  else if(kTrig=="MB")
832  {
833  printf("CaloTrackCorr trigger MB\n");
834  return AliVEvent::kMB;
835  }
836  else if(kTrig=="PHOS")
837  {
838  printf("CaloTrackCorr trigger PHOS\n");
839  return AliVEvent::kPHI7;
840  }
841  else if(kTrig=="PHOSPb")
842  {
843  printf("CaloTrackCorr trigger PHOSPb\n");
844  return AliVEvent::kPHOSPb;
845  }
846  else if(kTrig=="AnyINT")
847  {
848  printf("CaloTrackCorr trigger AnyINT\n");
849  return AliVEvent::kAnyINT;
850  }
851  else if(kTrig=="INT")
852  {
853  printf("CaloTrackCorr trigger AnyINT\n");
854  return AliVEvent::kAny;
855  }
856  else if(kTrig=="EMCEGA")
857  {
858  printf("CaloTrackCorr trigger EMC Gamma\n");
859  return AliVEvent::kEMCEGA;
860  }
861  else if(kTrig=="EMCEJE")
862  {
863  printf("CaloTrackCorr trigger EMC Jet\n");
864  return AliVEvent::kEMCEJE;
865  }
866  else if(kTrig=="Central")
867  {
868  printf("CaloTrackCorr trigger Central\n");
869  return (AliVEvent::kCentral | AliVEvent::kMB);
870  }
871  else if(kTrig=="CentralEGA")
872  {
873  printf("CaloTrackCorr trigger Central+EMCEGA\n");
874  return (AliVEvent::kCentral | AliVEvent::kEMCEGA);
875  }
876  else if(kTrig=="SemiCentral")
877  {
878  printf("CaloTrackCorr trigger SemiCentral\n");
879  return (AliVEvent::kSemiCentral | AliVEvent::kMB);
880  }
881  else if(kTrig=="SemiOrCentral")
882  {
883  printf("CaloTrackCorr trigger SemiCentral Or Central\n");
884  return (AliVEvent::kSemiCentral | AliVEvent::kCentral | AliVEvent::kMB);
885  }
886 }
887 
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetNumberOfCellsFromPHOSBorder(Int_t n)
void ana(Int_t mode=mGRID)
Definition: ana.C:86
void SetSimpleCTSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
AliAnaPhoton * ConfigurePhotonAnalysis()
void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void AddToHistogramsName(TString add)
void SetSplitWidthSigma(Float_t s)
Definition: AliCaloPID.h:248
virtual void SwitchOnFiducialCut()
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:111
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:229
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:225
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:83
TString kData
void SetTriggerPatchTimeWindow(Int_t min, Int_t max)
virtual void SwitchOnAODHybridTrackSelection()
virtual void SetCentralityBin(Int_t min, Int_t max)
AliEMCALRecoUtils * GetEMCALRecoUtils() const
Bool_t kEventSelection
void SetEMCALParametrizedMinTimeCut(Int_t i, Float_t par)
Int_t kRunNumber
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPi0EbE.h:143
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:116
void SwitchOffClusterELinearityCorrection()
void SetCTSPtMax(Float_t pt)
void SwitchOffSplitShowerShapeCut()
Definition: AliCaloPID.h:226
Bool_t kNonLinearity
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:232
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
AliAnaPi0Flow * ConfigurePi0Flow()
virtual void SetCalorimeter(TString &calo)
Set the calorimeter for the analysis. A string.
virtual void SetInputAODName(TString name)
virtual void SetTrackComplementaryCuts(AliESDtrackCuts *)
void SetEMCALEMin(Float_t en)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:94
Bool_t kUseKinematics
void SwitchOnSelectedClusterHistoFill()
Definition: AliAnaPi0EbE.h:112
void SwitchOffTMHistoFill()
Definition: AliAnaPhoton.h:84
virtual void SetOutputAODClassName(TString name)
void SwitchOffFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:70
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPi0EbE.h:134
void SetHistodRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetLocalMaximaCutEDiff(Float_t c)
void SwitchOffSplitAsymmetryCut()
Definition: AliCaloPID.h:222
void SetAnalysisType(anaTypes ana)
Definition: AliAnaPi0EbE.h:93
Int_t kMinCen
void SetNumberOfCellsFromEMCALBorder(Int_t n)
void SwitchOffTMHistoFill()
Definition: AliAnaPi0EbE.h:110
void SetNCellCut(Int_t n)
Definition: AliAnaPhoton.h:102
Select cluster pairs or single merged clusters with pi0 or eta invariant mass.
Definition: AliAnaPi0EbE.h:31
TString kInputDataType
2 calorimeter clusters invariant mass selection
Definition: AliAnaPi0EbE.h:87
const TString calorimeter
Definition: anaM.C:35
void IsCentFlat(Bool_t e)
Definition: AliAnaPi0Flow.h:43
Bool_t IsRecalibrationOn() const
Bool_t kPrint
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.
AliAnaPi0EbE * ConfigurePi0EbEAnalysis(TString particle, Int_t analysis, Bool_t useSS=kTRUE, Bool_t useAsy=kTRUE)
void SetCTSPtMin(Float_t pt)
void SetPHOSRCut(Float_t rcut)
Definition: AliCaloPID.h:207
void SetEMCALDPhiCut(Float_t dcut)
Definition: AliCaloPID.h:201
virtual void SetOutputAODName(TString name)
void SwitchOffRecalculateClusterTrackMatching()
void SetEMCALParametrizedMaxTimeCut(Int_t i, Float_t par)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SwitchOffVertexBCEventSelection()
void SwitchOffTrackMatchRejection()
Definition: AliAnaPhoton.h:112
1 calorimeter cluster and 1 photon conversion pair invariant mass selection
Definition: AliAnaPi0EbE.h:89
void SetHistoPtInConeRangeAndNBins(Float_t min, Float_t max, Int_t n)
Bool_t kCentFlat
virtual void SetDebug(Int_t d)
void SetHistoPOverERangeAndNBins(Float_t min, Float_t max, Int_t n)
UInt_t SetTriggerMaskFromName()
virtual AliFiducialCut * GetFiducialCut()
virtual void SetCentralityOpt(Int_t opt)
void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual AliHistogramRanges * GetHistogramRanges()
void SwitchOnSplitAsymmetryCut()
Definition: AliCaloPID.h:221
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
AliCalorimeterUtils * ConfigureCaloUtils()
Bool_t kRecalTM
void SetTrackStatus(ULong_t bit)
void SetPi0MassShiftHighECell(Float_t s)
Definition: AliCaloPID.h:250
Bool_t IsBadChannelsRemovalSwitchedOn() const
Filter EMCal/PHOS clusters for photon analysis.
Definition: AliAnaPhoton.h:32
void SetHistoTrackResidualPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class for filtering generated MC particles and prepare them as input for the analysis.
void SwitchOnSplitClusterDistToBad()
Definition: AliAnaPi0EbE.h:161
void SwitchOnRecalculateClusterTrackMatching()
void SwitchOnUnMatchedTriggerEventsRemoval()
Bool_t kCalibT
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Bool_t kTM
void SwitchOffTrackMatchRejection()
Definition: AliAnaPi0EbE.h:150
Base class for event, clusters and tracks filtering and preparation for the analysis.
void SetHistoRangeAndNBins(AliHistogramRanges *histoRanges)
void SetInputAODGammaConvName(TString name)
Definition: AliAnaPi0EbE.h:99
void SetHistoNClusterCellRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetEMCALClusterListName(TString &name)
TString kCalorimeter
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPhoton.h:97
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
virtual void SetZvertexCut(Float_t zcut=10.)
void SetEtaMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:270
void SetNumberOfSuperModulesUsed(Int_t nSM)
void SwitchOnTMHistoFill()
Definition: AliAnaPi0EbE.h:109
void SetPi0MassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:269
Class containing more common histogram axis types.
void SetEMCALLambda0CutMax(Float_t lcut)
Definition: AliCaloPID.h:192
void SwitchOnTrackMatchRejection()
Definition: AliAnaPi0EbE.h:149
void IsPHOSCali(Bool_t e)
Definition: AliAnaPi0Flow.h:42
Class for event, clusters and tracks filtering and preparation for the ESD analysis.
Bool_t kTender
virtual void SetEventPlaneMethod(TString m)
void SetPHOSEMin(Float_t en)
Bool_t kBadMap
void SetHistoNClustersRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetPHOSDispersionCut(Float_t dcut)
Definition: AliCaloPID.h:210
virtual void SetTrackCuts(AliESDtrackCuts *)
TString kCollisions
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPi0EbE.h:101
Int_t kDebug
virtual void SetCentralityClass(TString name)
Int_t kYears
TString kClusterArray
void SwitchOnBadTriggerEventsRemoval()
void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOffFillWeightHistograms()
Definition: AliAnaPi0EbE.h:153
void SetTrackTimeCut(Double_t a, Double_t b)
void SetEMCALTimeCut(Double_t a, Double_t b)
AliCaloTrackReader * ConfigureReader()
void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0MultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
void SwitchOffLoadOwnPHOSGeometryMatrices()
Bool_t kOutputAOD
Bool_t kCalibE
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)
void SetEventTriggerL0Threshold(Float_t tr)
Bool_t kSimulation
Class for PID selection with calorimeters.
Definition: AliCaloPID.h:51
1 calorimeter cluster shower shape and split invariatn mass selection
Definition: AliAnaPi0EbE.h:88
void FillNOriginHistograms(Int_t n)
Definition: AliAnaPhoton.h:114
AliAnalysisTaskCaloTrackCorrelation * AddTaskCaloTrackPi0Flow(const TString data="", const TString dataType="AOD", const TString calorimeter="EMCAL", const Bool_t simulation=kFALSE, const Bool_t eventsel=kFALSE, const Bool_t exotic=kTRUE, const Bool_t nonlin=kFALSE, const Int_t year=2011, const TString col="PbPb", const TString trigger="SemiOrCentral", const TString clustersArray="V1_Ecell150_Eseed300_DT0_WT0", const Bool_t recaltm=kFALSE, const Bool_t tm=kTRUE, const Int_t minCen=-1, const Int_t maxCen=-1, const Bool_t calibE=kTRUE, const Bool_t badmap=kTRUE, const Bool_t calibT=kTRUE, const Bool_t tender=kFALSE, const Bool_t outputAOD=kFALSE, const Bool_t printSettings=kFALSE, const Int_t runNumber=-1, const Bool_t isPhosCali=kTRUE, const Bool_t isCentFlat=kTRUE, const Int_t debug=0)
void SetNLMMinEnergy(Int_t i, Float_t min)
Definition: AliAnaPi0EbE.h:139
void SetHistoShowerShapeRangeAndNBins(Float_t min, Float_t max, Int_t n)
Bool_t kExotic
void SetPHOSEMax(Float_t en)
void SetHistodEdxRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class with utils specific to calorimeter clusters/cells.
void SetHistoHBPRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALLambda0CutMin(Float_t lcut)
Definition: AliCaloPID.h:195
void SetHistoRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoVertexDistRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:198
void SetPhotonMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:271
void SwitchOffUseParametrizedTimeCut()
Bool_t kPhosCali
void SetLocalMaximaCutE(Float_t cut)
TString kName
TString kTrig
Int_t kMaxCen
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPhoton.h:105
void ConfigureEMCALRecoUtils(AliEMCALRecoUtils *reco, Bool_t bMC=kFALSE, Bool_t bExotic=kTRUE, Bool_t bNonLin=kFALSE, Bool_t bRecalE=kTRUE, Bool_t bBad=kTRUE, Bool_t bRecalT=kTRUE)
Steering class of package CaloTrackCorrelartions.