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