AliPhysics  ec7afe5 (ec7afe5)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
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  if(kSimulation)
120  {
121  kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
122  if (!kUseKinematics && data=="AOD" && kInputDataType != "ESD") kUseKinematics = kTRUE; //AOD primary should be available ...
123  }
124  cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
125  // Name for containers
126  kName = Form("%s_Cl%s_TM%d",kCalorimeter.Data(), kClusterArray.Data(), kTM);
127  if (kCollisions=="PbPb" && kMaxCen>=0) kName+=Form("Cen%d_%d",kMinCen,kMaxCen);
128  printf("<<<< NAME: %s >>>>>\n",kName.Data());
129 
130  //
131  // Create maker
132  //
134  // General frame setting and configuration
135  maker->SetReader (ConfigureReader() );
136  maker->SetCaloUtils(ConfigureCaloUtils());
137 
138  //
139  // Add and configure analysis
140  //
141  Int_t n = 0; // Analysis number, order is important
142 
143  // Split cluster analysis
144  if (kCalorimeter == "EMCAL") {
145  // Pi0 event by event selection, cluster splitting
146  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kSSCalo, kTRUE, kTRUE, nlmMin, nlmMax,
147  simpleM02Cut, simpleMassCut, massPi0Min, massPi0Max), n++);
148  }
149  maker->AddAnalysis(ConfigurePi0Flow(), n++);
150 
151  maker->SetAnaDebug(kDebug) ;
152  maker->SwitchOnHistogramsMaker() ;
153  if(kData.Contains("delta")) maker->SwitchOffAODsMaker() ;
154  else maker->SwitchOnAODsMaker() ;
155  if(kPrint) maker->Print("");
156  if(kSimulation) maker->SwitchOffDataControlHistograms();
157  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, kCalorimeter.Data());
158 
159  //
160  // Create task
161  //
162  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation(Form("CaloTrackCorr%s",kName.Data()));
163  task->SetConfigFileName(""); // Don't configure the analysis via configuration file.
164  task->SetDebugLevel(kDebug);
165  // task->SetBranches("ESD:AliESDRun.,AliESDHeader");
166  task->SelectCollisionCandidates(trig);
167  task->SetAnalysisMaker(maker);
168  mgr->AddTask(task);
169 
170  //
171  // Create and set containers
172  //
173  TString outputfile = AliAnalysisManager::GetCommonFileName();
174  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kName, TList::Class(),
175  AliAnalysisManager::kOutputContainer,
176  Form("%s",outputfile.Data()));
177  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kName.Data()), TList::Class(),
178  AliAnalysisManager::kParamContainer,
179  "AnalysisParameters.root");
180  mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
181  mgr->ConnectOutput (task, 1, cout_pc);
182  mgr->ConnectOutput (task, 2, cout_cuts);
183 
184  return task;
185 }
186 
191 {
192  AliCaloTrackReader * reader = 0;
193  if (kInputDataType == "ESD"&& kData=="MC" )
194  reader = new AliCaloTrackMCReader();
195  else if(kInputDataType=="AOD" || kData.Contains("AOD"))
196  reader = new AliCaloTrackAODReader();
197  else if(kInputDataType=="ESD")
198  reader = new AliCaloTrackESDReader();
199  else
200  printf("AliCaloTrackReader::ConfigureReader() - Data combination not known kData=%s, kInputData=%s\n",kData.Data(),kInputDataType.Data());
201 
202  reader->SetDebug(kDebug);//10 for lots of messages
203 
204  //Delta AOD?
205  //reader->SetDeltaAODFileName("");
206  if(kOutputAOD) reader->SwitchOnWriteDeltaAOD() ;
207 
208  // MC settings
209  if(kUseKinematics){
210  if(kInputDataType == "ESD"){
211  reader->SwitchOnStack();
212  reader->SwitchOffAODMCParticles();
213  }
214  else if(kInputDataType == "AOD"){
215  reader->SwitchOffStack();
216  reader->SwitchOnAODMCParticles();
217  }
218  }
219 
220  //------------------------
221  // Detector input filling
222  //------------------------
223 
224  //Min cluster/track E
225  reader->SetEMCALEMin(0.3);
226  reader->SetEMCALEMax(1000);
227  reader->SetPHOSEMin(0.3);
228  reader->SetPHOSEMax(1000);
229  reader->SetCTSPtMin(0.2);
230  reader->SetCTSPtMax(1000);
231 
232  // Time cuts
233  if(kSimulation)
234  {
235  reader->SwitchOffUseTrackTimeCut();
237  reader->SwitchOffUseEMCALTimeCut();
238  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
239  }
240  else
241  {
242  if(kCalibT)
243  {
244  printf("Set time cut parameters for run %d\n",kRunNumber);
245  reader->SwitchOnUseEMCALTimeCut();
247 
248  //Absolute window
249  reader->SetEMCALTimeCut(-25,20);
250 
251  //Parametrization
252  if (kRunNumber >= 151636 && kRunNumber <= 155384 )
253  {
254  printf("Set time parameters for LHC11c");
257  }
258  else if(kRunNumber >= 156447 && kRunNumber <= 159635 )
259  {
260  printf("Set time parameters for LHC11d");
263  }
264  else
265  {
267  }
268  }
269  else
270  {
272  reader->SwitchOffUseEMCALTimeCut();
273  reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
274  }
275  }
276 
277  reader->SwitchOnFiducialCut();
278  reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
279 
280  // Tracks
281  reader->SwitchOnCTS();
283 
286 
287  reader->SwitchOffUseTrackTimeCut();
288  reader->SetTrackTimeCut(0,50);
289 
290  reader->SwitchOffUseTrackDCACut();
291  //reader->SetTrackDCACut(0,0.0105);
292  //reader->SetTrackDCACut(1,0.035);
293  //reader->SetTrackDCACut(2,1.1);
294 
295  if(kInputDataType=="ESD")
296  {
297  gROOT->LoadMacro("$ALICE_PHYSICS/PWGJE/macros/CreateTrackCutsPWGJE.C");
298  //AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
299  //reader->SetTrackCuts(esdTrackCuts);
300  //reader->SwitchOnConstrainTrackToVertex();
301 
302  if(kYears>2010)
303  {
304  //Hybrids 2011
305  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001008);
306  reader->SetTrackCuts(esdTrackCuts);
307  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
308  reader->SetTrackComplementaryCuts(esdTrackCuts2);
309  }
310  else
311  {
312  //Hybrids 2010
313  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10001006);
314  reader->SetTrackCuts(esdTrackCuts);
315  AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
316  reader->SetTrackComplementaryCuts(esdTrackCuts2);
317  }
318  }
319  else if(kInputDataType=="AOD")
320  {
321  //reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid
322  reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
323  reader->SetTrackStatus(AliVTrack::kITSrefit);
324  //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
325  }
326 
327  // Calorimeter
328 
329  reader->SetEMCALClusterListName(kClusterArray);
330  if(kClusterArray == "" && !kTender)
331  {
332  printf("**************** Standard EMCAL clusters branch analysis **************** \n");
334  // Check in ConfigureCaloUtils that the recalibration and bad map are ON
335  }
336  else
337  {
338  printf("**************** Input for analysis is Clusterizer %s **************** \n", kClusterArray.Data());
340  }
341 
343 
344  if(kCalorimeter == "EMCAL") {
345  reader->SwitchOnEMCALCells();
346  reader->SwitchOnEMCAL();
347  }
348  if(kCalorimeter == "PHOS") {
349  reader->SwitchOnPHOSCells();
350  reader->SwitchOnPHOS();
351  }
352 
353  // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
354  if(kData.Contains("delta"))
355  {
356  reader->SwitchOffEMCAL();
357  reader->SwitchOffPHOS();
358  reader->SwitchOffEMCALCells();
359  reader->SwitchOffPHOSCells();
360  }
361 
362  //-----------------
363  // Event selection
364  //-----------------
365 
366  //reader->RejectFastClusterEvents() ;
367 
368  // Event triggered selection settings
370  //reader->SwitchOffTriggerClusterTimeRecal() ;
371 
372  //redefine for other periods, triggers
373 
374  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
375 
376  reader->SwitchOnEventTriggerAtSE();
377 
378  reader->SetZvertexCut(10.); // Open cut
379  reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
380 
381  if(kEventSelection)
382  {
383  reader->SwitchOnEventPileUpRejection(); // remove pileup by default
384  reader->SwitchOnV0ANDSelection() ; // and besides v0 AND
385  }
386  else
387  {
388  reader->SwitchOffPileUpEventRejection();// remove pileup by default
389  reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
390  }
391 
392  if(kCollisions=="PbPb")
393  {
394  // Centrality
395  reader->SwitchOnAliCentrality();
396  reader->SetCentralityClass("V0M");
397  reader->SetCentralityOpt(100); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
398  reader->SetCentralityBin(kMinCen,kMaxCen); // Accept all events, if not select range
399 
400  // Event plane (only used in Maker and mixing for AliAnaPi0/AliAnaHadronCorrelation for the moment)
401  reader->SetEventPlaneMethod("V0");
402  }
403 
404  if(kPrint) reader->Print("");
405 
406  return reader;
407 }
408 
413 {
415  cu->SetDebug(kDebug);
416 
417  // Remove clusters close to borders, at least max energy cell is 1 cell away
420 
421  // Search of local maxima in cluster
422  if(kCollisions=="pp")
423  {
424  cu->SetLocalMaximaCutE(0.1);
425  cu->SetLocalMaximaCutEDiff(0.03);
426  if(kName.Contains("150"))
427  {
428  printf("Reclusterize with 150 threshold, set PbPb settings\n");
429  cu->SetLocalMaximaCutE(0.2);
430  cu->SetLocalMaximaCutEDiff(0.03);
431  }
432  }
433  else
434  {
435  cu->SetLocalMaximaCutE(0.2);
436  cu->SetLocalMaximaCutEDiff(0.03);
437  }
438 
439  cu->SwitchOffClusterPlot();
440 
441  if (kRecalTM) cu->SwitchOnRecalculateClusterTrackMatching(); // Done in clusterization
443 
445 
446  //EMCAL settings
447 
448  if(!kSimulation)
450 
451  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
452 
453  if(!kSimulation)
454  {
455  cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
456  if(kClusterArray == "" && !kTender) cu->SwitchOnRunDepCorrection();
457  }
458 
459  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/EMCAL/macros/ConfigureEMCALRecoUtils.C");
461  kSimulation,
462  kExotic,
463  kTRUE,//kNonLinearity,
464  kCalibE,
465  kBadMap,
466  kCalibT);
467  //recou->SetExoticCellDiffTimeCut(50.);
468 
469 
470  if( kNonLinearity )
471  {
472  printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
474  }
475 
476  printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
477  printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
478 
479 
480  if(kCalorimeter=="PHOS")
481  {
482  if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(3);
483  else cu->SetNumberOfSuperModulesUsed(4);
484  }
485  else
486  {
487  if (kYears == 2010) cu->SetNumberOfSuperModulesUsed(4); //EMCAL first year
488  else if (kYears < 2014) cu->SetNumberOfSuperModulesUsed(10);
489  else cu->SetNumberOfSuperModulesUsed(20);
490  }
491 
492  // PHOS
494 
495  if(kPrint) cu->Print("");
496 
497  return cu;
498 }
499 
506  Int_t analysis, Bool_t useSS = kTRUE, Bool_t useAsy = kTRUE,
507  Int_t nlmMin = 1, Int_t nlmMax = 2,
508  Bool_t simpleSplitM02Cut = kFALSE, Bool_t simpleSplitMassCut = kFALSE,
509  Double_t massPi0Min, Double_t massPi0Max)
510 {
511  AliAnaPi0EbE *ana = new AliAnaPi0EbE();
512  ana->SetDebug(kDebug);//10 for lots of messages
513 
514  ana->SetAnalysisType(analysis);
515  TString opt = "";
516  if (analysis == AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
517  if (analysis == AliAnaPi0EbE::kSSCalo) opt = "SS";
518  if (analysis == AliAnaPi0EbE::kIMCalo && kCalorimeter=="EMCAL" && !kSimulation) ana->SetPairTimeCut(100);
519  if (analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
520 
521  // Common settings for all 3 type of analysis
523  ana->SetCalorimeter(kCalorimeter);
524 
525  //Set Histograms name tag, bins and ranges
526  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
527 
528  // Specific settings for different type of analysis
529 
532 
533  if (kTM) {
534  //printf("--->>>REMOVE MATCHED Pi0\n");
536  ana->SwitchOffTMHistoFill() ;
537  } else {
538  //printf("---->>>ACCEPT MATCHED Pi0\n");
540  ana->SwitchOnTMHistoFill() ;
541  }
542 
543  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
544 
545  //ana->SwitchOnFillEMCALBCHistograms();
546 
547  if (!kInputDataType.Contains("delta")) {
548  ana->SetOutputAODName(Form("%s%s%s",particle.Data(), opt.Data(), kName.Data()));
549  ana->SetOutputAODClassName("AliAODPWG4Particle");
550  } else
551  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
552 
553  // cluster splitting settings
554  ana->SetMinEnergy(6);
555  ana->SetMaxEnergy(200.);
556  ana->SetNLMMinEnergy(0, 10);
557  ana->SetNLMMinEnergy(1, 6);
558  ana->SetNLMMinEnergy(2, 6);
559  ana->SetMinDistanceToBadChannel(2, 4, 6); // only use the first one
561  ana->SetTimeCut(-1e10,1e10); // Open time cut
562 
563  // NLM cut, used in all, exclude clusters with more than 2 maxima
564  ana->SetNLMCut(nlmMin, nlmMax) ;
565 
566  AliCaloPID* caloPID = ana->GetCaloPID();
567  caloPID->SetSplitWidthSigma(3.); // cut at 3 sigma of the mean pi0 peak.
568 
569  if (!useSS) {
570  printf("Do not apply SS cut on merged pi0 analysis \n");
571  caloPID->SwitchOffSplitShowerShapeCut() ;
572  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_TM%d_",particle.Data(),opt.Data(),kTM));
573  ana->SetOutputAODName(Form("%s%s%s_OpenSS",particle.Data(), opt.Data(), kName.Data()));
574  caloPID->SetClusterSplittingM02Cut(0.1,10000);
575  } else {
576  caloPID->SetClusterSplittingM02Cut(0.3,5); // Do the selection in the analysis class and not in the PID method to fill SS histograms
577  caloPID->SwitchOnSplitShowerShapeCut() ;
578  if (simpleSplitM02Cut) caloPID->SwitchOnSimpleSplitM02Cut();
579  }
580 
581  if (simpleSplitMassCut) caloPID->SwitchOnSimpleSplitMassCut();
582 
583  if (useAsy) caloPID->SwitchOnSplitAsymmetryCut() ;
584  else {
585  caloPID->SwitchOffSplitAsymmetryCut() ;
586  if (!useSS) {
587  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenSS_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
588  ana->SetOutputAODName(Form("%s%s%s_OpenSS_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
589  } else {
590  ana->AddToHistogramsName(Form("Ana%s%sEbE_OpenAsy_TM%d_",particle.Data(),opt.Data(),kTM));
591  ana->SetOutputAODName(Form("%s%s%s_OpenAsy",particle.Data(), opt.Data(), kName.Data()));
592  }
593  }
594 
595  //For Pi0 only if SwitchOnSimpleSplitMassCut()
596  caloPID->SetPi0MassRange(massPi0Min, massPi0Max);
597  caloPID->SetEtaMassRange(0.40, 0.60);
598  caloPID->SetPhotonMassRange(0.00, 0.08);
599  caloPID->SetClusterSplittingMinNCells(6);
600  //caloPID->SetSplitEnergyFractionMinimum(0, 0.95);
601  //caloPID->SetSplitEnergyFractionMinimum(1, 0.95);
602  //caloPID->SetSplitEnergyFractionMinimum(2, 0.8);
603  if (kCollisions=="PbPb" || kName.Contains("150")) {
604  caloPID->SetClusterSplittingMinNCells(4);
605  caloPID->SetPi0MassShiftHighECell(0.005);
606  }
607 
608  if (kPrint) ana->Print("");
609  return ana;
610 }
611 
617 {
619  ana->SetDebug(kDebug);
620 
621  TString particle = "Pi0";
622  TString opt = "SS";
623  ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
624  ana->IsPHOSCali(kPhosCali);
625  ana->IsCentFlat(kCentFlat);
626 
627  if (kPrint) ana->Print("");
628  return ana;
629 }
630 
635 {
636  // Set common bins for all analysis and MC histograms filling
637 
638  histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
639 
640  if(kCalorimeter=="EMCAL")
641  {
642  if ( kYears == 2010 )
643  {
644  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
645  histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
646  histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
647  }
648  else if ( kYears < 2014 )
649  {
650  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
651  histoRanges->SetHistoXRangeAndNBins(-460,90,200); // QA
652  histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
653  }
654  else // Run2
655  {
656  histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 329*TMath::DegToRad(), 250) ;
657  histoRanges->SetHistoXRangeAndNBins(-460,460,230); // QA
658  histoRanges->SetHistoYRangeAndNBins(-450,450,225); // QA
659  }
660 
661  histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
662  }
663  else
664  {
665  histoRanges->SetHistoPhiRangeAndNBins(250*TMath::DegToRad(), 320*TMath::DegToRad(), 70) ;
666  histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
667  }
668 
669  histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
670 
671  // Invariant mass histoRangeslysis
672  histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
673  histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
674 
675  // check if time calibration is on
676  histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
677  histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
678 
679  // track-cluster residuals
680  histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
681  histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
682  histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
683 
684  // QA, electron, charged
685  histoRanges->SetHistoPOverERangeAndNBins(0,2.,200);
686  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
687 
688  // QA
689  histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
690  histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
691  histoRanges->SetHistoZRangeAndNBins(-350,350,175);
692  histoRanges->SetHistoRRangeAndNBins(430,460,30);
693  histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
694  histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
695 
696  // QA, correlation
697  if(kCollisions=="PbPb")
698  {
699  histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
700  histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
701  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
702  }
703  else
704  {
705  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
706  histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
707  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
708  }
709 
710  // xE, zT
711  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
712  histoRanges->SetHistoHBPRangeAndNBins (0.,10.,200);
713 
714  // Isolation
715  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
716  histoRanges->SetHistoPtSumRangeAndNBins (0, 100, 250);
717 
718 }
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:87
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:281
virtual void SwitchOnFiducialCut()
void SetHistoXRangeAndNBins(Float_t min, Float_t max, Int_t n)
void SetClusterSplittingM02Cut(Float_t min=0, Float_t max=100)
Definition: AliCaloPID.h:262
void SwitchOnLoadOwnEMCALGeometryMatrices()
void SwitchOnSplitShowerShapeCut()
Definition: AliCaloPID.h:258
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:259
Bool_t kNonLinearity
Correct cluster non linearity.
void SetClusterSplittingMinNCells(Int_t c)
Definition: AliCaloPID.h:265
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)
Bool_t kUseKinematics
Use the MC information.
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:255
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
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 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:254
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:283
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:248
virtual void SetZvertexCut(Float_t zcut=10.)
void SetEtaMassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:303
void SetNumberOfSuperModulesUsed(Int_t nSM)
void SwitchOnTMHistoFill()
Definition: AliAnaPi0EbE.h:108
void SetPi0MassRange(Float_t min, Float_t max)
Definition: AliCaloPID.h:302
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:304
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:251