fix wrong variable name
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / macros / QA / AddTaskPi0IMGammaCorrQA.C
1
2 AliAnalysisTaskCaloTrackCorrelation *AddTaskPi0IMGammaCorrQA(const TString  calorimeter   = "EMCAL",
3                                                              const Bool_t   simulation    = kFALSE,
4                                                              const TString  collision     = "pp",
5                                                              const TString  suffix        = "default",
6                                                              const Bool_t   qaan          = kFALSE,
7                                                              const Bool_t   hadronan      = kFALSE,
8                                                              const Int_t    minCen        = -1,
9                                                              const Int_t    maxCen        = -1,
10                                                              const Int_t    debugLevel    = -1
11                                                           )
12 {
13   // Creates a CaloTrackCorr task, configures it and adds it to the analysis manager.
14   
15   
16   if(simulation)
17   {
18     printf("AddTaskPi0IMGammaCorrQA - CAREFUL : Triggered events not checked in simulation!! \n");
19     TString ssuffix = suffix;
20     if(!ssuffix.Contains("default")) return;
21   }
22
23   // Get the pointer to the existing analysis manager via the static access method.
24   
25   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
26   if (!mgr) 
27   {
28     ::Error("AddTaskPi0IMGammaCorrQA", "No analysis manager to connect to.");
29     return NULL;
30   }  
31   
32   // Check the analysis type using the event handlers connected to the analysis manager.
33   
34   if (!mgr->GetInputEventHandler()) 
35   {
36     ::Error("AddTaskPi0IMGammaCorrQA", "This task requires an input event handler");
37     return NULL;
38   }
39   
40   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
41   
42   // Name for containers
43   
44   TString containerName = Form("%s_%s",calorimeter.Data(), suffix.Data());
45   
46   if(collision!="pp" && maxCen>=0) containerName+=Form("Cen%d_%d",minCen,maxCen);
47     
48   printf("AddTaskPi0IMGammaCorrQA - Container NAME: %s \n",containerName.Data());
49   
50   // #### Configure analysis ####
51     
52   AliAnaCaloTrackCorrMaker * maker = new AliAnaCaloTrackCorrMaker();
53
54   // General frame setting and configuration
55   maker->SetReader   ( ConfigureReader   (inputDataType,minCen,maxCen,simulation,debugLevel) );
56   maker->SetCaloUtils( ConfigureCaloUtils(simulation,debugLevel) );
57   
58   // Analysis tasks setting and configuration
59   Int_t n = 0;//Analysis number, order is important
60   
61   // Photon analysis
62   maker->AddAnalysis(ConfigurePhotonAnalysis(calorimeter,          containerName,simulation     ,debugLevel), n++); // Photon cluster selection
63   maker->AddAnalysis(ConfigurePi0Analysis   (calorimeter,collision,containerName,simulation,qaan,debugLevel) ,n++); // Previous photon invariant mass
64
65   if(hadronan)
66   {
67     maker->GetReader()->SwitchOnCTS();
68     maker->AddAnalysis(ConfigureChargedAnalysis(containerName,simulation,debugLevel), n++); // charged tracks plots
69     maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",calorimeter,collision,containerName,simulation,debugLevel), n++); // Gamma hadron correlation
70   }
71   
72   if(qaan) maker->AddAnalysis(ConfigureQAAnalysis(calorimeter,simulation,debugLevel),n++);
73   
74   maker->SetAnaDebug(debugLevel)  ;
75   maker->SwitchOnHistogramsMaker()  ;
76   maker->SwitchOnAODsMaker() ;
77   //if(simulation)
78   maker->SwitchOffDataControlHistograms();
79   
80   if(debugLevel > 0) maker->Print("");
81   
82   // Create task
83   
84   TString taskName =Form("Pi0IM_GammaTrackCorr_%s",containerName.Data());
85   
86   AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (taskName);
87   task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
88   task->SetDebugLevel(debugLevel);
89   //task->SetBranches("ESD:AliESDRun.,AliESDHeader");
90   //task->SetBranches("AOD:header,tracks,vertices,emcalCells,caloClusters");
91   task->SetAnalysisMaker(maker);
92   mgr->AddTask(task);
93   
94   //Create containers
95   
96   TString outputfile = AliAnalysisManager::GetCommonFileName();
97   
98   AliAnalysisDataContainer *cout_pc   = mgr->CreateContainer(taskName, TList::Class(),
99                                                              AliAnalysisManager::kOutputContainer, 
100                                                              Form("%s:%s",outputfile.Data(),taskName.Data()));
101         
102   AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",taskName.Data()), TList::Class(),
103                                                              AliAnalysisManager::kParamContainer, 
104                                                              Form("%s_Parameters.root",taskName.Data()));
105   
106   // Create ONLY the output containers for the data produced by the task.
107   // Get and connect other common input/output containers via the manager as below
108   //==============================================================================
109   mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
110   mgr->ConnectOutput (task, 1, cout_pc);
111   mgr->ConnectOutput (task, 2, cout_cuts);
112   
113   return task;
114 }
115
116 //___________________________________________________________________________
117 AliCaloTrackReader * ConfigureReader(TString inputDataType,
118                                      Int_t minCen,          Int_t maxCen,
119                                      Bool_t  simulation,    Int_t debugLevel)
120 {
121   
122   AliCaloTrackReader * reader = 0;
123   if     (inputDataType=="AOD")
124     reader = new AliCaloTrackAODReader();
125   else if(inputDataType=="ESD")
126     reader = new AliCaloTrackESDReader();
127   else 
128     printf("AliCaloTrackReader::ConfigureReader() - Data combination not known kInput Data=%s\n",
129            inputDataType.Data());
130   
131   reader->SetDebug(debugLevel);//10 for lots of messages
132
133   // MC settings
134   if(simulation)
135   {
136     if(inputDataType == "ESD")
137     {
138       reader->SwitchOnStack();
139       reader->SwitchOffAODMCParticles();
140     }
141     else if(inputDataType == "AOD")
142     {
143       reader->SwitchOffStack();
144       reader->SwitchOnAODMCParticles();
145     }
146   }
147   
148   //------------------------
149   // Detector input filling
150   //------------------------
151   
152   //Min cluster/track E
153   reader->SetEMCALEMin(0.3); 
154   reader->SetEMCALEMax(1000); 
155   reader->SetPHOSEMin(0.3);
156   reader->SetPHOSEMax(1000);
157   reader->SetCTSPtMin(0.2);
158   reader->SetCTSPtMax(1000);
159
160   // Time cut off
161   reader->SwitchOffUseTrackTimeCut();
162   reader->SwitchOffUseParametrizedTimeCut();
163   reader->SwitchOffUseEMCALTimeCut() ;
164   reader->SetEMCALTimeCut(-1e10,1e10); // Open time cut
165   reader->SetTrackTimeCut(-1e10,1e10);
166
167   reader->SwitchOnFiducialCut();
168   
169   // Tracks
170   reader->SwitchOffCTS();
171   reader->SwitchOffRejectNoTrackEvents();
172   reader->SwitchOffRecalculateVertexBC();
173   reader->SwitchOffVertexBCEventSelection();
174   reader->SwitchOffUseTrackDCACut();
175   //reader->SetTrackDCACut(0,0.0105);
176   //reader->SetTrackDCACut(1,0.035);
177   //reader->SetTrackDCACut(2,1.1);
178   
179   if(inputDataType=="ESD")
180   {
181     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
182 //    if(year > 2010)
183 //    {
184 //      //Hybrids 2011
185 //      AliESDtrackCuts * esdTrackCuts  = CreateTrackCutsPWGJE(10001008);
186 //      reader->SetTrackCuts(esdTrackCuts);
187 //      AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10011008);
188 //      reader->SetTrackComplementaryCuts(esdTrackCuts2);
189 //    }
190 //    else
191     {
192       //Hybrids 2010
193       AliESDtrackCuts * esdTrackCuts  = CreateTrackCutsPWGJE(10001006);
194       reader->SetTrackCuts(esdTrackCuts);
195       AliESDtrackCuts * esdTrackCuts2 = CreateTrackCutsPWGJE(10041006);
196       reader->SetTrackComplementaryCuts(esdTrackCuts2);
197     }
198   }
199   else if(inputDataType=="AOD")
200   {
201     reader->SwitchOnAODHybridTrackSelection(); // Check that the AODs have Hybrids!!!!
202     reader->SetTrackStatus(AliVTrack::kITSrefit);    
203   }
204   
205   // Calorimeter
206   
207   reader->SetEMCALClusterListName("");
208   reader->SwitchOffClusterRecalculation();
209   
210   reader->SwitchOnEMCALCells();
211   reader->SwitchOnEMCAL();
212
213   reader->SwitchOffPHOSCells();
214   reader->SwitchOffPHOS();
215   
216   //-----------------
217   // Event selection
218   //-----------------
219   
220   reader->SwitchOnEventTriggerAtSE();
221   
222   reader->SetZvertexCut(10.);
223   reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
224   reader->SwitchOffEventSelection();        // remove pileup by default
225   reader->SwitchOffV0ANDSelection() ;       // and besides v0 AND
226   
227   reader->SetCentralityBin(minCen,maxCen); // Accept all events, if not select range
228   
229   if(debugLevel > 0) reader->Print("");
230   
231   return reader;
232   
233 }
234
235 //__________________________________________________________________________
236 AliCalorimeterUtils* ConfigureCaloUtils(Bool_t simulation, Int_t debugLevel)
237 {
238   
239   AliCalorimeterUtils *cu = new AliCalorimeterUtils;
240   cu->SetDebug(debugLevel);
241   
242   // Remove clusters close to borders, at least max energy cell is 1 cell away 
243   cu->SetNumberOfCellsFromEMCALBorder(1);
244   cu->SetNumberOfCellsFromPHOSBorder(2);
245   
246   // Search of local maxima in cluster
247   cu->SetLocalMaximaCutE(0.1);
248   cu->SetLocalMaximaCutEDiff(0.03);
249
250   cu->SwitchOffClusterPlot();
251   cu->SwitchOffRecalculateClusterTrackMatching();
252   
253   cu->SwitchOnBadChannelsRemoval() ;
254   
255   //EMCAL settings
256
257   if(!simulation)
258     cu->SwitchOnLoadOwnEMCALGeometryMatrices();
259   
260   AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
261   cu->SwitchOffRecalibration(); // Check the reader if it is taken into account during filtering
262   cu->SwitchOffRunDepCorrection();
263
264   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/ConfigureEMCALRecoUtils.C");
265   ConfigureEMCALRecoUtils(recou,
266                           simulation,
267                           kTRUE,//kExotic,
268                           kTRUE,//kNonLinearity,
269                           kFALSE,//kCalibE,
270                           kTRUE,//kBadMap,
271                           kFALSE);//kCalibT
272   recou->SetExoticCellDiffTimeCut(50.);
273
274   cu->SwitchOnCorrectClusterLinearity();
275
276   // PHOS 
277   cu->SwitchOffLoadOwnPHOSGeometryMatrices();
278     
279   if(debugLevel > 0) cu->Print("");
280   
281   return cu;
282   
283 }
284
285 //_______________________________________________________________________________
286 AliAnaPhoton* ConfigurePhotonAnalysis(TString calorimeter, TString containerName,
287                                       Bool_t simulation, Int_t debugLevel)
288 {
289   
290   AliAnaPhoton *ana = new AliAnaPhoton();
291   ana->SetDebug(debugLevel); //10 for lots of messages
292   
293   // cluster selection cuts
294   
295   ana->SwitchOffFiducialCut();
296
297   ana->SetCalorimeter(calorimeter);
298   
299   if(calorimeter == "PHOS")
300   {
301     ana->SetNCellCut(2);// At least 3 cells
302     ana->SetMinPt(0.3);
303     ana->SetMinDistanceToBadChannel(2, 4, 5);
304     ana->SetTimeCut(-1e10,1e10); // open cut
305   }
306   else 
307   {//EMCAL
308     ana->SetNCellCut(1);// At least 2 cells
309     ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
310     ana->SetMaxEnergy(1000); 
311     ana->SetTimeCut(-1e10,1e10); // open cut, usual time window of [425-825] ns if time recalibration is off 
312     // restrict to less than 100 ns when time calibration is on 
313     ana->SetMinDistanceToBadChannel(2, 4, 6); 
314     // Not useful if M02 cut is already strong
315     ana->SetNLMCut(1, 2) ;
316   }
317   
318   ana->SwitchOnTrackMatchRejection() ;
319   ana->SwitchOffTMHistoFill() ;
320
321   
322   //PID cuts (shower shape)
323   ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
324   AliCaloPID* caloPID = ana->GetCaloPID();
325   //Not used in bayesian
326   
327   //EMCAL
328   caloPID->SetEMCALLambda0CutMax(0.4); // Rather open
329   caloPID->SetEMCALLambda0CutMin(0.10);
330   
331   caloPID->SetEMCALDEtaCut(0.025);
332   caloPID->SetEMCALDPhiCut(0.030);
333     
334   //PHOS
335   caloPID->SetPHOSDispersionCut(2.5);
336   caloPID->SetPHOSRCut(2.);
337   
338   ana->SwitchOnFillShowerShapeHistograms();  // Filled before photon shower shape selection
339   //if(!simulation)ana->SwitchOnFillPileUpHistograms();
340
341   // Input / output delta AOD settings
342   ana->SetOutputAODName(Form("Photon%s",containerName.Data()));
343   ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
344   ana->SetInputAODName (Form("Photon%s",containerName.Data()));
345
346   //Set Histograms name tag, bins and ranges
347   
348   ana->AddToHistogramsName("AnaPhoton_");
349   SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
350   
351   // Number of particle type MC histograms
352   ana->FillNOriginHistograms(7);
353   ana->FillNPrimaryHistograms(4);
354   
355   if(simulation) ana->SwitchOnDataMC();
356   
357   if(debugLevel > 0 ) ana->Print("");
358   
359   return ana;
360   
361 }
362
363 //_________________________________________________________________________
364 AliAnaPi0* ConfigurePi0Analysis(TString calorimeter, TString collision,
365                                 TString containerName, Bool_t simulation,
366                                 Bool_t qaan, Int_t debugLevel)
367 {
368   
369   AliAnaPi0 *ana = new AliAnaPi0();
370   
371   ana->SetDebug(debugLevel);//10 for lots of messages
372   
373   // Input delta AOD settings
374   ana->SetInputAODName(Form("Photon%s",containerName.Data()));
375   
376   // Calorimeter settings
377   ana->SetCalorimeter(calorimeter);
378   if(calorimeter=="PHOS") ana->SetNumberOfModules(3); //PHOS first year
379   else 
380   {                   
381 //    if     (year == 2010) ana->SetNumberOfModules( 4); // EMCAL first year
382 //    else if(year == 2011) ana->SetNumberOfModules(10); // Second year
383 //    else                    ana->SetNumberOfModules(12);
384     ana->SetNumberOfModules(12);
385   }
386   
387   //settings for pp collision mixing
388   ana->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
389   
390   // Cuts 
391   if(calorimeter=="EMCAL") ana->SetPairTimeCut(70);
392   
393   if     (collision == "pp"  )
394   {
395     ana->SetNCentrBin(1);
396     ana->SetNZvertBin(10);
397     ana->SetNRPBin(1);
398     ana->SetNMaxEvMix(100);    
399   }
400   else if(collision =="PbPb")
401   {
402     ana->SetNCentrBin(10);
403     ana->SetNZvertBin(10);
404     ana->SetNRPBin(4);
405     ana->SetNMaxEvMix(10);
406   }
407   else if(collision =="pPb")
408   {
409     ana->SetNCentrBin(1);
410     ana->SetNZvertBin(10);
411     ana->SetNRPBin(4);
412     ana->SetNMaxEvMix(100);
413   }
414
415   ana->SwitchOffMultipleCutAnalysis();
416   if(!qaan)ana->SwitchOnSMCombinations();
417   ana->SwitchOffFillAngleHisto();
418   ana->SwitchOffFillOriginHisto();
419
420   //Set Histograms name tag, bins and ranges
421   
422   ana->AddToHistogramsName("AnaPi0_");
423   SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
424
425   if(simulation) ana->SwitchOnDataMC();
426
427   if(debugLevel > 0) ana->Print("");
428   
429   return ana;
430   
431 }
432
433 //___________________________________________________________________________________
434 AliAnaChargedParticles* ConfigureChargedAnalysis(TString containerName,
435                                                  Bool_t simulation, Int_t debugLevel)
436 {
437   
438   AliAnaChargedParticles *ana = new AliAnaChargedParticles();
439   ana->SetDebug(debugLevel); //10 for lots of messages
440   
441   // selection cuts
442   
443   ana->SetMinPt(0.5);
444   ana->SwitchOnFiducialCut();
445   ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
446   
447   ana->SwitchOffFillVertexBC0Histograms() ;
448   //if(!simulation) ana->SwitchOnFillPileUpHistograms();
449   
450   // Input / output delta AOD settings
451   
452   ana->SetOutputAODName(Form("Hadron%s",containerName.Data()));
453   ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
454   ana->SetInputAODName(Form("Hadron%s",containerName.Data()));
455
456   //Set Histograms name tag, bins and ranges
457   
458   ana->AddToHistogramsName("AnaHadrons_");
459   SetHistoRangeAndNBins(ana->GetHistogramRanges(),""); // see method below
460   
461   ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
462   ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
463   
464   if(debugLevel > 0) ana->Print("");
465   
466   return ana;
467   
468 }
469
470 //__________________________________________________________________________________________________________
471 AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString particle,  TString calorimeter,
472                                                                     TString collision, TString containerName,
473                                                                     Bool_t simulation, Int_t debugLevel)
474 {
475   
476   AliAnaParticleHadronCorrelation *ana = new AliAnaParticleHadronCorrelation();
477   ana->SetDebug(debugLevel);
478   
479   ana->SetMinimumTriggerPt(5);
480   ana->SetAssociatedPtRange(0.2,100); 
481   ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
482   
483   ana->SetNAssocPtBins(4);
484   
485   ana->SetAssocPtBinLimit(0, 0.5) ;
486   ana->SetAssocPtBinLimit(1, 2) ;
487   ana->SetAssocPtBinLimit(2, 5) ;
488   ana->SetAssocPtBinLimit(3, 10) ;
489   ana->SetAssocPtBinLimit(4, 20) ;
490
491   ana->SelectIsolated(kFALSE); // do correlation with isolated photons
492
493   //if(!simulation) ana->SwitchOnFillPileUpHistograms();
494   
495   ana->SwitchOnAbsoluteLeading();  // Select trigger leading particle of all the selected tracks
496   ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
497   
498   // Mixing with own pool
499   ana->SwitchOffOwnMix();
500   
501   ana->SetNZvertBin(20);
502   
503   if(collision=="pp")
504   {
505     ana->SetNMaxEvMix(100);    
506     ana->SwitchOnTrackMultBins();
507     ana->SetNCentrBin(9); // Fixed track mult values
508     ana->SetNRPBin(1);
509   }
510   else 
511   {
512     ana->SetNMaxEvMix(10);    
513     ana->SwitchOffTrackMultBins(); // centrality bins
514     ana->SetNCentrBin(10); 
515     ana->SetNRPBin(3);
516   }
517   
518   // Input / output delta AOD settings
519   
520   ana->SetInputAODName(Form("%s%s",particle.Data(),containerName.Data()));
521   ana->SetAODObjArrayName(Form("%sHadronCorr_%s",particle.Data(),containerName.Data()));
522   
523   ana->SwitchOffPi0TriggerDecayCorr();
524   ana->SwitchOffDecayTriggerDecayCorr();
525   ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
526   ana->SwitchOffHMPIDCorrelation();
527   ana->SwitchOffFillBradHistograms();
528   
529   // Underlying event
530   ana->SwitchOffEventSelection();
531   ana->SwitchOffSeveralUECalculation();
532   ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
533   ana->SetMultiBin(1);
534   
535   //Set Histograms name tag, bins and ranges
536   
537   ana->AddToHistogramsName(Form("Ana%sHadronCorr_",particle.Data()));
538   SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
539   
540   if(simulation) ana->SwitchOnDataMC();
541   
542   if(debugLevel > 0) ana->Print("");
543  
544   return ana;
545   
546 }
547
548 //________________________________________________________________________________
549 AliAnaCalorimeterQA* ConfigureQAAnalysis(TString calorimeter,  Bool_t simulation,
550                                          Int_t debugLevel)
551 {
552   
553   AliAnaCalorimeterQA *ana = new AliAnaCalorimeterQA();
554   ana->SetDebug(debugLevel); //10 for lots of messages
555   ana->SetCalorimeter(calorimeter);
556   
557   ana->SetTimeCut(-1e10,1e10); // Open time cut
558   ana->SwitchOffCorrelation();
559   ana->SwitchOffStudyBadClusters() ;
560   ana->SwitchOffFiducialCut();
561   ana->SwitchOffFillAllTH3Histogram();
562   ana->SwitchOffFillAllPositionHistogram();
563   ana->SwitchOffFillAllPositionHistogram2();
564   ana->SwitchOffStudyBadClusters();
565   ana->SwitchOffStudyClustersAsymmetry();
566   ana->SwitchOffStudyWeight();
567   ana->SwitchOffFillAllTrackMatchingHistogram();
568   ana->SwitchOffFillAllCellTimeHisto() ;
569   
570   if(calorimeter=="EMCAL")
571   {
572 //    if     (year==2010)  ana->SetNumberOfModules(4); 
573 //    else if(year==2011)  ana->SetNumberOfModules(10);
574 //    else
575     ana->SetNumberOfModules(12);
576   }
577   else 
578   {//PHOS
579     ana->SetNumberOfModules(3); 
580   }
581   
582   ana->AddToHistogramsName("QA_"); //Begining of histograms name
583   SetHistoRangeAndNBins(ana->GetHistogramRanges(),calorimeter); // see method below
584   
585   if(simulation) ana->SwitchOnDataMC();
586   
587   if(debugLevel > 0) ana->Print("");
588   
589   return ana;
590   
591 }
592
593
594 //________________________________________________________
595 void SetHistoRangeAndNBins (AliHistogramRanges* histoRanges,
596                             TString calorimeter)
597 {
598   // Set common bins for all analysis and MC histograms filling
599     
600   histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
601   
602   if(calorimeter=="EMCAL")
603   {
604 //    if(year==2010)
605 //    {
606 //      histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
607 //      histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
608 //      histoRanges->SetHistoYRangeAndNBins(370,450,40);  // QA
609 //    }
610 //    else if(year==2011)
611 //    {           
612 //      histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
613 //      histoRanges->SetHistoXRangeAndNBins(-600,90,200); // QA
614 //      histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
615 //    }
616 //    else
617     {
618       histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 190*TMath::DegToRad(), 122) ;
619       histoRanges->SetHistoXRangeAndNBins(-100,90,200); // QA
620       histoRanges->SetHistoYRangeAndNBins(50,450,100);  // QA
621     }
622
623     histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
624   }
625   else
626   {
627     histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 320*TMath::DegToRad(), 60) ;
628     histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
629   }
630   
631   histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
632   
633   // Invariant mass histoRangeslysis
634   histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
635   histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
636   
637   // check if time calibration is on
638   histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,2000);
639   //histoRanges->SetHistoTimeRangeAndNBins(-400.,400,400);
640   histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
641   
642   // track-cluster residuals
643   histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
644   histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
645   histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
646
647   // QA, electron, charged
648   histoRanges->SetHistoPOverERangeAndNBins(0,  2.5 ,500);
649   histoRanges->SetHistodEdxRangeAndNBins  (0.,250.0,500);
650   
651   // QA
652   histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
653   histoRanges->SetHistoRatioRangeAndNBins(0.,2.,100);
654   histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
655   histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
656   histoRanges->SetHistoZRangeAndNBins(-400,400,200);
657   histoRanges->SetHistoRRangeAndNBins(400,450,25);
658   histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
659   histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
660   histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);
661   
662 }
663