AliPhysics  ec7afe5 (ec7afe5)
 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 
81  Int_t year = 2017;
82  if ( period!="" )
83  {
84  if (period.Contains("16")) year = 2016;
85  else if(period.Contains("15")) year = 2015;
86  else if(period.Contains("13")) year = 2013;
87  else if(period.Contains("12")) year = 2012;
88  else if(period.Contains("11")) year = 2011;
89  else if(period.Contains("10")) year = 2010;
90  }
91 
92  // Do not create the analysis for certain analysis combinations
93  //
94  Bool_t doAnalysis = CheckAnalysisTrigger(simulation,trigger,period,year);
95  if(!doAnalysis) return NULL;
96 
97  // Get the pointer to the existing analysis manager via the static access method.
98  //
99  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
100  if (!mgr)
101  {
102  ::Error("AddTaskPi0IMGammaCorrQA", "No analysis manager to connect to.");
103  return NULL;
104  }
105 
106  // Check the analysis type using the event handlers connected to the analysis manager.
107  //
108  if (!mgr->GetInputEventHandler())
109  {
110  ::Error("AddTaskPi0IMGammaCorrQA", "This task requires an input event handler");
111  return NULL;
112  }
113 
114  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
115 
116  // Make sure the B field is enabled for track selection, some cuts need it
117  //
118  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
119 
120  // Print settings to check all is as expected
121  //
122  printf("AddTaskPi0IMGammaCorrQA - Settings: data <%s>, calo <%s>, MC <%d>, collision <%s>, trigger <%s>, period <%s>, year <%d>,\n"
123  "\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",
124  inputDataType.Data(), calorimeter.Data(),simulation, collision.Data(),trigger.Data(), period.Data(), year,
125  qaan , hadronan, calibrate, minTime, maxTime, minCen, maxCen, debugLevel);
126  //
127 
128  // Name for containers
129  //
130  TString containerName = Form("%s_Trig_%s",calorimeter.Data(), trigger.Data());
131 
132  if(collision!="pp" && maxCen>=0) containerName+=Form("Cen%d_%d",minCen,maxCen);
133 
134  // #### Configure analysis ####
135  //
137 
138  // General frame setting and configuration
139  maker->SetReader ( ConfigureReader (inputDataType,collision,calibrate,minTime,maxTime,minCen,maxCen,simulation,year,debugLevel) );
140  maker->SetCaloUtils( ConfigureCaloUtils(calorimeter,simulation,calibrate,year,debugLevel) );
141 
142  // Analysis tasks setting and configuration
143  Int_t n = 0;//Analysis number, order is important
144  Bool_t fillAllCellHisto = kTRUE;
145 
146  // Analysis with EMCal trigger or MB
147  if ( !trigger.Contains("DCAL") )
148  {
149  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,0,collision,containerName,simulation,year ,debugLevel), n++); // Photon cluster selection
150  maker->AddAnalysis(ConfigurePi0Analysis (calorimeter,0,collision,containerName,simulation,year,qaan,debugLevel,minCen) ,n++); // Previous photon invariant mass
151  if(qaan) maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,0,collision,simulation,fillAllCellHisto,year,debugLevel),n++);
152 
153  if(hadronan)
154  {
155  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",calorimeter,0,collision,containerName,simulation,year,debugLevel), n++); // isolation
156  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,0,collision,containerName,simulation,year,debugLevel,minCen), n++); // Gamma hadron correlation
157  }
158  }
159 
160  // Analysis with DCal trigger or MB
161  if(year > 2014 && calorimeter=="EMCAL" && !trigger.Contains("EMCAL"))
162  {
163  maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,1,collision,containerName,simulation,year ,debugLevel), n++); // Photon cluster selection
164  maker->AddAnalysis(ConfigurePi0Analysis (calorimeter,1,collision,containerName,simulation,year,qaan,debugLevel,minCen) ,n++); // Previous photon invariant mass
165 
166  if(trigger.Contains("INT") || trigger.Contains("MB") || trigger.Contains("default")) fillAllCellHisto = kFALSE;
167 
168  if(qaan) maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,1,collision, simulation, fillAllCellHisto,year,debugLevel),n++);
169 
170  if(hadronan)
171  {
172  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",calorimeter,1,collision,containerName,simulation,year,debugLevel), n++); // isolation
173  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,1,collision,containerName,simulation,year,debugLevel,minCen), n++); // Gamma hadron correlation
174  }
175  }
176 
177  if(hadronan)
178  {
179  maker->GetReader()->SwitchOnCTS();
180  maker->AddAnalysis(ConfigureChargedAnalysis(collision,containerName,simulation,year,debugLevel), n++); // charged tracks plots
181  }
182 
183 
184  maker->SetAnaDebug(debugLevel) ;
185  maker->SwitchOnHistogramsMaker() ;
186  maker->SwitchOnAODsMaker() ;
188 
189  if(simulation)
190  {
191  // Calculate the cross section weights, apply them to all histograms
192  // and fill xsec and trial histo. Sumw2 must be activated.
193  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionCalculation();
194  //maker->SwitchOnSumw2Histograms();
195 
196  // For recent productions where the cross sections and trials are not stored in separate file
197  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionFromEventHeader() ;
198 
199  // Just fill cross section and trials histograms.
201 
202  // Add control histogram with pT hard to control aplication of weights
203  maker->SwitchOnPtHardHistogram();
204  }
205 
206  if(debugLevel > 0) maker->Print("");
207 
208  // Create task
209 
210  TString taskName =Form("Pi0IM_GammaTrackCorr_%s",containerName.Data());
211 
212  printf("AddTaskPi0IMGammaCorrQA - Task NAME: %s \n",taskName.Data());
213 
215  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
216  task->SetDebugLevel(debugLevel);
217  //task->SetBranches("ESD:AliESDRun.,AliESDHeader");
218  //task->SetBranches("AOD:header,tracks,vertices,emcalCells,caloClusters");
219  task->SetAnalysisMaker(maker);
220 
221 
222  //
223  // Select events trigger depending on trigger
224  //
225  if(!simulation)
226  {
227  if( trigger.Contains("INT") || trigger.Contains("MB") || trigger.Contains("default") )
228  {
229  task->SelectCollisionCandidates( AliVEvent::kINT7 | AliVEvent::kMB );
230  }
231  else if(trigger.Contains("EMCAL_L0"))
232  {
233  task ->SelectCollisionCandidates( AliVEvent::kEMC7 | AliVEvent::kEMC8 | AliVEvent::kEMC1 );
234  maker->GetReader()->SetFiredTriggerClassName("EMC");
235  }
236  else if(trigger.Contains("DCAL_L0"))
237  {
238  task ->SelectCollisionCandidates( AliVEvent::kEMC7 | AliVEvent::kEMC8 | AliVEvent::kEMC1 );
239  maker->GetReader()->SetFiredTriggerClassName("DMC");
240  }
241  else if(trigger.Contains("EMCAL_L1"))
242  {
243  task ->SelectCollisionCandidates( AliVEvent::kEMCEGA );
244  if(year > 2012) maker->GetReader()->SetFiredTriggerClassName("EG1");
245  // before 2013 only one kind of L1 trigger
246  }
247  else if(trigger.Contains("DCAL_L1"))
248  {
249  task ->SelectCollisionCandidates( AliVEvent::kEMCEGA );
250  maker->GetReader()->SetFiredTriggerClassName("DG1");
251  }
252  else if(trigger.Contains("EMCAL_L1_Run1"))
253  {
254  task ->SelectCollisionCandidates( AliVEvent::kEMCEGA );
255  //maker->GetReader()->SetFiredTriggerClassName("EGA");
256  }
257  else if(trigger.Contains("EMCAL_L2"))
258  {
259  task ->SelectCollisionCandidates( AliVEvent::kEMCEGA );
260  maker->GetReader()->SetFiredTriggerClassName("EG2");
261  }
262  else if(trigger.Contains("DCAL_L2"))
263  {
264  task ->SelectCollisionCandidates( AliVEvent::kEMCEGA );
265  maker->GetReader()->SetFiredTriggerClassName("DG2");
266  }
267  }
268 
269  mgr->AddTask(task);
270 
271  //Create containers
272 
273  TString outputfile = AliAnalysisManager::GetCommonFileName();
274 
275  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(trigger, TList::Class(),
276  AliAnalysisManager::kOutputContainer,
277  Form("%s:%s",outputfile.Data(),Form("Pi0IM_GammaTrackCorr_%s",calorimeter.Data())));
278 
279  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",trigger.Data()), TList::Class(),
280  AliAnalysisManager::kParamContainer,
281  Form("%s_Parameters.root",Form("Pi0IM_GammaTrackCorr_%s",calorimeter.Data())));
282 
283  // Create ONLY the output containers for the data produced by the task.
284  // Get and connect other common input/output containers via the manager as below
285  //==============================================================================
286  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
287  mgr->ConnectOutput (task, 1, cout_pc);
288  mgr->ConnectOutput (task, 2, cout_cuts);
289 
290  return task;
291 }
292 
296 AliCaloTrackReader * ConfigureReader(TString inputDataType, TString collision, Bool_t calibrate,
297  Int_t minTime, Int_t maxTime,
298  Int_t minCen, Int_t maxCen,
299  Bool_t simulation, Int_t year, Int_t debugLevel)
300 {
301  AliCaloTrackReader * reader = 0;
302  if (inputDataType=="AOD")
303  reader = new AliCaloTrackAODReader();
304  else if(inputDataType=="ESD")
305  reader = new AliCaloTrackESDReader();
306  else
307  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known input Data=%s\n",
308  inputDataType.Data());
309 
310  reader->SetDebug(debugLevel);//10 for lots of messages
311 
312  // MC settings
313  if(simulation)
314  {
315  if(inputDataType == "ESD")
316  {
317  reader->SwitchOnStack();
318  reader->SwitchOffAODMCParticles();
319  }
320  else if(inputDataType == "AOD")
321  {
322  reader->SwitchOffStack();
323  reader->SwitchOnAODMCParticles();
324  }
325  }
326 
327  //------------------------
328  // Detector input filling
329  //------------------------
330 
331  //Min cluster/track E
332  reader->SetEMCALEMin(0.3);
333  reader->SetEMCALEMax(1000);
334  reader->SetPHOSEMin(0.3);
335  reader->SetPHOSEMax(1000);
336  reader->SetCTSPtMin(0.2);
337  reader->SetCTSPtMax(1000);
338 
339  // Time cut
341 
342  if(calibrate)
343  {
344  reader->SwitchOnUseEMCALTimeCut() ;
345  reader->SetEMCALTimeCut(minTime,maxTime);
346  }
347 
348  reader->SwitchOffUseTrackTimeCut();
349  reader->SetTrackTimeCut(-1e10,1e10);
350 
351  reader->SwitchOffFiducialCut();
352 
353  // Tracks
354  reader->SwitchOffCTS();
358  reader->SwitchOffUseTrackDCACut();
359  //reader->SetTrackDCACut(0,0.0105);
360  //reader->SetTrackDCACut(1,0.035);
361  //reader->SetTrackDCACut(2,1.1);
362 
363  if(inputDataType=="ESD")
364  {
365  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
366  if(year > 2010)
367  {
368  //Hybrids 2011
369  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
370  reader->SetTrackCuts(esdTrackCuts);
371  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
372  reader->SetTrackComplementaryCuts(esdTrackCuts2);
373  }
374  else
375  {
376  //Hybrids 2010
377  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
378  reader->SetTrackCuts(esdTrackCuts);
379  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
380  reader->SetTrackComplementaryCuts(esdTrackCuts2);
381  }
382  }
383  else if(inputDataType=="AOD")
384  {
385  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
386  reader->SetTrackStatus(AliVTrack::kITSrefit);
387  }
388 
389  // Calorimeter
390 
391  reader->SetEMCALClusterListName("");
392 
393  if(calibrate && !simulation) reader->SwitchOnClusterRecalculation();
394  else reader->SwitchOffClusterRecalculation();
395 
396  reader->SwitchOnEMCALCells();
397  reader->SwitchOnEMCAL();
398 
399  reader->SwitchOffPHOSCells();
400  reader->SwitchOffPHOS();
401 
402  //-----------------
403  // Event selection
404  //-----------------
405 
406  reader->SwitchOnEventTriggerAtSE();
407 
408  reader->SetZvertexCut(10.);
409  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
410  reader->SwitchOffPileUpEventRejection(); // remove pileup
411  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
412 
413  if(collision=="PbPb")
414  {
415  if(year < 2014) reader->SwitchOnAliCentrality();
416  reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
417  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
418  }
419 
420  if(debugLevel > 0) reader->Print("");
421 
422  return reader;
423 }
424 
429  Int_t year, Int_t debugLevel)
430 {
432  cu->SetDebug(debugLevel);
433 
434  // Remove clusters close to borders, at least max energy cell is 1 cell away
437 
438  // Search of local maxima in cluster
439  cu->SetLocalMaximaCutE(0.1);
440  cu->SetLocalMaximaCutEDiff(0.03);
441 
442  //cu->SwitchOffClusterPlot();
444 
446 
447  //EMCAL settings
448 
449  if(!simulation)
451 
452  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
453  cu->SwitchOffRecalibration(); // Check the reader if it is taken into account during filtering
455 
457 
458  Bool_t bExotic = kTRUE;
459  Bool_t bNonLin = kFALSE;
460  Bool_t bBadMap = kTRUE;
461 
462  Bool_t bEnCalib = kFALSE;
463  Bool_t bTiCalib = kFALSE;
464 
465  if(calibrate && !simulation)
466  {
467  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
470 
471  bEnCalib = kTRUE;
472  bTiCalib = kTRUE;
473  }
474 
475  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
477  simulation,
478  bExotic,
479  bNonLin,
480  bEnCalib,
481  bBadMap,
482  bTiCalib,
483  debugLevel
484  );
485  //recou->SetExoticCellDiffTimeCut(50.);
486 
487  if(calorimeter=="PHOS")
488  {
490  }
491  else
492  {
493  if (year == 2010) cu->SetNumberOfSuperModulesUsed(4); // EMCAL first year
494  else if (year < 2014) cu->SetNumberOfSuperModulesUsed(10);
495  else cu->SetNumberOfSuperModulesUsed(20);
496  }
497 
498  // PHOS
500 
501  if(debugLevel > 0) cu->Print("");
502 
503  return cu;
504 }
505 
511  TString containerName, Bool_t simulation,
512  Int_t year, Int_t debugLevel)
513 {
514  AliAnaPhoton *ana = new AliAnaPhoton();
515  ana->SetDebug(debugLevel); //10 for lots of messages
516 
517  // cluster selection cuts
518 
519  ana->SwitchOnFiducialCut();
520  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
521  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
522  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
523 
524  ana->SetCalorimeter(calorimeter);
525 
526  if(calorimeter == "PHOS")
527  {
528  ana->SetNCellCut(2);// At least 3 cells
529  ana->SetMinPt(0.5);
530  ana->SetMinDistanceToBadChannel(2, 4, 5);
531  ana->SetTimeCut(-1e10,1e10); // open cut
532  }
533  else
534  {
535  // EMCAL
536  ana->SetConstantTimeShift(615); // for MC and uncalibrated data, whenever there is time > 400 ns
537  ana->SetNCellCut(1);// At least 2 cells
538  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
539  ana->SetMaxEnergy(1000);
540  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
541  // restrict to less than 100 ns when time calibration is on
542  ana->SetMinDistanceToBadChannel(2, 4, 6);
543  // Not useful if M02 cut is already strong
544  ana->SetNLMCut(1, 2) ;
545  }
546 
548  ana->SwitchOffTMHistoFill() ;
549 
550  //PID cuts (shower shape)
551  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
552  AliCaloPID* caloPID = ana->GetCaloPID();
553  //Not used in bayesian
554 
555  //EMCAL
556  caloPID->SetEMCALLambda0CutMax(0.4); // Rather open
557  caloPID->SetEMCALLambda0CutMin(0.10);
558 
559  caloPID->SetEMCALDEtaCut(0.025);
560  caloPID->SetEMCALDPhiCut(0.030);
561 
562  //PHOS
563  caloPID->SetPHOSDispersionCut(2.5);
564  caloPID->SetPHOSRCut(2.);
565 
566  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
567  //if(!simulation)ana->SwitchOnFillPileUpHistograms();
568 
569  if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
570 
571  // Input / output delta AOD settings
572  ana->SetOutputAODName(Form("Photon%s_Calo%d",containerName.Data(),caloType));
573  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
574  ana->SetInputAODName (Form("Photon%s_Calo%d",containerName.Data(),caloType));
575 
576  // Set Histograms name tag, bins and ranges
577  ana->AddToHistogramsName(Form("AnaPhoton_Calo%d_",caloType));
578  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
579 
580  // Number of particle type MC histograms
581  ana->FillNOriginHistograms(7);
582  ana->FillNPrimaryHistograms(4);
583 
584  if(simulation) ana->SwitchOnDataMC();
585 
586  if(debugLevel > 0 ) ana->Print("");
587 
588  return ana;
589 }
590 
595  TString containerName, Bool_t simulation, Int_t year,
596  Bool_t qaan, Int_t debugLevel, Int_t minCen)
597 {
598  AliAnaPi0 *ana = new AliAnaPi0();
599 
600  ana->SetDebug(debugLevel);//10 for lots of messages
601 
602  // Input delta AOD settings
603  ana->SetInputAODName(Form("Photon%s_Calo%d",containerName.Data(),caloType));
604 
605  // Calorimeter settings
606  ana->SetCalorimeter(calorimeter);
607 
608  ana->SwitchOnFiducialCut();
609  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
610  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
611  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
612 
614 
615  // Settings for pp collision mixing
616  ana->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
617 
618  // Cuts
619  if(calorimeter=="EMCAL") ana->SetPairTimeCut(100);
620 
621  ana->SetNPIDBits(1);
622  ana->SetNAsymCuts(1); // no asymmetry cut, previous studies showed small effect.
623  // In EMCAL assymetry cut prevents combination of assymetric decays which is the main source of pi0 at high E.
624 
625  if (collision == "pp" )
626  {
627  ana->SetNCentrBin(1);
628  ana->SetNZvertBin(10);
629  ana->SetNRPBin(1);
630  ana->SetNMaxEvMix(100);
631  ana->SetMinPt(0.5);
632  }
633  else if(collision =="PbPb")
634  {
635  ana->SetNCentrBin(10);
636  ana->SetNZvertBin(10);
637  ana->SetNRPBin(4);
638  ana->SetNMaxEvMix(10);
639  if(minCen >= 10) ana->SetNMaxEvMix(50);
640  if(minCen >= 50) ana->SetNMaxEvMix(100);
641  ana->SetMinPt(1.5);
643  }
644  else if(collision =="pPb")
645  {
646  ana->SetNCentrBin(1);
647  ana->SetNZvertBin(10);
648  ana->SetNRPBin(4);
649  ana->SetNMaxEvMix(100);
650  ana->SetMinPt(0.5);
652  }
653 
655  ana->SwitchOnSMCombinations();
658 
659  //Set Histograms name tag, bins and ranges
660 
661  ana->AddToHistogramsName(Form("AnaPi0_Calo%d_",caloType));
662  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
663 
664  if(simulation) ana->SwitchOnDataMC();
665 
666  if(debugLevel > 0) ana->Print("");
667 
668  return ana;
669 }
670 
675  Bool_t simulation, Int_t year, Int_t debugLevel)
676 {
678  ana->SetDebug(debugLevel); //10 for lots of messages
679 
680  // selection cuts
681 
682  ana->SetMinPt(0.5);
683  ana->SwitchOnFiducialCut();
684  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
685 
687  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
688 
689  // Input / output delta AOD settings
690 
691  ana->SetOutputAODName(Form("Hadron%s",containerName.Data()));
692  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
693  ana->SetInputAODName(Form("Hadron%s",containerName.Data()));
694 
695  //Set Histograms name tag, bins and ranges
696 
697  ana->AddToHistogramsName("AnaHadrons_");
698  SetHistoRangeAndNBins(ana->GetHistogramRanges(),"",kFALSE,collision,year); // see method below
699 
700  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
701  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
702 
703  if(debugLevel > 0) ana->Print("");
704 
705  return ana;
706 }
707 
712  TString collision, TString containerName,
713  Bool_t simulation, Int_t year, Int_t debugLevel)
714 {
716  ana->SetDebug(debugLevel);
717 
718  //if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
719 
720  ana->SetMinPt(5);
721 
724 
726  ana->SwitchOnSSHistoFill();
727 
728  ana->SwitchOffLeadingOnly();
730 
733  ana->SwitchOffTMHistoFill();
734 
735  // MC
738 
740  ana->SwitchOnFiducialCut();
741 
742  if(calorimeter == "EMCAL" && caloType == 0)
743  {
744  // Avoid borders of EMCal
745  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
746  }
747  if(calorimeter == "EMCAL" && caloType == 1)
748  {
749  // Avoid borders of DCal
750  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 264, 316) ;
751  }
752 
753  AliCaloPID* caloPID = ana->GetCaloPID();
754  caloPID->SetEMCALDEtaCut(0.025);
755  caloPID->SetEMCALDPhiCut(0.030);
756 
758  ana->SwitchOffReIsolation();
759 
760  //
761  // Do settings for main isolation cut class
762  //
763  AliIsolationCut * ic = ana->GetIsolationCut();
764  ic->SetDebug(debugLevel);
767  if ( collision == "pp" || collision == "pPb" )
768  {
769  ic->SetPtThreshold(0.5);
770  ic->SetSumPtThreshold(2.0) ;
771  ic->SetConeSize(0.4);
772  }
773  if ( collision == "PbPb" )
774  {
775  ic->SetPtThreshold(3.);
776  ic->SetSumPtThreshold(3.0) ;
777  ic->SetConeSize(0.3);
778  }
779 
780  // Input / output delta AOD settings
781 
782  ana->SetInputAODName(Form("%s%s_Calo%d",particle.Data(),containerName.Data(),caloType));
783  ana->SetAODObjArrayName(Form("%sIso_%s_Calo%d",particle.Data(),containerName.Data(),caloType));
784 
785  // Set Histograms name tag, bins and ranges
786 
787  ana->AddToHistogramsName(Form("AnaIsol%s_Calo%d_",particle.Data(),caloType));
788  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
789 
790  if(simulation) ana->SwitchOnDataMC();
791 
792  if(debugLevel > 0) ana->Print("");
793 
794  return ana;
795 }
796 
801  TString collision, TString containerName,
802  Bool_t simulation, Int_t year, Int_t debugLevel, Int_t minCen)
803 {
805  ana->SetDebug(debugLevel);
806 
807  ana->SetTriggerPtRange(5,100);
808  ana->SetAssociatedPtRange(0.2,100);
809  //ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
810  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
811  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
813 
814  ana->SetNAssocPtBins(4);
815  ana->SetAssocPtBinLimit(0, 0.5) ;
816  ana->SetAssocPtBinLimit(1, 2) ;
817  ana->SetAssocPtBinLimit(2, 5) ;
818  ana->SetAssocPtBinLimit(3, 10) ;
819  ana->SetAssocPtBinLimit(4, 20) ;
820 
821  ana->SelectIsolated(kFALSE); // do correlation with isolated photons
822 
823  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
824 
825  ana->SwitchOffAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
826  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
827 
828  //ana->SwitchOnLeadHadronSelection();
829  //ana->SetLeadHadronPhiCut(TMath::DegToRad()*100., TMath::DegToRad()*260.);
830  //ana->SetLeadHadronPtCut(0.5, 100);
831 
832 
833  // Mixing with own pool
834  ana->SwitchOffOwnMix();
835 
836  ana->SetNZvertBin(20);
838 
839  //if(collision.Contains("Pb")) ana->SwitchOnFillHighMultiplicityHistograms();
840 
841  if(collision=="pp")
842  {
843  ana->SetNMaxEvMix(100);
844  ana->SwitchOnTrackMultBins();
845  ana->SetNTrackMultBin(10); // same as SetNCentrBin(10);
846  ana->SetNRPBin(1);
847  }
848  else
849  {
850  ana->SetNMaxEvMix(10);
851  if(minCen >= 10) ana->SetNMaxEvMix(50);
852  if(minCen >= 50) ana->SetNMaxEvMix(100);
853  ana->SwitchOffTrackMultBins(); // centrality bins
854  ana->SetNCentrBin(10);
855  ana->SetNRPBin(3);
856  }
857 
858  // Input / output delta AOD settings
859 
860  ana->SetInputAODName(Form("%s%s_Calo%d",particle.Data(),containerName.Data(),caloType));
861  ana->SetAODObjArrayName(Form("%sHadronCorr_%s_Calo%d",particle.Data(),containerName.Data(),caloType));
862 
865  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
868 
869  // Underlying event
871  ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
872 
873  //Set Histograms name tag, bins and ranges
874 
875  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Calo%d_",particle.Data(),caloType));
876  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter,caloType,collision,year); // see method below
877 
878  if(simulation) ana->SwitchOnDataMC();
879 
880  if(debugLevel > 0) ana->Print("");
881 
882  return ana;
883 }
884 
889  Bool_t simulation, Bool_t fillAllCell, Int_t year, Int_t debugLevel)
890 {
892  ana->SetDebug(debugLevel); //10 for lots of messages
893  ana->SetCalorimeter(calorimeter);
894 
895  //printf("QA: calorimeter %s, caloType %d, collision %s, simulation %d, fillCellTime %d, year %d, debugLevel %d\n",
896  // calorimeter.Data(),caloType,collision.Data(),simulation,fillCellTime,year,debugLevel);
897 
898  ana->SetTimeCut(-1e10,1e10); // Open time cut
899  ana->SetConstantTimeShift(615); // for MC and uncalibrated data, whenever there is time > 400 ns
900 
907  ana->SwitchOffStudyWeight();
909  ana->SwitchOffCorrelation();
911 
913 
914  if(fillAllCell)
915  {
918  }
919  else
920  {
923  }
924 
925  ana->AddToHistogramsName(Form("QA_Calo%d_",caloType)); //Begining of histograms name
926  SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter, caloType, collision,year); // see method below
927 
928  ana->SwitchOnFiducialCut();
929  if(caloType==0)ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 80, 187) ; // EMC
930  else ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.7, 260, 327) ; // DMC
931 
932  ana->GetFiducialCut()->DoEMCALFiducialCut(kTRUE);
933 
934  if(simulation) ana->SwitchOnDataMC();
935 
936  if(debugLevel > 0) ana->Print("");
937 
938  return ana;
939 }
940 
941 
946  TString collision, Int_t year)
947 {
948  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
949 
950  if(calorimeter=="EMCAL")
951  {
952  if ( year == 2010 )
953  {
954  histoRanges->SetHistoPhiRangeAndNBins(79*TMath::DegToRad(), 121*TMath::DegToRad(), 42) ;
955  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
956  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
957  }
958  else if ( year < 2014 )
959  {
960  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
961  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
962  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
963  }
964  else // Run2
965  {
966  if(caloType == 0) histoRanges->SetHistoPhiRangeAndNBins(78 *TMath::DegToRad(), 189*TMath::DegToRad(), 111) ;
967  else histoRanges->SetHistoPhiRangeAndNBins(258*TMath::DegToRad(), 329*TMath::DegToRad(), 71) ;
968  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
969  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
970  }
971 
972  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
973  }
974  else
975  {
976  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
977  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
978  }
979 
980  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 2.9, 300);
981 
982  // Invariant mass histoRangeslysis
983  histoRanges->SetHistoMassRangeAndNBins(0., 0.8, 160) ;
984  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
985  histoRanges->SetHistoOpeningAngleRangeAndNBins(0,0.7,50);
986 
987  // check if time calibration is on
988  histoRanges->SetHistoTimeRangeAndNBins(-250.,250,250);
989  histoRanges->SetHistoDiffTimeRangeAndNBins(-150, 150, 150);
990 
991  // track-cluster residuals
992  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.06,0.06,120);
993  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.06,0.06,120);
994  histoRanges->SetHistodRRangeAndNBins(0.,0.06,60);//QA
995 
996  // QA, electron, charged
997  histoRanges->SetHistoPOverERangeAndNBins(0, 2. ,100);
998  histoRanges->SetHistodEdxRangeAndNBins (0.,200.,100);
999 
1000  // QA
1001  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
1002  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,250);
1003  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
1004  histoRanges->SetHistoRRangeAndNBins(430,460,30);
1005  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,250);
1006  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,250);
1007 
1008  // QA, correlation
1009  if(collision=="PbPb")
1010  {
1011  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
1012  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
1013  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
1014  }
1015  else
1016  {
1017  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
1018  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
1019  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
1020  }
1021 
1022  // xE, zT
1023  histoRanges->SetHistoRatioRangeAndNBins(0.,1.2.,120);
1024  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,100);
1025 
1026  // Isolation
1027  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 100);
1028  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 100);
1029  if(collision.Contains("pPb"))
1030  histoRanges->SetHistoPtSumRangeAndNBins (0, 200, 100);
1031  else if(collision.Contains("PbPb"))
1032  histoRanges->SetHistoPtSumRangeAndNBins (0, 500, 100);
1033 }
1034 
1049 Bool_t CheckAnalysisTrigger(Bool_t simulation, TString trigger, TString period, Int_t year)
1050 {
1051  // Accept directly all MB kind of events
1052  //
1053  if ( trigger.Contains("default") || trigger.Contains("INT") || trigger.Contains("MB") ) return kTRUE;
1054 
1055  // MC analysis has no trigger dependence, execute only for the default case
1056  //
1057  if ( simulation )
1058  {
1059  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggered events not checked in simulation, SKIP trigger %s! \n", trigger.Data());
1060  return kFALSE;
1061  }
1062 
1063  // Triggers introduced in 2011
1064  //
1065  if ( year < 2011 && ( trigger.Contains("EMCAL") || trigger.Contains("DCAL") ) )
1066  {
1067  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events for year < 2011, SKIP trigger %s! \n", trigger.Data());
1068  return kFALSE;
1069  }
1070 
1071  // DCal Triggers introduced in 2015
1072  //
1073  if ( year < 2014 && trigger.Contains("DCAL") )
1074  {
1075  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events by DCal for year < 2014, SKIP trigger %s! \n", trigger.Data());
1076  return kFALSE;
1077  }
1078 
1079  // EG2 trigger only activated from 2013
1080  //
1081  if ( year < 2013 && trigger.Contains("L2") )
1082  {
1083  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : EG2 trigger not available for year < 2012, SKIP %s in %s \n", trigger.Data(),period.Data());
1084  return kFALSE;
1085  }
1086 
1087  // Triggers only activated in 2013 from LHC13d for physics (it might be there are in b and c but not taking data)
1088  //
1089  if ( year == 2013 && trigger.Contains("L") && ( period.Contains("b") || period.Contains("c") ) )
1090  {
1091  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggers not available for year 2013 in period %s, SKIP %s in %s \n",period.Data(), trigger.Data());
1092  return kFALSE;
1093  }
1094 
1095  // DCal Triggers introduced in 2015
1096  //
1097  if ( year < 2014 && ( trigger.Contains("DCAL") ) )
1098  {
1099  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No triggered events by DCal for year < 2014, SKIP trigger %s! \n", trigger.Data());
1100  return kFALSE;
1101  }
1102 
1103  // L0 trigger used for periods below LHC11e?
1104  //
1105  if ( period == "LHC11h" && trigger.Contains("EMCAL_L0") )
1106  {
1107  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No EMCAL_L0 triggered events by EMCal for period LHC11h, SKIP trigger %s! \n", trigger.Data());
1108  return kFALSE;
1109  }
1110 
1111  // L1 trigger not used until LHC11e? period, what about LHC11f?
1112  //
1113  if ( period.Contains("LHC11") && period != "LHC11h" && trigger.Contains("EMCAL_L1") )
1114  {
1115  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1116  return kFALSE;
1117  }
1118 
1119  // L1 trigger not used again until LHC12c period
1120  //
1121  if ( ( period == "LHC12a" || period == "LHC12b" ) && trigger.Contains("EMCAL_L1") )
1122  {
1123  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1124  return kFALSE;
1125  }
1126 
1127  // Run2: No trigger used again until LHC15i period
1128  //
1129  if ( year == 2015 && ( period == "LHC15h" || period == "LHC15g" || period == "LHC15f" || period == "LHC15e" ||
1130  period == "LHC15d" || period == "LHC15c" || period == "LHC15b" || period == "LHC15a" ) )
1131  {
1132  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1133  return kFALSE;
1134  }
1135 
1136  // Run2: L1 trigger not used again until LHC15o period
1137  //
1138  if ( year == 2015 && period != "LHC15o" && !trigger.Contains("L0") )
1139  {
1140  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1141  return kFALSE;
1142  }
1143 
1144  // Run2: L1 trigger not used again until LHC15o period
1145  //
1146  if ( year == 2015 && period == "LHC15o" && ( trigger.Contains("L0") || trigger.Contains("L2") ) )
1147  {
1148  printf("AddTaskPi0IMGammaCorrQA - CAREFUL : No %s triggered events by EMCal for period %s, SKIP \n", trigger.Data(),period.Data());
1149  return kFALSE;
1150  }
1151 
1152 
1153  return kTRUE;
1154 
1155 }
void SetPtThreshold(Float_t pt)
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetNumberOfCellsFromPHOSBorder(Int_t n)
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 SwitchOnFillAllTrackMatchingHistogram()
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:129
void SwitchOnLoadOwnEMCALGeometryMatrices()
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)
AliEMCALRecoUtils * GetEMCALRecoUtils() const
void SetConeSize(Float_t r)
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:140
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:112
void AddAnalysis(TObject *ana, Int_t n)
Add analysis depending on AliAnaCaloTrackCorrBaseClass to list.
AliAnaCalorimeterQA * ConfigureQAAnalysis(TString calorimeter, Bool_t caloType, TString collision, Bool_t simulation, Bool_t fillAllCell, Int_t year, Int_t debugLevel)
void SwitchOffTMHistoFill()
Definition: AliAnaPhoton.h:95
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
virtual void SetOutputAODClassName(TString name)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void 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:120
const TString calorimeter
Definition: anaM.C:36
void SetHistoTrackResidualEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Class for event, clusters and tracks filtering and preparation for the AOD analysis.
void SetCTSPtMin(Float_t pt)
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)
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)
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.
AliAnaPi0 * ConfigurePi0Analysis(TString calorimeter, Bool_t caloType, TString collision, TString containerName, Bool_t simulation, Int_t year, Bool_t qaan, Int_t debugLevel, Int_t minCen)
int Int_t
Definition: External.C:63
virtual AliHistogramRanges * GetHistogramRanges()
AliCalorimeterUtils * ConfigureCaloUtils(TString calorimeter, Bool_t simulation, Bool_t calibrate, Int_t year, Int_t debugLevel)
void SwitchOnDataControlHistograms(Int_t lev=1)
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
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 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:2428
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPhoton.h:115
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 *)
Track selection for correlation analysis.
void SetHistoOpeningAngleRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void SwitchOffFiducialCut()
void SwitchOnFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:74
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 SetTrackTimeCut(Double_t a, Double_t b)
void SetEMCALTimeCut(Double_t a, Double_t b)
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:138
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()
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:123
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:99
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)