AliPhysics  v5-07-15-01 (b3d7633)
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
AddTaskCaloTrackCorr.C
Go to the documentation of this file.
1 
10 Bool_t kPrint = kFALSE;
11 Bool_t kSimulation = kFALSE;
12 Bool_t kUseKinematics = kFALSE;
13 Bool_t kOutputAOD = kFALSE;
14 Bool_t kEventSelection= kFALSE;
15 Bool_t kExotic = kTRUE;
16 Bool_t kNonLinearity = kFALSE;
17 Int_t kYears = 2011;
18 TString kCollisions = "pp";
19 TString kTrig = "EMC7" ;
20 TString kClusterArray = "";
21 TString kData = "";
22 TString kInputDataType = "ESD";
23 TString kCalorimeter = "EMCAL";
24 Bool_t kTM = kTRUE;
25 Bool_t kRecalTM = kTRUE;
26 Int_t kMinCen = -1;
27 Int_t kMaxCen = -1;
28 TString kName = "";
29 Int_t kDebug = -1;
30 Bool_t kQA = kFALSE;
31 Bool_t kHadronAN = kFALSE;
32 Bool_t kCalibE = kTRUE;
33 Bool_t kCalibT = kTRUE;
34 Bool_t kBadMap = kTRUE;
35 Bool_t kTender = kFALSE;
36 Bool_t kMix = kFALSE;
37 Int_t kRunNumber = -1;
38 
44  const TString calorimeter = "EMCAL",
45  const Bool_t simulation = kFALSE,
46  const Bool_t eventsel = kFALSE,
47  const Bool_t exotic = kTRUE,
48  const Bool_t nonlin = kFALSE,
49  TString outputfile = "",
50  const Int_t year = 2010,
51  const TString col = "pp",
52  const TString trigger = "MB",
53  const TString clustersArray = "V1",
54  const Bool_t mix = kTRUE,
55  const Bool_t recaltm = kTRUE,
56  const Bool_t tm = kTRUE,
57  const Int_t minCen = -1,
58  const Int_t maxCen = -1,
59  const Bool_t qaan = kFALSE,
60  const Bool_t hadronan = kFALSE,
61  const Bool_t calibE = kTRUE,
62  const Bool_t badmap = kTRUE,
63  const Bool_t calibT = kTRUE,
64  const Bool_t tender = kFALSE,
65  const Bool_t outputAOD = kFALSE,
66  const Bool_t printSettings = kFALSE,
67  const Double_t scaleFactor = -1,
68  const Int_t runNumber = -1
69  )
70 {
71  // Creates a CaloTrackCorr task, configures it and adds it to the analysis manager.
72 
73  kPrint = printSettings;
74  kSimulation = simulation;
75  kYears = year;
76  kCollisions = col;
77  kExotic = exotic;
78  kNonLinearity = nonlin;
79  kTrig = trigger;
80  kClusterArray = clustersArray;
81  kData = data;
83  kOutputAOD = outputAOD;
84  kTM = tm;
85  kRecalTM = recaltm;
86  kMinCen = minCen;
87  kMaxCen = maxCen;
88  kEventSelection= eventsel;
89  kQA = qaan;
90  kHadronAN = hadronan;
91  kCalibE = calibE;
92  kCalibT = calibT;
93  kBadMap = badmap;
94  kTender = tender;
95  kMix = mix;
96  kRunNumber = runNumber;
97 
98  // Get the pointer to the existing analysis manager via the static access method.
99 
100  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
101  if (!mgr)
102  {
103  ::Error("AddTask", "No analysis manager to connect to.");
104  return NULL;
105  }
106 
107  // Check the analysis type using the event handlers connected to the analysis manager.
108 
109  if (!mgr->GetInputEventHandler())
110  {
111  ::Error("AddTask", "This task requires an input event handler");
112  return NULL;
113  }
114 
115  // Make sure the B field is enabled for track selection, some cuts need it
116  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
117 
118  kInputDataType = "AOD";
119  if(!kData.Contains("delta"))
120  kInputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
121 
122  if(kSimulation)
123  {
124  kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
125  if (!kUseKinematics && data=="AOD" && kInputDataType != "ESD") kUseKinematics = kTRUE; //AOD primary should be available ...
126  }
127 
128  cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
129 
130  // Name for containers
131 
132  kName = Form("%s_Trig%s_Cl%s_TM%d",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data(),kTM);
133 
134  if(kCollisions=="PbPb" && kMaxCen>=0) kName+=Form("Cen%d_%d",kMinCen,kMaxCen);
135 
136  printf("<<<< NAME: %s >>>>>\n",kName.Data());
137 
138  // #### Configure analysis ####
139 
141 
142  maker->SetScaleFactor(scaleFactor); // for MC, negative (not scaled) by default
143 
144  // General frame setting and configuration
145  maker->SetReader (ConfigureReader() );
146  maker->SetCaloUtils(ConfigureCaloUtils());
147 
148  // Analysis tasks setting and configuration
149  Int_t n = 0;//Analysis number, order is important
150 
151  // Isolation settings
152  Int_t partInCone = AliIsolationCut::kNeutralAndCharged; // kOnlyCharged;
153  Int_t thresType = AliIsolationCut::kPtThresIC;// AliIsolationCut::kSumPtFracIC ;
154  Float_t cone = -1;
155  Float_t pth = -1;
156 
157  // Photon analysis
158 
159  maker->AddAnalysis(ConfigurePhotonAnalysis(), n++); // Photon cluster selection
160 
161  maker->AddAnalysis(ConfigurePi0Analysis(), n++); // Invariant mass of photon clusters
162 
163  // Invariant mass analysis Put here to tag selected photons as decay
164  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kIMCalo), n++); // Pi0 event by event selection, invariant mass and photon tagging from decay
165  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Eta", AliAnaPi0EbE::kIMCalo), n++); // Eta event by event selection, invariant mass and photon tagging from decay
166 
167  // Photon analysis
168  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon", partInCone,thresType,cone, pth), n++); // Photon isolation
169  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kFALSE), n++); // Gamma hadron correlation
170  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated gamma hadron correlation
171  //maker->AddAnalysis(ConfigureIsolationAnalysis("Photon", partInCone,thresType,kTRUE), n++); // Photon multi isolation, leave it the last
172 
173 
174  // Split cluster analysis
175  if(kCalorimeter == "EMCAL")
176  {
177  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kSSCalo), n++); // Pi0 event by event selection, cluster splitting
178  maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SS", partInCone,thresType,cone, pth), n++); // Pi0 isolation, cluster splits
179  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SS" ,kFALSE), n++); // Pi0 hadron correlation
180  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SS" ,kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated pi0 hadron correlation
181  //maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SS", partInCone,thresType,kTRUE), n++); // Pi0 multi isolation, split cluster
182  maker->AddAnalysis(ConfigureInClusterIMAnalysis(kTRUE , kTRUE ), n++);
183  }
184 
185  // Invariant mass analysis
186  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0SideBand", AliAnaPi0EbE::kIMCalo), n++); // Pi0 event by event selection, and photon tagging from decay
187  maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0", partInCone,thresType,cone, pth), n++); // Pi0 isolation, invariant mass
188  maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SideBand", partInCone,thresType,cone, pth), n++); // Pi0 isolation, side band
189  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0" ,kFALSE), n++); // Pi0 hadron correlation
190  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0" ,kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated pi0 hadron correlation
191  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SideBand" ,kFALSE), n++); // Pi0 hadron correlation
192  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SideBand" ,kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated pi0 hadron correlation
193  //maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0", partInCone,thresType,kTRUE), n++); // Pi0 multi isolation, invariant mass, leave it the last
194 
195  if(kHadronAN)
196  {
197  maker->AddAnalysis(ConfigureChargedAnalysis(), n++); // track selection
198  maker->AddAnalysis(ConfigureIsolationAnalysis("Hadron",AliIsolationCut::kOnlyCharged,thresType,cone, pth), n++); // track isolation
199  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Hadron",kFALSE), n++); // track-track correlation
200  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Hadron",kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated track-track correlation
201  //maker->AddAnalysis(ConfigureIsolationAnalysis("Hadron",partInCone,thresType,kTRUE), n++);// Hadron multi isolation
202  }
203 
204  // Analysis with ghost triggers, only for Min Bias like events
205  if( kTrig.Contains("INT") || kTrig.Contains("Central") || kTrig.Contains("MB") )
206  {
207  maker->AddAnalysis(ConfigureRandomTriggerAnalysis(), n++);
208  maker->AddAnalysis(ConfigureIsolationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()), partInCone,thresType,cone, pth), n++); // Ghost trigger isolation
209  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()),kFALSE), n++); // Ghost trigger hadron correlation
210  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()),kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated ghost hadron correlation
211  //maker->AddAnalysis(ConfigureIsolationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()), partInCone,thresType,kTRUE), n++); // Ghost multi isolation
212 
213  if(kHadronAN)
214  {
215  maker->AddAnalysis(ConfigureRandomTriggerAnalysis("CTS"), n++); // track selection
216  maker->AddAnalysis(ConfigureIsolationAnalysis("RandomTriggerCTS",AliIsolationCut::kOnlyCharged,thresType,cone, pth), n++); // track isolation
217  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("RandomTriggerCTS",kFALSE), n++); // track-track correlation
218  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("RandomTriggerCTS",kTRUE,partInCone,thresType, cone, pth) , n++); // Isolated track-track correlation
219  //maker->AddAnalysis(ConfigureIsolationAnalysis("RandomTriggerCTS",AliIsolationCut::kOnlyCharged,thresType,kTRUE), n++); // Ghost multi isolation
220  }
221  }
222 
223  if(kQA) maker->AddAnalysis(ConfigureQAAnalysis(),n++);
224 
225  maker->SetAnaDebug(kDebug) ;
226  maker->SwitchOnHistogramsMaker() ;
227  if(kData.Contains("delta")) maker->SwitchOffAODsMaker() ;
228  else maker->SwitchOnAODsMaker() ;
229 
230  if(kPrint) maker->Print("");
231 
232  if(kSimulation) maker->SwitchOffDataControlHistograms();
233 
234  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, kCalorimeter.Data());
235 
236  // Create task
237 
238  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (Form("CaloTrackCorr%s",kName.Data()));
239  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
240  task->SetDebugLevel(kDebug);
241  task->SetBranches("ESD:AliESDRun.,AliESDHeader");
242  task->SetAnalysisMaker(maker);
243  mgr->AddTask(task);
244 
245  //Create containers
246 
247  if(outputfile.Length()==0) outputfile = AliAnalysisManager::GetCommonFileName();
248 
249  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kName, TList::Class(),
250  AliAnalysisManager::kOutputContainer,
251  Form("%s",outputfile.Data()));
252 
253  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kName.Data()), TList::Class(),
254  AliAnalysisManager::kParamContainer,
255  "AnalysisParameters.root");
256 
257  // Create ONLY the output containers for the data produced by the task.
258  // Get and connect other common input/output containers via the manager as below
259  //==============================================================================
260  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
261  // AOD output slot will be used in a different way in future
262  if(!kData.Contains("delta") && outputAOD) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
263  mgr->ConnectOutput (task, 1, cout_pc);
264  mgr->ConnectOutput (task, 2, cout_cuts);
265 
266  if(!kMix)
267  {
268  UInt_t mask = SetTriggerMaskFromName();
269  task->SelectCollisionCandidates(mask);
270  }
271 
272  return task;
273 }
274 
279 {
280  AliCaloTrackReader * reader = 0;
281  if (kInputDataType == "ESD"&& kData=="MC" )
282  reader = new AliCaloTrackMCReader();
283  else if(kInputDataType=="AOD" || kData.Contains("AOD"))
284  reader = new AliCaloTrackAODReader();
285  else if(kInputDataType=="ESD")
286  reader = new AliCaloTrackESDReader();
287  else
288  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known kData=%s, kInputData=%s\n",kData.Data(),kInputDataType.Data());
289 
290  reader->SetDebug(kDebug);//10 for lots of messages
291 
292  /*
293  if(kSimulation)
294  {
295  // Event rejection cuts for jet-jet simulations
296  reader->SetPtHardAndJetPtComparison(kTRUE);
297  reader->SetPtHardAndJetPtFactor(4);
298 
299  reader->SetPtHardAndClusterPtComparison(kTRUE);
300  reader->SetPtHardAndClusterPtFactor(1.5);
301  }
302  */
303 
304  //Delta AOD?
305  //reader->SetDeltaAODFileName("");
306  if(kOutputAOD) reader->SwitchOnWriteDeltaAOD() ;
307 
308  // MC settings
309  if(kUseKinematics){
310  if(kInputDataType == "ESD"){
311  reader->SwitchOnStack();
312  reader->SwitchOffAODMCParticles();
313  }
314  else if(kInputDataType == "AOD"){
315  reader->SwitchOffStack();
316  reader->SwitchOnAODMCParticles();
317  }
318  }
319 
320  //------------------------
321  // Detector input filling
322  //------------------------
323 
324  //Min cluster/track E
325  reader->SetEMCALEMin(0.3);
326  reader->SetEMCALEMax(1000);
327  reader->SetPHOSEMin(0.3);
328  reader->SetPHOSEMax(1000);
329  reader->SetCTSPtMin(0.2);
330  reader->SetCTSPtMax(1000);
331 
332  // Time cuts
333  if(kSimulation)
334  {
335  reader->SwitchOffUseTrackTimeCut();
337  reader->SwitchOffUseEMCALTimeCut();
338  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
339  }
340  else
341  {
342  if(kCalibT)
343  {
344  printf("Set time cut parameters for run %d\n",kRunNumber);
345  reader->SwitchOnUseEMCALTimeCut();
347 
348  //Absolute window
349  reader->SetEMCALTimeCut(-25,20);
350 
351  //Parametrization
352  if (kRunNumber >= 151636 && kRunNumber <= 155384 )
353  {
354  printf("Set time parameters for LHC11c");
357  }
358  else if(kRunNumber >= 156447 && kRunNumber <= 159635 )
359  {
360  printf("Set time parameters for LHC11d");
363  }
364  else
365  {
367  }
368  }
369  else
370  {
372  reader->SwitchOffUseEMCALTimeCut();
373  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
374  }
375  }
376 
377  reader->SwitchOnFiducialCut();
378  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
379 
380  // Tracks
381  reader->SwitchOnCTS();
383 
386 
387  reader->SwitchOffUseTrackTimeCut();
388  reader->SetTrackTimeCut(0,50);
389 
390  reader->SwitchOffUseTrackDCACut();
391  //reader->SetTrackDCACut(0,0.0105);
392  //reader->SetTrackDCACut(1,0.035);
393  //reader->SetTrackDCACut(2,1.1);
394 
395  if(kInputDataType=="ESD")
396  {
397  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
398  //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
399  //reader->SetTrackCuts(esdTrackCuts);
400  //reader->SwitchOnConstrainTrackToVertex();
401 
402  if(kYears>2010)
403  {
404  //Hybrids 2011
405  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
406  reader->SetTrackCuts(esdTrackCuts);
407  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
408  reader->SetTrackComplementaryCuts(esdTrackCuts2);
409  }
410  else
411  {
412  //Hybrids 2010
413  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
414  reader->SetTrackCuts(esdTrackCuts);
415  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
416  reader->SetTrackComplementaryCuts(esdTrackCuts2);
417  }
418  }
419  else if(kInputDataType=="AOD")
420  {
421  //reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid
422  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
423  reader->SetTrackStatus(AliVTrack::kITSrefit);
424  //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
425  }
426 
427  // Calorimeter
428 
430  if(kClusterArray == "" && !kTender)
431  {
432  printf("**************** Standard EMCAL clusters branch analysis **************** \n");
434  // Check in ConfigureCaloUtils that the recalibration and bad map are ON
435  }
436  else
437  {
438  printf("**************** Input for analysis is Clusterizer %s **************** \n", kClusterArray.Data());
440  }
441 
443 
444  //if(kCalorimeter == "EMCAL") {
445  reader->SwitchOnEMCALCells();
446  reader->SwitchOnEMCAL();
447  //}
448  //if(kCalorimeter == "PHOS") {
449  reader->SwitchOnPHOSCells();
450  reader->SwitchOnPHOS();
451  //}
452 
453  // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
454  if(kData.Contains("delta"))
455  {
456  reader->SwitchOffEMCAL();
457  reader->SwitchOffPHOS();
458  reader->SwitchOffEMCALCells();
459  reader->SwitchOffPHOSCells();
460  }
461 
462  //-----------------
463  // Event selection
464  //-----------------
465 
466  //reader->RejectFastClusterEvents() ;
467 
468  // Event triggered selection settings
470  reader->SwitchOnBadTriggerEventsRemoval(); // only if SwitchOnTriggerPatchMatching();
471  reader->SwitchOnUnMatchedTriggerEventsRemoval(); // only if SwitchOnBadTriggerEventsRemoval();
472  //reader->SwitchOffTriggerClusterTimeRecal() ;
473 
474  reader->SetTriggerPatchTimeWindow(8,9); // L0
475  if (kRunNumber < 146861) reader->SetEventTriggerL0Threshold(3.);
476  else if(kRunNumber < 154000) reader->SetEventTriggerL0Threshold(4.);
477  else if(kRunNumber < 165000) reader->SetEventTriggerL0Threshold(5.5);
478 
479  //redefine for other periods, triggers
480 
481  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
482 
483  // For mixing with AliAnaParticleHadronCorrelation switch it off
484  if(kMix)
485  {
486  reader->SwitchOffEventTriggerAtSE();
487  UInt_t mask = SetTriggerMaskFromName();
488  reader->SetEventTriggerMask(mask); // Only for mixing and SwitchOffEventTriggerAtSE();
489  //reader->SetMixEventTriggerMask(AliVEvent::kMB); // Careful, not all productions work with kMB, try kINT7, kINT1, kAnyINT
490  reader->SetMixEventTriggerMask(AliVEvent::kAnyINT); // Careful, not all productions work with kMB, try kINT7, kINT1, kAnyINT
491 
492  printf("---Trigger selection done in AliCaloTrackReader!!!\n");
493  }
494  else
495  reader->SwitchOnEventTriggerAtSE();
496 
497  reader->SetZvertexCut(10.); // Open cut
498  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
499 
500  if(kEventSelection)
501  {
502  reader->SwitchOnEventPileUpRejection(); // remove pileup by default
503  reader->SwitchOnV0ANDSelection() ; // and besides v0 AND
504  }
505  else
506  {
507  reader->SwitchOffPileUpEventRejection();// remove pileup by default
508  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
509  }
510 
511  if(kCollisions=="PbPb")
512  {
513  // Centrality
514  reader->SetCentralityClass("V0M");
515  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
516  reader->SetCentralityBin(kMinCen,kMaxCen); // Accept all events, if not select range
517 
518  // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
519  reader->SetEventPlaneMethod("V0");
520  }
521 
522  if(kPrint) reader->Print("");
523 
524  return reader;
525 }
526 
531 {
532 
534  cu->SetDebug(kDebug);
535 
536  // Remove clusters close to borders, at least max energy cell is 1 cell away
539 
540  // Search of local maxima in cluster
541  if(kCollisions=="pp")
542  {
543  cu->SetLocalMaximaCutE(0.1);
544  cu->SetLocalMaximaCutEDiff(0.03);
545  if(kName.Contains("150"))
546  {
547  printf("Reclusterize with 150 threshold, set PbPb settings\n");
548  cu->SetLocalMaximaCutE(0.2);
549  cu->SetLocalMaximaCutEDiff(0.03);
550  }
551  }
552  else
553  {
554  cu->SetLocalMaximaCutE(0.2);
555  cu->SetLocalMaximaCutEDiff(0.03);
556  }
557 
558  cu->SwitchOffClusterPlot();
559 
560  if(kRecalTM) cu->SwitchOnRecalculateClusterTrackMatching(); // Done in clusterization
562 
564 
565  //EMCAL settings
566 
567  if(!kSimulation)
569 
570  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
571 
572  if(!kSimulation)
573  {
574  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
575  if(kClusterArray == "" && !kTender) cu->SwitchOnRunDepCorrection();
576  }
577 
578  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
580  kSimulation,
581  kExotic,
582  kTRUE,//kNonLinearity,
583  kCalibE,
584  kBadMap,
585  kCalibT);
586  //recou->SetExoticCellDiffTimeCut(50.);
587 
588 
589  if( kNonLinearity )
590  {
591  printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
593  }
594 
595  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
596  printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
597 
598 
599  if(kCalorimeter=="PHOS")
600  {
601  if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(3);
602  else cu->SetNumberOfSuperModulesUsed(4);
603  }
604  else
605  {
606  if (kYears == 2010) cu->SetNumberOfSuperModulesUsed(4); //EMCAL first year
607  else if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(10);
608  else cu->SetNumberOfSuperModulesUsed(20);
609  }
610 
611  // PHOS
613 
614  if(kPrint) cu->Print("");
615 
616  return cu;
617 }
618 
624 {
625  AliAnaPhoton *ana = new AliAnaPhoton();
626  ana->SetDebug(kDebug); //10 for lots of messages
627 
628  // cluster selection cuts
629 
630  ana->SwitchOffFiducialCut();
631 
633 
634  if(kCalorimeter == "PHOS")
635  {
636  ana->SetNCellCut(2);// At least 3 cells
637  ana->SetMinPt(0.3);
638  ana->SetMinDistanceToBadChannel(2, 4, 5);
639  ana->SetTimeCut(-1e10,1e10); // open cut
640  }
641  else
642  {//EMCAL
643  ana->SetNCellCut(1);// At least 2 cells
644  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
645  ana->SetMaxEnergy(1000);
646  ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off
647  // restrict to less than 100 ns when time calibration is on
648  ana->SetMinDistanceToBadChannel(2, 4, 6);
649 
650  // NLM cut, used in all, exclude clusters with more than 2 maxima
651  // Not needed if M02 cut is already strong or clusterizer V2
652  ana->SetNLMCut(1, 2) ;
653  }
654 
655  if(kTM)
656  {
658  ana->SwitchOffTMHistoFill() ;
659  }
660  else
661  {
663  ana->SwitchOnTMHistoFill() ;
664  }
665 
666  //PID cuts (shower shape)
667  ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
668  AliCaloPID* caloPID = ana->GetCaloPID();
669  //Not used in bayesian
670 
671  //EMCAL
672  caloPID->SetEMCALLambda0CutMax(0.27);
673  caloPID->SetEMCALLambda0CutMin(0.10);
674 
675  caloPID->SetEMCALDEtaCut(0.025);
676  caloPID->SetEMCALDPhiCut(0.030);
677 
678  //PHOS
679  caloPID->SetPHOSDispersionCut(2.5);
680  caloPID->SetPHOSRCut(2.);
681  if(kInputData=="AOD") caloPID->SetPHOSRCut(2000.); // Open cut since dX, dZ not stored
682 
683  ana->SwitchOffFillShowerShapeHistograms(); // Filled before photon shower shape selection
685  //if(!kSimulation) ana->SwitchOnFillEMCALBCHistograms();
686 
687  // Input / output delta AOD settings
688 
689  if(!kData.Contains("delta"))
690  {
691  ana->SetOutputAODName(Form("Photon%s",kName.Data()));
692  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
693  //ana->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
694  }
695  else ana->SetInputAODName(Form("Photon%s",kName.Data()));
696 
697  //Set Histograms name tag, bins and ranges
698 
699  ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",kTM));
700  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
701 
702  // Number of particle type MC histograms
703  ana->FillNOriginHistograms(20);
704  ana->FillNPrimaryHistograms(20);
705 
706  ana->SwitchOnRealCaloAcceptance(); // primary particle acceptance histograms
707  ConfigureMC(ana);
708 
709  if(kPrint) ana->Print("");
710 
711  return ana;
712 }
713 
720 {
722  ana->SetDebug(kDebug); //10 for lots of messages
723 
724  // cluster selection cuts
725 
726  ana->SwitchOffFiducialCut();
727  ana->SetNCellCut(1);// At least 2 cells
728  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
729  ana->SetMaxEnergy(1000);
730  ana->SetM02(1, 2) ;
732 
733  ana->AddToHistogramsName("EMCTriggerClusters_");
734  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
735 
736  if(kPrint) ana->Print("");
737 
738  return ana;
739 }
740 
747 {
749  ana->SetDebug(kDebug); //10 for lots of messages
750 
751  // cluster selection cuts
752 
753  ana->SwitchOffFiducialCut();
754  ana->SetNCellCut(1);// At least 2 cells
755  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
756  ana->SetMaxEnergy(1000);
757 
758  ana->AddToHistogramsName("ClusterPileUp_");
759  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
760 
761  if(kPrint) ana->Print("");
762 
763  return ana;
764 }
765 
771 {
773  ana->SetDebug(kDebug); //10 for lots of messages
774 
775  ana->FillAODWithElectrons();
776  //ana->FillAODWithHadrons();
777  //ana->FillAODWithAny();
778 
779  if(kCalorimeter == "PHOS")
780  {
781  ana->SetNCellCut(2);// At least 2 cells
782  ana->SetMinPt(0.3);
783  ana->SetMinDistanceToBadChannel(2, 4, 5);
784  }
785  else
786  {//EMCAL
787  ana->SetNCellCut(1);// At least 2 cells
788  ana->SetMinPt(0.5); // no effect minium EMCAL cut.
789  ana->SetMaxPt(100);
790  //ana->SetTimeCut(400,900);// Time window of [400-900] ns
791  ana->SetMinDistanceToBadChannel(2, 4, 6);
792  }
793 
794  //Electron selection cuts with tracks
795  ana->SetEOverP(0.85, 1.2);
796 
797  // TO DO, find a more suitable way to set this
798  if (kRunNumber < 146861) ana->SetdEdxCut(72, 90);
799  else if(kRunNumber < 154000) ana->SetdEdxCut(54, 70);
800  else ana->SetdEdxCut(74, 90);
801 
802  if(kSimulation) ana->SetdEdxCut(80, 100);
803 
805 
806  ana->SwitchOnCaloPID();
807 
808  AliCaloPID* caloPID = ana->GetCaloPID();
809 
810  caloPID->SetEMCALLambda0CutMax(0.27);
811  caloPID->SetEMCALLambda0CutMin(0.10);
812 
815  ana->SwitchOffFiducialCut();
816 
817  if(!kData.Contains("delta"))
818  {
819  ana->SetOutputAODName(Form("Electron%s",kName.Data()));
820  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
821  }
822  else ana->SetInputAODName(Form("Electron%s",kName.Data()));
823 
824  //Set Histograms name tag, bins and ranges
825 
826  ana->AddToHistogramsName(Form("AnaElectron_TM%d_",kTM));
827  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
828 
829  ConfigureMC(ana);
830 
831  if(kPrint) ana->Print("");
832 
833  return ana ;
834 }
835 
840 {
842  ana->SetDebug(kDebug); //10 for lots of messages
843 
844  if(detector=="") detector = kCalorimeter;
845  ana->SetTriggerDetector(detector);
846 
847  // selection cuts
848  ana->SetMinPt(4.);
849  ana->SetMaxPt(51.);
850 
851  if (detector=="EMCAL")
852  {
853  ana->SetEtaCut(-0.71,0.71);
854  ana->SetPhiCut(100*TMath::DegToRad(), 160*TMath::DegToRad());
855  }
856  else if(detector=="PHOS")
857  {
858  ana->SetEtaCut(-0.13,0.13);
859  ana->SetPhiCut(260*TMath::DegToRad(), 320*TMath::DegToRad());
860  }
861  else if(detector=="CTS")
862  {
863  ana->SetEtaCut(-0.9,0.9);
864  ana->SetPhiCut(0, TMath::TwoPi());
865  }
866 
867  // AOD branch
868  if(!kData.Contains("delta"))
869  {
870  ana->SetOutputAODName(Form("RandomTrigger%s%s",detector.Data(),kName.Data()));
871  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
872  }
873  else
874  ana->SetInputAODName(Form("RandomTrigger%s%s",detector.Data(),kName.Data()));
875 
876  printf("Set RandomTrigger%s%s\n",detector.Data(),kName.Data());
877 
878  //Set Histograms name tag, bins and ranges
879 
880  ana->AddToHistogramsName(Form("AnaRandomTrigger%s_",detector.Data()));
881 
882  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
883 
884  if(detector=="CTS")
885  {
886  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
887  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
888  }
889 
890  if(kPrint) ana->Print("");
891 
892  return ana;
893 }
894 
898 AliAnaInsideClusterInvariantMass* ConfigureInClusterIMAnalysis(Bool_t useSS = kTRUE, Bool_t useAsy = kFALSE)
899 {
901  ana->SetDebug(kDebug); //10 for lots of messages
902 
903  // selection cuts
904 
905  ana->SetMinEnergy(6);
906  ana->SetMaxEnergy(200.);
907  ana->SetMinNCells(6); // check same as in calopid
908 
911 
913  ana->SetNWeightForShowerShape(0);
914  //ana->SetWeightForShowerShape(0, 4.6);
915 
918  if(!useSS && !useAsy) ana->SwitchOnFillEbinHistograms();
919 
920  if(!kTM)
921  {
924  }
925  else
926  {
929  }
930 
931  //printf("Set correction slope for SS weight \n");
932  //ana->SetWCorrectionParameter(0.07);
933  //ana->SetNECellCutForShowerShape(0);
934  //ana->SetECellCutForShowerShape(0, 0.07);
935  //ana->SetECellCutForShowerShape(1, 0.1);
936  //ana->SetECellCutForShowerShape(2, 0.2);
937 
938  if(kSimulation)
939  {
941  ana->SwitchOffFillMCOverlapHistograms() ; // Off when possible
942  if(!useSS && !useAsy) ana->SwitchOnFillMCOverlapHistograms() ;
943  }
944 
945  AliCaloPID* caloPID = ana->GetCaloPID();
946  caloPID->SetEMCALDEtaCut(0.025);
947  caloPID->SetEMCALDPhiCut(0.030);
948  caloPID->SetClusterSplittingM02Cut(0,100000); // use parametrized cut, not fixed
949 
950  caloPID->SetPi0MassRange(0.11, 0.18);
951  caloPID->SetEtaMassRange(0.40, 0.60);
952  caloPID->SetPhotonMassRange(0.00, 0.08);
953 
954  caloPID->SetSplitWidthSigma(3.); // cut at 3 sigma of the mean pi0 peak.
955 
956  caloPID->SetClusterSplittingMinNCells(6);
957 
958  if(kCollisions=="PbPb" || kName.Contains("150"))
959  {
960  caloPID->SetClusterSplittingMinNCells(4);
961  ana->SetMinNCells(4);
962  caloPID->SetPi0MassShiftHighECell(0.005);
963  if(kCollisions=="PbPb") ana->SwitchOnFillHighMultHistograms();
964  }
965 
966  ana->AddToHistogramsName("AnaInClusterIM_");
967 
968  if(useAsy)
969  {
970  caloPID->SwitchOnSplitAsymmetryCut() ;
971  }
972  else
973  {
974  printf("InClusterIM: Do not apply Asy cut on merged pi0 in cluster analysis \n");
975  caloPID->SwitchOffSplitAsymmetryCut() ;
976  ana->AddToHistogramsName("AnaInClusterIM_OpenAsy_");
977  }
978 
979  if(!useSS)
980  {
981  printf("InClusterIM: Do not apply SS cut on merged pi0 in cluster analysis \n");
982  caloPID->SwitchOffSplitShowerShapeCut() ;
983  ana->AddToHistogramsName("AnaInClusterIM_OpenSS_");
984  }
985  else caloPID->SwitchOnSplitShowerShapeCut() ;
986 
987  if(!useAsy && !useSS)
988  {
989  printf("InClusterIM: Do not apply SS and Asy cut on merged pi0 in cluster analysis \n");
990  ana->AddToHistogramsName("AnaInClusterIM_OpenSS_OpenAsy_");
991  }
992 
993  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
994 
995  ConfigureMC(ana);
996 
997  if(kPrint) ana->Print("");
998 
999  return ana;
1000 }
1001 
1006 {
1007 
1009  ana->SetDebug(kDebug); //10 for lots of messages
1010 
1011  // selection cuts
1012 
1013  ana->SetMinPt(0.5);
1014  ana->SwitchOnFiducialCut();
1015  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
1016 
1019 
1020  // Input / output delta AOD settings
1021 
1022  if(!kData.Contains("delta"))
1023  {
1024  ana->SetOutputAODName(Form("Hadron%s",kName.Data()));
1025  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
1026  //ana->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
1027  }
1028  else
1029  ana->SetInputAODName(Form("Hadron%s",kName.Data()));
1030  printf("Set Hadron%s\n",kName.Data());
1031 
1032  //Set Histograms name tag, bins and ranges
1033 
1034  ana->AddToHistogramsName("AnaHadrons_");
1035  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1036 
1037  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1038  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1039 
1040  ConfigureMC(ana);
1041 
1042  if(kPrint) ana->Print("");
1043 
1044  return ana;
1045 }
1046 
1051 {
1052  AliAnaPi0 *ana = new AliAnaPi0();
1053 
1054  ana->SetDebug(kDebug);//10 for lots of messages
1055 
1056  // Input delta AOD settings
1057  ana->SetInputAODName(Form("Photon%s",kName.Data()));
1058 
1059  // Calorimeter settings
1061 
1062  // settings for pp collision mixing
1063  ana->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
1064 
1065  // Cuts
1066  if(kCalorimeter=="EMCAL") ana->SetPairTimeCut(40);
1067 
1068  ana->SetNAsymCuts(1); // no asymmetry cut, previous studies showed small effect.
1069  // In EMCAL assymetry cut prevents combination of assymetric decays which is the main source of pi0 at high E.
1070 
1071  if (kCollisions=="pp" )
1072  {
1073  ana->SetNCentrBin(1);
1074  ana->SetNZvertBin(10);
1075  ana->SetNRPBin(1);
1076  ana->SetNMaxEvMix(100);
1077  }
1078  else if(kCollisions=="PbPb")
1079  {
1080  ana->SetNCentrBin(5);
1081  ana->SetNZvertBin(3);
1082  ana->SetNRPBin(1);
1083  ana->SetNMaxEvMix(5);
1084  }
1085 
1086  ana->SwitchOffSMCombinations();
1088 
1089  // Set Histograms name tag, bins and ranges
1090 
1091  ana->AddToHistogramsName(Form("AnaPi0_TM%d_",kTM));
1092  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1093 
1094  ConfigureMC(ana);
1095 
1096  if(kPrint) ana->Print("");
1097 
1098  return ana;
1099 }
1100 
1107  Int_t analysis, Bool_t useSS = kTRUE, Bool_t useAsy = kTRUE)
1108 {
1109  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
1110  ana->SetDebug(kDebug);//10 for lots of messages
1111 
1112  ana->SetAnalysisType(analysis);
1113  TString opt = "";
1114  if(analysis == AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
1115  if(analysis == AliAnaPi0EbE::kSSCalo) opt = "SS";
1116 
1117  if(analysis == AliAnaPi0EbE::kIMCalo && kCalorimeter=="EMCAL" && !kSimulation) ana->SetPairTimeCut(100);
1118  if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
1119 
1120  // Common settings for all 3 type of analysis
1121 
1123 
1125 
1126  //Set Histograms name tag, bins and ranges
1127  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
1128 
1129  // Specific settings for different type of analysis
1130 
1133 
1134  if(kTM)
1135  {
1136  //printf("--->>>REMOVE MATCHED Pi0\n");
1138  ana->SwitchOffTMHistoFill() ;
1139  }
1140  else
1141  {
1142  //printf("---->>>ACCEPT MATCHED Pi0\n");
1144  ana->SwitchOnTMHistoFill() ;
1145  }
1146 
1147  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1148 
1149  //ana->SwitchOnFillEMCALBCHistograms();
1150 
1151  if(kPrint) ana->Print("");
1152 
1153  ConfigureMC(ana);
1154 
1155  if(!kInputDataType.Contains("delta"))
1156  {
1157  ana->SetOutputAODName(Form("%s%s%s",particle.Data(), opt.Data(), kName.Data()));
1158  ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
1159 
1160  }
1161  else
1162  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
1163 
1164  if(analysis!=AliAnaPi0EbE::kSSCalo)
1165  {
1166  // Input / output delta AOD settings
1167 
1168  ana->SetInputAODName(Form("Photon%s",kName.Data()));
1169 
1171  nms->SetParticle(particle);
1172 
1173  // Tighten a bit mass cut with respect to default window
1174  if(particle=="Pi0") nms->SetInvMassCutRange(0.120,0.150);
1175  if(particle=="Eta") nms->SetInvMassCutRange(0.520,0.580);
1176 
1177  //if(!particle.Contains("SideBand")) nms->SwitchOnAngleSelection();
1178  //else nms->SwitchOnAngleSelection();
1179 
1180  nms->SwitchOffAngleSelection();
1181  if(particle.Contains("Pi0SideBand")) // For pi0, do not consider left band
1182  nms->SetSideBandCutRanges(-1,0,0.180,0.220);
1183 
1184  nms->KeepNeutralMesonSelectionHistos(kTRUE);
1185  //nms->SetAngleMaxParam(2,0.2);
1186  nms->SetHistoERangeAndNBins(0, 20, 80) ;
1187  //nms->SetHistoIMRangeAndNBins(0, 1, 400);
1188  }
1189  else
1190  { // cluster splitting settings
1191  ana->SetMinEnergy(6);
1192  ana->SetMaxEnergy(200.);
1193 
1194  ana->SetNLMMinEnergy(0, 10);
1195  ana->SetNLMMinEnergy(1, 6);
1196  ana->SetNLMMinEnergy(2, 6);
1197 
1198  ana->SetMinDistanceToBadChannel(2, 4, 6); // only use the first one
1200 
1201  ana->SetTimeCut(-1e10,1e10); // Open time cut
1202 
1203  // NLM cut, used in all, exclude clusters with more than 2 maxima
1204  ana->SetNLMCut(1, 2) ;
1205 
1206  AliCaloPID* caloPID = ana->GetCaloPID();
1207 
1208  caloPID->SetSplitWidthSigma(3.); // cut at 3 sigma of the mean pi0 peak.
1209 
1210  if(!useSS)
1211  {
1212  printf("Do not apply SS cut on merged pi0 analysis \n");
1213  caloPID->SwitchOffSplitShowerShapeCut() ;
1214  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),kTM));
1215  ana->SetOutputAODName(Form("%s%s%s_OpenSS",particle.Data(), opt.Data(), kName.Data()));
1216  caloPID->SetClusterSplittingM02Cut(0.1,10000);
1217  }
1218  else
1219  {
1220  caloPID->SetClusterSplittingM02Cut(0.3,5); // Do the selection in the analysis class and not in the PID method to fill SS histograms
1221  caloPID->SwitchOnSplitShowerShapeCut() ;
1222  }
1223 
1224  if(useAsy) caloPID->SwitchOnSplitAsymmetryCut() ;
1225  else
1226  {
1227  caloPID->SwitchOffSplitAsymmetryCut() ;
1228  if(!useSS)
1229  {
1230  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
1231  ana->SetOutputAODName(Form("%s%s%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
1232  }
1233  else
1234  {
1235  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
1236  ana->SetOutputAODName(Form("%s%s%s_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
1237  }
1238  }
1239 
1240  //For Pi0 only if SwitchOnSimpleSplitMassCut()
1241  caloPID->SetPi0MassRange(0.10, 0.18);
1242  caloPID->SetEtaMassRange(0.40, 0.60);
1243  caloPID->SetPhotonMassRange(0.00, 0.08);
1244 
1245  caloPID->SetClusterSplittingMinNCells(6);
1246 
1247  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
1248  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
1249  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
1250 
1251  if(kCollisions=="PbPb" || kName.Contains("150"))
1252  {
1253  caloPID->SetClusterSplittingMinNCells(4);
1254  caloPID->SetPi0MassShiftHighECell(0.005);
1255  }
1256  }
1257 
1258  return ana;
1259 
1260 }
1261 
1268 {
1270  ana->SetDebug(kDebug); //10 for lots of messages
1271 
1272  // selection cuts
1273 
1274  ana->SetMinEnergy(5);
1275  ana->SetMaxEnergy(200.);
1276  ana->SetMinNCells(3);
1277  ana->SetM02Cut(l0min,l0max);
1279 
1280  //ana->AddToHistogramsName(Form("AnaInClusterIM_%1.2f_%1.2f_",l0min,l0max));
1281  ana->AddToHistogramsName("AnaInClusterIM_");
1282 
1283  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1284 
1285  AliCaloPID* caloPID = ana->GetCaloPID();
1286  caloPID->SetEMCALDEtaCut(0.025);
1287  caloPID->SetEMCALDPhiCut(0.030);
1288  caloPID->SetClusterSplittingM02Cut(0,100); // Do the selection in the analysis class and not in the PID method to fill SS histograms
1289 
1290  caloPID->SetPi0MassRange(0.10, 0.18);
1291  caloPID->SetEtaMassRange(0.40, 0.60);
1292  caloPID->SetPhotonMassRange(0.00, 0.08);
1293 
1294  ConfigureMC(ana);
1295 
1296  if(kPrint) ana->Print("");
1297 
1298  return ana;
1299 }
1300 
1305  Int_t partInCone = AliIsolationCut::kOnlyCharged,
1306  Int_t thresType = AliIsolationCut::kSumPtFracIC,
1307  Float_t cone = 0.3,
1308  Float_t pth = 0.3,
1309  Bool_t multi = kFALSE)
1310 {
1312  //ana->SetDebug(kDebug);
1313  ana->SetDebug(kDebug);
1314 
1315  ana->SwitchOnFiducialCut();
1316  //Avoid borders of EMCal
1317  if(kCalorimeter=="EMCAL")
1318  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.6, 86, 174) ;
1319 
1320  // Same Eta as EMCal, cut in phi if EMCAL was triggering
1321  if(particle=="Hadron" || particle.Contains("CTS"))
1322  {
1323  // if(kTrig.Contains("EMC"))
1324  // ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
1325  // else
1326  ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
1327  }
1328 
1329  ana->SetMinPt(5);
1330 
1331  // Input / output delta AOD settings
1332 
1333  ana->SetInputAODName(Form("%s%s",particle.Data(),kName.Data()));
1334  ana->SetAODObjArrayName(Form("IC%s_%s",particle.Data(),kName.Data()));
1335 
1337 
1338  if(!kTM) ana->SwitchOnTMHistoFill();
1339  else ana->SwitchOffTMHistoFill();
1340 
1341  ana->SwitchOffSSHistoFill();
1343 
1344  //Do settings for main isolation cut class
1345  AliIsolationCut * ic = ana->GetIsolationCut();
1346  ic->SetDebug(kDebug);
1347 
1348  if(cone >0 && pth > 0)
1349  {
1350  ic->SetPtThreshold(pth);
1351  ic->SetConeSize(cone);
1352  }
1353  else
1354  {
1355  if(kCollisions=="pp")
1356  {
1357  ic->SetPtThreshold(0.5);
1358  ic->SetConeSize(0.4);
1359  }
1360  if(kCollisions=="PbPb")
1361  {
1362  ic->SetPtThreshold(3.);
1363  //ic->SetPtThreshold(1.);
1364  ic->SetConeSize(0.3);
1365  }
1366  }
1367 
1368  ic->SetPtFraction(0.1);
1369  ic->SetSumPtThreshold(1.0) ;
1370  ic->SetParticleTypeInCone(partInCone);
1371  ic->SetICMethod(thresType);
1372 
1373  //Do or not do isolation with previously produced AODs.
1374  //No effect if use of SwitchOnSeveralIsolation()
1375  ana->SwitchOffReIsolation();
1376 
1377  //Multiple IC
1378  if(multi)
1379  {
1380  ic->SetConeSize(1.); // Take all for first iteration
1381  ic->SetPtThreshold(100);// Take all for first iteration
1382  ana->SwitchOnSeveralIsolation() ;
1383  ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),kTM));
1384 
1385  ana->SetNCones(4);
1386  ana->SetNPtThresFrac(4);
1387  ana->SetConeSizes(0,0.3); ana->SetConeSizes(1,0.4);
1388  ana->SetConeSizes(2,0.5); ana->SetConeSizes(3,0.6);
1389  ana->SetPtThresholds(0, 0.5); ana->SetPtThresholds(1, 1); ana->SetPtThresholds(2, 2);
1390  ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1); ana->SetPtFractions (2, 0.2) ; ana->SetPtFractions (3, 0.3) ;
1391  ana->SetSumPtThresholds(0, 1) ; ana->SetSumPtThresholds(1, 3) ; ana->SetSumPtThresholds(2, 5); ana->SetSumPtThresholds(3, 7) ;
1392 
1393  ana->SwitchOffTMHistoFill();
1394  ana->SwitchOffSSHistoFill();
1395  }
1396  else
1397  ana->SwitchOffSeveralIsolation() ;
1398 
1399  AliCaloPID* caloPID = ana->GetCaloPID();
1400  caloPID->SetEMCALDEtaCut(0.025);
1401  caloPID->SetEMCALDPhiCut(0.030);
1402 
1403  //Set Histograms name tag, bins and ranges
1404 
1405  if(!multi)ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_",particle.Data(),kTM));
1406  else ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),kTM));
1407 
1408  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1409 
1410  if(particle=="Hadron" || particle.Contains("CTS"))
1411  {
1412  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1413  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1414  }
1415 
1416  ana->SwitchOnRealCaloAcceptance(); // primary particle acceptance histograms
1417  ConfigureMC(ana);
1418 
1419  if(kPrint) ic ->Print("");
1420  if(kPrint) ana->Print("");
1421 
1422  return ana;
1423 }
1424 
1429  Bool_t bIsolated,
1430  Int_t partInCone = AliIsolationCut::kOnlyCharged,
1431  Int_t thresType = AliIsolationCut::kSumPtFracIC,
1432  Float_t cone = 0.3,
1433  Float_t pth = 0.3)
1434 {
1436  ana->SetDebug(kDebug);
1437 
1438  ana->SwitchOnAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
1439  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
1440 
1441  //ana->SwitchOnLeadHadronSelection();
1442  //ana->SetLeadHadronPhiCut(TMath::DegToRad()*100., TMath::DegToRad()*260.);
1443  //ana->SetLeadHadronPtCut(0.5, 100);
1444 
1445  ana->SetTriggerPtRange(5,100);
1446  ana->SetAssociatedPtRange(0.2,100);
1447  //ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
1448  ana->SetDeltaPhiCutRange (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
1449  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
1451 
1452  ana->SetNAssocPtBins(9);
1453  ana->SetAssocPtBinLimit(0, 0.2) ;
1454  ana->SetAssocPtBinLimit(1, 0.5) ;
1455  ana->SetAssocPtBinLimit(2, 1) ;
1456  ana->SetAssocPtBinLimit(3, 2) ;
1457  ana->SetAssocPtBinLimit(4, 3) ;
1458  ana->SetAssocPtBinLimit(5, 4) ;
1459  ana->SetAssocPtBinLimit(6, 6) ;
1460  ana->SetAssocPtBinLimit(7, 10) ;
1461  ana->SetAssocPtBinLimit(8, 30) ;
1462  ana->SetAssocPtBinLimit(9, 200) ;
1463  //ana->SwitchOnFillPtImbalancePerPtABinHistograms();
1464 
1465  ana->SelectIsolated(bIsolated); // do correlation with isolated photons
1466 
1467  if(bIsolated)
1468  {
1469  //Do settings for main isolation cut class
1470  AliIsolationCut * ic = ana->GetIsolationCut();
1471  ic->SetDebug(kDebug);
1472 
1473  if(cone >0 && pth > 0)
1474  {
1475  ic->SetPtThreshold(pth);
1476  ic->SetConeSize(cone);
1477  }
1478  else
1479  {
1480  if(kCollisions=="pp")
1481  {
1482  ic->SetPtThreshold(0.5);
1483  ic->SetConeSize(0.4);
1484  }
1485  if(kCollisions=="PbPb")
1486  {
1487  ic->SetPtThreshold(3.);
1488  //ic->SetPtThreshold(1.);
1489  ic->SetConeSize(0.3);
1490  }
1491  }
1492 
1493  ic->SetPtFraction(0.1);
1494  ic->SetSumPtThreshold(1.0) ;
1495  ic->SetParticleTypeInCone(partInCone);
1496  ic->SetICMethod(thresType);
1497 
1498  }
1499 
1500  // Mixing with own pool
1501  if(kMix)
1502  {
1503  ana->SwitchOnOwnMix();
1505  }
1506  else
1507  ana->SwitchOffOwnMix();
1508 
1509  ana->SetNZvertBin(20);
1510  ana->SwitchOffCorrelationVzBin() ;
1512 
1513  if(kCollisions=="pp")
1514  {
1515  ana->SetNMaxEvMix(100);
1516  ana->SwitchOnTrackMultBins();
1517  ana->SetNTrackMultBin(10); // same as SetNCentrBin(10);
1518  ana->SetNRPBin(1);
1519  }
1520  else
1521  {
1522  ana->SetNMaxEvMix(10);
1523  ana->SwitchOffTrackMultBins(); // centrality bins
1524  ana->SetNCentrBin(3);
1525  ana->SetNRPBin(3);
1526  if(kName.Contains("60_90"))
1527  {
1528  printf("*** Set mixing for peripheral\n");
1529  ana->SetNMaxEvMix(50);
1530  ana->SetNCentrBin(2);
1531  }
1532  }
1533 
1534  ana->SwitchOnFiducialCut();
1535 
1536  //Avoid borders of EMCal, same as for isolation
1537  if(kCalorimeter=="EMCAL")
1538  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.6, 86, 174) ;
1539 
1540  // Same Eta as EMCal, cut in phi if EMCAL was triggering
1541  if(particle=="Hadron" || particle.Contains("CTS"))
1542  {
1543  //if(kTrig.Contains("EMC"))
1544  // ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
1545  //else
1546  ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
1547  }
1548 
1549  // Input / output delta AOD settings
1550 
1551  ana->SetInputAODName(Form("%s%s",particle.Data(),kName.Data()));
1552  ana->SetAODObjArrayName(Form("%sHadronCorrIso%d_%s",particle.Data(),bIsolated,kName.Data()));
1553 
1554  // Fill extra plots on tagged decay photons
1555  // If trigger is pi0/eta found with invariant mass, get the decays
1556  // If trigger is photon, check if it was tagged as decay previously
1557  if(particle!="Hadron" )
1558  {
1559  if(particle.Contains("Pi0") || particle.Contains("Eta"))
1560  {
1563  }
1564  else
1565  {
1567  ana->SwitchOnDecayTriggerDecayCorr(); // Make sure pi0 decay tagging runs before this task
1568  }
1569  }
1570  else
1571  {
1574  }
1575 
1576  if(particle=="Photon")
1577  {
1578  printf("**** SET M02 limits *** \n");
1579  ana->SetM02Cut(0.1,0.27);
1580  }
1581 
1582  // if triggering on PHOS and EMCAL is on
1583  //if(kCalorimeter=="PHOS") ana->SwitchOnNeutralCorr();
1584  ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
1585 
1587 
1589 
1590  // Underlying event
1592  ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
1593 
1594  //Set Histograms name tag, bins and ranges
1595 
1596  ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_TM%d_",particle.Data(),bIsolated,kTM));
1597  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1598 
1599  if(particle=="Hadron" || particle.Contains("CTS"))
1600  {
1601  ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1602  ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1603  }
1604 
1605  ConfigureMC(ana);
1606 
1607  if(kPrint) ana->Print("");
1608 
1609  return ana;
1610 }
1611 
1616 {
1618  ana->SetDebug(kDebug); //10 for lots of messages
1620 
1621  ana->SetTimeCut(-1e10,1e10); // Open time cut
1622 
1623  // Study inter detector correlation (PHOS, EMCAL, Tracks, V0)
1624  if(kCalorimeter=="PHOS" && kTrig=="PHOS")
1625  ana->SwitchOnCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1626  if(kCalorimeter=="EMCAL" && kClusterArray=="")
1627  ana->SwitchOnCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1628  else
1629  ana->SwitchOffCorrelation();
1630 
1631  // Study exotic clusters PHOS and EMCAL
1632  if(kClusterArray=="") ana->SwitchOnStudyBadClusters() ;
1633  else ana->SwitchOffStudyBadClusters() ;
1634 
1635 
1636  ana->SwitchOffFiducialCut();
1640  if(!kExotic)ana->SwitchOnStudyBadClusters();
1641  else ana->SwitchOffStudyBadClusters();
1643  ana->SwitchOffStudyWeight();
1646 
1647  ana->AddToHistogramsName("QA_"); //Begining of histograms name
1648  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1649 
1650  ConfigureMC(ana);
1651 
1652  if(kPrint) ana->Print("");
1653 
1654  return ana;
1655 }
1656 
1662 {
1664  ana->SetDebug(kDebug); //10 for lots of messages
1665 
1666  // Trigger detector, acceptance and pT cut
1667  ana->SetTriggerDetector("EMCAL");
1668  ana->SetMinPt(10); // Trigger photon, pi0 minimum pT
1670 
1671  // Particles associated to trigger or isolation cone acceptance and pT cut
1672  ana->SetCalorimeter("EMCAL");
1673  ana->SetMinChargedPt(0.2);
1674  ana->SetMinNeutralPt(0.3);
1675  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.65, 81, 179);
1676  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.9, 0, 360);
1677 
1678  // Isolation paramters
1679  AliIsolationCut * ic = ana->GetIsolationCut();
1680  ic->SetDebug(kDebug);
1681  ic->SetPtThreshold(0.5);
1682  ic->SetConeSize(0.5);
1683  ic->SetSumPtThreshold(1.0) ;
1684  ic->SetICMethod(AliIsolationCut::kPtThresIC); // kSumPtIC
1685 
1686  ana->AddToHistogramsName("AnaGenKine_");
1687  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1688 
1689  if(kPrint) ana->Print("");
1690 
1691  return ana;
1692 }
1693 
1698 {
1699  if(kSimulation) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
1700  else ana->SwitchOffDataMC() ;
1701 
1702  //Set here generator name, default pythia
1703  //ana->GetMCAnalysisUtils()->SetMCGenerator("");
1704 }
1705 
1710 {
1711  // Set common bins for all analysis and MC histograms filling
1712 
1713  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
1714 
1715  if(kCalorimeter=="EMCAL")
1716  {
1717  if ( kYears == 2010 )
1718  {
1719  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
1720  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
1721  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
1722  }
1723  else if ( kYears < 2014 )
1724  {
1725  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
1726  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
1727  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
1728  }
1729  else // Run2
1730  {
1731  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 329*TMath::DegToRad(), 250) ;
1732  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
1733  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
1734  }
1735 
1736  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
1737  }
1738  else
1739  {
1740  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
1741  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
1742  }
1743 
1744  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
1745 
1746  // Invariant mass histoRangeslysis
1747  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
1748  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
1749 
1750  // check if time calibration is on
1751  histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
1752  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
1753 
1754  // track-cluster residuals
1755  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
1756  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
1757  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
1758 
1759  // QA, electron, charged
1760  histoRanges->SetHistoPOverERangeAndNBins(0,2.,200);
1761  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
1762 
1763  // QA
1764  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
1765  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
1766  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
1767  histoRanges->SetHistoRRangeAndNBins(430,460,30);
1768  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
1769  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
1770 
1771  // QA, correlation
1772  if(kCollisions=="PbPb")
1773  {
1774  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
1775  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
1776  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
1777  }
1778  else
1779  {
1780  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
1781  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
1782  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
1783  }
1784 
1785  // xE, zT
1786  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
1787  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
1788 
1789  // Isolation
1790  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
1791  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
1792 
1793 }
1794 
1800 {
1801  if(kTrig=="EMC7")
1802  {
1803  printf("CaloTrackCorr trigger EMC7\n");
1804  return AliVEvent::kEMC7;
1805  }
1806  else if (kTrig=="INT7")
1807  {
1808  printf("CaloTrackCorr trigger INT7\n");
1809  return AliVEvent::kINT7;
1810  }
1811  else if(kTrig=="EMC1")
1812  {
1813  printf("CaloTrackCorr trigger EMC1\n");
1814  return AliVEvent::kEMC1;
1815  }
1816  else if(kTrig=="MB")
1817  {
1818  printf("CaloTrackCorr trigger MB\n");
1819  return AliVEvent::kMB;
1820  }
1821  else if(kTrig=="PHOS")
1822  {
1823  printf("CaloTrackCorr trigger PHOS\n");
1824  return AliVEvent::kPHI7;
1825  }
1826  else if(kTrig=="PHOSPb")
1827  {
1828  printf("CaloTrackCorr trigger PHOSPb\n");
1829  return AliVEvent::kPHOSPb;
1830  }
1831  else if(kTrig=="AnyINT")
1832  {
1833  printf("CaloTrackCorr trigger AnyINT\n");
1834  return AliVEvent::kAnyINT;
1835  }
1836  else if(kTrig=="INT")
1837  {
1838  printf("CaloTrackCorr trigger AnyINT\n");
1839  return AliVEvent::kAny;
1840  }
1841  else if(kTrig=="EMCEGA")
1842  {
1843  printf("CaloTrackCorr trigger EMC Gamma\n");
1844  return AliVEvent::kEMCEGA;
1845  }
1846  else if(kTrig=="EMCEJE")
1847  {
1848  printf("CaloTrackCorr trigger EMC Jet\n");
1849  return AliVEvent::kEMCEJE;
1850  }
1851  else if(kTrig=="Central")
1852  {
1853  printf("CaloTrackCorr trigger Central\n");
1854  return (AliVEvent::kCentral | AliVEvent::kMB);
1855  }
1856  else if(kTrig=="CentralEGA")
1857  {
1858  printf("CaloTrackCorr trigger Central+EMCEGA\n");
1859  return (AliVEvent::kCentral | AliVEvent::kEMCEGA);
1860  }
1861  else if(kTrig=="SemiCentral")
1862  {
1863  printf("CaloTrackCorr trigger SemiCentral\n");
1864  return (AliVEvent::kSemiCentral | AliVEvent::kMB);
1865  }
1866  else if(kTrig=="SemiOrCentral")
1867  {
1868  printf("CaloTrackCorr trigger SemiCentral Or Central\n");
1869  return (AliVEvent::kSemiCentral | AliVEvent::kCentral | AliVEvent::kMB);
1870  }
1871 }
1872 
void SetEOverP(Double_t min, Double_t max)
void SetSumPtThresholds(Int_t i, Float_t pt)
void SetPtThreshold(Float_t pt)
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetNumberOfCellsFromPHOSBorder(Int_t n)
void SetPhiCut(Float_t min, Float_t max)
void SetTimeCut(Double_t min, Double_t max)
void ana(Int_t mode=mGRID)
Definition: ana.C:86
void SetSimpleCTSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
Bool_t kCalibT
Calibrate time of clusters.
void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void AddToHistogramsName(TString add)
void SwitchOnFillAllTrackMatchingHistogram()
TString kClusterArray
Name of branch with clusters, default none, standard branch.
void SetSplitWidthSigma(Float_t s)
Definition: AliCaloPID.h:248
virtual void SwitchOnFiducialCut()
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOnTrackMatchRejection()
Definition: AliAnaPhoton.h:102
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:229
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:225
Bool_t kOutputAOD
Create output AOD with generated particle AOD objects.
void SwitchOnTMHistoFill()
Definition: AliAnaPhoton.h:76
void SetAssociatedPtRange(Float_t min, Float_t max)
AliAnaParticleIsolation * ConfigureIsolationAnalysis(TString particle="Photon", Int_t partInCone=AliIsolationCut::kOnlyCharged, Int_t thresType=AliIsolationCut::kSumPtFracIC, Float_t cone=0.3, Float_t pth=0.3, Bool_t multi=kFALSE)
void SetTriggerPatchTimeWindow(Int_t min, Int_t max)
Class with utils to perform Isolation Cuts.
virtual void SwitchOnAODHybridTrackSelection()
virtual void SetCentralityBin(Int_t min, Int_t max)
AliAnaElectron * ConfigureElectronAnalysis()
AliEMCALRecoUtils * GetEMCALRecoUtils() const
Bool_t kPrint
Global variables to be accessed by the different methods.
void SetConeSize(Float_t r)
Bool_t kNonLinearity
Correct cluster non linearity.
void SetEMCALParametrizedMinTimeCut(Int_t i, Float_t par)
void SetPtFraction(Float_t pt)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPi0EbE.h:143
void FillNPrimaryHistograms(Int_t n)
Definition: AliAnaPhoton.h:107
AliAnaInsideClusterInvariantMass * ConfigureInClusterIMAnalysis(Bool_t useSS=kTRUE, Bool_t useAsy=kFALSE)
void SwitchOffClusterELinearityCorrection()
void SetCTSPtMax(Float_t pt)
void SwitchOffSplitShowerShapeCut()
Definition: AliCaloPID.h:226
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:232
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
Selected photon clusters invariant mass analysis.
Definition: AliAnaPi0.h:38
void SetDebug(Int_t d)
void SetMinChargedPt(Float_t pt)
AliAnaParticleHadronCorrelation * ConfigureHadronCorrelationAnalysis(TString particle, Bool_t bIsolated, Int_t partInCone=AliIsolationCut::kOnlyCharged, Int_t thresType=AliIsolationCut::kSumPtFracIC, Float_t cone=0.3, Float_t pth=0.3)
virtual void SetCalorimeter(TString &calo)
Set the calorimeter for the analysis. A string.
virtual void SetInputAODName(TString name)
virtual void SetTrackComplementaryCuts(AliESDtrackCuts *)
virtual AliIsolationCut * GetIsolationCut()
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPhoton.h:85
AliAnaPi0EbE * ConfigurePi0EbEAnalysis(TString particle, Int_t analysis, Bool_t useSS=kTRUE, Bool_t useAsy=kTRUE)
void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
void KeepNeutralMesonSelectionHistos(Bool_t keep)
void SwitchOnSelectedClusterHistoFill()
Definition: AliAnaPi0EbE.h:112
void SwitchOffTMHistoFill()
Definition: AliAnaPhoton.h:77
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
Bool_t kSimulation
Declare the analysis simulation.
virtual void SetOutputAODClassName(TString name)
void SwitchOffFillShowerShapeHistograms()
Definition: AliAnaPhoton.h:69
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetSumPtThreshold(Float_t s)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPi0EbE.h:134
void SwitchOffMultipleCutAnalysis()
Definition: AliAnaPi0.h:110
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 SetPHOSEMax(Float_t e)
void SwitchOffSplitAsymmetryCut()
Definition: AliCaloPID.h:222
void SetAnalysisType(anaTypes ana)
Definition: AliAnaPi0EbE.h:93
void SwitchOffFillWeightHistograms()
void SetNumberOfCellsFromEMCALBorder(Int_t n)
void SwitchOffTMHistoFill()
Definition: AliAnaPi0EbE.h:110
void SetEMCALEMin(Float_t e)
void SetNCellCut(Int_t n)
Definition: AliAnaPhoton.h:93
Select cluster pairs or single merged clusters with pi0 or eta invariant mass.
Definition: AliAnaPi0EbE.h:31
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
void SetPtFractions(Int_t i, Float_t pt)
2 calorimeter clusters invariant mass selection
Definition: AliAnaPi0EbE.h:87
Selection of electron clusters in calorimeter.
const TString calorimeter
Definition: anaM.C:35
Bool_t IsRecalibrationOn() const
void SetHistoTrackResidualEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Class for event, clusters and tracks filtering and preparation for the AOD analysis.
Bool_t kTM
Remove matched clusters to tracks.
void SetCTSPtMin(Float_t pt)
TString kData
Declare data MC or deltaAOD.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetPHOSRCut(Float_t rcut)
Definition: AliCaloPID.h:207
void SetEMCALDPhiCut(Float_t dcut)
Definition: AliCaloPID.h:201
virtual void SetOutputAODName(TString name)
void SwitchOffRecalculateClusterTrackMatching()
void SetEventTriggerMask(UInt_t evtTrig=AliVEvent::kAny)
void SetICMethod(Int_t i)
Bool_t kEventSelection
Remove bad events.
void SetEMCALParametrizedMaxTimeCut(Int_t i, Float_t par)
void SwitchOffVertexBCEventSelection()
void SetTriggerDetector(TString &det)
Set the detrimeter for the analysis.
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:103
TString kCalorimeter
Use main analysis detector EMCal or PHOS or CTS.
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:89
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()
AliAnaChargedParticles * ConfigureChargedAnalysis()
virtual void SetCentralityOpt(Int_t opt)
void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Bool_t kHadronAN
Execute the hadron selection and correlation analysis.
void SetSideBandCutRanges(Double_t lmin, Double_t lmax, Double_t rmin, Double_t rmax)
virtual AliHistogramRanges * GetHistogramRanges()
void SwitchOnSplitAsymmetryCut()
Definition: AliCaloPID.h:221
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTrackStatus(ULong_t bit)
void SetPi0MassShiftHighECell(Float_t s)
Definition: AliCaloPID.h:250
Bool_t IsBadChannelsRemovalSwitchedOn() const
AliCaloTrackReader * ConfigureReader()
Filter EMCal/PHOS clusters for photon analysis.
Definition: AliAnaPhoton.h:32
void SetHistoTrackResidualPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetConeSizes(Int_t i, Float_t r)
Bool_t kExotic
Remove exotic clusters.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TString kName
Name of the analysis, used in created AOD branches and histo container.
Class for filtering generated MC particles and prepare them as input for the analysis.
Fill histograms for cluster spectra dependence on pile-up.
void SetEtaCut(Float_t min, Float_t max)
void SetM02Cut(Float_t min=0, Float_t max=10)
void SwitchOnSplitClusterDistToBad()
Definition: AliAnaPi0EbE.h:161
Int_t kMinCen
Set the minimum centrality to be analyzed.
void SwitchOnRecalculateClusterTrackMatching()
void SwitchOnUnMatchedTriggerEventsRemoval()
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SwitchOffTrackMatchRejection()
Definition: AliAnaPi0EbE.h:150
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:99
Bool_t kCalibE
Calibrate energy of clusters.
AliAnaClusterPileUp * ConfigureClusterPileUpAnalysis()
void SetHistoNClusterCellRangeAndNBins(Int_t min, Int_t max, Int_t n)
TString kCollisions
Declare the collision type of the data.
void SetEMCALClusterListName(TString &name)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Definition: AliAnaPi0.cxx:1269
Bool_t kTender
Declare that tender was executed.
void SetMinNeutralPt(Float_t pt)
Bool_t kQA
Execute the calorimeter QA analaysis.
Bool_t kBadMap
Reject bad cells/clusters.
void SetParticle(TString particleName)
Set some default parameters for selection of pi0 or eta.
TString kTrig
Set the trigger type to analyze in data.
Bool_t kMix
Do mixing analysis.
void FillAODWithElectrons()
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void ConfigureMC(AliAnaCaloTrackCorrBaseClass *ana)
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPhoton.h:88
AliAnaGeneratorKine * ConfigureGenKineAnalysis()
AliAnaCalorimeterQA * ConfigureQAAnalysis()
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Class for study of EMCAL trigger behaviour.
virtual void SetZvertexCut(Float_t zcut=10.)
AliFiducialCut * GetFiducialCutForTrigger()
void SetEtaMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:270
void SetNumberOfSuperModulesUsed(Int_t nSM)
TString kInputDataType
Declare data ESD/AOD.
void SwitchOnTMHistoFill()
Definition: AliAnaPi0EbE.h:109
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetPi0MassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:269
Class containing more common histogram axis types.
void SetEMCALLambda0CutMax(Float_t lcut)
Definition: AliCaloPID.h:192
void SwitchOnTrackMatchRejection()
Definition: AliAnaPi0EbE.h:149
virtual void SetNCentrBin(Int_t n=1)
Number of bins in reaction plain.
Class for event, clusters and tracks filtering and preparation for the ESD analysis.
virtual void SetEventPlaneMethod(TString m)
void SetNAsymCuts(Int_t s)
Definition: AliAnaPi0.h:113
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:210
virtual void SetTrackCuts(AliESDtrackCuts *)
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPi0EbE.h:101
Track selection for correlation analysis.
void SetM02(Float_t min, Float_t max)
virtual void SetCentralityClass(TString name)
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 SwitchOffFillWeightHistograms()
Definition: AliAnaPi0EbE.h:153
void SwitchOffFillShowerShapeHistograms()
void SetTrackTimeCut(Double_t a, Double_t b)
void SetEMCALTimeCut(Double_t a, Double_t b)
AliAnaPhoton * ConfigurePhotonAnalysis()
Gerenate a random trigger.
void SetTriggerDetector(TString &det)
Set the calorimeter for the analysis.
void Print(const Option_t *opt) const
Print some relevant parameters set 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)
virtual void SetAODObjArrayName(TString name)
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
AliAnaPi0 * ConfigurePi0Analysis()
void SwitchOffLoadOwnPHOSGeometryMatrices()
void SetHistoRangeAndNBins(AliHistogramRanges *histoRanges)
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)
UInt_t SetTriggerMaskFromName()
AliAnalysisTaskCaloTrackCorrelation * AddTaskCaloTrackCorr(const TString data="", const TString calorimeter="EMCAL", const Bool_t simulation=kFALSE, const Bool_t eventsel=kFALSE, const Bool_t exotic=kTRUE, const Bool_t nonlin=kFALSE, TString outputfile="", const Int_t year=2010, const TString col="pp", const TString trigger="MB", const TString clustersArray="V1", const Bool_t mix=kTRUE, const Bool_t recaltm=kTRUE, const Bool_t tm=kTRUE, const Int_t minCen=-1, const Int_t maxCen=-1, const Bool_t qaan=kFALSE, const Bool_t hadronan=kFALSE, const Bool_t calibE=kTRUE, const Bool_t badmap=kTRUE, const Bool_t calibT=kTRUE, const Bool_t tender=kFALSE, const Bool_t outputAOD=kFALSE, const Bool_t printSettings=kFALSE, const Double_t scaleFactor=-1, const Int_t runNumber=-1)
void SetHistoFinePtRangeAndNBins(Float_t min, Float_t max, Int_t n)
Int_t kMaxCen
Set the maximum centrality to be analyzed.
void SetEventTriggerL0Threshold(Float_t tr)
Int_t kDebug
Do the analysis with this debug level.
void SwitchOffSMCombinations()
Definition: AliAnaPi0.h:90
void SetNAssocPtBins(Int_t n)
Set number of associated charged (neutral) hadrons pT bins.
AliCalorimeterUtils * ConfigureCaloUtils()
Class for PID selection with calorimeters.
Definition: AliCaloPID.h:51
1 calorimeter cluster shower shape and split invariatn mass selection
Definition: AliAnaPi0EbE.h:88
void FillNOriginHistograms(Int_t n)
Definition: AliAnaPhoton.h:105
virtual void SetNMaxEvMix(Int_t n=20)
Number of bins in track multiplicity.
void SetNCellCut(Int_t n)
void SetPHOSEMin(Float_t e)
void SetNLMMinEnergy(Int_t i, Float_t min)
Definition: AliAnaPi0EbE.h:139
void SetHistoShowerShapeRangeAndNBins(Float_t min, Float_t max, Int_t n)
AliAnaEMCALTriggerClusters * ConfigureEMCALTriggerClusterAnalysis()
Int_t kRunNumber
Declare the run number.
AliAnaRandomTrigger * ConfigureRandomTriggerAnalysis(TString detector="")
void SetHistodEdxRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class with utils specific to calorimeter clusters/cells.
Select clusters with large shower shape, split them and tag them as pi0/eta via invariant mass...
void SetMixEventTriggerMask(UInt_t evtTrig=AliVEvent::kAnyINT)
TString kInputData
With real data kMC = kFALSE.
Definition: ana.C:63
void SetHistoHBPRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALLambda0CutMin(Float_t lcut)
Definition: AliCaloPID.h:195
void SetHistoRRangeAndNBins(Float_t min, Float_t max, Int_t n)
Bool_t kRecalTM
Recalculate track-cluster matching.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetParticleTypeInCone(Int_t i)
void SetHistoVertexDistRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALEMax(Float_t e)
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALDEtaCut(Float_t dcut)
Definition: AliCaloPID.h:198
void SetPhotonMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:271
void SwitchOffUseParametrizedTimeCut()
void SetLocalMaximaCutE(Float_t cut)
void SetPtThresholds(Int_t i, Float_t pt)
void SetdEdxCut(Double_t min, Double_t max)
Int_t kYears
Declare the year of the data.
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPhoton.h:96
void SetAssocPtBinLimit(Int_t ibin, Float_t pt)
Set the list of pT limits for the of associated charged (neutral) hadrons.
void ConfigureEMCALRecoUtils(AliEMCALRecoUtils *reco, Bool_t bMC=kFALSE, Bool_t bExotic=kTRUE, Bool_t bNonLin=kFALSE, Bool_t bRecalE=kTRUE, Bool_t bBad=kTRUE, Bool_t bRecalT=kTRUE)
Steering class of package CaloTrackCorrelartions.
Bool_t kUseKinematics
Use the MC information.
void SetTriggerPtRange(Float_t min, Float_t max)