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