AliPhysics  ff1d528 (ff1d528)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AddTaskPi0IMGammaCorrQA.C
Go to the documentation of this file.
1 
17 // Global variables, set externally, uncomment next lines for local tests.
18 //const char* kPeriod = "LHC16t"; // gSystem->Getenv("ALIEN_JDL_LPMPRODUCTIONTAG");
19 //const char* kColType = "PbPb"; // gSystem->Getenv("ALIEN_JDL_LPMINTERACTIONTYPE"); //either "pp", "pPb" or "PbPb"
20 //const char* kProdType = "MC"; // gSystem->Getenv("ALIEN_JDL_LPMPRODUCTIONTYPE");
21 //Bool_t kMC = kFALSE;
22 
43  Bool_t simulation = kFALSE,
44  TString collision = "pp",
45  TString period = "",
46  const Bool_t qaan = kTRUE,
47  const Bool_t hadronan = kTRUE,
48  const Bool_t calibrate = kFALSE,
49  const Int_t minTime = -1000,
50  const Int_t maxTime = 1000,
51  const Int_t minCen = -1,
52  const Int_t maxCen = -1,
53  const Int_t debugLevel = -1,
54  const char * suffix = "default"
55  )
56 {
57  // Check the global variables, and reset the provided ones if empty.
58  //
59  TString trigger = suffix;
60  if(collision=="")
61  {
62 
63  if (!strcmp(kColType, "PbPb")) collision = "PbPb";
64  else if (!strcmp(kColType, "AA" )) collision = "PbPb";
65  else if (!strcmp(kColType, "pA" )) collision = "pPb";
66  else if (!strcmp(kColType, "Ap" )) collision = "pPb";
67  else if (!strcmp(kColType, "pPb" )) collision = "pPb";
68  else if (!strcmp(kColType, "Pbp" )) collision = "pPb";
69  else if (!strcmp(kColType, "pp" )) collision = "pp" ;
70 
71  simulation = kMC;
72  period = kPeriod;
73 
74  // print check on global settings once
75  if(trigger.Contains("default") ||trigger.Contains("INT") || trigger.Contains("MB") )
76  printf("AddTaskPi0IMGammaCorrQA - Get the data features from global parameters: col <%s>, period <%s>, mc <%d> \n",
77  kColType,kPeriod,kMC);
78  }
79 
80  Int_t year = 2017;
81  if ( period!="" )
82  {
83  if (period.Contains("16")) year = 2016;
84  else if(period.Contains("15")) year = 2015;
85  else if(period.Contains("13")) year = 2013;
86  else if(period.Contains("12")) year = 2012;
87  else if(period.Contains("11")) year = 2011;
88  else if(period.Contains("10")) year = 2010;
89  }
90 
91  // Get the pointer to the existing analysis manager via the static access method.
92  //
93  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
94  if (!mgr)
95  {
96  ::Error("AddTaskPi0IMGammaCorrQA", "No analysis manager to connect to.");
97  return NULL;
98  }
99 
100  // Check the analysis type using the event handlers connected to the analysis manager.
101  //
102  if (!mgr->GetInputEventHandler())
103  {
104  ::Error("AddTaskPi0IMGammaCorrQA", "This task requires an input event handler");
105  return NULL;
106  }
107 
108  //
109  // Create task
110  //
111 
112  // Name for containers
113  TString containerName = Form("%s_Trig_%s",calorimeter.Data(), trigger.Data());
114 
115  if(collision!="pp" && maxCen>=0) containerName+=Form("Cen%d_%d",minCen,maxCen);
116 
117  TString taskName =Form("Pi0IM_GammaTrackCorr_%s",containerName.Data());
118 
120  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
121  task->SetDebugLevel(debugLevel);
122  //task->SetBranches("ESD:AliESDRun.,AliESDHeader");
123  //task->SetBranches("AOD:header,tracks,vertices,emcalCells,caloClusters");
124 
125  //
126  // Init main analysis maker and pass it to the task
128  task->SetAnalysisMaker(maker);
129 
130  //
131  // Pass the task to the analysis manager
132  mgr->AddTask(task);
133 
134  //
135  // Create containers
136  TString outputfile = AliAnalysisManager::GetCommonFileName();
137 
138  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(trigger, TList::Class(),
139  AliAnalysisManager::kOutputContainer,
140  Form("%s:%s",outputfile.Data(),Form("Pi0IM_GammaTrackCorr_%s",calorimeter.Data())));
141 
142  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",trigger.Data()), TList::Class(),
143  AliAnalysisManager::kParamContainer,
144  Form("%s_Parameters.root",Form("Pi0IM_GammaTrackCorr_%s",calorimeter.Data())));
145 
146  // Create ONLY the output containers for the data produced by the task.
147  // Get and connect other common input/output containers via the manager as below
148  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
149  mgr->ConnectOutput (task, 1, cout_pc);
150  mgr->ConnectOutput (task, 2, cout_cuts);
151  //==============================================================================
152 
153  // Do not configure the wagon for certain analysis combinations
154  // But create the task so that the sub-wagon train can run
155  //
156  Bool_t doAnalysis = CheckAnalysisTrigger(simulation,trigger,period,year);
157  if(!doAnalysis)
158  {
159  maker->SwitchOffProcessEvent();
160  return task;
161  }
162 
163  // #### Start analysis configuration ####
164  //
165  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
166 
167  // Make sure the B field is enabled for track selection, some cuts need it
168  //
169  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
170 
171  // Print settings to check all is as expected
172  //
173  printf("AddTaskPi0IMGammaCorrQA - Task NAME: %s \n",taskName.Data());
174 
175  printf("AddTaskPi0IMGammaCorrQA - Settings: data <%s>, calo <%s>, MC <%d>, collision <%s>, trigger <%s>, period <%s>, year <%d>,\n"
176  "\t \t \t CaloQA on <%d>, Track QA on <%d>, Make corrections <%d>, %5.1f < time < %5.1f, %2.1f < cen < %2.1f, debug level <%d> \n",
177  inputDataType.Data(), calorimeter.Data(),simulation, collision.Data(),trigger.Data(), period.Data(), year,
178  qaan , hadronan, calibrate, minTime, maxTime, minCen, maxCen, debugLevel);
179  //
180 
181  // General frame setting and configuration
182  maker->SetReader ( ConfigureReader (inputDataType,collision,calibrate,minTime,maxTime,minCen,maxCen,simulation,year,debugLevel) );
183  if(hadronan)maker->GetReader()->SwitchOnCTS();
184 
185  maker->SetCaloUtils( ConfigureCaloUtils(calorimeter,trigger,simulation,calibrate,year,debugLevel) );
186 
187  // Analysis tasks setting and configuration
188  Int_t n = 0;//Analysis number, order is important
189 
190  // Cell QA
191  if(qaan) maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,collision,simulation,year,debugLevel),n++);
192 
193  // Analysis with EMCal trigger or MB
194  if ( !trigger.Contains("DCAL") )
195  {
196  // Cluster selection
197  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,0,collision,containerName,simulation,year,debugLevel) ,n++);
198  // Previous cluster invariant mass
199  maker->AddAnalysis(ConfigurePi0Analysis (calorimeter,0,collision,containerName,simulation,year,debugLevel,minCen),n++);
200  if(hadronan)
201  {
202  // Isolation of selected clusters by AliAnaPhoton
203  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",calorimeter,0,collision,containerName,simulation,year,debugLevel), n++);
204  // Selected clusters-track correlation
205  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,0,collision,containerName,simulation,year,debugLevel,minCen), n++);
206  }
207  }
208 
209  // Analysis with DCal trigger or MB
210  if(year > 2014 && calorimeter=="EMCAL" && !trigger.Contains("EMCAL"))
211  {
212  // Cluster selection
213  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,1,collision,containerName,simulation,year,debugLevel) , n++);
214  // Previous cluster invariant mass
215  maker->AddAnalysis(ConfigurePi0Analysis (calorimeter,1,collision,containerName,simulation,year,debugLevel,minCen),n++);
216  if(hadronan)
217  {
218  // Isolation of selected clusters by AliAnaPhoton
219  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",calorimeter,1,collision,containerName,simulation,year,debugLevel), n++);
220  // Selected clusters-track correlation
221  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,1,collision,containerName,simulation,year,debugLevel,minCen), n++);
222  }
223  }
224 
225  // Charged tracks plots, any trigger
226  if(hadronan)
227  maker->AddAnalysis(ConfigureChargedAnalysis(collision,containerName,simulation,year,debugLevel), n++);
228 
229  maker->SetAnaDebug(debugLevel) ;
230  maker->SwitchOnHistogramsMaker() ;
231  maker->SwitchOnAODsMaker() ;
233 
234  if(simulation)
235  {
236  // Calculate the cross section weights, apply them to all histograms
237  // and fill xsec and trial histo. Sumw2 must be activated.
238  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionCalculation();
239  //maker->SwitchOnSumw2Histograms();
240 
241  // For recent productions where the cross sections and trials are not stored in separate file
242  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionFromEventHeader() ;
243 
244  // Just fill cross section and trials histograms.
246 
247  // Add control histogram with pT hard to control aplication of weights
248  maker->SwitchOnPtHardHistogram();
249  }
250 
251  if(debugLevel > 0) maker->Print("");
252 
253  //
254  // Select events trigger depending on trigger
255  //
256  if(!simulation)
257  {
258  gROOT->LoadMacro("$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/ConfigureEventTriggerCaloTrackCorr.C");
259  ConfigureEventTriggerCaloTrackCorr(task,trigger,year);
260  }
261 
262  return task;
263 }
264 
268 AliCaloTrackReader * ConfigureReader(TString inputDataType, TString collision, Bool_t calibrate,
269  Int_t minTime, Int_t maxTime,
270  Int_t minCen, Int_t maxCen,
271  Bool_t simulation, Int_t year, Int_t debugLevel)
272 {
273  AliCaloTrackReader * reader = 0;
274  if (inputDataType=="AOD")
275  reader = new AliCaloTrackAODReader();
276  else if(inputDataType=="ESD")
277  reader = new AliCaloTrackESDReader();
278  else
279  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known input Data=%s\n",
280  inputDataType.Data());
281 
282  reader->SetDebug(debugLevel);//10 for lots of messages
283 
284  //------------------------
285  // Detector input filling
286  //------------------------
287 
288  //Min cluster/track E
289  reader->SetEMCALEMin(0.3);
290  reader->SetEMCALEMax(1000);
291  reader->SetPHOSEMin(0.3);
292  reader->SetPHOSEMax(1000);
293  reader->SetCTSPtMin(0.2);
294  reader->SetCTSPtMax(1000);
295 
296  // Time cut
298 
299  if(calibrate)
300  {
301  reader->SwitchOnUseEMCALTimeCut() ;
302  reader->SetEMCALTimeCut(minTime,maxTime);
303  }
304 
305  reader->SwitchOffUseTrackTimeCut();
306  reader->SetTrackTimeCut(-1e10,1e10);
307 
308  reader->SwitchOffFiducialCut();
309 
310  // Tracks
311  reader->SwitchOffCTS();
315  reader->SwitchOffUseTrackDCACut();
316  //reader->SetTrackDCACut(0,0.0105);
317  //reader->SetTrackDCACut(1,0.035);
318  //reader->SetTrackDCACut(2,1.1);
319 
320  if(inputDataType=="ESD")
321  {
322  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
323  if(year > 2010)
324  {
325  //Hybrids 2011
326  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
327  reader->SetTrackCuts(esdTrackCuts);
328  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
329  reader->SetTrackComplementaryCuts(esdTrackCuts2);
330  }
331  else
332  {
333  //Hybrids 2010
334  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
335  reader->SetTrackCuts(esdTrackCuts);
336  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
337  reader->SetTrackComplementaryCuts(esdTrackCuts2);
338  }
339  }
340  else if(inputDataType=="AOD")
341  {
342  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
343  reader->SetTrackStatus(AliVTrack::kITSrefit);
344  }
345 
346  // Calorimeter
347 
348  reader->SetEMCALClusterListName("");
349 
350  if(calibrate && !simulation) reader->SwitchOnClusterRecalculation();
351  else reader->SwitchOffClusterRecalculation();
352 
353  reader->SwitchOnEMCALCells();
354  reader->SwitchOnEMCAL();
355 
356  reader->SwitchOffPHOSCells();
357  reader->SwitchOffPHOS();
358 
359  //-----------------
360  // Event selection
361  //-----------------
362 
363  reader->SwitchOnEventTriggerAtSE();
364 
365  reader->SetZvertexCut(10.);
366  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
367  reader->SwitchOffPileUpEventRejection(); // remove pileup
368  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
369 
370  if(collision=="PbPb")
371  {
372  if(year < 2014) reader->SwitchOnAliCentrality();
373  reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
374  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
375  }
376 
377  if(debugLevel > 0) reader->Print("");
378 
379  return reader;
380 }
381 
386  Bool_t simulation, Bool_t calibrate,
387  Int_t year, Int_t debugLevel)
388 {
390  cu->SetDebug(debugLevel);
391 
392  // Remove clusters close to borders, at least max energy cell is 1 cell away
395 
396  // Search of local maxima in cluster
397  cu->SetLocalMaximaCutE(0.1);
398  cu->SetLocalMaximaCutEDiff(0.03);
399 
400  //cu->SwitchOffClusterPlot();
402 
404 
405  //EMCAL settings
406 
407  if(!simulation)
409 
410  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
411  cu->SwitchOffRecalibration(); // Check the reader if it is taken into account during filtering
413 
415 
416  Bool_t bExotic = kTRUE;
417  Bool_t bNonLin = kFALSE;
418  Bool_t bBadMap = kTRUE;
419 
420  Bool_t bEnCalib = kFALSE;
421  Bool_t bTiCalib = kFALSE;
422 
423  if(calibrate && !simulation)
424  {
425  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
428 
429  bEnCalib = kTRUE;
430  bTiCalib = kTRUE;
431  }
432 
433  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
435  simulation,
436  bExotic,
437  bNonLin,
438  bEnCalib,
439  bBadMap,
440  bTiCalib,
441  debugLevel
442  );
443  //recou->SetExoticCellDiffTimeCut(50.);
444 
445  if(calorimeter=="PHOS")
446  {
447  if(year < 2014) cu->SetNumberOfSuperModulesUsed(3);
448  else cu->SetNumberOfSuperModulesUsed(4);
449  }
450  else
451  {
452  Int_t nSM = 20;
453  Int_t lastEMC = 11;
454  if (year == 2010) { nSM = 4; lastEMC = 3; }// EMCAL first year
455  else if (year < 2014) { nSM = 10; lastEMC = 9; }// EMCAL active 2011-2013
456 
458 
459  if (trigger.Contains("EMCAL"))
460  {
461  cu->SetFirstSuperModuleUsed( 0);
462  cu->SetLastSuperModuleUsed (lastEMC);
463  }
464  else if (trigger.Contains("DCAL"))
465  {
466  cu->SetFirstSuperModuleUsed(12);
467  cu->SetLastSuperModuleUsed (19);
468  }
469  else
470  {
473  }
474 
475  printf("AddTaskPi0IMGammaCorrQA - CalorimeterUtils: nSM %d, first %d, last %d\n",
477  }
478 
479  // PHOS
481 
482  if(debugLevel > 0) cu->Print("");
483 
484  return cu;
485 }
486 
492  TString containerName, Bool_t simulation,
493  Int_t year, Int_t debugLevel)
494 {
495  AliAnaPhoton *ana = new AliAnaPhoton();
496  ana->SetDebug(debugLevel); //10 for lots of messages
497 
498  // cluster selection cuts
499 
500  ana->SwitchOnFiducialCut();
501  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
502  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
503  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
504 
505  ana->SetCalorimeter(calorimeter);
506 
507  if(calorimeter == "PHOS")
508  {
509  ana->SetNCellCut(2);// At least 3 cells
510  ana->SetMinPt(0.5);
511  ana->SetMinDistanceToBadChannel(2, 4, 5);
512  ana->SetTimeCut(-1e10,1e10); // open cut
513  }
514  else
515  {
516  // EMCAL
517  ana->SetConstantTimeShift(615); // for MC and uncalibrated data, whenever there is time > 400 ns
518  ana->SetNCellCut(1);// At least 2 cells
519  ana->SetMinEnergy(0.5); // avoid mip peak at E = 260 MeV
520  ana->SetMaxEnergy(1000);
521  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
522  // restrict to less than 100 ns when time calibration is on
523  ana->SetMinDistanceToBadChannel(2, 4, 6);
524  // Not useful if M02 cut is already strong
525  ana->SetNLMCut(1, 2) ;
526  }
527 
529  ana->SwitchOnTMHistoFill() ;
530 
532  ana->SetNEBinCuts(2);
533  // Set the acceptance E bins depending on the trigger and their likely values
534  if(containerName.Contains("efault") || containerName.Contains("INT") || containerName.Contains("MB"))
535  {
536  ana->SetEBinCutsAt(0, 0.5);
537  ana->SetEBinCutsAt(1, 3.0);
538  ana->SetEBinCutsAt(2, 100.0);
539  }
540  else if(containerName.Contains("L0"))
541  {
542  ana->SetEBinCutsAt(0, 2.0);
543  ana->SetEBinCutsAt(1, 5.0);
544  ana->SetEBinCutsAt(2, 100.0);
545  }
546  else
547  {
548  ana->SetEBinCutsAt(0, 5.0);
549  ana->SetEBinCutsAt(1, 12.0);
550  ana->SetEBinCutsAt(2, 100.0);
551  }
552 
553  //PID cuts (shower shape)
554  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
555  AliCaloPID* caloPID = ana->GetCaloPID();
556  //Not used in bayesian
557 
558  //EMCAL
559  caloPID->SetEMCALLambda0CutMax(0.4); // Rather open
560  caloPID->SetEMCALLambda0CutMin(0.10);
561 
562  caloPID->SetEMCALDEtaCut(0.025);
563  caloPID->SetEMCALDPhiCut(0.030);
564 
565  //PHOS
566  caloPID->SetPHOSDispersionCut(2.5);
567  caloPID->SetPHOSRCut(2.);
568 
569  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
570  //if(!simulation)ana->SwitchOnFillPileUpHistograms();
571 
572  if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
573 
574  // Input / output delta AOD settings
575  ana->SetOutputAODName(Form("Photon%s_Calo%d",containerName.Data(),caloType));
576  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
577  ana->SetInputAODName (Form("Photon%s_Calo%d",containerName.Data(),caloType));
578 
579  // Set Histograms name tag, bins and ranges
580  ana->AddToHistogramsName(Form("AnaPhoton_Calo%d_",caloType));
581  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
582 
583  // Number of particle type MC histograms
584  ana->FillNOriginHistograms(7);
585  ana->FillNPrimaryHistograms(4);
586 
587  if(simulation) ana->SwitchOnDataMC();
588 
589  if(debugLevel > 0 ) ana->Print("");
590 
591  return ana;
592 }
593 
598  TString containerName, Bool_t simulation, Int_t year,
599  Int_t debugLevel, Int_t minCen)
600 {
601  AliAnaPi0 *ana = new AliAnaPi0();
602 
603  ana->SetDebug(debugLevel);//10 for lots of messages
604 
605  // Input delta AOD settings
606  ana->SetInputAODName(Form("Photon%s_Calo%d",containerName.Data(),caloType));
607 
608  // Calorimeter settings
609  ana->SetCalorimeter(calorimeter);
610 
611  ana->SwitchOnFiducialCut();
612  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
613  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
614  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
615 
617 
618  // Settings for pp collision mixing
619  ana->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
620 
621  // Cuts
622  if(calorimeter=="EMCAL")
623  {
624  ana->SetPairTimeCut(100);
625 
626  // Angle cut, avoid pairs with too large angle
627  ana->SwitchOnAngleSelection();
628  ana->SetAngleMaxCut(TMath::DegToRad()*80.); // EMCal: 4 SM in phi, 2 full SMs in eta
629  ana->SetAngleCut(0.016); // Minimum angle open, ~cell size
630  }
631 
632  ana->SetNPIDBits(1);
633  ana->SetNAsymCuts(1); // no asymmetry cut, previous studies showed small effect.
634  // In EMCAL assymetry cut prevents combination of assymetric decays which is the main source of pi0 at high E.
635 
636  if (collision == "pp" )
637  {
638  ana->SetNCentrBin(1);
639  ana->SetNZvertBin(10);
640  ana->SetNRPBin(1);
641  ana->SetNMaxEvMix(100);
642  ana->SetMinPt(0.5);
643  }
644  else if(collision =="PbPb")
645  {
646  ana->SetNCentrBin(10);
647  ana->SetNZvertBin(10);
648  ana->SetNRPBin(4);
649  ana->SetNMaxEvMix(10);
650  if(minCen >= 10) ana->SetNMaxEvMix(50);
651  if(minCen >= 50) ana->SetNMaxEvMix(100);
652  ana->SetMinPt(1.5);
654  }
655  else if(collision =="pPb")
656  {
657  ana->SetNCentrBin(1);
658  ana->SetNZvertBin(10);
659  ana->SetNRPBin(4);
660  ana->SetNMaxEvMix(100);
661  ana->SetMinPt(0.5);
663  }
664 
666  ana->SwitchOnSMCombinations();
669 
670  // Set Histograms name tag, bins and ranges
671 
672  ana->AddToHistogramsName(Form("AnaPi0_Calo%d_",caloType));
673  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
674 
675  if(simulation) ana->SwitchOnDataMC();
676 
677  if(debugLevel > 0) ana->Print("");
678 
679  return ana;
680 }
681 
686  Bool_t simulation, Int_t year, Int_t debugLevel)
687 {
689  ana->SetDebug(debugLevel); //10 for lots of messages
690 
691  // selection cuts
692 
693  ana->SetMinPt(0.5);
694  ana->SwitchOnFiducialCut();
695  Float_t etacut = 0.8;
696  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(etacut, 0, 360) ; //more restrictive cut in reader and after in isolation
697 
698  // histogram switchs
699 
701  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
702 
704 
705  // Input / output delta AOD settings
706 
707  ana->SetOutputAODName(Form("Hadron%s",containerName.Data()));
708  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
709  ana->SetInputAODName(Form("Hadron%s",containerName.Data()));
710 
711  //Set Histograms name tag, bins and ranges
712 
713  ana->AddToHistogramsName("AnaHadrons_");
714  SetHistoRangeAndNBins(ana->GetHistogramRanges(),"",kFALSE,collision,year); // see method below
715 
716  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 120) ;
717  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.*etacut, 1.*etacut, etacut*100) ;
718 
719  if(simulation) ana->SwitchOnDataMC();
720 
721  if(debugLevel > 0) ana->Print("");
722 
723  return ana;
724 }
725 
730  TString collision, TString containerName,
731  Bool_t simulation, Int_t year, Int_t debugLevel)
732 {
734  ana->SetDebug(debugLevel);
735 
736  //if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
737 
738  ana->SetMinPt(5);
739 
742 
744  ana->SwitchOnSSHistoFill();
745 
746  ana->SwitchOffLeadingOnly();
748 
751  ana->SwitchOffTMHistoFill();
752 
753  // MC
756 
758  ana->SwitchOnFiducialCut();
759 
760  if(calorimeter == "EMCAL" && caloType == 0)
761  {
762  // Avoid borders of EMCal
763  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
764  }
765  if(calorimeter == "EMCAL" && caloType == 1)
766  {
767  // Avoid borders of DCal
768  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 264, 316) ;
769  }
770 
771  AliCaloPID* caloPID = ana->GetCaloPID();
772  caloPID->SetEMCALDEtaCut(0.025);
773  caloPID->SetEMCALDPhiCut(0.030);
774 
776  ana->SwitchOffReIsolation();
777 
778  //
779  // Do settings for main isolation cut class
780  //
781  AliIsolationCut * ic = ana->GetIsolationCut();
782  ic->SetDebug(debugLevel);
785  if ( collision == "pp" || collision == "pPb" )
786  {
787  ic->SetPtThreshold(0.5);
788  ic->SetSumPtThreshold(2.0) ;
789  ic->SetConeSize(0.4);
790  }
791  if ( collision == "PbPb" )
792  {
793  ic->SetPtThreshold(3.);
794  ic->SetSumPtThreshold(3.0) ;
795  ic->SetConeSize(0.3);
796  }
797 
798  // Input / output delta AOD settings
799 
800  ana->SetInputAODName(Form("%s%s_Calo%d",particle.Data(),containerName.Data(),caloType));
801  ana->SetAODObjArrayName(Form("%sIso_%s_Calo%d",particle.Data(),containerName.Data(),caloType));
802 
803  // Set Histograms name tag, bins and ranges
804 
805  ana->AddToHistogramsName(Form("AnaIsol%s_Calo%d_",particle.Data(),caloType));
806  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
807 
808  if(simulation) ana->SwitchOnDataMC();
809 
810  if(debugLevel > 0) ana->Print("");
811 
812  return ana;
813 }
814 
819  TString collision, TString containerName,
820  Bool_t simulation, Int_t year, Int_t debugLevel, Int_t minCen)
821 {
823  ana->SetDebug(debugLevel);
824 
825  ana->SetTriggerPtRange(5,100);
826  ana->SetAssociatedPtRange(0.2,100);
827  //ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
828  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
829  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
831 
832  ana->SetNAssocPtBins(4);
833  ana->SetAssocPtBinLimit(0, 0.5) ;
834  ana->SetAssocPtBinLimit(1, 2) ;
835  ana->SetAssocPtBinLimit(2, 5) ;
836  ana->SetAssocPtBinLimit(3, 10) ;
837  ana->SetAssocPtBinLimit(4, 20) ;
838 
839  ana->SelectIsolated(kFALSE); // do correlation with isolated photons
840 
841  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
842 
843  ana->SwitchOffAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
844  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
845 
846  //ana->SwitchOnLeadHadronSelection();
847  //ana->SetLeadHadronPhiCut(TMath::DegToRad()*100., TMath::DegToRad()*260.);
848  //ana->SetLeadHadronPtCut(0.5, 100);
849 
850  // Mixing with own pool
851  ana->SwitchOffOwnMix();
852 
853  ana->SetNZvertBin(20);
855 
856  //if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
857 
858  if(collision=="pp")
859  {
860  ana->SetNMaxEvMix(100);
861  ana->SwitchOnTrackMultBins();
862  ana->SetNTrackMultBin(10); // same as SetNCentrBin(10);
863  ana->SetNRPBin(1);
864  }
865  else
866  {
867  ana->SetNMaxEvMix(10);
868  if(minCen >= 10) ana->SetNMaxEvMix(50);
869  if(minCen >= 50) ana->SetNMaxEvMix(100);
870  ana->SwitchOffTrackMultBins(); // centrality bins
871  ana->SetNCentrBin(10);
872  ana->SetNRPBin(3);
873  }
874 
875  // Input / output delta AOD settings
876 
877  ana->SetInputAODName(Form("%s%s_Calo%d",particle.Data(),containerName.Data(),caloType));
878  ana->SetAODObjArrayName(Form("%sHadronCorr_%s_Calo%d",particle.Data(),containerName.Data(),caloType));
879 
882  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
885 
886  // Underlying event
888  ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
889 
890  //Set Histograms name tag, bins and ranges
891 
892  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Calo%d_",particle.Data(),caloType));
893  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
894 
895  if(simulation) ana->SwitchOnDataMC();
896 
897  if(debugLevel > 0) ana->Print("");
898 
899  return ana;
900 }
901 
906  Bool_t simulation, Int_t year, Int_t debugLevel)
907 {
909  ana->SetDebug(debugLevel); //10 for lots of messages
910  ana->SetCalorimeter(calorimeter);
911 
912  //printf("QA: calorimeter %s, caloType %d, collision %s, simulation %d, fillCellTime %d, year %d, debugLevel %d\n",
913  // calorimeter.Data(),caloType,collision.Data(),simulation,fillCellTime,year,debugLevel);
914 
915  ana->SetTimeCut(-1e10,1e10); // Open time cut
916  ana->SetConstantTimeShift(615); // for MC and uncalibrated data, whenever there is time > 400 ns
917  ana->SetEMCALCellAmpMin(0.5);
918 
925  ana->SwitchOffStudyWeight();
927  ana->SwitchOffCorrelation();
930 
934 
935  ana->AddToHistogramsName("QA_Cell_"); //Begining of histograms name
936  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter, -1, collision,year); // see method below
937 
938 // ana->SwitchOnFiducialCut();
939 // if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
940 // else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
941 //
942 // ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
943 
944  //if(simulation) ana->SwitchOnDataMC();
945 
946  if(debugLevel > 0) ana->Print("");
947 
948  return ana;
949 }
950 
951 
956  TString collision, Int_t year)
957 {
958  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
959 
960  if(calorimeter=="EMCAL")
961  {
962  if ( year == 2010 )
963  {
964  histoRanges->SetHistoPhiRangeAndNBins(79*TMath::DegToRad(), 121*TMath::DegToRad(), 42) ;
965  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
966  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
967  }
968  else if ( year < 2014 )
969  {
970  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
971  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
972  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
973  }
974  else // Run2
975  {
976  if (caloType == 0)
977  histoRanges->SetHistoPhiRangeAndNBins(78 *TMath::DegToRad(), 189*TMath::DegToRad(), 111) ;
978  else if (caloType == 1)
979  histoRanges->SetHistoPhiRangeAndNBins(258*TMath::DegToRad(), 329*TMath::DegToRad(), 71) ;
980  else
981  histoRanges->SetHistoPhiRangeAndNBins(80 *TMath::DegToRad(), 327*TMath::DegToRad(), 247) ;
982 
983  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
984  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
985  }
986 
987  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
988  }
989  else
990  {
991  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
992  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
993  }
994 
995  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 2.9, 300);
996 
997  // Invariant mass histoRangeslysis
998  histoRanges->SetHistoMassRangeAndNBins(0., 0.8, 160) ;
999  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
1000  histoRanges->SetHistoOpeningAngleRangeAndNBins(0,0.7,50);
1001 
1002  // check if time calibration is on
1003  histoRanges->SetHistoTimeRangeAndNBins(-250.,250,250);
1004  histoRanges->SetHistoDiffTimeRangeAndNBins(-150, 150, 150);
1005 
1006  // track-cluster residuals
1007  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.05,0.05,100);
1008  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.05,0.05,100);
1009  histoRanges->SetHistodRRangeAndNBins(0.,0.05,50);//QA
1010 
1011  // QA, electron, charged
1012  histoRanges->SetHistoPOverERangeAndNBins(0, 2. ,100);
1013  histoRanges->SetHistodEdxRangeAndNBins (0.,200.,100);
1014 
1015  // QA
1016  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
1017  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,250);
1018  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
1019  histoRanges->SetHistoRRangeAndNBins(430,460,30);
1020  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,250);
1021  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,250);
1022 
1023  // QA, correlation
1024  if(collision=="PbPb")
1025  {
1026  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
1027  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
1028  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
1029  }
1030  else
1031  {
1032  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
1033  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
1034  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
1035  }
1036 
1037  // xE, zT
1038  histoRanges->SetHistoRatioRangeAndNBins(0.,1.2.,120);
1039  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,100);
1040 
1041  // Isolation
1042  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 100);
1043  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 100);
1044  if(collision.Contains("pPb"))
1045  histoRanges->SetHistoPtSumRangeAndNBins (0, 200, 100);
1046  else if(collision.Contains("PbPb"))
1047  histoRanges->SetHistoPtSumRangeAndNBins (0, 500, 100);
1048 }
1049 
1064 Bool_t CheckAnalysisTrigger(Bool_t simulation, TString trigger, TString period, Int_t year)
1065 {
1066  // Accept directly all MB kind of events
1067  //
1068  if ( trigger.Contains("default") || trigger.Contains("INT") || trigger.Contains("MB") ) return kTRUE;
1069 
1070  // MC analysis has no trigger dependence, execute only for the default case
1071  //
1072  if ( simulation )
1073  {
1074  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggered events not checked in simulation, SKIP trigger %s! \n", trigger.Data());
1075  return kFALSE;
1076  }
1077 
1078  // Triggers introduced in 2011
1079  //
1080  if ( year < 2011 && ( trigger.Contains("EMCAL") || trigger.Contains("DCAL") ) )
1081  {
1082  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events for year < 2011, SKIP trigger %s! \n", trigger.Data());
1083  return kFALSE;
1084  }
1085 
1086  // DCal Triggers introduced in 2015
1087  //
1088  if ( year < 2014 && trigger.Contains("DCAL") )
1089  {
1090  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events by DCal for year < 2014, SKIP trigger %s! \n", trigger.Data());
1091  return kFALSE;
1092  }
1093 
1094  // EG2 trigger only activated from 2013
1095  //
1096  if ( year < 2013 && trigger.Contains("L2") )
1097  {
1098  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : EG2 trigger not available for year < 2012, SKIP %s in %s \n", trigger.Data(),period.Data());
1099  return kFALSE;
1100  }
1101 
1102  // Triggers only activated in 2013 from LHC13d for physics (it might be there are in b and c but not taking data)
1103  //
1104  if ( year == 2013 && trigger.Contains("L") && ( period.Contains("b") || period.Contains("c") ) )
1105  {
1106  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggers not available for year 2013 in period %s, SKIP %s in %s \n",period.Data(), trigger.Data());
1107  return kFALSE;
1108  }
1109 
1110  // DCal Triggers introduced in 2015
1111  //
1112  if ( year < 2014 && ( trigger.Contains("DCAL") ) )
1113  {
1114  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events by DCal for year < 2014, SKIP trigger %s! \n", trigger.Data());
1115  return kFALSE;
1116  }
1117 
1118  // L0 trigger used for periods below LHC11e?
1119  //
1120  if ( period == "LHC11h" && trigger.Contains("EMCAL_L0") )
1121  {
1122  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No EMCAL_L0 triggered events by EMCal for period LHC11h, SKIP trigger %s! \n", trigger.Data());
1123  return kFALSE;
1124  }
1125 
1126  // L1 trigger not used until LHC11e? period, what about LHC11f?
1127  //
1128  if ( period.Contains("LHC11") && period != "LHC11h" && trigger.Contains("EMCAL_L1") )
1129  {
1130  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1131  return kFALSE;
1132  }
1133 
1134  // L1 trigger not used again until LHC12c period
1135  //
1136  if ( ( period == "LHC12a" || period == "LHC12b" ) && trigger.Contains("EMCAL_L1") )
1137  {
1138  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1139  return kFALSE;
1140  }
1141 
1142  // Run2: No trigger used again until LHC15i period
1143  //
1144  if ( year == 2015 && ( period == "LHC15h" || period == "LHC15g" || period == "LHC15f" || period == "LHC15e" ||
1145  period == "LHC15d" || period == "LHC15c" || period == "LHC15b" || period == "LHC15a" ) )
1146  {
1147  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1148  return kFALSE;
1149  }
1150 
1151  // Run2: L1 trigger not used again until LHC15o period
1152  //
1153  if ( year == 2015 && period != "LHC15o" && !trigger.Contains("L0") )
1154  {
1155  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1156  return kFALSE;
1157  }
1158 
1159  // Run2: L1 trigger not used again until LHC15o period
1160  //
1161  if ( year == 2015 && period == "LHC15o" && ( trigger.Contains("L0") || trigger.Contains("L2") ) )
1162  {
1163  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1164  return kFALSE;
1165  }
1166 
1167 
1168  return kTRUE;
1169 
1170 }
void SetPtThreshold(Float_t pt)
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetNEBinCuts(Int_t nb)
Definition: AliAnaPhoton.h:137
void SetAngleCut(Float_t a)
Definition: AliAnaPi0.h:77
void SetNumberOfCellsFromPHOSBorder(Int_t n)
AliAnaPhoton * ConfigurePhotonAnalysis(TString calorimeter, Bool_t caloType, TString collision, TString containerName, Bool_t simulation, Int_t year, Int_t debugLevel)
void SetTimeCut(Double_t min, Double_t max)
AliAnaParticleIsolation * ConfigureIsolationAnalysis(TString particle, TString calorimeter, Bool_t caloType, TString collision, TString containerName, Bool_t simulation, Int_t year, Int_t debugLevel)
void ana(Int_t mode=mGRID)
Definition: ana.C:87
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 ConfigureEventTriggerCaloTrackCorr(AliAnalysisTaskCaloTrackCorrelation *task, TString trigger, Int_t year)
void SetFirstSuperModuleUsed(Int_t first)
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:131
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:93
void SetAssociatedPtRange(Float_t min, Float_t max)
Class with utils to perform Isolation Cuts.
void SetNPIDBits(Int_t s)
Definition: AliAnaPi0.h:119
virtual void SwitchOnAODHybridTrackSelection()
virtual void SetCentralityBin(Int_t min, Int_t max)
Int_t GetLastSuperModuleUsed() const
AliEMCALRecoUtils * GetEMCALRecoUtils() const
void SetLastSuperModuleUsed(Int_t last)
void SetConeSize(Float_t r)
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:142
void SetCTSPtMax(Float_t pt)
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
Selected photon clusters invariant mass analysis.
Definition: AliAnaPi0.h:39
void SetDebug(Int_t d)
virtual void SetCalorimeter(TString &calo)
Set the calorimeter for the analysis. A string.
virtual void SetInputAODName(TString name)
virtual void SetTrackComplementaryCuts(AliESDtrackCuts *)
virtual AliIsolationCut * GetIsolationCut()
void SetEMCALEMin(Float_t en)
void SwitchOnSMCombinations()
Definition: AliAnaPi0.h:90
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:114
void AddAnalysis(TObject *ana, Int_t n)
Add analysis depending on AliAnaCaloTrackCorrBaseClass to list.
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
void SwitchOnAngleSelection()
Definition: AliAnaPi0.h:71
virtual void SetOutputAODClassName(TString name)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetSumPtThreshold(Float_t s)
void SwitchOffMultipleCutAnalysis()
Definition: AliAnaPi0.h:111
Class for the Calorimeter QA analysis.
AliCaloTrackReader * ConfigureReader(TString inputDataType, TString collision, Bool_t calibrate, Int_t minTime, Int_t maxTime, Int_t minCen, Int_t maxCen, Bool_t simulation, Int_t year, Int_t debugLevel)
void SetHistodRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetLocalMaximaCutEDiff(Float_t c)
void SwitchOnMCCrossSectionHistoFill()
Definition: AliAnaWeights.h:88
void SetNumberOfCellsFromEMCALBorder(Int_t n)
void SetNCellCut(Int_t n)
Definition: AliAnaPhoton.h:122
void SetAngleMaxCut(Float_t a)
Definition: AliAnaPi0.h:78
const TString calorimeter
Definition: anaM.C:36
AliCalorimeterUtils * ConfigureCaloUtils(TString calorimeter, TString trigger, Bool_t simulation, Bool_t calibrate, Int_t year, Int_t debugLevel)
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)
void SetPHOSRCut(Float_t rcut)
Definition: AliCaloPID.h:213
void SetEMCALDPhiCut(Float_t dcut)
Definition: AliCaloPID.h:221
virtual void SetOutputAODName(TString name)
void SwitchOffRecalculateClusterTrackMatching()
void SetICMethod(Int_t i)
AliAnaCalorimeterQA * ConfigureQAAnalysis(TString calorimeter, TString collision, Bool_t simulation, Int_t year, Int_t debugLevel)
Bool_t kMC
Definition: ana.C:63
void SwitchOffVertexBCEventSelection()
Correlate trigger particles (photon, pi0, tracks) and charged tracks: Azimuthal correlations, xE distributions.
virtual void SetNTrackMultBin(Int_t n=1)
Number of bins in centrality.
void DoEMCALFiducialCut(Bool_t b)
void SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
void SetUeDeltaPhiCutRange(Double_t uephimin, Double_t uephimax)
AliAnaPi0 * ConfigurePi0Analysis(TString calorimeter, Bool_t caloType, TString collision, TString containerName, Bool_t simulation, Int_t year, Int_t debugLevel, Int_t minCen)
void SetHistoPtInConeRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetHistoPOverERangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual AliFiducialCut * GetFiducialCut()
void SwitchOffFillAngleHisto()
Definition: AliAnaPi0.h:81
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()
void SwitchOnDataControlHistograms(Int_t lev=1)
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
float Float_t
Definition: External.C:68
void SetTrackStatus(ULong_t bit)
Filter EMCal/PHOS clusters for photon analysis.
Definition: AliAnaPhoton.h:33
void SetHistoTrackResidualPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnUEBandSubtractionHistoFill(Int_t lev=1)
void SwitchOffFillAllTrackMatchingHistogram()
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
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 SetEMCALClusterListName(TString &name)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Definition: AliAnaPi0.cxx:2521
Int_t GetNumberOfSuperModulesUsed() const
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPhoton.h:117
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetConstantTimeShift(Float_t shift)
AliAnaParticleHadronCorrelation * ConfigureHadronCorrelationAnalysis(TString particle, TString calorimeter, Bool_t caloType, TString collision, TString containerName, Bool_t simulation, Int_t year, Int_t debugLevel, Int_t minCen)
virtual void SetZvertexCut(Float_t zcut=10.)
void SetHistoRangeAndNBins(AliHistogramRanges *histoRanges, TString calorimeter, Bool_t caloType, TString collision, Int_t year)
void SetNumberOfSuperModulesUsed(Int_t nSM)
Class containing more common histogram axis types.
void SetEMCALLambda0CutMax(Float_t lcut)
Definition: AliCaloPID.h:202
virtual void SwitchOnAliCentrality()
virtual void SetNCentrBin(Int_t n=1)
Number of bins in reaction plain.
Class for event, clusters and tracks filtering and preparation for the ESD analysis.
void SetNAsymCuts(Int_t s)
Definition: AliAnaPi0.h:117
void SetPHOSEMin(Float_t en)
void SetReader(AliCaloTrackReader *re)
virtual void SetNRPBin(Int_t n=1)
Number of bins for vertex position.
void SetHistoNClustersRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetPHOSDispersionCut(Float_t dcut)
Definition: AliCaloPID.h:208
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, Int_t debug=-1)
virtual void SetTrackCuts(AliESDtrackCuts *)
void SetEMCALCellAmpMin(Float_t amp)
Track selection for correlation analysis.
void SetHistoOpeningAngleRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void SwitchOffFiducialCut()
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 SetEBinCutsAt(Int_t i, Float_t va)
Definition: AliAnaPhoton.h:138
void SetTrackTimeCut(Double_t a, Double_t b)
void SetEMCALTimeCut(Double_t a, Double_t b)
void SwitchOnAcceptanceHistoPerEBin()
Definition: AliAnaPhoton.h:134
void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0MultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetAODObjArrayName(TString name)
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
void SwitchOffLoadOwnPHOSGeometryMatrices()
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 SetNAssocPtBins(Int_t n)
Set number of associated charged (neutral) hadrons pT bins.
Class for PID selection with calorimeters.
Definition: AliCaloPID.h:53
void FillNOriginHistograms(Int_t n)
Definition: AliAnaPhoton.h:140
virtual void SetNMaxEvMix(Int_t n=20)
Number of bins in track multiplicity.
void SetHistoShowerShapeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
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.
AliCaloTrackReader * GetReader()
Int_t GetFirstSuperModuleUsed() const
AliAnaWeights * GetWeightUtils()
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)
Bool_t CheckAnalysisTrigger(Bool_t simulation, TString trigger, TString period, Int_t year)
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:218
void SwitchOffUseParametrizedTimeCut()
void SwitchOffFillOriginHisto()
Definition: AliAnaPi0.h:136
void SetLocalMaximaCutE(Float_t cut)
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
AliAnalysisTaskCaloTrackCorrelation * AddTaskPi0IMGammaCorrQA(const TString calorimeter="EMCAL", Bool_t simulation=kFALSE, TString collision="pp", TString period="", const Bool_t qaan=kTRUE, const Bool_t hadronan=kTRUE, const Bool_t calibrate=kFALSE, const Int_t minTime=-1000, const Int_t maxTime=1000, const Int_t minCen=-1, const Int_t maxCen=-1, const Int_t debugLevel=-1, const char *suffix="default")
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:125
void SetAssocPtBinLimit(Int_t ibin, Float_t pt)
Set the list of pT limits for the of associated charged (neutral) hadrons.
void SetConstantTimeShift(Float_t shift)
Definition: AliAnaPhoton.h:101
void SetCaloUtils(AliCalorimeterUtils *cu)
Steering class of package CaloTrackCorrelartions.
AliAnaChargedParticles * ConfigureChargedAnalysis(TString collision, TString containerName, Bool_t simulation, Int_t year, Int_t debugLevel)
void SetTriggerPtRange(Float_t min, Float_t max)