AliPhysics  8d00e07 (8d00e07)
AddTaskCaloTrackPi0Flow.C
Go to the documentation of this file.
1 
9 
10 // Global variables to be accessed by the different methods
11 TString kData = "";
13 TString kCalorimeter = "EMCAL";
14 Bool_t kSimulation = kFALSE;
16 Bool_t kExotic = kTRUE;
18 Int_t kYears = 2011;
19 TString kCollisions = "PbPb";
20 TString kClusterArray = "V1_Ecell150_Eseed300_DT0_WT0";
21 Bool_t kRecalTM = kFALSE;
22 Bool_t kTM = kTRUE;
23 Int_t kMinCen = -1;
24 Int_t kMaxCen = -1;
25 Bool_t kCalibE = kTRUE;
26 Bool_t kBadMap = kTRUE;
27 Bool_t kCalibT = kTRUE;
28 Bool_t kTender = kFALSE;
29 Bool_t kOutputAOD = kFALSE;
30 Bool_t kPrint = kFALSE;
31 Int_t kRunNumber = -1; //< Declare the run number
32 Bool_t kPhosCali = kTRUE;
33 Bool_t kCentFlat = kFALSE;
35 
36 //Bool_t kUseKinematics = kFALSE; ///< Use the MC information
37 TString kName = "";
38 
44  const TString dataType = "AOD",
45  const TString calorimeter = "EMCAL",
46  const Bool_t simulation = kFALSE,
47  const Bool_t eventsel = kFALSE,
48  const Bool_t exotic = kTRUE,
49  const Bool_t nonlin = kFALSE,
50  const Int_t year = 2011,
51  const TString col = "PbPb",
52  AliVEvent::EOfflineTriggerTypes trig = AliVEvent::kCentral + AliVEvent::kSemiCentral + AliVEvent::kMB + AliVEvent::kEMCEGA,
53  const TString clustersArray = "V1_Ecell150_Eseed300_DT0_WT0",
54  const Int_t nlmMin = 1,
55  const Int_t nlmMax = 2,
56  const Bool_t simpleM02Cut = kFALSE,
57  const Bool_t simpleMassCut = kFALSE,
58  const Double_t massPi0Min = 0.11,
59  const Double_t massPi0Max = 0.18,
60  const Bool_t recaltm = kFALSE,
61  const Bool_t tm = kTRUE,
62  const Int_t minCen = -1,
63  const Int_t maxCen = -1,
64  const Bool_t calibE = kTRUE,
65  const Bool_t badmap = kTRUE,
66  const Bool_t calibT = kTRUE,
67  const Bool_t tender = kFALSE,
68  const Bool_t outputAOD = kFALSE,
69  const Bool_t printSettings = kFALSE,
70  const Int_t runNumber = -1,
71  const Bool_t isPhosCali = kTRUE,
72  const Bool_t isCentFlat = kFALSE,
73  const Int_t debug = 0
74  )
75 {
76  kData = data;
77  kInputDataType = dataType;
78  kCalorimeter = calorimeter;
79  kSimulation = simulation;
80  kEventSelection = eventsel;
81  kExotic = exotic;
82  kNonLinearity = nonlin;
83  kYears = year;
84  kCollisions = col;
85  kClusterArray = clustersArray;
86  kRecalTM = recaltm;
87  kTM = tm;
88  kMinCen = minCen;
89  kMaxCen = maxCen;
90  kCalibE = calibE;
91  kBadMap = badmap;
92  kCalibT = calibT;
93  kTender = tender;
94  kOutputAOD = outputAOD;
95  kPrint = printSettings;
96  kRunNumber = runNumber;
97  kPhosCali = isPhosCali;
98  kCentFlat = isCentFlat;
99  kDebug = debug;
100 
101  // Get the pointer to the existing analysis manager via the static access method.
102  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
103  if (!mgr)
104  {
105  ::Error("AddTask", "No analysis manager to connect to.");
106  return NULL;
107  }
108  // Check the analysis type using the event handlers connected to the analysis manager.
109  if (!mgr->GetInputEventHandler())
110  {
111  ::Error("AddTask", "This task requires an input event handler");
112  return NULL;
113  }
114  // Make sure the B field is enabled for track selection, some cuts need it
115  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
116  kInputDataType = "AOD";
117  if(!kData.Contains("delta"))
118  kInputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
119 
120 // if(kSimulation)
121 // {
122 // kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
123 // if (!kUseKinematics && data=="AOD" && kInputDataType != "ESD") kUseKinematics = kTRUE; //AOD primary should be available ...
124 // }
125 // cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
126 
127  // Name for containers
128  kName = Form("%s_Cl%s_TM%d",kCalorimeter.Data(), kClusterArray.Data(), kTM);
129  if (kCollisions=="PbPb" && kMaxCen>=0) kName+=Form("Cen%d_%d",kMinCen,kMaxCen);
130  printf("<<<< NAME: %s >>>>>\n",kName.Data());
131 
132  //
133  // Create maker
134  //
136  // General frame setting and configuration
137  maker->SetReader (ConfigureReader() );
138  maker->SetCaloUtils(ConfigureCaloUtils());
139 
140  //
141  // Add and configure analysis
142  //
143  Int_t n = 0; // Analysis number, order is important
144 
145  // Split cluster analysis
146  if (kCalorimeter == "EMCAL") {
147  // Pi0 event by event selection, cluster splitting
148  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kSSCalo, kTRUE, kTRUE, nlmMin, nlmMax,
149  simpleM02Cut, simpleMassCut, massPi0Min, massPi0Max), n++);
150  }
151  maker->AddAnalysis(ConfigurePi0Flow(), n++);
152 
153  maker->SetAnaDebug(kDebug) ;
154  maker->SwitchOnHistogramsMaker() ;
155  if(kData.Contains("delta")) maker->SwitchOffAODsMaker() ;
156  else maker->SwitchOnAODsMaker() ;
157  if(kPrint) maker->Print("");
158  if(kSimulation) maker->SwitchOffDataControlHistograms();
159  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, kCalorimeter.Data());
160 
161  //
162  // Create task
163  //
164  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation(Form("CaloTrackCorr%s",kName.Data()));
165  task->SetConfigFileName(""); // Don't configure the analysis via configuration file.
166  task->SetDebugLevel(kDebug);
167  // task->SetBranches("ESD:AliESDRun.,AliESDHeader");
168  task->SelectCollisionCandidates(trig);
169  task->SetAnalysisMaker(maker);
170  mgr->AddTask(task);
171 
172  //
173  // Create and set containers
174  //
175  TString outputfile = AliAnalysisManager::GetCommonFileName();
176  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kName, TList::Class(),
177  AliAnalysisManager::kOutputContainer,
178  Form("%s",outputfile.Data()));
179  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kName.Data()), TList::Class(),
180  AliAnalysisManager::kParamContainer,
181  "AnalysisParameters.root");
182  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
183  mgr->ConnectOutput (task, 1, cout_pc);
184  mgr->ConnectOutput (task, 2, cout_cuts);
185 
186  return task;
187 }
188 
193 {
194  AliCaloTrackReader * reader = 0;
195  if (kInputDataType == "ESD"&& kData=="MC" )
196  reader = new AliCaloTrackMCReader();
197  else if(kInputDataType=="AOD" || kData.Contains("AOD"))
198  reader = new AliCaloTrackAODReader();
199  else if(kInputDataType=="ESD")
200  reader = new AliCaloTrackESDReader();
201  else
202  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known kData=%s, kInputData=%s\n",kData.Data(),kInputDataType.Data());
203 
204  reader->SetDebug(kDebug);//10 for lots of messages
205 
206  //Delta AOD?
207  //reader->SetDeltaAODFileName("");
208  if(kOutputAOD) reader->SwitchOnWriteDeltaAOD() ;
209 
210  //------------------------
211  // Detector input filling
212  //------------------------
213 
214  //Min cluster/track E
215  reader->SetEMCALEMin(0.3);
216  reader->SetEMCALEMax(1000);
217  reader->SetPHOSEMin(0.3);
218  reader->SetPHOSEMax(1000);
219  reader->SetCTSPtMin(0.2);
220  reader->SetCTSPtMax(1000);
221 
222  // Time cuts
223  if(kSimulation)
224  {
225  reader->SwitchOffUseTrackTimeCut();
227  reader->SwitchOffUseEMCALTimeCut();
228  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
229  }
230  else
231  {
232  if(kCalibT)
233  {
234  printf("Set time cut parameters for run %d\n",kRunNumber);
235  reader->SwitchOnUseEMCALTimeCut();
237 
238  //Absolute window
239  reader->SetEMCALTimeCut(-25,20);
240 
241  //Parametrization
242  if (kRunNumber >= 151636 && kRunNumber <= 155384 )
243  {
244  printf("Set time parameters for LHC11c");
247  }
248  else if(kRunNumber >= 156447 && kRunNumber <= 159635 )
249  {
250  printf("Set time parameters for LHC11d");
253  }
254  else
255  {
257  }
258  }
259  else
260  {
262  reader->SwitchOffUseEMCALTimeCut();
263  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
264  }
265  }
266 
267  reader->SwitchOnFiducialCut();
268  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
269 
270  // Tracks
271  reader->SwitchOnCTS();
273 
276 
277  reader->SwitchOffUseTrackTimeCut();
278  reader->SetTrackTimeCut(0,50);
279 
280  reader->SwitchOffUseTrackDCACut();
281  //reader->SetTrackDCACut(0,0.0105);
282  //reader->SetTrackDCACut(1,0.035);
283  //reader->SetTrackDCACut(2,1.1);
284 
285  if(kInputDataType=="ESD")
286  {
287  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
288  //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
289  //reader->SetTrackCuts(esdTrackCuts);
290  //reader->SwitchOnConstrainTrackToVertex();
291 
292  if(kYears>2010)
293  {
294  //Hybrids 2011
295  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
296  reader->SetTrackCuts(esdTrackCuts);
297  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
298  reader->SetTrackComplementaryCuts(esdTrackCuts2);
299  }
300  else
301  {
302  //Hybrids 2010
303  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
304  reader->SetTrackCuts(esdTrackCuts);
305  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
306  reader->SetTrackComplementaryCuts(esdTrackCuts2);
307  }
308  }
309  else if(kInputDataType=="AOD")
310  {
311  //reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid
312  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
313  reader->SetTrackStatus(AliVTrack::kITSrefit);
314  //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
315  }
316 
317  // Calorimeter
318 
319  reader->SetEMCALClusterListName(kClusterArray);
320  if(kClusterArray == "" && !kTender)
321  {
322  printf("**************** Standard EMCAL clusters branch analysis **************** \n");
324  // Check in ConfigureCaloUtils that the recalibration and bad map are ON
325  }
326  else
327  {
328  printf("**************** Input for analysis is Clusterizer %s **************** \n", kClusterArray.Data());
330  }
331 
333 
334  if(kCalorimeter == "EMCAL") {
335  reader->SwitchOnEMCALCells();
336  reader->SwitchOnEMCAL();
337  }
338  if(kCalorimeter == "PHOS") {
339  reader->SwitchOnPHOSCells();
340  reader->SwitchOnPHOS();
341  }
342 
343  // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
344  if(kData.Contains("delta"))
345  {
346  reader->SwitchOffEMCAL();
347  reader->SwitchOffPHOS();
348  reader->SwitchOffEMCALCells();
349  reader->SwitchOffPHOSCells();
350  }
351 
352  //-----------------
353  // Event selection
354  //-----------------
355 
356  //reader->RejectFastClusterEvents() ;
357 
358  // Event triggered selection settings
360  //reader->SwitchOffTriggerClusterTimeRecal() ;
361 
362  //redefine for other periods, triggers
363 
364  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
365 
366  reader->SwitchOnEventTriggerAtSE();
367 
368  reader->SetZvertexCut(10.); // Open cut
369  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
370 
371  if(kEventSelection)
372  {
373  reader->SwitchOnEventPileUpRejection(); // remove pileup by default
374  reader->SwitchOnV0ANDSelection() ; // and besides v0 AND
375  }
376  else
377  {
378  reader->SwitchOffPileUpEventRejection();// remove pileup by default
379  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
380  }
381 
382  if(kCollisions=="PbPb")
383  {
384  // Centrality
385  reader->SwitchOnAliCentrality();
386  reader->SetCentralityClass("V0M");
387  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
388  reader->SetCentralityBin(kMinCen,kMaxCen); // Accept all events, if not select range
389 
390  // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
391  reader->SetEventPlaneMethod("V0");
392  }
393 
394  if(kPrint) reader->Print("");
395 
396  return reader;
397 }
398 
403 {
405  cu->SetDebug(kDebug);
406 
407  // Remove clusters close to borders, at least max energy cell is 1 cell away
410 
411  // Search of local maxima in cluster
412  if(kCollisions=="pp")
413  {
414  cu->SetLocalMaximaCutE(0.1);
415  cu->SetLocalMaximaCutEDiff(0.03);
416  if(kName.Contains("150"))
417  {
418  printf("Reclusterize with 150 threshold, set PbPb settings\n");
419  cu->SetLocalMaximaCutE(0.2);
420  cu->SetLocalMaximaCutEDiff(0.03);
421  }
422  }
423  else
424  {
425  cu->SetLocalMaximaCutE(0.2);
426  cu->SetLocalMaximaCutEDiff(0.03);
427  }
428 
429  cu->SwitchOffClusterPlot();
430 
431  if (kRecalTM) cu->SwitchOnRecalculateClusterTrackMatching(); // Done in clusterization
433 
435 
436  //EMCAL settings
437 
438  if(!kSimulation)
440 
441  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
442 
443  if(!kSimulation)
444  {
445  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
446  if(kClusterArray == "" && !kTender) cu->SwitchOnRunDepCorrection();
447  }
448 
449  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
451  kSimulation,
452  kExotic,
453  kTRUE,//kNonLinearity,
454  kCalibE,
455  kBadMap,
456  kCalibT);
457  //recou->SetExoticCellDiffTimeCut(50.);
458 
459 
460  if( kNonLinearity )
461  {
462  printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
464  }
465 
466  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
467  printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
468 
469 
470  if(kCalorimeter=="PHOS")
471  {
472  if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(3);
473  else cu->SetNumberOfSuperModulesUsed(4);
474  }
475  else
476  {
477  if (kYears == 2010) cu->SetNumberOfSuperModulesUsed(4); //EMCAL first year
478  else if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(10);
479  else cu->SetNumberOfSuperModulesUsed(20);
480  }
481 
482  // PHOS
484 
485  if(kPrint) cu->Print("");
486 
487  return cu;
488 }
489 
496  Int_t analysis, Bool_t useSS = kTRUE, Bool_t useAsy = kTRUE,
497  Int_t nlmMin = 1, Int_t nlmMax = 2,
498  Bool_t simpleSplitM02Cut = kFALSE, Bool_t simpleSplitMassCut = kFALSE,
499  Double_t massPi0Min, Double_t massPi0Max)
500 {
501  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
502  ana->SetDebug(kDebug);//10 for lots of messages
503 
504  ana->SetAnalysisType(analysis);
505  TString opt = "";
506  if (analysis == AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
507  if (analysis == AliAnaPi0EbE::kSSCalo) opt = "SS";
508  if (analysis == AliAnaPi0EbE::kIMCalo && kCalorimeter=="EMCAL" && !kSimulation) ana->SetPairTimeCut(100);
509  if (analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
510 
511  // Common settings for all 3 type of analysis
513  ana->SetCalorimeter(kCalorimeter);
514 
515  //Set Histograms name tag, bins and ranges
516  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
517 
518  // Specific settings for different type of analysis
519 
522 
523  if (kTM) {
524  //printf("--->>>REMOVE MATCHED Pi0\n");
526  ana->SwitchOffTMHistoFill() ;
527  } else {
528  //printf("---->>>ACCEPT MATCHED Pi0\n");
530  ana->SwitchOnTMHistoFill() ;
531  }
532 
533  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
534 
535  //ana->SwitchOnFillEMCALBCHistograms();
536 
537  if (!kInputDataType.Contains("delta")) {
538  ana->SetOutputAODName(Form("%s%s%s",particle.Data(), opt.Data(), kName.Data()));
539  ana->SetOutputAODClassName("AliCaloTrackParticle");
540  } else
541  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
542 
543  // cluster splitting settings
544  ana->SetMinEnergy(6);
545  ana->SetMaxEnergy(200.);
546  ana->SetNLMMinEnergy(0, 10);
547  ana->SetNLMMinEnergy(1, 6);
548  ana->SetNLMMinEnergy(2, 6);
549  ana->SetMinDistanceToBadChannel(2, 4, 6); // only use the first one
551  ana->SetTimeCut(-1e10,1e10); // Open time cut
552 
553  // NLM cut, used in all, exclude clusters with more than 2 maxima
554  ana->SetNLMCut(nlmMin, nlmMax) ;
555 
556  AliCaloPID* caloPID = ana->GetCaloPID();
557  caloPID->SetSplitWidthSigma(3.); // cut at 3 sigma of the mean pi0 peak.
558 
559  if (!useSS) {
560  printf("Do not apply SS cut on merged pi0 analysis \n");
561  caloPID->SwitchOffSplitShowerShapeCut() ;
562  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),kTM));
563  ana->SetOutputAODName(Form("%s%s%s_OpenSS",particle.Data(), opt.Data(), kName.Data()));
564  caloPID->SetClusterSplittingM02Cut(0.1,10000);
565  } else {
566  caloPID->SetClusterSplittingM02Cut(0.3,5); // Do the selection in the analysis class and not in the PID method to fill SS histograms
567  caloPID->SwitchOnSplitShowerShapeCut() ;
568  if (simpleSplitM02Cut) caloPID->SwitchOnSimpleSplitM02Cut();
569  }
570 
571  if (simpleSplitMassCut) caloPID->SwitchOnSimpleSplitMassCut();
572 
573  if (useAsy) caloPID->SwitchOnSplitAsymmetryCut() ;
574  else {
575  caloPID->SwitchOffSplitAsymmetryCut() ;
576  if (!useSS) {
577  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
578  ana->SetOutputAODName(Form("%s%s%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
579  } else {
580  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
581  ana->SetOutputAODName(Form("%s%s%s_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
582  }
583  }
584 
585  //For Pi0 only if SwitchOnSimpleSplitMassCut()
586  caloPID->SetPi0MassRange(massPi0Min, massPi0Max);
587  caloPID->SetEtaMassRange(0.40, 0.60);
588  caloPID->SetPhotonMassRange(0.00, 0.08);
589  caloPID->SetClusterSplittingMinNCells(6);
590  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
591  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
592  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
593  if (kCollisions=="PbPb" || kName.Contains("150")) {
594  caloPID->SetClusterSplittingMinNCells(4);
595  caloPID->SetPi0MassShiftHighECell(0.005);
596  }
597 
598  if (kPrint) ana->Print("");
599  return ana;
600 }
601 
607 {
609  ana->SetDebug(kDebug);
610 
611  TString particle = "Pi0";
612  TString opt = "SS";
613  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
614  ana->IsPHOSCali(kPhosCali);
615  ana->IsCentFlat(kCentFlat);
616 
617  if (kPrint) ana->Print("");
618  return ana;
619 }
620 
625 {
626  // Set common bins for all analysis and MC histograms filling
627 
628  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
629 
630  if(kCalorimeter=="EMCAL")
631  {
632  if ( kYears == 2010 )
633  {
634  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
635  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
636  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
637  }
638  else if ( kYears < 2014 )
639  {
640  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
641  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
642  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
643  }
644  else // Run2
645  {
646  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 329*TMath::DegToRad(), 250) ;
647  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
648  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
649  }
650 
651  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
652  }
653  else
654  {
655  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
656  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
657  }
658 
659  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
660 
661  // Invariant mass histoRangeslysis
662  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
663  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
664 
665  // check if time calibration is on
666  histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
667  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
668 
669  // track-cluster residuals
670  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
671  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
672  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
673 
674  // QA, electron, charged
675  histoRanges->SetHistoPOverERangeAndNBins(0,2.,200);
676  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
677 
678  // QA
679  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
680  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
681  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
682  histoRanges->SetHistoRRangeAndNBins(430,460,30);
683  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
684  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
685 
686  // QA, correlation
687  if(kCollisions=="PbPb")
688  {
689  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
690  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
691  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
692  }
693  else
694  {
695  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
696  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
697  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
698  }
699 
700  // xE, zT
701  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
702  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
703 
704  // Isolation
705  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
706  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
707 
708 }
void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
virtual void SetDebug(Int_t d)
void SetNumberOfCellsFromPHOSBorder(Int_t n)
void ana(Int_t mode=mGRID)
Definition: ana.C:162
void SetSimpleCTSFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax)
double Double_t
Definition: External.C:58
void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void AddToHistogramsName(TString add)
AliAnaPi0EbE * ConfigurePi0EbEAnalysis(TString particle, Int_t analysis, Bool_t useSS=kTRUE, Bool_t useAsy=kTRUE, Int_t nlmMin=1, Int_t nlmMax=2, Bool_t simpleSplitM02Cut=kFALSE, Bool_t simpleSplitMassCut=kFALSE, Double_t massPi0Min, Double_t massPi0Max)
void SetSplitWidthSigma(Float_t s)
Definition: AliCaloPID.h:283
virtual void SwitchOnFiducialCut()
const int debug
Definition: scanAll.C:15
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:264
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:260
AliAnalysisTaskCaloTrackCorrelation * AddTaskCaloTrackPi0Flow(const TString data="", const TString dataType="AOD", const TString calorimeter="EMCAL", const Bool_t simulation=kFALSE, const Bool_t eventsel=kFALSE, const Bool_t exotic=kTRUE, const Bool_t nonlin=kFALSE, const Int_t year=2011, const TString col="PbPb", AliVEvent::EOfflineTriggerTypes trig=AliVEvent::kCentral+AliVEvent::kSemiCentral+AliVEvent::kMB+AliVEvent::kEMCEGA, const TString clustersArray="V1_Ecell150_Eseed300_DT0_WT0", const Int_t nlmMin=1, const Int_t nlmMax=2, const Bool_t simpleM02Cut=kFALSE, const Bool_t simpleMassCut=kFALSE, const Double_t massPi0Min=0.11, const Double_t massPi0Max=0.18, const Bool_t recaltm=kFALSE, const Bool_t tm=kTRUE, const Int_t minCen=-1, const Int_t maxCen=-1, 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 Int_t runNumber=-1, const Bool_t isPhosCali=kTRUE, const Bool_t isCentFlat=kFALSE, const Int_t debug=0)
TString kData
Declare data MC or deltaAOD.
virtual void SwitchOnAODHybridTrackSelection()
virtual void SetCentralityBin(Int_t min, Int_t max)
AliEMCALRecoUtils * GetEMCALRecoUtils() const
Bool_t kEventSelection
Remove bad events.
void SetEMCALParametrizedMinTimeCut(Int_t i, Float_t par)
Int_t kRunNumber
void SetTimeCut(Double_t min, Double_t max)
Definition: AliAnaPi0EbE.h:142
void SwitchOffClusterELinearityCorrection()
void SetCTSPtMax(Float_t pt)
void SwitchOffSplitShowerShapeCut()
Definition: AliCaloPID.h:261
Bool_t kNonLinearity
Correct cluster non linearity.
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:267
void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
AliAnaPi0Flow * ConfigurePi0Flow()
virtual void SetCalorimeter(TString &calo)
Set the calorimeter for the analysis. A string.
virtual void SetInputAODName(TString name)
virtual void SetTrackComplementaryCuts(AliESDtrackCuts *)
void SetEMCALEMin(Float_t en)
void SwitchOnSelectedClusterHistoFill()
Definition: AliAnaPi0EbE.h:111
virtual void SetOutputAODClassName(TString name)
void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3)
Definition: AliAnaPi0EbE.h:133
void SetHistodRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetLocalMaximaCutEDiff(Float_t c)
void SwitchOffSplitAsymmetryCut()
Definition: AliCaloPID.h:257
void SetAnalysisType(anaTypes ana)
Definition: AliAnaPi0EbE.h:92
Int_t kMinCen
Set the minimum centrality to be analyzed.
void SetNumberOfCellsFromEMCALBorder(Int_t n)
void SwitchOffTMHistoFill()
Definition: AliAnaPi0EbE.h:109
Select cluster pairs or single merged clusters with pi0 or eta invariant mass.
Definition: AliAnaPi0EbE.h:30
Bool_t IsBadChannelsRemovalSwitchedOn() const
TString kInputDataType
Declare data ESD/AOD.
2 calorimeter clusters invariant mass selection
Definition: AliAnaPi0EbE.h:86
const TString calorimeter
Definition: anaM.C:36
void IsCentFlat(Bool_t e)
Definition: AliAnaPi0Flow.h:54
Bool_t IsRecalibrationOn() const
Bool_t IsRecalibrationOn() const
Some utilities for cluster and cell treatment.
Bool_t kPrint
Print setted parameters when configuring.
void SetHistoTrackResidualEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Class for event, clusters and tracks filtering and preparation for the AOD analysis.
void SetCTSPtMin(Float_t pt)
virtual void SetOutputAODName(TString name)
void SwitchOffRecalculateClusterTrackMatching()
void SetEMCALParametrizedMaxTimeCut(Int_t i, Float_t par)
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SwitchOffVertexBCEventSelection()
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)
Bool_t kCentFlat
Switch on Centrality flattening.
virtual void SetDebug(Int_t d)
void SetHistoPOverERangeAndNBins(Float_t min, Float_t max, Int_t n)
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
virtual AliHistogramRanges * GetHistogramRanges()
void SwitchOnSplitAsymmetryCut()
Definition: AliCaloPID.h:256
void SetHistoPtSumRangeAndNBins(Float_t min, Float_t max, Int_t n)
AliCalorimeterUtils * ConfigureCaloUtils()
Bool_t kRecalTM
Recalculate track-cluster matching.
void SetTrackStatus(ULong_t bit)
void SetPi0MassShiftHighECell(Float_t s)
Definition: AliCaloPID.h:285
Bool_t IsBadChannelsRemovalSwitchedOn() const
void SetHistoTrackResidualPhiRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class for filtering generated MC particles and prepare them as input for the analysis.
void SwitchOnSplitClusterDistToBad()
Definition: AliAnaPi0EbE.h:160
void SwitchOnRecalculateClusterTrackMatching()
Bool_t kCalibT
Calibrate time of clusters.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Bool_t kTM
Remove matched clusters to tracks.
void SwitchOffTrackMatchRejection()
Definition: AliAnaPi0EbE.h:149
Base class for event, clusters and tracks filtering and preparation for the analysis.
void SetHistoRangeAndNBins(AliHistogramRanges *histoRanges)
void SetInputAODGammaConvName(TString name)
Definition: AliAnaPi0EbE.h:98
void SetHistoNClusterCellRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetEMCALClusterListName(TString &name)
TString kCalorimeter
Use main analysis detector EMCal or PHOS or CTS.
void SetHistoYRangeAndNBins(Float_t min, Float_t max, Int_t n)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SwitchOnSimpleSplitMassCut()
Definition: AliCaloPID.h:250
virtual void SetZvertexCut(Float_t zcut=10.)
void SetEtaMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:305
void SetNumberOfSuperModulesUsed(Int_t nSM)
void SwitchOnTMHistoFill()
Definition: AliAnaPi0EbE.h:108
void SetPi0MassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:304
Class containing more common histogram axis types.
virtual void SwitchOnAliCentrality()
void SwitchOnTrackMatchRejection()
Definition: AliAnaPi0EbE.h:148
void IsPHOSCali(Bool_t e)
Definition: AliAnaPi0Flow.h:53
Class for event, clusters and tracks filtering and preparation for the ESD analysis.
Bool_t kTender
Declare that tender was executed.
virtual void SetEventPlaneMethod(TString m)
void SetPHOSEMin(Float_t en)
Bool_t kBadMap
Reject bad cells/clusters.
void SetHistoNClustersRangeAndNBins(Int_t min, Int_t max, Int_t n)
void ConfigureEMCALRecoUtils(AliEMCALRecoUtils *reco, Bool_t bMC=kFALSE, Bool_t bExotic=kTRUE, Bool_t bNonLin=kFALSE, Bool_t bRecalE=kTRUE, Bool_t bBad=kTRUE, Bool_t bRecalT=kTRUE, Int_t debug=-1)
virtual void SetTrackCuts(AliESDtrackCuts *)
TString kCollisions
Declare the collision type of the data.
void SetNLMCut(Int_t min, Int_t max)
Definition: AliAnaPi0EbE.h:100
Int_t kDebug
Do the analysis with this debug level.
virtual void SetCentralityClass(TString name)
Int_t kYears
Declare the year of the data.
Flow analysis.
Definition: AliAnaPi0Flow.h:39
TString kClusterArray
Name of branch with clusters, from AliAnalysisTaskEMCALClusterize.
void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SwitchOffFillWeightHistograms()
Definition: AliAnaPi0EbE.h:152
void SetTrackTimeCut(Double_t a, Double_t b)
void SetEMCALTimeCut(Double_t a, Double_t b)
AliCaloTrackReader * ConfigureReader()
void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0MultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n)
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
void SwitchOffLoadOwnPHOSGeometryMatrices()
Bool_t kOutputAOD
Create output AOD with generated particle AOD objects.
Bool_t kCalibE
Calibrate energy of clusters.
void SetHistoZRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoV0SignalRangeAndNBins(Int_t min, Int_t max, Int_t n)
void SetHistoTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoFinePtRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetEMCALEMax(Float_t en)
Bool_t kSimulation
Declare the analysis simulation.
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 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
Bool_t kExotic
Remove exotic clusters.
void SetPHOSEMax(Float_t en)
void SetHistodEdxRangeAndNBins(Float_t min, Float_t max, Int_t n)
Class with utils specific to calorimeter clusters/cells.
void SetHistoHBPRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoRRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoVertexDistRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetPhotonMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:306
void SwitchOffUseParametrizedTimeCut()
Bool_t kPhosCali
void SetLocalMaximaCutE(Float_t cut)
TString kName
Name of the analysis, used in created AOD branches and histo container.
Int_t kMaxCen
Set the maximum centrality to be analyzed.
void SetHistoRatioRangeAndNBins(Float_t min, Float_t max, Int_t n)
Steering class of package CaloTrackCorrelartions.
void SwitchOnSimpleSplitM02Cut()
Definition: AliCaloPID.h:253