AliPhysics  a8afd6c (a8afd6c)
AddTaskGammaHadronCorrelation.C
Go to the documentation of this file.
1 
19 // Set includes for compilation
20 
21 #if !defined(__CINT__) || defined(__MAKECINT__)
22 
23 // ROOT
24 #include <TString.h>
25 #include <TSystem.h>
26 #include <TROOT.h>
27 
28 // ALIROOT/ALIPHYSICS
29 #include "AliLog.h"
30 #include "AliAnalysisManager.h"
31 #include "AliInputEventHandler.h"
32 #include "AliVTrack.h"
33 #include "AliESDtrackCuts.h"
34 
35 // CaloTrackCorr
37 #include "AliCaloTrackESDReader.h"
38 #include "AliCaloTrackAODReader.h"
39 #include "AliCalorimeterUtils.h"
40 #include "AliAnaPhoton.h"
41 #include "AliAnaPi0EbE.h"
42 #include "AliHistogramRanges.h"
45 #include "AliAnaChargedParticles.h"
46 #include "AliAnaCalorimeterQA.h"
47 #include "AliAnaGeneratorKine.h"
50 
51 // Macros
52 R__ADD_INCLUDE_PATH($ALICE_PHYSICS)
53 //#include "ConfigureEMCALRecoUtils.C"
54 #include "PWGGA/CaloTrackCorrelations/macros/ConfigureAndGetEventTriggerMaskAndCaloTriggerString.C"
57 #include "PWGJE/macros/CreateTrackCutsPWGJE.C"
58 
59 #endif
60 
61 // Declare methods for compilation
62 
64  TString clustersArray, Bool_t tender,
65  TString calorimeter, Bool_t nonLinOn,
66  TString trigger, Bool_t rejectEMCTrig,
67  Int_t minCen, Int_t maxCen,
68  Bool_t printSettings, Int_t debug );
70  Bool_t tender, TString calorimeter,
71  Bool_t nonLinOn, Int_t year,
72  Bool_t printSettings, Int_t debug );
74  TString calorimeter, Int_t year, Int_t tm,
75  Bool_t printSettings, Int_t debug );
77  Bool_t useSSIso, Bool_t useAsy,
78  TString col, Bool_t simulation,
79  TString calorimeter, Int_t year, Int_t tm,
80  Bool_t printSettings, Int_t debug );
82  (TString particle, Int_t leading,
83  Int_t partInCone, Int_t thresType,
84  Float_t cone, Float_t pth, Bool_t multi,
85  TString col, Bool_t simulation,
86  TString calorimeter, Int_t year, Int_t tm,
87  Bool_t printSettings, Int_t debug );
89  (TString particle, Int_t leading,
90  Bool_t bIsolated, Float_t shshMax,
91  Int_t partInCone, Int_t thresType,
92  Float_t cone, Float_t pth, Bool_t mixOn,
93  TString col, Bool_t simulation,
94  TString calorimeter, Int_t year, Int_t tm,
95  Bool_t printSettings, Int_t debug );
97  (Bool_t simulation, Bool_t printSettings, Int_t debug);
100  Bool_t printSettings, Int_t debug );
102  TString col, Bool_t simulation,
103  TString calorimeter, Int_t year,
104  Bool_t printSettings, Int_t debug );
105 
107  TString calorimeter , Int_t year,
108  TString col , Bool_t simulation,
109  Bool_t printSettings, Int_t debug);
110 
111 
114 
146 (
147  TString calorimeter = "EMCAL", // "DCAL", "PHOS"
148  Bool_t simulation = kFALSE,
149  Int_t year = 2011,
150  TString col = "pp",
151  Int_t rejectEMCTrig = 0,
152  TString clustersArray = "",
153  Bool_t tender = kFALSE,
154  Bool_t nonLinOn = kFALSE,
155  Float_t shshMax = 0.27,
156  Float_t isoCone = 0.4,
157  Float_t isoPtTh = 0.5,
160  Int_t leading = 0,
161  Int_t tm = 1,
162  Int_t minCen = -1,
163  Int_t maxCen = -1,
164  Bool_t mixOn = kTRUE,
165  Bool_t qaAn = kFALSE,
166  Bool_t chargedAn = kFALSE,
167  TString outputfile = "",
168  Bool_t printSettings = kFALSE,
169  Int_t debug = 0,
170  const char *trigSuffix = "EMC7"
171 )
172 {
173  // Check the global variables, and reset the provided ones if empty.
174  //
175  TString trigger = trigSuffix;
176 
177  gROOT->LoadMacro("$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/GetAlienGlobalProductionVariables.C");
178 
179  TString period = "LHC17";
180  Bool_t printGlobal = kTRUE;
181 
182  GetAlienGlobalProductionVariables(simulation,col,period,year,printGlobal);
183 
184  printf("Passed settings:\n calorimeter <%s>, simulation <%d>, year <%d>,\n col <%s>, trigger <%s>, reject EMC <%d>, clustersArray <%s>, tender <%d>, non linearity <%d>\n shshMax <%2.2f>, isoCone <%2.2f>, isoPtTh <%2.2f>, isoMethod <%d>,isoContent <%d>,\n leading <%d>, tm <%d>, minCen <%d>, maxCen <%d>, mixOn <%d>,\n qaAn <%d>, chargedAn <%d>, outputfile <%s>, printSettings <%d>, debug <%d>\n",
185  calorimeter.Data(),simulation,year,col.Data(),trigger.Data(), rejectEMCTrig, clustersArray.Data(),tender, nonLinOn, shshMax,
186  isoCone,isoPtTh,isoMethod,isoContent,leading,tm,
187  minCen,maxCen,mixOn,qaAn,chargedAn,outputfile.Data(),printSettings,debug);
188 
189  // Get the pointer to the existing analysis manager via the static access method.
190  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
191  if (!mgr)
192  {
193  ::Error("AddTask", "No analysis manager to connect to.");
194  return NULL;
195  }
196 
197  // Check the analysis type using the event handlers connected to the analysis manager.
198 
199  if (!mgr->GetInputEventHandler())
200  {
201  ::Error("AddTask", "This task requires an input event handler");
202  return NULL;
203  }
204 
205  // Make sure the B field is enabled for track selection, some cuts need it
206  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
207 
208  // Name for containers
209 
210  //kAnaGammaHadronCorr = Form("%s_Trig%s_Cl%s_TM%d_R%1.1f_Pt%1.1f",calorimeter.Data(), trigger.Data(),kClusterArray.Data(),tm,cone,pth);
211  kAnaGammaHadronCorr = Form("GammaHadron_%s_Trig%s_Col_%s_Year%d_Cl%s_Ten%d_TM%d_M02_%1.2f_IsoParam_C%1.2fPt%1.2fM%dPa%d_Lead%d_Mix%d",
212  calorimeter.Data(),trigger.Data(),col.Data(),year,clustersArray.Data(),tender,
213  tm, shshMax,isoCone,isoPtTh,isoMethod,isoContent,leading,mixOn);
214 
215  if(col=="PbPb" && maxCen>=0) kAnaGammaHadronCorr+=Form("Cen%d_%d",minCen,maxCen);
216 
217  printf("<<<< NAME: %s >>>>>\n",kAnaGammaHadronCorr.Data());
218 
219  // #### Configure analysis ####
220 
222 
223  // General frame setting and configuration
224  maker->SetReader ( ConfigureReader (col,simulation,clustersArray,tender,calorimeter,nonLinOn,trigger,rejectEMCTrig,minCen,maxCen,printSettings,debug) );
225  maker->SetCaloUtils( ConfigureCaloUtils(col,simulation, tender,calorimeter,nonLinOn,year,printSettings,debug) );
226 
227  // Analysis tasks setting and configuration
228  Int_t n = 0;//Analysis number, order is important
229 
230  //
231  // Photon analysis
232  //
233  maker->AddAnalysis(ConfigurePhotonAnalysis(col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Photon cluster selection
234 
235 // maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0" , AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
236 // col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Pi0 event by event selection, invariant mass and photon tagging from decay
237 //
238 // maker->AddAnalysis(ConfigurePi0EbEAnalysis("Eta" , AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
239 // col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Eta event by event selection, invariant mass and photon tagging from decay
240 //
241 // maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0SideBand", AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
242 // col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Pi0 out of peak event by event selection, and photon tagging from decay
243 //
244 // maker->AddAnalysis(ConfigurePi0EbEAnalysis("EtaSideBand", AliAnaPi0EbE::kIMCalo,kFALSE,kFALSE,
245 // col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Eta out of peak event by event selection, and photon tagging from decay
246 
247 
248  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon", leading, isoContent,isoMethod,isoCone,isoPtTh, kFALSE,
249  col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Photon isolation
250 
251 
252  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon", leading, kFALSE, shshMax, isoContent,isoMethod,isoCone,isoPtTh, mixOn,
253  col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Gamma-hadron correlation
254 
255  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon", leading, kTRUE, shshMax, isoContent,isoMethod,isoCone,isoPtTh, mixOn,
256  col,simulation,calorimeter,year,tm,printSettings,debug) , n++); // Isolated gamma hadron correlation
257 
258  //
259  // Merged pi0 analysis
260  //
261  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kSSCalo,kTRUE,kTRUE,
262  col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Pi0 event by event selection, cluster splitting
263 
264  maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SS", leading, isoContent,isoMethod,isoCone,isoPtTh, kFALSE,
265  col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Pi0 isolation, cluster splits
266 
267 
268  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SS", leading, kFALSE, shshMax, isoContent,isoMethod,isoCone,isoPtTh, mixOn,
269  col,simulation,calorimeter,year,tm,printSettings,debug), n++); // Pi0-hadron correlation
270 
271  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SS", leading, kTRUE, shshMax, isoContent,isoMethod,isoCone,isoPtTh, mixOn,
272  col,simulation,calorimeter,year,tm,printSettings,debug) , n++); // Isolated pi0-hadron correlation
273 
274  // Check the generated kinematics
275 // if(simulation) maker->AddAnalysis(ConfigureGenKineAnalysis(isoMethod,isoCone,isoPtTh,
276 // col,simulation,calorimeter,year,printSettings,debug), n++);
277 
278  // Charged analysis
279  if(chargedAn) maker->AddAnalysis(ConfigureChargedAnalysis(simulation,printSettings,debug), n++); // track selection checks
280 
281  // Calo QA
282  if(qaAn) maker->AddAnalysis(ConfigureQAAnalysis(col,simulation,calorimeter,year,printSettings,debug) , n++);
283 
284  maker->SetAnaDebug(debug) ;
285 
286  maker->SwitchOnHistogramsMaker() ;
287  maker->SwitchOnAODsMaker() ;
288 
289  if( simulation || !trigger.Contains("EMC") ) maker->SwitchOffDataControlHistograms();
290 
291  if(simulation)
292  {
293  // Calculate the cross section weights, apply them to all histograms
294  // and fill xsec and trial histo. Sumw2 must be activated.
295  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionCalculation();
296  //maker->SwitchOnSumw2Histograms();
297 
298  // For recent productions where the cross sections and trials are not stored in separate file
299  //maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionFromEventHeader() ;
300 
301  // Just fill cross section and trials histograms.
302  maker->GetReader()->GetWeightUtils()->SwitchOnMCCrossSectionHistoFill();
303 
304  // Add control histogram with pT hard to control aplication of weights
305  maker->SwitchOnPtHardHistogram();
306  }
307 
308  if(printSettings) maker->Print("");
309 
310  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, calorimeter.Data());
311 
312  //
313  // Create task, pass the maker and add it to the manager
314  //
315  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (Form("%s",kAnaGammaHadronCorr.Data()));
316 
317  task->SetDebugLevel(debug);
318 
319  //task->SetBranches("ESD:AliESDRun.,AliESDHeader");
320  //task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
321 
322  task->SetAnalysisMaker(maker);
323 
324  mgr->AddTask(task);
325 
326  //
327  // Select events trigger depending on trigger
328  //
329  maker->GetReader()->SwitchOnEventTriggerAtSE(); // on is default case
330  if(!simulation)
331  {
332  gROOT->LoadMacro("$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/ConfigureAndGetEventTriggerMaskAndCaloTriggerString.C");
333  TString caloTriggerString = "";
334  UInt_t mask = ConfigureAndGetEventTriggerMaskAndCaloTriggerString(trigger, year, caloTriggerString);
335 
336  maker->GetReader()->SetFiredTriggerClassName(caloTriggerString);
337 
338  // For mixing with AliAnaParticleHadronCorrelation switch it off
339  if(mixOn)
340  {
341  maker->GetReader()->SwitchOffEventTriggerAtSE();
342  maker->GetReader()->SetEventTriggerMask(mask);
343  // what to do with caloTriggerString?
344 
345  // Careful, not all productions work with kMB, try kINT7, kINT1, kAnyINT
346  //reader->SetMixEventTriggerMask(AliVEvent::kMB);
347  maker->GetReader()->SetMixEventTriggerMask(AliVEvent::kINT7);
348 
349  printf("---Trigger selection done in AliCaloTrackReader!!!\n");
350  }
351  else
352  {
353  task ->SelectCollisionCandidates( mask );
354  }
355  }
356 
357  //
358  // Create containers
359  //
360  if(outputfile.Length()==0) outputfile = AliAnalysisManager::GetCommonFileName();
361 
362  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kAnaGammaHadronCorr, TList::Class(),
363  AliAnalysisManager::kOutputContainer,
364  Form("%s",outputfile.Data()));
365 
366  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kAnaGammaHadronCorr.Data()), TList::Class(),
367  AliAnalysisManager::kParamContainer,
368  "AnalysisParameters.root");
369 
370  // Create ONLY the output containers for the data produced by the task.
371  // Get and connect other common input/output containers via the manager as below
372  //==============================================================================
373  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
374  //if(!kData.Contains("delta") && outputAOD) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
375  mgr->ConnectOutput (task, 1, cout_pc);
376  mgr->ConnectOutput (task, 2, cout_cuts);
377 
378  return task;
379 }
380 
385  TString clustersArray, Bool_t tender,
386  TString calorimeter, Bool_t nonLinOn,
387  TString trigger, Bool_t rejectEMCTrig,
388  Int_t minCen, Int_t maxCen,
389  Bool_t printSettings, Int_t debug )
390 {
391  // Get the data type ESD or AOD
392  AliAnalysisManager * mgr = AliAnalysisManager::GetAnalysisManager();
393  TString inputDataType = mgr->GetInputEventHandler()->GetDataType();
394 
395  AliCaloTrackReader * reader = 0;
396  if (inputDataType == "AOD") reader = new AliCaloTrackAODReader();
397  else if(inputDataType == "ESD") reader = new AliCaloTrackESDReader();
398  else printf("AliCaloTrackReader::ConfigureReader() - Data not known InputData=%s\n",inputDataType.Data());
399 
400  reader->SetDebug(debug);//10 for lots of messages
401 
402  //
403  // MC settings
404  //
405  // Check if kine stack is available, independent of request of simulation
406 // Bool_t useKinematics = kFALSE;
407 // useKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
408 //
409 // if(simulation)
410 // {
411 // if (!useKinematics && inputDataType=="AOD") useKinematics = kTRUE; //AOD primary should be available ...
412 // }
413 
414  // In case of Pythia pt Hard bin simulations (jet-jet, gamma-jet)
415  // reject some special events that bother the cross section
416  if(simulation)
417  {
418  // Event rejection cuts for jet-jet simulations, do not use in other
419  reader->SetPtHardAndJetPtComparison(kTRUE);
420  reader->SetPtHardAndJetPtFactor(2);
421 
422  // Event rejection more suitable for gamma-jet simulations, do not use in other
423 // reader->SetPtHardAndClusterPtComparison(kTRUE);
424 // reader->SetPtHardAndClusterPtFactor(1.5);
425  }
426 
427  //---------------------------
428  // Detectors acceptance, open
429  //---------------------------
430 
431  reader->SwitchOnFiducialCut();
432 
433  // Tracks
434  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
435 
436  // EMCal/DCal
437  if ( calorimeter == "EMCAL" ) reader->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 80, 187) ;
438  else if ( calorimeter == "DCAL" ) reader->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 260, 327) ;
439 
440  //PHOS
441  reader->GetFiducialCut()->SetSimplePHOSFiducialCut (0.12, 250, 320) ;
442 
443  //------------------------
444  // Detector input filling
445  //------------------------
446 
447  //Min cluster/track E
448  reader->SetEMCALEMin(0.3);
449  reader->SetEMCALEMax(1000);
450  reader->SetPHOSEMin(0.3);
451  reader->SetPHOSEMax(1000);
452  reader->SetCTSPtMin(0.2);
453  reader->SetCTSPtMax(1000);
454 
457 
458  // Shower shape smearing
459  // Set it in the train configuration page not here for the moment
460  // if(simulation)
461  // {
462  // reader->SwitchOffShowerShapeSmearing(); // Active only on MC, off by default
463  // reader->SetShowerShapeSmearWidth(0.005);
464  // }
465 
466  //
467  // Tracks
468  //
469  reader->SwitchOnCTS();
470 
471  reader->SwitchOffUseTrackTimeCut();
472  reader->SetTrackTimeCut(0,50);
473 
474  reader->SwitchOffUseTrackDCACut();
475  //reader->SetTrackDCACut(0,0.0105);
476  //reader->SetTrackDCACut(1,0.035);
477  //reader->SetTrackDCACut(2,1.1);
478 
479  if(inputDataType=="ESD")
480  {
481  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
482 
483  //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
484  //reader->SetTrackCuts(esdTrackCuts);
485 
486  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
487  reader->SetTrackCuts(esdTrackCuts);
488  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
489  reader->SetTrackComplementaryCuts(esdTrackCuts2);
490 
492  }
493  else if(inputDataType=="AOD")
494  {
495  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
497  reader->SetTrackStatus(AliVTrack::kITSrefit);
498 
499  //reader->SwitchOnAODPrimaryTrackSelection(); // Used in preliminary results of QM from Nicolas and Xiangrong?
500  //reader->SwitchOnTrackHitSPDSelection(); // Check that the track has at least a hit on the SPD, not much sense to use for hybrid or TPC only tracks
501  //reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid, TPC only
502  }
503 
504  //
505  // Calorimeter
506  //
507  if(clustersArray == "" && !tender)
508  {
509  printf("**************** Standard EMCAL clusters branch analysis **************** \n");
511  // Check in ConfigureCaloUtils that the recalibration and bad map are ON
512  }
513  else
514  {
515  printf("**************** Input for analysis is Clusterizer %s **************** \n", clustersArray.Data());
516  reader->SetEMCALClusterListName(clustersArray);
518  }
519 
520  // Time cuts
522  if(simulation)
523  {
524  reader->SwitchOffUseEMCALTimeCut();
525  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
526  }
527  else
528  {
529  reader->SwitchOnUseEMCALTimeCut();
530  reader->SetEMCALTimeCut(-25,20);
531  }
532 
533  // CAREFUL
534  if(nonLinOn) reader->SwitchOnClusterELinearityCorrection();
536 
537  if(calorimeter == "EMCAL" || calorimeter == "DCAL" )
538  {
539  reader->SwitchOnEMCALCells();
540  reader->SwitchOnEMCAL();
541  }
542 
543  if(calorimeter == "PHOS")
544  { // Should be on if QA is activated with correlation on
545  reader->SwitchOnPHOSCells();
546  reader->SwitchOnPHOS();
547  }
548 
549  //-----------------
550  // Event selection
551  //-----------------
552 
553  //if(!simulation) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
554 
555  // Event triggered by EMCal selection settings
558 
559  if( rejectEMCTrig > 0 && !simulation && (trigger.Contains("EMC") || trigger.Contains("L")))
560  {
561  printf("=== Remove bad triggers === \n");
564 
565  // reader->SetTriggerPatchTimeWindow(8,9); // default values
566  // if (kRunNumber < 146861) reader->SetEventTriggerL0Threshold(3.);
567  // else if(kRunNumber < 154000) reader->SetEventTriggerL0Threshold(4.);
568  // else if(kRunNumber < 165000) reader->SetEventTriggerL0Threshold(5.5);
569  // //redefine for other periods, triggers
570  //
571  // if(kRunNumber < 172000)
572  // {
573  // reader->SetEventTriggerL1Bit(4,5); // current LHC11 data
574  // printf("\t Old L1 Trigger data format!\n");
575  // }
576  // else
577  // {
578  // reader->SetEventTriggerL1Bit(6,8); // LHC12-13 data
579  // printf("\t Current L1 Trigger data format!\n");
580  // }
581 
582  if(clustersArray != "" || tender)
583  {
584  printf("Trigger cluster calibration OFF\n");
586  }
587 
588  }
589 
590  //reader->RejectFastClusterEvents() ;
591 
592  reader->SetZvertexCut(10.); // Open cut
593  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
594  reader->SwitchOnRejectNoTrackEvents();
595 
596  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
597  reader->SwitchOffPileUpEventRejection(); // remove pileup by default off, apply it only for MB not for trigger
598 
599  if(col=="PbPb")
600  {
601  // Centrality
602  reader->SetCentralityClass("V0M");
603  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
604  reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
605  //reader->SwitchOnAcceptOnlyHIJINGLabels();
606  // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
607  reader->SetEventPlaneMethod("V0");
608  }
609 
610  if(printSettings) reader->Print("");
611 
612  return reader;
613 }
614 
619  Bool_t tender, TString calorimeter,
620  Bool_t nonLinOn,
621  Int_t year, Bool_t printSettings,
622  Int_t debug)
623 {
625 
626  cu->SetDebug(debug);
627 
628  // Remove clusters close to borders, at least max energy cell is 1 cell away
631 
633 
634  if ( calorimeter == "PHOS" )
635  {
636  if(year < 2014) cu->SetNumberOfSuperModulesUsed(3);
637  else cu->SetNumberOfSuperModulesUsed(4);
638  }
639  else
640  {
641  Int_t nSM = 20;
642  Int_t lastEMC = 11;
643  if (year == 2010) { nSM = 4; lastEMC = 3; }// EMCAL first year
644  else if (year < 2014) { nSM = 10; lastEMC = 9; }// EMCAL active 2011-2013
645 
647 
648  if (calorimeter.Contains("EMCAL"))
649  {
650  cu->SetFirstSuperModuleUsed( 0);
651  cu->SetLastSuperModuleUsed (lastEMC);
652  }
653  else if (calorimeter.Contains("DCAL"))
654  {
655  cu->SetFirstSuperModuleUsed(12);
656  cu->SetLastSuperModuleUsed (19);
657  }
658  else
659  {
662  }
663 
664  printf("AddTaskGammaHadronCorrelation::CalorimeterUtils() - nSM %d, first %d, last %d\n",
666  }
667 
668  // Search of local maxima in cluster
669  if(col=="pp")
670  {
671  cu->SetLocalMaximaCutE(0.1);
672  cu->SetLocalMaximaCutEDiff(0.03);
673  }
674  else
675  {
676  cu->SetLocalMaximaCutE(0.2);
677  cu->SetLocalMaximaCutEDiff(0.03);
678  }
679 
681 
683 
684  // EMCAL settings
685 
686  if(!simulation)
688 
689  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
690 
691  // calibrations
692  Bool_t calibEner = kFALSE;
693  Bool_t calibTime = kFALSE;
696 
697  if( !tender )
698  {
699  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
701 
702  calibEner = kTRUE;
703  calibTime = kTRUE;
704  }
705 
706  if( simulation )
707  {
708  calibEner = kFALSE;
709  calibTime = kFALSE;
710 
711  cu->SwitchOffRecalibration(); // Check the reader if it is taken into account during filtering
713  }
714 
715 // gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
716 // ConfigureEMCALRecoUtils(recou,
717 // simulation,
718 // kTRUE, // exotic
719 // nonLinOn, // Non linearity
720 // calibEner, // E calib
721 // kTRUE, // bad map
722 // calibTime); // time calib
723 
724  cu->ConfigureEMCALRecoUtils(simulation,
725  kTRUE, // exotic
726  nonLinOn, // Non linearity
727  calibEner, // E calib
728  kTRUE, // bad map
729  calibTime); // time calib
730 
731  if( calibTime ) recou->SetExoticCellDiffTimeCut(50);
732 
733  if( nonLinOn ) cu->SwitchOnCorrectClusterLinearity();
734 
735  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
736  printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
737 
738  // PHOS
740 
741  if(printSettings) cu->Print("");
742 
743  return cu;
744 }
745 
751  TString calorimeter, Int_t year, Int_t tm,
752  Bool_t printSettings, Int_t debug)
753 {
754  AliAnaPhoton *ana = new AliAnaPhoton();
755 
756  // cluster selection cuts
757 
759 
760  ana->SwitchOffFiducialCut();
761 
762  ana->SetCalorimeter(calorimeter);
763  if(calorimeter == "DCAL")
764  {
765  TString calo = "EMCAL";
766  ana->SetCalorimeter(calo);
767  }
768 
769  ana->SwitchOnFillShowerShapeHistograms(); // Filled before photon shower shape selection
770 
771  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
772 
773  if(tm) ana->SwitchOnTrackMatchRejection() ;
774  else ana->SwitchOffTrackMatchRejection() ;
775 
776  ana->SwitchOnTMHistoFill() ;
777 
778  if(calorimeter == "PHOS")
779  {
780  ana->SetNCellCut(2);// At least 3 cells
781  ana->SetMinPt(0.3);
782  ana->SetMinDistanceToBadChannel(2, 4, 5);
783  ana->SetTimeCut(-1e10,1e10); // open cut
784  }
785  else
786  {//EMCAL
787  ana->SetNCellCut(1);// At least 2 cells
788  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
789  ana->SetMaxEnergy(100);
790  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
791  // restrict to less than 100 ns when time calibration is on
792  ana->SetMinDistanceToBadChannel(2, 4, 6);
793 
794  // NLM cut, used in all, exclude clusters with more than 2 maxima
795  // Not needed if M02 cut is already strong or clusterizer V2
796  ana->SetNLMCut(1, 2) ;
797  }
798 
799  //PID cuts (shower shape)
800  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
801  AliCaloPID* caloPID = ana->GetCaloPID();
802  //Not used in bayesian
803 
804  // EMCAL
805 
806  //caloPID->SetEMCALLambda0CutMax(0.27);
807  caloPID->SetEMCALLambda0CutMax(10); // open, full shower shape needed for isolation studies
808  caloPID->SetEMCALLambda0CutMin(0.10);
809 
810  // Track matching
811  // tm = 1, fixed cuts
812  caloPID->SetEMCALDEtaCut(0.025);
813  caloPID->SetEMCALDPhiCut(0.030);
814 
815  // pT track dependent cuts
816  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
817 
818  // PHOS
819  caloPID->SetPHOSDispersionCut(2.5);
820  caloPID->SetPHOSRCut(2.);
821  //if(kInputData=="AOD") caloPID->SetPHOSRCut(2000.); // Open cut since dX, dZ not stored
822 
823  // Branch AOD settings
824  ana->SetOutputAODName(Form("PhotonTrigger_%s",kAnaGammaHadronCorr.Data()));
825  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
826 
827  //Set Histograms name tag, bins and ranges
828  ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",tm));
829 
830  SetAnalysisCommonParameters(ana,calorimeter,year,col,simulation,printSettings,debug) ; // see method below
831 
832  if(ana->GetFirstSMCoveredByTRD() > 0)
833  printf("AddTaskGammaHadronCorrelation() >>> Set first SM covered by TRD, SM=%d <<< year %d \n", ana->GetFirstSMCoveredByTRD(),year);
834 
835  // Number of particle type MC histograms
836  ana->FillNOriginHistograms (17); // 18 max
837  ana->FillNPrimaryHistograms(6); // 6 max
838 
839  return ana;
840 }
841 
847  Bool_t useSSIso, Bool_t useAsy,
848  TString col, Bool_t simulation,
849  TString calorimeter, Int_t year, Int_t tm,
850  Bool_t printSettings, Int_t debug )
851 {
852  // Configuration of pi0 event by event selection
853 
854  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
855 
856  ana->SetDebug(debug);
857 
858  ana->SetAnalysisType((AliAnaPi0EbE::anaTypes)analysis);
859  TString opt = "";
860  if(analysis==AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
861  if(analysis==AliAnaPi0EbE::kSSCalo) opt = "SS";
862 
865 
867  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
868  //if(!kTime && !simulation) ana->SwitchOnFillEMCALBCHistograms();
869 
870  if(tm) ana->SwitchOnTrackMatchRejection() ;
871  else ana->SwitchOffTrackMatchRejection() ;
872  ana->SwitchOffTMHistoFill() ;
873 
874  ana->SetCalorimeter(calorimeter);
875  if(calorimeter == "DCAL")
876  {
877  TString calo = "EMCAL";
878  ana->SetCalorimeter(calo);
879  }
880 
881  // Branch AOD settings
882  ana->SetOutputAODName(Form("%s%sTrigger_%s",particle.Data(), opt.Data(), kAnaGammaHadronCorr.Data()));
883  printf("***Out branch %s***\n",ana->GetOutputAODName().Data());
884  ana->SetOutputAODClassName("AliCaloTrackParticleCorrelation");
885 
886  if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
887 
888  //Set Histograms name tag, bins and ranges
889 
890  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),tm));
891 
892  SetAnalysisCommonParameters(ana,calorimeter,year,col,simulation,printSettings,debug); // see method below
893 
895  if(analysis!=AliAnaPi0EbE::kSSCalo)
896  {
897  ana->SetInputAODName(Form("PhotonTrigger_%s",kAnaGammaHadronCorr.Data()));
898 
899  ana->SetM02CutForInvMass(0.1,0.35); // Loose SS cut
900 
902  ana->SetR(0.4);
904 
905  if(useSSIso)
906  {
908  ana->AddToHistogramsName(Form("Ana%s%sEbEIsoDecay_TM%d_",particle.Data(),opt.Data(),tm));
909  ana->SetOutputAODName(Form("%s%sIsoDecayTrigger_%s",particle.Data(), opt.Data(), kAnaGammaHadronCorr.Data()));
910  }
911 
912  if ( calorimeter.Contains("CAL") && !simulation ) ana->SetPairTimeCut(100);
913 
915  nms->SetParticle(particle);
916 
917  //****
918  nms->SetInvMassCutMaxParameters(0,0,0); // Overrule the setting in SetParticle for Pi0 option
919  //****
920 
921  // Tighten a bit mass cut with respect to default window
922  if(particle=="Pi0") nms->SetInvMassCutRange(0.110,0.160);
923  if(particle=="Eta") nms->SetInvMassCutRange(0.520,0.580);
924 
925  //if(!particle.Contains("SideBand")) nms->SwitchOnAngleSelection();
926  //else nms->SwitchOnAngleSelection();
927 
929 
930  if(particle.Contains("Pi0SideBand")) // For pi0, do not consider left band
931  nms->SetSideBandCutRanges(-1,0,0.190,0.240);
932 
933  if(particle.Contains("EtaSideBand")) // For pi0, do not consider left band
934  nms->SetSideBandCutRanges(0.410,0.470,0.620,0.680);
935 
937  //nms->SetAngleMaxParam(2,0.2);
938  nms->SetHistoERangeAndNBins(0, 20, 80) ;
939  //nms->SetHistoIMRangeAndNBins(0, 1, 400);
940  }
941  else
942  {
943  // cluster splitting settings
944  ana->SetMinEnergy(6);
945  ana->SetMaxEnergy(100.);
946 
947  ana->SetNLMMinEnergy(0, 10);
948  ana->SetNLMMinEnergy(1, 6);
949  ana->SetNLMMinEnergy(2, 6);
950 
951  // NLM cut, used in all, exclude clusters with more than 2 maxima
952  ana->SetNLMCut(1, 2) ;
953 
954  //
955  ana->SetMinDistanceToBadChannel(2, 4, 6);
957  ana->SetTimeCut(-1e10,1e10); // Open time cut
958 
959  AliCaloPID* caloPID = ana->GetCaloPID();
960 
961  // Track matching
962  // tm = 1, fixed cuts
963  caloPID->SetEMCALDEtaCut(0.025);
964  caloPID->SetEMCALDPhiCut(0.030);
965 
966  // pT track dependent cuts
967  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
968 
969  caloPID->SetSplitWidthSigma(3); // cut at 3 sigma of the mean pi0 peak.
970 
971  if(!useSSIso)
972  {
973  printf("Do not apply SS cut on merged pi0 analysis \n");
974  caloPID->SwitchOffSplitShowerShapeCut() ;
975  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),tm));
976  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenSS",particle.Data(), opt.Data(), kAnaGammaHadronCorr.Data()));
977  caloPID->SetClusterSplittingM02Cut(0.1,10);
978  }
979  else
980  {
981  caloPID->SetClusterSplittingM02Cut(0.3,4); // Do the selection in the analysis class and not in the PID method to fill SS histograms
982  caloPID->SwitchOnSplitShowerShapeCut() ;
983  }
984 
985  if(useAsy)
986  {
987  caloPID->SwitchOnSplitAsymmetryCut() ;
989  ana->GetCaloPID()->SetSubClusterEnergyMinimum(1,0.5);
990  ana->GetCaloPID()->SetSubClusterEnergyMinimum(2,0.5);
991  }
992  else
993  {
994  caloPID->SwitchOffSplitAsymmetryCut() ;
995  if(!useSSIso)
996  {
997  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),tm));
998  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kAnaGammaHadronCorr.Data()));
999  }
1000  else
1001  {
1002  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),tm));
1003  ana->SetOutputAODName(Form("%s%sTrigger_%s_OpenAsy",particle.Data(), opt.Data(), kAnaGammaHadronCorr.Data()));
1004  }
1005  }
1006 
1007  // For Pi0 only if SwitchOnSimpleSplitMassCut()
1008  caloPID->SetPi0MassRange(0.10, 0.18);
1009  caloPID->SetEtaMassRange(0.50, 0.60);
1010  caloPID->SetPhotonMassRange(0.00, 0.08);
1011 
1012  caloPID->SetClusterSplittingMinNCells(6);
1013 
1014  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
1015  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
1016  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
1017 
1018  if(col=="PbPb" || kAnaGammaHadronCorr.Contains("150"))
1019  {
1020  caloPID->SetClusterSplittingMinNCells(4);
1021  //caloPID->SetPi0MassShiftHighECell(0.005);
1022  }
1023  }
1025 
1026  return ana;
1027 }
1028 
1033  Int_t partInCone, Int_t thresType,
1034  Float_t cone, Float_t pth, Bool_t multi,
1035  TString col, Bool_t simulation,
1036  TString calorimeter, Int_t year, Int_t tm,
1037  Bool_t printSettings, Int_t debug )
1038 {
1040 
1041  ana->SetDebug(debug);
1042 
1043  ana->SetMinPt(5);
1044  ana->SetCalorimeter(calorimeter);
1045  if(calorimeter == "DCAL")
1046  {
1047  TString calo = "EMCAL";
1048  ana->SetCalorimeter(calo);
1049  }
1050 
1052  ana->SwitchOffCellHistoFill() ;
1053 
1054  ana->SwitchOffLeadingOnly();
1056  if( leading > 0 ) ana->SwitchOnLeadingOnly();
1057  if( leading == 2 ||
1058  leading == 4) ana->SwitchOnCheckNeutralClustersForLeading();
1059 
1060  // MC
1063 
1064  if(particle.Contains("Photon"))
1065  {
1067  ana->SetNDecayBits(5);
1068  ana->SwitchOnSSHistoFill();
1069  }
1070  else
1071  {
1072  ana->SwitchOffSSHistoFill();
1073  }
1074 
1076  ana->SetNPtTrigBins(6);
1077  //ana->SetPtTrigLimits(0,8); ana->SetPtTrigLimits(1,12); ana->SetPtTrigLimits(2,16); ana->SetPtTrigLimits(3,25);
1078 
1080  ana->SetNBackgroundBins(11);
1081  //ana->SetBackgroundLimits(0,0); ana->SetBackgroundLimits(1,0.2); ana->SetBackgroundLimits(2,3); ana->SetBackgroundLimits(3,0.4);
1082 
1083  if(!tm) ana->SwitchOnTMHistoFill();
1084  else ana->SwitchOffTMHistoFill();
1085 
1086  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
1087 
1089  ana->SwitchOnFiducialCut();
1090 
1091  // Avoid borders of calorimeter
1092  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
1093  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
1094  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
1095 
1096  // Same Eta as EMCal, cut in phi if EMCAL was triggering
1097  if(particle=="Hadron" || particle.Contains("CTS"))
1098  {
1099  //if(trigger.Contains("EMC"))
1100  // ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
1101  //else
1102  ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
1103  }
1104 
1105  // Branch AOD settings
1106 
1107  ana->SetInputAODName(Form("%sTrigger_%s",particle.Data(),kAnaGammaHadronCorr.Data()));
1108  ana->SetAODObjArrayName(Form("IC%sTrigger_%s_R%1.1f_ThMin%1.1f",particle.Data(),kAnaGammaHadronCorr.Data(),cone,pth));
1109 
1110  //
1111  // Do settings for main isolation cut class
1112  //
1113  AliIsolationCut * ic = ana->GetIsolationCut();
1114  ic->SetDebug(debug);
1115  ic->SetParticleTypeInCone(partInCone);
1116  ic->SetICMethod(thresType);
1117  ic->SetPtFraction(0.1);
1118  ic->SetPtThreshold(0.5); // default, change in next lines
1119  ic->SetSumPtThreshold(1.0); // default, change in next lines
1120 
1121  if(cone > 0 && pth > 0)
1122  {
1123  ic->SetConeSize(cone);
1124  ic->SetPtThresholdMax(10000);
1125 
1126  if(thresType == AliIsolationCut::kPtThresIC)
1127  {
1128  printf("*** Iso *** PtThresMin = %1.1f GeV/c *** R = %1.1f ***\n",pth,cone);
1129  ic->SetPtThreshold(pth);
1130  }
1131 
1132  if(thresType == AliIsolationCut::kSumPtIC)
1133  {
1134  printf("*** Iso *** SumPtMin = %1.1f GeV/c *** R = %1.1f ***\n",pth,cone);
1135  ic->SetSumPtThreshold(pth);
1136  }
1137  }
1138  else
1139  {
1140  if(col=="pp")
1141  {
1142  ic->SetPtThreshold(0.5);
1143  ic->SetSumPtThreshold(1.0) ;
1144  ic->SetConeSize(0.4);
1145  }
1146  if(col=="PbPb")
1147  {
1148  ic->SetPtThreshold(3.);
1149  ic->SetSumPtThreshold(3.0) ;
1150  ic->SetConeSize(0.3);
1151  }
1152  }
1153 
1154 
1155  // Do or not do isolation with previously produced AODs.
1156  // No effect if use of SwitchOnSeveralIsolation()
1157  ana->SwitchOffReIsolation();
1158 
1159  // Multiple IC
1160  if(multi)
1161  {
1162  ic->SetConeSize(1.); // Take all for first iteration
1163  ic->SetPtThreshold(100);// Take all for first iteration
1164  ana->SwitchOnSeveralIsolation() ;
1165  ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),tm));
1166 
1167  ana->SetNCones(3);
1168  ana->SetNPtThresFrac(2);
1169  ana->SetConeSizes(0,0.3); ana->SetConeSizes(1,0.4); ana->SetConeSizes(2,0.5);
1170  ana->SetPtThresholds(0, 0.5); ana->SetPtThresholds(1, 1); ana->SetPtThresholds(2, 1.5); ana->SetPtThresholds(3, 2);
1171  ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1); ana->SetPtFractions (2, 0.2) ; ana->SetPtFractions (3, 0.3) ;
1172  ana->SetSumPtThresholds(0, 0.5) ; ana->SetSumPtThresholds(1, 1) ; ana->SetSumPtThresholds(2, 1.5); ana->SetSumPtThresholds(3, 2) ;
1173  //ana->SetPtThresholds(0, 0.5);
1174 
1175  ana->SwitchOffTMHistoFill();
1176  ana->SwitchOffSSHistoFill();
1177  }
1178  else
1179  ana->SwitchOffSeveralIsolation() ;
1180 
1181  AliCaloPID* caloPID = ana->GetCaloPID();
1182 
1183  // Track matching
1184  // tm = 1, fixed cuts
1185  caloPID->SetEMCALDEtaCut(0.025);
1186  caloPID->SetEMCALDPhiCut(0.030);
1187 
1188  // pT track dependent cuts
1189  if(tm > 1) caloPID->SwitchOnEMCTrackPtDepResMatching();
1190 
1191  //Set Histograms name tag, bins and ranges
1192 
1193  if(!multi) ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_",particle.Data(),tm));
1194  else ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),tm));
1195 
1196  SetAnalysisCommonParameters(ana,calorimeter,year,col,simulation,printSettings,debug); // see method below
1197 
1198  if(particle=="Hadron" || particle.Contains("CTS"))
1199  {
1200  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1201  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1202  }
1203 
1204  if(printSettings) ic ->Print("");
1205 
1206  return ana;
1207 }
1208 
1209 
1214  Bool_t bIsolated, Float_t shshMax,
1215  Int_t partInCone, Int_t thresType,
1216  Float_t cone, Float_t pth, Bool_t mixOn,
1217  TString col, Bool_t simulation,
1218  TString calorimeter, Int_t year, Int_t tm,
1219  Bool_t printSettings, Int_t debug )
1220 {
1222 
1223  ana->SetTriggerPtRange(5,100);
1224  ana->SetAssociatedPtRange(0.2,100);
1225  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
1226 
1227  // Underlying event
1228  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
1230 
1231  ana->SwitchOffAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
1232  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
1234 
1235  if(leading > 0 && leading < 3 ) ana->SwitchOnAbsoluteLeading();
1236  if(leading > 2 ) ana->SwitchOnNearSideLeading();
1237  if(leading == 2 || leading == 4 ) ana->SwitchOnCheckNeutralClustersForLeading();
1238 
1240  ana->SwitchOffCorrelationVzBin() ;
1242 
1244 
1246  if(particle.Contains("Photon"))
1247  {
1249  ana->SetNDecayBits(5);
1250  printf("**** SET M02 limits in correlation task *** \n");
1251  ana->SetM02Cut(0.10,shshMax);
1254  }
1255 
1256  ana->SetMCGenType(0,7);
1257 
1258  ana->SwitchOffLeadHadronSelection(); // Open cuts, just fill histograms
1262  ana->SetLeadHadronPhiCut(TMath::DegToRad()*130, TMath::DegToRad()*230.);
1263  ana->SetLeadHadronPtCut(0.5, 1000);
1264 
1265  // if triggering on PHOS and EMCAL is on
1266  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
1267  //ana->SetPi0AODBranchName("Pi0EMCAL_TrigEMC7_Cl_TM1");
1268 
1270 
1272 
1273  //if(!simulation) ana->SwitchOnFillPileUpHistograms();
1274 
1276 
1277  ana->SetNAssocPtBins(16); // set last bin [20,30] GeV/c
1278  // See AliAnaParticleCorrelation::InitParameters();
1279  // Default bins{0.2,0.5,1,2,3,4,5,6,7,8,9,10,12,14,16,20,30,40,50,100} GeV/c
1280  // If you want to change it:
1281  // ana->SetAssocPtBinLimit(0, 1) ;
1282  // ana->SetAssocPtBinLimit(1, 2) ;
1283  // ana->SetAssocPtBinLimit(2, 3) ;
1284  // ana->SetAssocPtBinLimit(3, 4) ;
1285  // ana->SetAssocPtBinLimit(4, 5) ;
1286  // ana->SetAssocPtBinLimit(5, 8) ;
1287  // ana->SetAssocPtBinLimit(6, 10) ;
1288  // ana->SetAssocPtBinLimit(7, 100);
1289 
1290  ana->SetNTriggerPtBins(5); // set last bin [25,30] GeV/c
1291  // See AliAnaParticleCorrelation::InitParameters();
1292  // Default bins{10,12,16,20,25,30,40,50,75,100} GeV/c
1293  // If you want to change it:
1294  // ana->SetTriggerPtBinLimit(0, 5) ;
1295  // ana->SetTriggerPtBinLimit(1, 10) ;
1296 
1297  ana->SelectIsolated(bIsolated); // do correlation with isolated photons
1298 
1299  // Mixing with own pool
1300  if(mixOn)
1301  {
1302  ana->SwitchOnOwnMix();
1304 
1305  if(bIsolated)
1306  {
1307  //Do settings for main isolation cut class
1308  AliIsolationCut * ic = ana->GetIsolationCut();
1309  ic->SetDebug(debug);
1310 
1311  if(cone >0 && pth > 0)
1312  {
1313  printf("*** Correl *** PtThres = %1.1f GeV/c *** R = %1.1f ***\n",pth,cone);
1314  ic->SetPtThreshold(pth);
1315  ic->SetConeSize(cone);
1316  }
1317  else
1318  {
1319  if(col=="pp")
1320  {
1321  ic->SetPtThreshold(0.5);
1322  ic->SetConeSize(0.4);
1323  }
1324  if(col=="PbPb")
1325  {
1326  ic->SetPtThreshold(3.);
1327  //ic->SetPtThreshold(1.);
1328  ic->SetConeSize(0.3);
1329  }
1330  }
1331 
1332  ic->SetPtFraction(0.1);
1333  ic->SetSumPtThreshold(1.0) ;
1334  ic->SetParticleTypeInCone(partInCone);
1335  ic->SetICMethod(thresType);
1336  }
1337  }
1338  else
1339  ana->SwitchOffOwnMix();
1340 
1341  ana->SetNZvertBin(20);
1342 
1343  if(col=="pp")
1344  {
1345  ana->SetNMaxEvMix(100);
1346  ana->SwitchOnTrackMultBins();
1347  ana->SetNTrackMultBin(10);
1348  ana->SetNRPBin(1);
1349  }
1350  else
1351  {
1352  ana->SetNMaxEvMix(10);
1353  ana->SwitchOffTrackMultBins(); // centrality bins
1354  ana->SetNCentrBin(12);
1355  ana->SetNRPBin(3);
1356  if(kAnaGammaHadronCorr.Contains("60_90"))
1357  {
1358  printf("*** Set mixing for peripheral\n");
1359  ana->SetNMaxEvMix(50);
1360  ana->SetNCentrBin(2);
1361  }
1362  }
1363 
1364  ana->SwitchOnFiducialCut();
1365 
1366  // Avoid borders of calorimeter, same as for isolation
1367  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
1368  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
1369  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
1370 
1371  // Input / output delta AOD settings
1372 
1373  ana->SetInputAODName(Form("%sTrigger_%s",particle.Data(),kAnaGammaHadronCorr.Data()));
1374  ana->SetAODObjArrayName(Form("%sHadronCorrIso%dTrigger_%s",particle.Data(),bIsolated,kAnaGammaHadronCorr.Data()));
1375  //ana->SetAODNamepTInConeHisto(Form("IC%s_%s_R%1.1f_ThMin%1.1f" ,particle.Data(),kAnaGammaHadronCorr.Data(),cone,pth));
1376 
1377  //Set Histograms name tag, bins and ranges
1378 
1379  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_TM%d_",particle.Data(),bIsolated,tm));
1380 
1381  SetAnalysisCommonParameters(ana,calorimeter,year,col,simulation,printSettings,debug); // see method below
1382 
1383  if(particle=="Hadron" || particle.Contains("CTS"))
1384  {
1385  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1386  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1387  }
1388 
1389  return ana;
1390 }
1391 
1396 {
1398 
1399  ana->SetDebug(debug);
1400 
1401  // selection cuts
1402 
1403  ana->SetMinPt(0.2);
1404  ana->SwitchOnFiducialCut();
1405  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
1406 
1408 
1411 
1412  // Branch AOD settings
1413 
1414  ana->SetOutputAODName(Form("HadronTrigger_%s",kAnaGammaHadronCorr.Data()));
1415  ana->SetOutputAODClassName("AliCaloTrackParticle"); // use if no correlation done
1416 
1417  //Set Histograms name tag, bins and ranges
1418 
1419  ana->AddToHistogramsName("AnaHadrons_");
1420 
1421  SetAnalysisCommonParameters(ana,"CTS",2012,"pp",simulation,printSettings,debug); // see method below
1422 
1423  return ana;
1424 }
1425 
1430  TString calorimeter, Int_t year,
1431  Bool_t printSettings, Int_t debug )
1432 {
1434 
1435  ana->SetCalorimeter(calorimeter);
1436  if(calorimeter == "DCAL")
1437  {
1438  TString calo = "EMCAL";
1439  ana->SetCalorimeter(calo);
1440  }
1441 
1442  ana->SetTimeCut(-1e10,1e10); // Open time cut
1443 
1444  ana->SwitchOffCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1445 
1447 
1448  ana->SwitchOffFiducialCut();
1452  ana->SwitchOffStudyBadClusters() ;
1454 
1456 
1457  ana->AddToHistogramsName("QA_"); // Begining of histograms name
1458 
1459  SetAnalysisCommonParameters(ana,calorimeter,year,col,simulation,printSettings,debug); // see method below
1460 
1461  return ana;
1462 }
1463 
1468  Float_t pth,
1469  TString col, Bool_t simulation,
1470  TString calorimeter, Int_t year,
1471  Bool_t printSettings, Int_t debug )
1472 {
1474 
1475  // Trigger detector, acceptance and pT cut
1476  ana->SetTriggerDetector(calorimeter);
1477  if(calorimeter == "DCAL")
1478  {
1479  TString calo = "EMCAL";
1480  ana->SetTriggerDetector(calo);
1481  }
1482 
1483  ana->SetMinPt(2); // Trigger photon, pi0 minimum pT
1484  if ( calorimeter == "EMCAL" ) ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.60, 86, 174) ;
1485  else if ( calorimeter == "DCAL" ) ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.60, 266, 314) ;
1486  else if ( calorimeter == "PHOS" ) ana->GetFiducialCutForTrigger()->SetSimplePHOSFiducialCut (0.10, 266, 314) ;
1487 
1488  // Particles associated to trigger or isolation cone acceptance and pT cut
1489  ana->SetCalorimeter(calorimeter);
1490  if(calorimeter == "DCAL")
1491  {
1492  TString calo = "EMCAL";
1493  ana->SetCalorimeter(calo);
1494  }
1495 
1496  ana->SetMinChargedPt(0.2);
1497  ana->SetMinNeutralPt(0.3);
1498 
1499  if ( calorimeter == "EMCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 80, 174) ;
1500  else if ( calorimeter == "DCAL" ) ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.70, 260, 327) ;
1501  else if ( calorimeter == "PHOS" ) ana->GetFiducialCut()->SetSimplePHOSFiducialCut (0.12, 250, 320) ;
1502  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.9, 0, 360);
1503 
1504  // Isolation paramters
1505  AliIsolationCut * ic = ana->GetIsolationCut();
1506  ic->SetDebug(debug);
1507  ic->SetPtThreshold(pth);
1508  ic->SetConeSize(cone);
1509  ic->SetSumPtThreshold(1.0) ;
1510  ic->SetICMethod(thresType);
1511 
1512  ana->AddToHistogramsName("AnaGenKine_");
1513 
1514  SetAnalysisCommonParameters(ana,calorimeter,year,col,simulation,printSettings,debug); // see method below
1515 
1516  return ana;
1517 }
1518 
1519 
1527  TString calorimeter, Int_t year,
1528  TString col, Bool_t simulation,
1529  Bool_t printSettings, Int_t debug)
1530 {
1531  //
1532  // Histograms ranges
1533  //
1534  AliHistogramRanges* histoRanges = ana->GetHistogramRanges();
1535 
1536  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
1537 
1538  if(calorimeter=="EMCAL")
1539  {
1540  ana->SetFirstSMCoveredByTRD(-1);
1541 
1542  if ( year == 2010 )
1543  {
1544  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
1545  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
1546  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
1547  }
1548  else if ( year < 2014 )
1549  {
1550  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 104) ;
1551  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
1552  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
1553 
1554  if (year == 2011) ana->SetFirstSMCoveredByTRD( 6);
1555  else if(year == 2012 ||
1556  year == 2013) ana->SetFirstSMCoveredByTRD( 4);
1557  }
1558  else // Run2
1559  {
1560  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 189*TMath::DegToRad(), 111) ;
1561  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA, revise
1562  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA, revise
1563  }
1564 
1565  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
1566  }
1567  else if(calorimeter=="DCAL")
1568  {
1569  histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 327*TMath::DegToRad(), 67) ;
1570  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
1571  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA, revise
1572  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA, revise
1573  ana->SetFirstSMCoveredByTRD( 0);
1574  }
1575  else if(calorimeter=="PHOS")
1576  {
1577  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
1578  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
1579  }
1580  else if(calorimeter=="CTS")
1581  {
1582  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1583  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1584  }
1585 
1586  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
1587 
1588  // Invariant mass histo
1589  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
1590  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
1591 
1592  // check if time calibration is on
1593  //histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
1594  histoRanges->SetHistoTimeRangeAndNBins(-400.,400,400);
1595  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
1596 
1597  // track-cluster residuals
1598  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
1599  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
1600  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
1601 
1602  // QA, electron, charged
1603  histoRanges->SetHistoPOverERangeAndNBins(0,2.,200);
1604  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
1605 
1606  // QA
1607  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
1608  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
1609  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
1610  histoRanges->SetHistoRRangeAndNBins(430,460,30);
1611  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
1612  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
1613 
1614  // QA, correlation
1615  if(col=="PbPb")
1616  {
1617  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
1618  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
1619  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
1620  }
1621  else
1622  {
1623  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
1624  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
1625  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
1626  }
1627 
1628  // xE, zT
1629  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
1630  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
1631 
1632  // Isolation
1633  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
1634  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
1635 
1636  //
1637  // MC histograms?
1638  //
1639  if(simulation) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
1640  else ana->SwitchOffDataMC() ;
1641 
1642  //
1643  // Debug
1644  //
1645  if(printSettings) ana->Print("");
1646 
1647  ana->SetDebug(debug); // 10 for lots of messages
1648 }
void SetSumPtThresholds(Int_t i, Float_t pt)
void SwitchOffSelectedClusterHistoFill()
Definition: AliAnaPi0EbE.h:112
void SetPtThreshold(Float_t pt)
AliAnalysisTaskCaloTrackCorrelation * AddTaskGammaHadronCorrelation(TString calorimeter="EMCAL", Bool_t simulation=kFALSE, Int_t year=2011, TString col="pp", Int_t rejectEMCTrig=0, TString clustersArray="", Bool_t tender=kFALSE, Bool_t nonLinOn=kFALSE, Float_t shshMax=0.27, Float_t isoCone=0.4, Float_t isoPtTh=0.5, Int_t isoMethod=AliIsolationCut::kPtThresIC, Int_t isoContent=AliIsolationCut::kNeutralAndCharged, Int_t leading=0, Int_t tm=1, Int_t minCen=-1, Int_t maxCen=-1, Bool_t mixOn=kTRUE, Bool_t qaAn=kFALSE, Bool_t chargedAn=kFALSE, TString outputfile="", Bool_t printSettings=kFALSE, Int_t debug=0, const char *trigSuffix="EMC7")
virtual void SwitchOnAODTrackSharedClusterSelection()
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
AliAnaParticleHadronCorrelation * ConfigureHadronCorrelationAnalysis(TString particle, Int_t leading, Bool_t bIsolated, Float_t shshMax, Int_t partInCone, Int_t thresType, Float_t cone, Float_t pth, Bool_t mixOn, TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug)
void SetNumberOfCellsFromPHOSBorder(Int_t n)
void SetTimeCut(Double_t min, Double_t max)
void SetSimpleCTSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void AddToHistogramsName(TString add)
void SwitchOnFillAllTrackMatchingHistogram()
void SetFirstSuperModuleUsed(Int_t first)
void SetSplitWidthSigma(Float_t s)
Definition: AliCaloPID.h:283
virtual void SwitchOnFiducialCut()
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:134
AliAnaChargedParticles * ConfigureChargedAnalysis(Bool_t simulation, Bool_t printSettings, Int_t debug)
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:264
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:260
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:96
void SetAssociatedPtRange(Float_t min, Float_t max)
Class with utils to perform Isolation Cuts.
virtual void SwitchOnAODHybridTrackSelection()
virtual void SetCentralityBin(Int_t min, Int_t max)
Int_t GetLastSuperModuleUsed() const
AliEMCALRecoUtils * GetEMCALRecoUtils() const
void SetLastSuperModuleUsed(Int_t last)
TString kAnaGammaHadronCorr
Global name to be composed of the settings, used to set the AOD branch name.
void SetConeSize(Float_t r)
void SetPtFraction(Float_t pt)
void SwitchOnSelectPairInIsolationCone()
Definition: AliAnaPi0EbE.h:127
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPi0EbE.h:142
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:145
void SwitchOffClusterELinearityCorrection()
void SetCTSPtMax(Float_t pt)
void SwitchOffSplitShowerShapeCut()
Definition: AliCaloPID.h:261
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:267
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetDebug(Int_t d)
void SetMinChargedPt(Float_t pt)
AliAnaParticleIsolation * ConfigureIsolationAnalysis(TString particle, Int_t leading, Int_t partInCone, Int_t thresType, Float_t cone, Float_t pth, Bool_t multi, TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug)
virtual void SetInputAODName(TString name)
void SetM02CutForInvMass(Float_t min=0, Float_t max=10)
Definition: AliAnaPi0EbE.h:117
virtual void SetTrackComplementaryCuts(AliESDtrackCuts *)
virtual AliIsolationCut * GetIsolationCut()
void SetEMCALEMin(Float_t en)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:117
void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
void KeepNeutralMesonSelectionHistos(Bool_t keep)
void SetTriggerDetector(TString det)
Set the calorimeter for the analysis.
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
AliCaloTrackReader * ConfigureReader(TString col, Bool_t simulation, TString clustersArray, Bool_t tender, TString calorimeter, Bool_t nonLinOn, TString trigger, Bool_t rejectEMCTrig, Int_t minCen, Int_t maxCen, Bool_t printSettings, Int_t debug)
virtual void SetOutputAODClassName(TString name)
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
void SetSumPtThreshold(Float_t s)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPi0EbE.h:133
void ana(anaModes mode=mLocal)
Definition: ana.C:990
Class for the Calorimeter QA analysis.
void SetHistodRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetLocalMaximaCutEDiff(Float_t c)
Get trigger particles/partons/jets and correlations at generator level.
void SwitchOffSplitAsymmetryCut()
Definition: AliCaloPID.h:257
void SetAnalysisType(anaTypes ana)
Definition: AliAnaPi0EbE.h:92
void SetNumberOfCellsFromEMCALBorder(Int_t n)
void SwitchOffTMHistoFill()
Definition: AliAnaPi0EbE.h:109
void SetNCellCut(Int_t n)
Definition: AliAnaPhoton.h:125
Select cluster pairs or single merged clusters with pi0 or eta invariant mass.
Definition: AliAnaPi0EbE.h:30
Bool_t IsBadChannelsRemovalSwitchedOn() const
void SetSimplePHOSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
void SetPtFractions(Int_t i, Float_t pt)
const TString calorimeter
Definition: anaM.C:36
virtual void SetPtHardAndJetPtComparison(Bool_t compare)
Bool_t IsRecalibrationOn() const
Bool_t IsRecalibrationOn() const
Some utilities for cluster and cell treatment.
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.
void SetIsolationCandidateMinPt(Float_t min)
Definition: AliAnaPi0EbE.h:122
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
void SetLeadHadronPtCut(Float_t min, Float_t max)
virtual void SetOutputAODName(TString name)
void SwitchOffRecalculateClusterTrackMatching()
void SetICMethod(Int_t i)
void SwitchOffVertexBCEventSelection()
void SetR(Float_t r)
Definition: AliAnaPi0EbE.h:121
virtual void SetCalorimeter(TString calo)
Set the calorimeter for the analysis. A string.
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.
Base class for CaloTrackCorr analysis algorithms.
void SwitchOffTrackMatchRejection()
Definition: AliAnaPhoton.h:135
void SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
void SetUeDeltaPhiCutRange(Double_t uephimin, Double_t uephimax)
1 calorimeter cluster and 1 photon conversion pair invariant mass selection
Definition: AliAnaPi0EbE.h:88
void SetHistoPtInConeRangeAndNBins(Float_t min, Float_t max, Int_t n)
Check EMCal trigger availability in period.
virtual void SetDebug(Int_t d)
void SetHistoPOverERangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual AliFiducialCut * GetFiducialCut()
virtual AliFiducialCut * GetFiducialCut()
virtual void SetCentralityOpt(Int_t opt)
void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
int Int_t
Definition: External.C:63
void SetSideBandCutRanges(Double_t lmin, Double_t lmax, Double_t rmin, Double_t rmax)
AliAnaCalorimeterQA * ConfigureQAAnalysis(TString col, Bool_t simulation, TString calorimeter, Int_t year, Bool_t printSettings, Int_t debug)
virtual AliHistogramRanges * GetHistogramRanges()
unsigned int UInt_t
Definition: External.C:33
void SwitchOnSplitAsymmetryCut()
Definition: AliCaloPID.h:256
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetAnalysisCommonParameters(AliAnaCaloTrackCorrBaseClass *ana, TString calorimeter, Int_t year, TString col, Bool_t simulation, Bool_t printSettings, Int_t debug)
float Float_t
Definition: External.C:68
void SetTrackStatus(ULong_t bit)
Bool_t IsBadChannelsRemovalSwitchedOn() const
Filter EMCal/PHOS clusters for photon analysis.
Definition: AliAnaPhoton.h:33
void SetHistoTrackResidualPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetConeSizes(Int_t i, Float_t r)
void SwitchOnSelectIsolatedDecay()
Definition: AliAnaPi0EbE.h:124
void SetM02Cut(Float_t min=0, Float_t max=10)
void SetExoticCellDiffTimeCut(Float_t dt)
void SwitchOnSplitClusterDistToBad()
Definition: AliAnaPi0EbE.h:160
void GetAlienGlobalProductionVariables(Bool_t &simulation, TString &col, TString &period, Int_t &year, Bool_t print=kFALSE)
void SetEMCALClusterListName(TString name)
void SwitchOffTriggerClusterTimeRecal()
void SwitchOffTrackMatchRejection()
Definition: AliAnaPi0EbE.h:149
virtual void SetHistoERangeAndNBins(Float_t min, Float_t max, Int_t n)
Base class for event, clusters and tracks filtering and preparation for the analysis.
void SetInputAODGammaConvName(TString name)
Definition: AliAnaPi0EbE.h:98
void SetHistoNClusterCellRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SwitchOffBadTriggerEventsRemoval()
void SetMinNeutralPt(Float_t pt)
anaTypes
Analysis types.
Definition: AliAnaPi0EbE.h:84
Int_t GetNumberOfSuperModulesUsed() const
void SetParticle(TString particleName)
Set some default parameters for selection of pi0 or eta.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPhoton.h:120
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetPtThresholdMax(Float_t pt)
virtual void SetZvertexCut(Float_t zcut=10.)
AliFiducialCut * GetFiducialCutForTrigger()
void SetEtaMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:305
void SetNumberOfSuperModulesUsed(Int_t nSM)
UInt_t ConfigureAndGetEventTriggerMaskAndCaloTriggerString(TString trigger, Int_t year, TString &triggerString)
void SetPi0MassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:304
Class containing more common histogram axis types.
void SetEMCALLambda0CutMax(Float_t lcut)
Definition: AliCaloPID.h:202
void SwitchOnTrackMatchRejection()
Definition: AliAnaPi0EbE.h:148
virtual void SetNCentrBin(Int_t n=1)
Number of bins in reaction plain.
virtual void SetPtHardAndJetPtFactor(Float_t factor)
Class for event, clusters and tracks filtering and preparation for the ESD analysis.
virtual void SetEventPlaneMethod(TString m)
void SetPHOSEMin(Float_t en)
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
virtual void SetTrackCuts(AliESDtrackCuts *)
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPi0EbE.h:100
Track selection for correlation analysis.
AliAnaPhoton * ConfigurePhotonAnalysis(TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug)
void SetMCGenType(Int_t min=0, Int_t max=6)
virtual void SetCentralityClass(TString name)
void SwitchOnFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:73
Select clusters/tracks with low particle environment in their vecinity, isolated within a cone...
void SwitchOnBadTriggerEventsRemoval()
void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnClusterELinearityCorrection()
void SwitchOffFillWeightHistograms()
Definition: AliAnaPi0EbE.h:152
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)
void SwitchOnEMCTrackPtDepResMatching()
Definition: AliCaloPID.h:228
virtual void SetAODObjArrayName(TString name)
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
void SetNTriggerPtBins(Int_t n)
Set number of associated charged (neutral) hadrons pT bins.
void SwitchOffLoadOwnPHOSGeometryMatrices()
void SetHistoZRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0SignalRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Class that contains methods to select candidate cluster pairs to neutral meson.
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 ConfigureEMCALRecoUtils(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)
void SetNAssocPtBins(Int_t n)
Set number of associated charged (neutral) hadrons pT bins.
Class for PID selection with calorimeters.
Definition: AliCaloPID.h:53
1 calorimeter cluster shower shape and split invariatn mass selection
Definition: AliAnaPi0EbE.h:87
void FillNOriginHistograms(Int_t n)
Definition: AliAnaPhoton.h:143
virtual void SetNMaxEvMix(Int_t n=20)
Number of bins in track multiplicity.
void SetNLMMinEnergy(Int_t i, Float_t min)
Definition: AliAnaPi0EbE.h:138
AliAnaGeneratorKine * ConfigureGenKineAnalysis(Int_t thresType, Float_t cone, Float_t pth, TString col, Bool_t simulation, TString calorimeter, Int_t year, Bool_t printSettings, Int_t debug)
void SetHistoShowerShapeRangeAndNBins(Float_t min, Float_t max, Int_t n)
bool Bool_t
Definition: External.C:53
void SetLeadHadronPhiCut(Float_t min, Float_t max)
void SetPHOSEMax(Float_t en)
void SetHistodEdxRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class with utils specific to calorimeter clusters/cells.
virtual void SwitchOnConstrainTrackToVertex()
Int_t GetFirstSuperModuleUsed() const
void SetInvMassCutMaxParameters(Float_t a, Float_t b, Float_t c)
AliCalorimeterUtils * ConfigureCaloUtils(TString col, Bool_t simulation, Bool_t tender, TString calorimeter, Bool_t nonLinOn, Int_t year, Bool_t printSettings, Int_t debug)
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)
void SetSubClusterEnergyMinimum(Int_t i, Float_t min)
Definition: AliCaloPID.h:273
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:218
void SetPhotonMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:306
void SwitchOffUseParametrizedTimeCut()
AliAnaPi0EbE * ConfigurePi0EbEAnalysis(TString particle, Int_t analysis, Bool_t useSSIso, Bool_t useAsy, TString col, Bool_t simulation, TString calorimeter, Int_t year, Int_t tm, Bool_t printSettings, Int_t debug)
void SetLocalMaximaCutE(Float_t cut)
void SetPtThresholds(Int_t i, Float_t pt)
Get year, collision type, mc/data type and period from alien global variables.
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOffAllNLMHistoFill()
Definition: AliAnaPi0EbE.h:106
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPhoton.h:128
Int_t GetFirstSMCoveredByTRD() const
Time cut in ns.
Steering class of package CaloTrackCorrelartions.
void SetTriggerPtRange(Float_t min, Float_t max)