AliPhysics  cc1c0ba (cc1c0ba)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AddTaskPi0IMGammaCorrQA.C
Go to the documentation of this file.
1 
17 
18 // Uncomment for compilation
20 //
21 //#if !defined(__CINT__) || defined(__MAKECINT__)
22 //
23 //#include <TString.h>
24 //#include <TROOT.h>
25 //
26 //#include "AliLog.h"
27 //#include "AliAnalysisTaskCaloTrackCorrelation.h"
28 //#include "AliCaloTrackESDReader.h"
29 //#include "AliCaloTrackAODReader.h"
30 //#include "AliCalorimeterUtils.h"
31 //#include "AliAnaPhoton.h"
32 //#include "AliAnaPi0.h"
33 //#include "AliHistogramRanges.h"
34 //#include "AliAnaParticleIsolation.h"
35 //#include "AliAnaParticleHadronCorrelation.h"
36 //#include "AliAnaChargedParticles.h"
37 //#include "AliAnaCalorimeterQA.h"
38 //#include "AliAnaGeneratorKine.h"
39 //#include "AliAnalysisTaskCaloTrackCorrelation.h"
40 //#include "AliAnaCaloTrackCorrMaker.h"
41 //#include "AliAnalysisManager.h"
42 //#include "AliInputEventHandler.h"
43 //#include "AliVTrack.h"
44 //#include "ConfigureAndGetEventTriggerMaskAndCaloTriggerString.C"
45 //#include "AliESDtrackCuts.h"
46 //#include "CreateTrackCutsPWGJE.C"
47 //#include "ConfigureEMCALRecoUtils.C"
48 //#endif
49 //
51 //
52 //AliCaloTrackReader * ConfigureReader (TString inputDataType, TString collision, Bool_t calibrate,
53 // Int_t minTime, Int_t maxTime,
54 // Int_t minCen, Int_t maxCen,
55 // Bool_t simulation, Int_t year, Int_t debugLevel);
56 //
57 //AliCalorimeterUtils * ConfigureCaloUtils (TString calorimeter, TString trigger,
58 // Bool_t simulation , Bool_t calibrate,
59 // Int_t year , Int_t debugLevel );
60 //
61 //AliAnaPhoton * ConfigurePhotonAnalysis(TString calorimeter, Bool_t caloType, TString collision,
62 // TString containerName, Bool_t simulation,
63 // Int_t year, Int_t debugLevel);
64 //
65 //AliAnaPi0 * ConfigurePi0Analysis (TString calorimeter, Bool_t caloType, TString collision,
66 // TString containerName, Bool_t simulation, Int_t year,
67 // Int_t debugLevel, Int_t minCen);
68 //
69 //AliAnaChargedParticles * ConfigureChargedAnalysis
70 // (TString collision , TString containerName,
71 // Bool_t simulation, Int_t year, Int_t debugLevel);
72 //
73 //AliAnaParticleIsolation* ConfigureIsolationAnalysis
74 // (TString particle , TString calorimeter , Bool_t caloType,
75 // TString collision , TString containerName,
76 // Bool_t simulation, Int_t year , Int_t debugLevel);
77 //
78 //AliAnaParticleHadronCorrelation * ConfigureHadronCorrelationAnalysis
79 // (TString particle , TString calorimeter , Bool_t caloType,
80 // TString collision , TString containerName,
81 // Bool_t simulation , Int_t year , Int_t debugLevel,
82 // Int_t minCen);
83 //
84 //AliAnaCalorimeterQA * ConfigureQAAnalysis (TString calorimeter, TString collision,
85 // Bool_t simulation , Int_t year, Int_t debugLevel);
86 //
87 //void SetHistoRangeAndNBins (AliHistogramRanges* histoRanges,
88 // TString calorimeter, Bool_t caloType,
89 // TString collision, Int_t year );
90 //
91 //Bool_t CheckAnalysisTrigger (Bool_t simulation, TString trigger,
92 // TString period , Int_t year );
93 //
95 //const char* kPeriod = "LHC16t"; // gSystem->Getenv("ALIEN_JDL_LPMPRODUCTIONTAG");
96 //const char* kColType = "PbPb"; // gSystem->Getenv("ALIEN_JDL_LPMINTERACTIONTYPE"); //either "pp", "pPb" or "PbPb"
97 //const char* kProdType = "MC"; // gSystem->Getenv("ALIEN_JDL_LPMPRODUCTIONTYPE");
98 //Bool_t kMC = kFALSE;
99 
120  Bool_t simulation = kFALSE,
121  TString collision = "pp",
122  TString period = "",
123  const Bool_t qaan = kTRUE,
124  const Bool_t hadronan = kTRUE,
125  const Bool_t calibrate = kFALSE,
126  const Int_t minTime = -1000,
127  const Int_t maxTime = 1000,
128  const Int_t minCen = -1,
129  const Int_t maxCen = -1,
130  const Int_t debugLevel = -1,
131  const char * suffix = "default"
132  )
133 {
134  // Check the global variables, and reset the provided ones if empty.
135  //
136  TString trigger = suffix;
137  if(collision=="")
138  {
139 
140  if (!strcmp(kColType, "PbPb")) collision = "PbPb";
141  else if (!strcmp(kColType, "AA" )) collision = "PbPb";
142  else if (!strcmp(kColType, "pA" )) collision = "pPb";
143  else if (!strcmp(kColType, "Ap" )) collision = "pPb";
144  else if (!strcmp(kColType, "pPb" )) collision = "pPb";
145  else if (!strcmp(kColType, "Pbp" )) collision = "pPb";
146  else if (!strcmp(kColType, "pp" )) collision = "pp" ;
147 
148  simulation = kMC;
149  period = kPeriod;
150 
151  // print check on global settings once
152  if(trigger.Contains("default") ||trigger.Contains("INT") || trigger.Contains("MB") )
153  printf("AddTaskPi0IMGammaCorrQA - Get the data features from global parameters: col <%s>, period <%s>, mc <%d> \n",
154  kColType,kPeriod,kMC);
155  }
156 
157  Int_t year = 2017;
158  if ( period!="" )
159  {
160  if (period.Contains("16")) year = 2016;
161  else if(period.Contains("15")) year = 2015;
162  else if(period.Contains("13")) year = 2013;
163  else if(period.Contains("12")) year = 2012;
164  else if(period.Contains("11")) year = 2011;
165  else if(period.Contains("10")) year = 2010;
166  }
167 
168  // Get the pointer to the existing analysis manager via the static access method.
169  //
170  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
171  if (!mgr)
172  {
173  ::Error("AddTaskPi0IMGammaCorrQA", "No analysis manager to connect to.");
174  return NULL;
175  }
176 
177  // Check the analysis type using the event handlers connected to the analysis manager.
178  //
179  if (!mgr->GetInputEventHandler())
180  {
181  ::Error("AddTaskPi0IMGammaCorrQA", "This task requires an input event handler");
182  return NULL;
183  }
184 
185  //
186  // Create task
187  //
188 
189  // Name for containers
190  TString containerName = Form("%s_Trig_%s",calorimeter.Data(), trigger.Data());
191 
192  if(collision!="pp" && maxCen>=0) containerName+=Form("Cen%d_%d",minCen,maxCen);
193 
194  TString taskName =Form("Pi0IM_GammaTrackCorr_%s",containerName.Data());
195 
197  //task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
198  task->SetDebugLevel(debugLevel);
199  //task->SetBranches("ESD:AliESDRun.,AliESDHeader");
200  //task->SetBranches("AOD:header,tracks,vertices,emcalCells,caloClusters");
201 
202  //
203  // Init main analysis maker and pass it to the task
205  task->SetAnalysisMaker(maker);
206 
207  //
208  // Pass the task to the analysis manager
209  mgr->AddTask(task);
210 
211  //
212  // Create containers
213  TString outputfile = AliAnalysisManager::GetCommonFileName();
214 
215  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(trigger, TList::Class(),
216  AliAnalysisManager::kOutputContainer,
217  Form("%s:%s",outputfile.Data(),Form("Pi0IM_GammaTrackCorr_%s",calorimeter.Data())));
218 
219  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",trigger.Data()), TList::Class(),
220  AliAnalysisManager::kParamContainer,
221  Form("%s_Parameters.root",Form("Pi0IM_GammaTrackCorr_%s",calorimeter.Data())));
222 
223  // Create ONLY the output containers for the data produced by the task.
224  // Get and connect other common input/output containers via the manager as below
225  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
226  mgr->ConnectOutput (task, 1, cout_pc);
227  mgr->ConnectOutput (task, 2, cout_cuts);
228  //==============================================================================
229 
230  // Do not configure the wagon for certain analysis combinations
231  // But create the task so that the sub-wagon train can run
232  //
233  Bool_t doAnalysis = CheckAnalysisTrigger(simulation,trigger,period,year);
234  if(!doAnalysis)
235  {
236  maker->SwitchOffProcessEvent();
237  return task;
238  }
239 
240  // #### Start analysis configuration ####
241  //
242  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
243 
244  // Make sure the B field is enabled for track selection, some cuts need it
245  //
246  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
247 
248  // Print settings to check all is as expected
249  //
250  printf("AddTaskPi0IMGammaCorrQA - Task NAME: %s \n",taskName.Data());
251 
252  printf("AddTaskPi0IMGammaCorrQA - Settings: data <%s>, calo <%s>, MC <%d>, collision <%s>, trigger <%s>, period <%s>, year <%d>,\n"
253  "\t \t \t CaloQA on <%d>, Track QA on <%d>, Make corrections <%d>, %d < time < %d, %d < cen < %d, debug level <%d> \n",
254  inputDataType.Data(), calorimeter.Data(),simulation, collision.Data(),trigger.Data(), period.Data(), year,
255  qaan , hadronan, calibrate, minTime, maxTime, minCen, maxCen, debugLevel);
256  //
257 
258  // General frame setting and configuration
259  maker->SetReader ( ConfigureReader (inputDataType,collision,calibrate,minTime,maxTime,minCen,maxCen,simulation,year,debugLevel) );
260  if(hadronan)maker->GetReader()->SwitchOnCTS();
261 
262  maker->SetCaloUtils( ConfigureCaloUtils(calorimeter,trigger,simulation,calibrate,year,debugLevel) );
263 
264  // Analysis tasks setting and configuration
265  Int_t n = 0;//Analysis number, order is important
266 
267  // Cell QA
268  if(qaan) maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,collision,simulation,year,debugLevel),n++);
269 
270  // Analysis with EMCal trigger or MB
271  if ( !trigger.Contains("DCAL") )
272  {
273  // Cluster selection
274  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,0,collision,containerName,simulation,year,debugLevel) ,n++);
275  // Previous cluster invariant mass
276  maker->AddAnalysis(ConfigurePi0Analysis (calorimeter,0,collision,containerName,simulation,year,debugLevel,minCen),n++);
277  if(hadronan)
278  {
279  // Isolation of selected clusters by AliAnaPhoton
280  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",calorimeter,0,collision,containerName,simulation,year,debugLevel), n++);
281  // Selected clusters-track correlation
282  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,0,collision,containerName,simulation,year,debugLevel,minCen), n++);
283  }
284  }
285 
286  // Analysis with DCal trigger or MB
287  if(year > 2014 && calorimeter=="EMCAL" && !trigger.Contains("EMCAL"))
288  {
289  // Cluster selection
290  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,1,collision,containerName,simulation,year,debugLevel) , n++);
291  // Previous cluster invariant mass
292  maker->AddAnalysis(ConfigurePi0Analysis (calorimeter,1,collision,containerName,simulation,year,debugLevel,minCen),n++);
293  if(hadronan)
294  {
295  // Isolation of selected clusters by AliAnaPhoton
296  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",calorimeter,1,collision,containerName,simulation,year,debugLevel), n++);
297  // Selected clusters-track correlation
298  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,1,collision,containerName,simulation,year,debugLevel,minCen), n++);
299  }
300  }
301 
302  // Charged tracks plots, any trigger
303  if(hadronan)
304  maker->AddAnalysis(ConfigureChargedAnalysis(collision,containerName,simulation,year,debugLevel), n++);
305 
306  if(simulation)
307  {
308  // Calculate the cross section weights, apply them to all histograms
309  // and fill xsec and trial histo. Sumw2 must be activated.
310  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionCalculation();
311  //maker->SwitchOnSumw2Histograms();
312 
313  // For recent productions where the cross sections and trials are not stored in separate file
314  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionFromEventHeader() ;
315 
316  // Just fill cross section and trials histograms.
318 
319  // Add control histogram with pT hard to control aplication of weights
320  maker->SwitchOnPtHardHistogram();
321  }
322 
323  //
324  // Select events trigger depending on trigger
325  //
326  if(!simulation)
327  {
328  gROOT->LoadMacro("$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/ConfigureAndGetEventTriggerMaskAndCaloTriggerString.C");
329  TString caloTriggerString = "";
330  UInt_t mask = ConfigureAndGetEventTriggerMaskAndCaloTriggerString(trigger, year, caloTriggerString);
331 
332  task ->SelectCollisionCandidates( mask );
333  maker->GetReader()->SetFiredTriggerClassName(caloTriggerString);
334  printf("AddTaskPi0IMGammaCorrQA - Trigger Mask %d, caloTriggerString <%s>\n", mask, caloTriggerString.Data());
335  }
336 
337  //
338  // Final maker settings
339  //
340  maker->SetAnaDebug(debugLevel) ;
341  maker->SwitchOnHistogramsMaker() ;
342  maker->SwitchOnAODsMaker() ;
344 
345  if(debugLevel > 0) maker->Print("");
346 
347  return task;
348 }
349 
353 AliCaloTrackReader * ConfigureReader(TString inputDataType, TString collision, Bool_t calibrate,
354  Int_t minTime, Int_t maxTime,
355  Int_t minCen, Int_t maxCen,
356  Bool_t simulation, Int_t year, Int_t debugLevel)
357 {
358  AliCaloTrackReader * reader = 0;
359  if (inputDataType=="AOD")
360  reader = new AliCaloTrackAODReader();
361  else if(inputDataType=="ESD")
362  reader = new AliCaloTrackESDReader();
363  else
364  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known input Data=%s\n",
365  inputDataType.Data());
366 
367  reader->SetDebug(debugLevel);//10 for lots of messages
368 
369  //------------------------
370  // Detector input filling
371  //------------------------
372 
373  //Min cluster/track E
374  reader->SetEMCALEMin(0.3);
375  reader->SetEMCALEMax(1000);
376  reader->SetPHOSEMin(0.3);
377  reader->SetPHOSEMax(1000);
378  reader->SetCTSPtMin(0.2);
379  reader->SetCTSPtMax(1000);
380 
381  // Time cut
383 
384  if(calibrate)
385  {
386  reader->SwitchOnUseEMCALTimeCut() ;
387  reader->SetEMCALTimeCut(minTime,maxTime);
388  }
389 
390  reader->SwitchOffUseTrackTimeCut();
391  reader->SetTrackTimeCut(-1e10,1e10);
392 
393  reader->SwitchOffFiducialCut();
394 
395  // Tracks
396  reader->SwitchOffCTS();
400  reader->SwitchOffUseTrackDCACut();
401  //reader->SetTrackDCACut(0,0.0105);
402  //reader->SetTrackDCACut(1,0.035);
403  //reader->SetTrackDCACut(2,1.1);
404 
405  if(inputDataType=="ESD")
406  {
407  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
408  if(year > 2010)
409  {
410  //Hybrids 2011
411  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
412  reader->SetTrackCuts(esdTrackCuts);
413  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
414  reader->SetTrackComplementaryCuts(esdTrackCuts2);
415  }
416  else
417  {
418  //Hybrids 2010
419  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
420  reader->SetTrackCuts(esdTrackCuts);
421  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
422  reader->SetTrackComplementaryCuts(esdTrackCuts2);
423  }
424  }
425  else if(inputDataType=="AOD")
426  {
427  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
428  reader->SetTrackStatus(AliVTrack::kITSrefit);
429  }
430 
431  // Calorimeter
432 
433  //reader->SetEMCALClusterListName("");
434 
435  if(calibrate && !simulation) reader->SwitchOnClusterRecalculation();
436  else reader->SwitchOffClusterRecalculation();
437 
438  reader->SwitchOnEMCALCells();
439  reader->SwitchOnEMCAL();
440 
441  reader->SwitchOffPHOSCells();
442  reader->SwitchOffPHOS();
443 
444  //-----------------
445  // Event selection
446  //-----------------
447 
448  reader->SwitchOnEventTriggerAtSE();
449 
450  reader->SetZvertexCut(10.);
451  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
452  reader->SwitchOffPileUpEventRejection(); // remove pileup
453  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
454 
455  if(collision=="PbPb")
456  {
457  if(year < 2014) reader->SwitchOnAliCentrality();
458  reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
459  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
460  }
461 
462  if(debugLevel > 0) reader->Print("");
463 
464  return reader;
465 }
466 
471  Bool_t simulation , Bool_t calibrate,
472  Int_t year , Int_t debugLevel)
473 {
475  cu->SetDebug(debugLevel);
476 
477  // Remove clusters close to borders, at least max energy cell is 1 cell away
480 
481  // Search of local maxima in cluster
482  cu->SetLocalMaximaCutE(0.1);
483  cu->SetLocalMaximaCutEDiff(0.03);
484 
485  //cu->SwitchOffClusterPlot();
487 
489 
490  //EMCAL settings
491 
492  if(!simulation)
494 
495  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
496  cu->SwitchOffRecalibration(); // Check the reader if it is taken into account during filtering
498 
500 
501  Bool_t bExotic = kTRUE;
502  Bool_t bNonLin = kFALSE;
503  Bool_t bBadMap = kTRUE;
504 
505  Bool_t bEnCalib = kFALSE;
506  Bool_t bTiCalib = kFALSE;
507 
508  if(calibrate && !simulation)
509  {
510  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
513 
514  bEnCalib = kTRUE;
515  bTiCalib = kTRUE;
516  }
517 
518  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
520  simulation,
521  bExotic,
522  bNonLin,
523  bEnCalib,
524  bBadMap,
525  bTiCalib,
526  debugLevel
527  );
528  //recou->SetExoticCellDiffTimeCut(50.);
529 
530  if(calorimeter=="PHOS")
531  {
532  if(year < 2014) cu->SetNumberOfSuperModulesUsed(3);
533  else cu->SetNumberOfSuperModulesUsed(4);
534  }
535  else
536  {
537  Int_t nSM = 20;
538  Int_t lastEMC = 11;
539  if (year == 2010) { nSM = 4; lastEMC = 3; }// EMCAL first year
540  else if (year < 2014) { nSM = 10; lastEMC = 9; }// EMCAL active 2011-2013
541 
543 
544  if (trigger.Contains("EMCAL"))
545  {
546  cu->SetFirstSuperModuleUsed( 0);
547  cu->SetLastSuperModuleUsed (lastEMC);
548  }
549  else if (trigger.Contains("DCAL"))
550  {
551  cu->SetFirstSuperModuleUsed(12);
552  cu->SetLastSuperModuleUsed (19);
553  }
554  else
555  {
558  }
559 
560  printf("AddTaskPi0IMGammaCorrQA - CalorimeterUtils: nSM %d, first %d, last %d\n",
562  }
563 
564  // PHOS
566 
567  if(debugLevel > 0) cu->Print("");
568 
569  return cu;
570 }
571 
577  TString containerName, Bool_t simulation,
578  Int_t year, Int_t debugLevel)
579 {
580  AliAnaPhoton *ana = new AliAnaPhoton();
581  ana->SetDebug(debugLevel); //10 for lots of messages
582 
583  // cluster selection cuts
584 
585  ana->SwitchOnFiducialCut();
586  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
587  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
588  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
589 
590  ana->SetCalorimeter(calorimeter);
591 
592  if(calorimeter == "PHOS")
593  {
594  ana->SetNCellCut(2);// At least 3 cells
595  ana->SetMinPt(0.5);
596  ana->SetMinDistanceToBadChannel(2, 4, 5);
597  ana->SetTimeCut(-1e10,1e10); // open cut
598  }
599  else
600  {
601  // EMCAL
602  ana->SetConstantTimeShift(615); // for MC and uncalibrated data, whenever there is time > 400 ns
603  ana->SetNCellCut(1);// At least 2 cells
604  ana->SetMinEnergy(0.5); // avoid mip peak at E = 260 MeV
605  ana->SetMaxEnergy(1000);
606  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
607  // restrict to less than 100 ns when time calibration is on
608  ana->SetMinDistanceToBadChannel(2, 4, 6);
609  // Not useful if M02 cut is already strong
610  ana->SetNLMCut(1, 2) ;
611  }
612 
614  ana->SwitchOnTMHistoFill() ;
615 
617  ana->SetNEBinCuts(2);
618  // Set the acceptance E bins depending on the trigger and their likely values
619  if(containerName.Contains("efault") || containerName.Contains("INT") || containerName.Contains("MB"))
620  {
621  ana->SetEBinCutsAt(0, 0.5);
622  ana->SetEBinCutsAt(1, 3.0);
623  ana->SetEBinCutsAt(2, 100.0);
624  }
625  else if(containerName.Contains("L0"))
626  {
627  ana->SetEBinCutsAt(0, 2.0);
628  ana->SetEBinCutsAt(1, 5.0);
629  ana->SetEBinCutsAt(2, 100.0);
630  }
631  else
632  {
633  ana->SetEBinCutsAt(0, 5.0);
634  ana->SetEBinCutsAt(1, 12.0);
635  ana->SetEBinCutsAt(2, 100.0);
636  }
637 
638  //PID cuts (shower shape)
639  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
640  AliCaloPID* caloPID = ana->GetCaloPID();
641  //Not used in bayesian
642 
643  //EMCAL
644  caloPID->SetEMCALLambda0CutMax(0.4); // Rather open
645  caloPID->SetEMCALLambda0CutMin(0.10);
646 
647  caloPID->SetEMCALDEtaCut(0.025);
648  caloPID->SetEMCALDPhiCut(0.030);
649 
650  //PHOS
651  caloPID->SetPHOSDispersionCut(2.5);
652  caloPID->SetPHOSRCut(2.);
653 
654  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
655  //if(!simulation)ana->SwitchOnFillPileUpHistograms();
656 
657  if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
658 
659  // Input / output delta AOD settings
660  ana->SetOutputAODName(Form("Photon%s_Calo%d",containerName.Data(),caloType));
661  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
662  ana->SetInputAODName (Form("Photon%s_Calo%d",containerName.Data(),caloType));
663 
664  // Set Histograms name tag, bins and ranges
665  ana->AddToHistogramsName(Form("AnaPhoton_Calo%d_",caloType));
666  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
667 
668  // Number of particle type MC histograms
669  ana->FillNOriginHistograms(7);
670  ana->FillNPrimaryHistograms(4);
671 
672  if(simulation) ana->SwitchOnDataMC();
673 
674  if(debugLevel > 0 ) ana->Print("");
675 
676  return ana;
677 }
678 
683  TString containerName, Bool_t simulation, Int_t year,
684  Int_t debugLevel , Int_t minCen)
685 {
686  AliAnaPi0 *ana = new AliAnaPi0();
687 
688  ana->SetDebug(debugLevel);//10 for lots of messages
689 
690  // Input delta AOD settings
691  ana->SetInputAODName(Form("Photon%s_Calo%d",containerName.Data(),caloType));
692 
693  // Calorimeter settings
694  ana->SetCalorimeter(calorimeter);
695 
696  ana->SwitchOnFiducialCut();
697  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
698  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
699  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
700 
702 
703  // Settings for pp collision mixing
704  ana->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
705 
706  // Cuts
707  if(calorimeter=="EMCAL")
708  {
709  ana->SetPairTimeCut(100);
710 
711  // Angle cut, avoid pairs with too large angle
712  ana->SwitchOnAngleSelection();
713  ana->SetAngleMaxCut(TMath::DegToRad()*80.); // EMCal: 4 SM in phi, 2 full SMs in eta
714  ana->SetAngleCut(0.016); // Minimum angle open, ~cell size
715  }
716 
717  ana->SetNPIDBits(1);
718  ana->SetNAsymCuts(1); // no asymmetry cut, previous studies showed small effect.
719  // In EMCAL assymetry cut prevents combination of assymetric decays which is the main source of pi0 at high E.
720 
721  if (collision == "pp" )
722  {
723  ana->SetNCentrBin(1);
724  ana->SetNZvertBin(10);
725  ana->SetNRPBin(1);
726  ana->SetNMaxEvMix(100);
727  ana->SetMinPt(0.5);
728  }
729  else if(collision =="PbPb")
730  {
731  ana->SetNCentrBin(10);
732  ana->SetNZvertBin(10);
733  ana->SetNRPBin(4);
734  ana->SetNMaxEvMix(10);
735  if(minCen >= 10) ana->SetNMaxEvMix(50);
736  if(minCen >= 50) ana->SetNMaxEvMix(100);
737  ana->SetMinPt(1.5);
739  }
740  else if(collision =="pPb")
741  {
742  ana->SetNCentrBin(1);
743  ana->SetNZvertBin(10);
744  ana->SetNRPBin(4);
745  ana->SetNMaxEvMix(100);
746  ana->SetMinPt(0.5);
748  }
749 
751  ana->SwitchOnSMCombinations();
754 
755  // Set Histograms name tag, bins and ranges
756 
757  ana->AddToHistogramsName(Form("AnaPi0_Calo%d_",caloType));
758  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
759 
760  if(simulation) ana->SwitchOnDataMC();
761 
762  if(debugLevel > 0) ana->Print("");
763 
764  return ana;
765 }
766 
771  Bool_t simulation, Int_t year, Int_t debugLevel)
772 {
774  ana->SetDebug(debugLevel); //10 for lots of messages
775 
776  // selection cuts
777 
778  ana->SetMinPt(0.5);
779  ana->SwitchOnFiducialCut();
780  Float_t etacut = 0.8;
781  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(etacut, 0, 360) ; //more restrictive cut in reader and after in isolation
782 
783  // histogram switchs
784 
786  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
787 
789 
790  // Input / output delta AOD settings
791 
792  ana->SetOutputAODName(Form("Hadron%s",containerName.Data()));
793  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
794  ana->SetInputAODName(Form("Hadron%s",containerName.Data()));
795 
796  //Set Histograms name tag, bins and ranges
797 
798  ana->AddToHistogramsName("AnaHadrons_");
799  SetHistoRangeAndNBins(ana->GetHistogramRanges(),"",kFALSE,collision,year); // see method below
800 
801  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 120) ;
802  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.*etacut, 1.*etacut, etacut*100) ;
803 
804  if(simulation) ana->SwitchOnDataMC();
805 
806  if(debugLevel > 0) ana->Print("");
807 
808  return ana;
809 }
810 
815  TString collision , TString containerName,
816  Bool_t simulation, Int_t year , Int_t debugLevel)
817 {
819  ana->SetDebug(debugLevel);
820 
821  //if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
822 
823  ana->SetMinPt(5);
824 
827 
829  ana->SwitchOnSSHistoFill();
830 
831  ana->SwitchOffLeadingOnly();
833 
836  ana->SwitchOffTMHistoFill();
837 
838  // MC
841 
843  ana->SwitchOnFiducialCut();
844 
845  if(calorimeter == "EMCAL" && caloType == 0)
846  {
847  // Avoid borders of EMCal
848  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
849  }
850  if(calorimeter == "EMCAL" && caloType == 1)
851  {
852  // Avoid borders of DCal
853  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 264, 316) ;
854  }
855 
856  AliCaloPID* caloPID = ana->GetCaloPID();
857  caloPID->SetEMCALDEtaCut(0.025);
858  caloPID->SetEMCALDPhiCut(0.030);
859 
861  ana->SwitchOffReIsolation();
862 
863  //
864  // Do settings for main isolation cut class
865  //
866  AliIsolationCut * ic = ana->GetIsolationCut();
867  ic->SetDebug(debugLevel);
870  if ( collision == "pp" || collision == "pPb" )
871  {
872  ic->SetPtThreshold(0.5);
873  ic->SetSumPtThreshold(2.0) ;
874  ic->SetConeSize(0.4);
875  }
876  if ( collision == "PbPb" )
877  {
878  ic->SetPtThreshold(3.);
879  ic->SetSumPtThreshold(3.0) ;
880  ic->SetConeSize(0.3);
881  }
882 
883  // Input / output delta AOD settings
884 
885  ana->SetInputAODName(Form("%s%s_Calo%d",particle.Data(),containerName.Data(),caloType));
886  ana->SetAODObjArrayName(Form("%sIso_%s_Calo%d",particle.Data(),containerName.Data(),caloType));
887 
888  // Set Histograms name tag, bins and ranges
889 
890  ana->AddToHistogramsName(Form("AnaIsol%s_Calo%d_",particle.Data(),caloType));
891  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
892 
893  if(simulation) ana->SwitchOnDataMC();
894 
895  if(debugLevel > 0) ana->Print("");
896 
897  return ana;
898 }
899 
904  TString collision, TString containerName,
905  Bool_t simulation, Int_t year, Int_t debugLevel, Int_t minCen)
906 {
908  ana->SetDebug(debugLevel);
909 
910  ana->SetTriggerPtRange(5,100);
911  ana->SetAssociatedPtRange(0.2,100);
912  //ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
913  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
914  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
916 
917  ana->SetNAssocPtBins(4);
918  ana->SetAssocPtBinLimit(0, 0.5) ;
919  ana->SetAssocPtBinLimit(1, 2) ;
920  ana->SetAssocPtBinLimit(2, 5) ;
921  ana->SetAssocPtBinLimit(3, 10) ;
922  ana->SetAssocPtBinLimit(4, 20) ;
923 
924  ana->SelectIsolated(kFALSE); // do correlation with isolated photons
925 
926  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
927 
928  ana->SwitchOffAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
929  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
930 
931  //ana->SwitchOnLeadHadronSelection();
932  //ana->SetLeadHadronPhiCut(TMath::DegToRad()*100., TMath::DegToRad()*260.);
933  //ana->SetLeadHadronPtCut(0.5, 100);
934 
935  // Mixing with own pool
936  ana->SwitchOffOwnMix();
937 
938  ana->SetNZvertBin(20);
940 
941  //if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
942 
943  if(collision=="pp")
944  {
945  ana->SetNMaxEvMix(100);
946  ana->SwitchOnTrackMultBins();
947  ana->SetNTrackMultBin(10); // same as SetNCentrBin(10);
948  ana->SetNRPBin(1);
949  }
950  else
951  {
952  ana->SetNMaxEvMix(10);
953  if(minCen >= 10) ana->SetNMaxEvMix(50);
954  if(minCen >= 50) ana->SetNMaxEvMix(100);
955  ana->SwitchOffTrackMultBins(); // centrality bins
956  ana->SetNCentrBin(10);
957  ana->SetNRPBin(3);
958  }
959 
960  // Input / output delta AOD settings
961 
962  ana->SetInputAODName(Form("%s%s_Calo%d",particle.Data(),containerName.Data(),caloType));
963  ana->SetAODObjArrayName(Form("%sHadronCorr_%s_Calo%d",particle.Data(),containerName.Data(),caloType));
964 
967  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
970 
971  // Underlying event
973  ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
974 
975  //Set Histograms name tag, bins and ranges
976 
977  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Calo%d_",particle.Data(),caloType));
978  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
979 
980  if(simulation) ana->SwitchOnDataMC();
981 
982  if(debugLevel > 0) ana->Print("");
983 
984  return ana;
985 }
986 
991  Bool_t simulation ,
992  Int_t year, Int_t debugLevel)
993 {
995  ana->SetDebug(debugLevel); //10 for lots of messages
996  ana->SetCalorimeter(calorimeter);
997 
998  //printf("QA: calorimeter %s, caloType %d, collision %s, simulation %d, fillCellTime %d, year %d, debugLevel %d\n",
999  // calorimeter.Data(),caloType,collision.Data(),simulation,fillCellTime,year,debugLevel);
1000 
1001  ana->SetTimeCut(-1e10,1e10); // Open time cut
1002  ana->SetConstantTimeShift(615); // for MC and uncalibrated data, whenever there is time > 400 ns
1003  ana->SetEMCALCellAmpMin(0.5);
1004 
1005  ana->SwitchOffStudyBadClusters() ;
1011  ana->SwitchOffCorrelation();
1014 
1018 
1019  ana->AddToHistogramsName("QA_Cell_"); //Begining of histograms name
1020  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter, -1, collision,year); // see method below
1021 
1022 // ana->SwitchOnFiducialCut();
1023 // if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
1024 // else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
1025 //
1026 // ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
1027 
1028  //if(simulation) ana->SwitchOnDataMC();
1029 
1030  if(debugLevel > 0) ana->Print("");
1031 
1032  return ana;
1033 }
1034 
1039  TString collision, Int_t year)
1040 {
1041  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
1042 
1043  if(calorimeter=="EMCAL")
1044  {
1045  if ( year == 2010 )
1046  {
1047  histoRanges->SetHistoPhiRangeAndNBins(79*TMath::DegToRad(), 121*TMath::DegToRad(), 42) ;
1048  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
1049  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
1050  }
1051  else if ( year < 2014 )
1052  {
1053  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
1054  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
1055  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
1056  }
1057  else // Run2
1058  {
1059  if (caloType == 0)
1060  histoRanges->SetHistoPhiRangeAndNBins(78 *TMath::DegToRad(), 189*TMath::DegToRad(), 111) ;
1061  else if (caloType == 1)
1062  histoRanges->SetHistoPhiRangeAndNBins(258*TMath::DegToRad(), 329*TMath::DegToRad(), 71) ;
1063  else
1064  histoRanges->SetHistoPhiRangeAndNBins(80 *TMath::DegToRad(), 327*TMath::DegToRad(), 247) ;
1065 
1066  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
1067  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
1068  }
1069 
1070  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
1071  }
1072  else
1073  {
1074  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
1075  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
1076  }
1077 
1078  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 2.9, 300);
1079 
1080  // Invariant mass histoRangeslysis
1081  histoRanges->SetHistoMassRangeAndNBins(0., 0.8, 160) ;
1082  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
1083  histoRanges->SetHistoOpeningAngleRangeAndNBins(0,0.7,50);
1084 
1085  // check if time calibration is on
1086  histoRanges->SetHistoTimeRangeAndNBins(-250.,250,250);
1087  histoRanges->SetHistoDiffTimeRangeAndNBins(-150, 150, 150);
1088 
1089  // track-cluster residuals
1090  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.05,0.05,100);
1091  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.05,0.05,100);
1092  histoRanges->SetHistodRRangeAndNBins(0.,0.05,50);//QA
1093 
1094  // QA, electron, charged
1095  histoRanges->SetHistoPOverERangeAndNBins(0, 2. ,100);
1096  histoRanges->SetHistodEdxRangeAndNBins (0.,200.,100);
1097 
1098  // QA
1099  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
1100  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,250);
1101  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
1102  histoRanges->SetHistoRRangeAndNBins(430,460,30);
1103  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,250);
1104  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,250);
1105 
1106  // QA, correlation
1107  if(collision=="PbPb")
1108  {
1109  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
1110  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
1111  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
1112  }
1113  else
1114  {
1115  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
1116  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
1117  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
1118  }
1119 
1120  // xE, zT
1121  histoRanges->SetHistoRatioRangeAndNBins(0.,1.2,120);
1122  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,100);
1123 
1124  // Isolation
1125  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 100);
1126  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 100);
1127  if(collision.Contains("pPb"))
1128  histoRanges->SetHistoPtSumRangeAndNBins (0, 200, 100);
1129  else if(collision.Contains("PbPb"))
1130  histoRanges->SetHistoPtSumRangeAndNBins (0, 500, 100);
1131 }
1132 
1147 Bool_t CheckAnalysisTrigger(Bool_t simulation, TString trigger, TString period, Int_t year)
1148 {
1149  // Accept directly all MB kind of events
1150  //
1151  if ( trigger.Contains("default") || trigger.Contains("INT") || trigger.Contains("MB") ) return kTRUE;
1152 
1153  // MC analysis has no trigger dependence, execute only for the default case
1154  //
1155  if ( simulation )
1156  {
1157  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggered events not checked in simulation, SKIP trigger %s! \n", trigger.Data());
1158  return kFALSE;
1159  }
1160 
1161  // Triggers introduced in 2011
1162  //
1163  if ( year < 2011 && ( trigger.Contains("EMCAL") || trigger.Contains("DCAL") ) )
1164  {
1165  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events for year < 2011, SKIP trigger %s! \n", trigger.Data());
1166  return kFALSE;
1167  }
1168 
1169  // DCal Triggers introduced in 2015
1170  //
1171  if ( year < 2014 && trigger.Contains("DCAL") )
1172  {
1173  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events by DCal for year < 2014, SKIP trigger %s! \n", trigger.Data());
1174  return kFALSE;
1175  }
1176 
1177  // EG2 trigger only activated from 2013
1178  //
1179  if ( year < 2013 && trigger.Contains("L2") )
1180  {
1181  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : EG2 trigger not available for year < 2012, SKIP trigger %s in %s \n", trigger.Data(),period.Data());
1182  return kFALSE;
1183  }
1184 
1185  // Triggers only activated in 2013 from LHC13d for physics (it might be there are in b and c but not taking data)
1186  //
1187  if ( year == 2013 && trigger.Contains("L") && ( period.Contains("b") || period.Contains("c") ) )
1188  {
1189  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggers not available for year 2013 in period %s, SKIP trigger %s! \n",period.Data(), trigger.Data());
1190  return kFALSE;
1191  }
1192 
1193  // DCal Triggers introduced in 2015
1194  //
1195  if ( year < 2014 && ( trigger.Contains("DCAL") ) )
1196  {
1197  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events by DCal for year < 2014, SKIP trigger %s! \n", trigger.Data());
1198  return kFALSE;
1199  }
1200 
1201  // L0 trigger used for periods below LHC11e?
1202  //
1203  if ( period == "LHC11h" && trigger.Contains("EMCAL_L0") )
1204  {
1205  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No EMCAL_L0 triggered events by EMCal for period LHC11h, SKIP trigger %s! \n", trigger.Data());
1206  return kFALSE;
1207  }
1208 
1209  // L1 trigger not used until LHC11e? period, what about LHC11f?
1210  //
1211  if ( period.Contains("LHC11") && period != "LHC11h" && trigger.Contains("EMCAL_L1") )
1212  {
1213  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1214  return kFALSE;
1215  }
1216 
1217  // L1 trigger not used again until LHC12c period
1218  //
1219  if ( ( period == "LHC12a" || period == "LHC12b" ) && trigger.Contains("EMCAL_L1") )
1220  {
1221  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1222  return kFALSE;
1223  }
1224 
1225  // Run2: No trigger used again until LHC15i period
1226  //
1227  if ( year == 2015 && ( period == "LHC15h" || period == "LHC15g" || period == "LHC15f" || period == "LHC15e" ||
1228  period == "LHC15d" || period == "LHC15c" || period == "LHC15b" || period == "LHC15a" ) )
1229  {
1230  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1231  return kFALSE;
1232  }
1233 
1234  // Run2: L1 trigger not used again until LHC15o period
1235  //
1236  if ( year == 2015 && period != "LHC15o" && !trigger.Contains("L0") )
1237  {
1238  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1239  return kFALSE;
1240  }
1241 
1242  // Run2: L1 trigger not used again until LHC15o period
1243  //
1244  if ( year == 2015 && period == "LHC15o" && ( trigger.Contains("L0") || trigger.Contains("L2") ) )
1245  {
1246  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1247  return kFALSE;
1248  }
1249 
1250 
1251  return kTRUE;
1252 
1253 }
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 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()
unsigned int UInt_t
Definition: External.C:33
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 Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Definition: AliAnaPi0.cxx:2595
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)
UInt_t ConfigureAndGetEventTriggerMaskAndCaloTriggerString(TString trigger, Int_t year, TString &triggerString)
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 SetFiredTriggerClassName(TString name)
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)