2 Bool_t kPrint = kFALSE;
3 Bool_t kSimulation = kFALSE;
4 Bool_t kUseKinematics = kFALSE;
5 Bool_t kOutputAOD = kFALSE;
6 Bool_t kEventSelection= kFALSE;
7 Bool_t kExotic = kTRUE;
8 Bool_t kNonLinearity = kFALSE;
10 TString kCollisions = "pp";
11 TString kTrig = "EMC7" ;
12 TString kClusterArray = "";
13 TString kData = ""; // MC or deltaAOD
14 TString kInputDataType = "ESD";
15 TString kCalorimeter = "EMCAL";
17 Bool_t kRecalTM = kTRUE;
23 Bool_t kHadronAN = kFALSE;
24 Bool_t kCalibE = kTRUE;
25 Bool_t kCalibT = kTRUE;
26 Bool_t kBadMap = kTRUE;
28 AliAnalysisTaskCaloTrackCorrelation *AddTaskCaloTrackCorr(const TString data = "",
29 const TString calorimeter = "EMCAL",
30 const Bool_t simulation = kFALSE,
31 const Bool_t eventsel = kFALSE,
32 const Bool_t exotic = kTRUE,
33 const Bool_t nonlin = kFALSE,
34 TString outputfile = "",
35 const Int_t year = 2010,
36 const TString col = "pp",
37 const TString trigger = "MB",
38 const TString clustersArray = "V1",
39 const Bool_t recaltm = kTRUE,
40 const Bool_t tm = kTRUE,
41 const Int_t minCen = -1,
42 const Int_t maxCen = -1,
43 const Bool_t qaan = kFALSE,
44 const Bool_t hadronan = kFALSE,
45 const Bool_t calibE = kTRUE,
46 const Bool_t badmap = kTRUE,
47 const Bool_t calibT = kTRUE,
48 const Bool_t outputAOD = kFALSE,
49 const Bool_t printSettings = kFALSE,
50 const Double_t scaleFactor = -1
53 // Creates a CaloTrackCorr task, configures it and adds it to the analysis manager.
55 kPrint = printSettings;
56 kSimulation = simulation;
60 kNonLinearity = nonlin;
62 kClusterArray = clustersArray;
64 kCalorimeter = calorimeter;
65 kOutputAOD = outputAOD;
70 kEventSelection= eventsel;
77 // Get the pointer to the existing analysis manager via the static access method.
79 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
82 ::Error("AddTask", "No analysis manager to connect to.");
86 // Check the analysis type using the event handlers connected to the analysis manager.
88 if (!mgr->GetInputEventHandler())
90 ::Error("AddTask", "This task requires an input event handler");
94 kInputDataType = "AOD";
95 if(!kData.Contains("delta"))
96 kInputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
100 kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
101 if (!kUseKinematics && data=="AOD" && kInputDataType != "ESD") kUseKinematics = kTRUE; //AOD primary should be available ...
104 cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
106 // Name for containers
108 kName = Form("%s_Trig%s_Cl%s_TM%d",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data(),kTM);
110 if(kCollisions=="PbPb" && kMaxCen>=0) kName+=Form("Cen%d_%d",kMinCen,kMaxCen);
112 printf("<<<< NAME: %s >>>>>\n",kName.Data());
114 // #### Configure analysis ####
116 AliAnaCaloTrackCorrMaker * maker = new AliAnaCaloTrackCorrMaker();
118 maker->SetScaleFactor(scaleFactor); // for MC, negative (not scaled) by default
120 // General frame setting and configuration
121 maker->SetReader (ConfigureReader() );
122 maker->SetCaloUtils(ConfigureCaloUtils());
124 // Analysis tasks setting and configuration
125 Int_t n = 0;//Analysis number, order is important
127 // Isolation settings
128 Int_t partInCone = AliIsolationCut::kNeutralAndCharged; // kOnlyCharged;
129 Int_t thresType = AliIsolationCut::kPtThresIC;// AliIsolationCut::kSumPtFracIC ;
133 maker->AddAnalysis(ConfigurePhotonAnalysis(), n++); // Photon cluster selection
134 maker->AddAnalysis(ConfigureIsolationAnalysis("Photon", partInCone,thresType), n++); // Photon isolation
135 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kFALSE), n++); // Gamma hadron correlation
136 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kTRUE) , n++); // Isolated gamma hadron correlation
137 //maker->AddAnalysis(ConfigureIsolationAnalysis("Photon", partInCone,thresType,kTRUE), n++); // Photon multi isolation, leave it the last
139 // Split cluster analysis
140 if(kCalorimeter == "EMCAL")
142 maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kSSCalo), n++); // Pi0 event by event selection, cluster splitting
143 maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SS", partInCone,thresType), n++); // Pi0 isolation, cluster splits
144 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SS" ,kFALSE), n++); // Pi0 hadron correlation
145 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SS" ,kTRUE) , n++); // Isolated pi0 hadron correlation
146 //maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SS", partInCone,thresType,kTRUE), n++); // Pi0 multi isolation, split cluster
147 //maker->AddAnalysis(ConfigureInClusterIMAnalysis(0.5,3), n++);
150 // Invariant mass analysis
151 maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kIMCalo), n++); // Pi0 event by event selection, invariant mass and photon tagging from decay
152 maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0SideBand", AliAnaPi0EbE::kIMCalo), n++); // Pi0 event by event selection, and photon tagging from decay
153 maker->AddAnalysis(ConfigurePi0EbEAnalysis("Eta", AliAnaPi0EbE::kIMCalo), n++); // Eta event by event selection, invariant mass and photon tagging from decay
154 maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0", partInCone,thresType), n++); // Pi0 isolation, invariant mass
155 maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0SideBand", partInCone,thresType), n++); // Pi0 isolation, side band
156 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0" ,kFALSE), n++); // Pi0 hadron correlation
157 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0" ,kTRUE) , n++); // Isolated pi0 hadron correlation
158 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SideBand" ,kFALSE), n++); // Pi0 hadron correlation
159 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0SideBand" ,kTRUE) , n++); // Isolated pi0 hadron correlation
160 //maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0", partInCone,thresType,kTRUE), n++); // Pi0 multi isolation, invariant mass, leave it the last
164 maker->AddAnalysis(ConfigureChargedAnalysis(), n++); // track selection
165 maker->AddAnalysis(ConfigureIsolationAnalysis("Hadron",AliIsolationCut::kOnlyCharged,thresType), n++); // track isolation
166 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Hadron",kFALSE), n++); // track-track correlation
167 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Hadron",kTRUE) , n++); // Isolated track-track correlation
168 //maker->AddAnalysis(ConfigureIsolationAnalysis("Hadron",partInCone,thresType,kTRUE), n++);// Hadron multi isolation
171 // Analysis with ghost triggers, only for Min Bias like events
172 if( kTrig.Contains("INT") || kTrig.Contains("Central") || kTrig.Contains("MB") )
174 maker->AddAnalysis(ConfigureRandomTriggerAnalysis(), n++);
175 maker->AddAnalysis(ConfigureIsolationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()), partInCone,thresType), n++); // Ghost trigger isolation
176 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()),kFALSE), n++); // Ghost trigger hadron correlation
177 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()),kTRUE) , n++); // Isolated ghost hadron correlation
178 //maker->AddAnalysis(ConfigureIsolationAnalysis(Form("RandomTrigger%s",kCalorimeter.Data()), partInCone,thresType,kTRUE), n++); // Ghost multi isolation
182 maker->AddAnalysis(ConfigureRandomTriggerAnalysis("CTS"), n++); // track selection
183 maker->AddAnalysis(ConfigureIsolationAnalysis("RandomTriggerCTS",AliIsolationCut::kOnlyCharged,thresType), n++); // track isolation
184 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("RandomTriggerCTS",kFALSE), n++); // track-track correlation
185 maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("RandomTriggerCTS",kTRUE) , n++); // Isolated track-track correlation
186 //maker->AddAnalysis(ConfigureIsolationAnalysis("RandomTriggerCTS",AliIsolationCut::kOnlyCharged,thresType,kTRUE), n++); // Ghost multi isolation
191 if(kQA) maker->AddAnalysis(ConfigureQAAnalysis(),n++);
193 maker->SetAnaDebug(kDebug) ;
194 maker->SwitchOnHistogramsMaker() ;
195 if(kData.Contains("delta")) maker->SwitchOffAODsMaker() ;
196 else maker->SwitchOnAODsMaker() ;
198 if(kPrint) maker->Print("");
200 printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, kCalorimeter.Data());
202 //kName = Form("%s_Trig%s_Cl%s_TM%d",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data(),kFALSE);
203 kName = Form("%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data());
204 if(kCollisions=="PbPb" && kMaxCen>=0) kName+=Form("Cen%d_%d",kMinCen,kMaxCen);
208 AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (Form("CaloTrackCorr%s",kName.Data()));
209 task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
210 task->SetDebugLevel(kDebug);
211 task->SetBranches("ESD:AliESDRun.,AliESDHeader");
212 task->SetAnalysisMaker(maker);
217 if(outputfile.Length()==0) outputfile = AliAnalysisManager::GetCommonFileName();
219 AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(kName, TList::Class(),
220 AliAnalysisManager::kOutputContainer,
221 Form("%s",outputfile.Data()));
223 AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("Param_%s",kName.Data()), TList::Class(),
224 AliAnalysisManager::kParamContainer,
225 "AnalysisParameters.root");
227 // Create ONLY the output containers for the data produced by the task.
228 // Get and connect other common input/output containers via the manager as below
229 //==============================================================================
230 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
231 // AOD output slot will be used in a different way in future
232 if(!kData.Contains("delta") && outputAOD) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
233 mgr->ConnectOutput (task, 1, cout_pc);
234 mgr->ConnectOutput (task, 2, cout_cuts);
239 printf("CaloTrackCorr trigger EMC7\n");
240 task->SelectCollisionCandidates(AliVEvent::kEMC7);
242 else if (kTrig=="INT7")
244 printf("CaloTrackCorr trigger INT7\n");
245 task->SelectCollisionCandidates(AliVEvent::kINT7);
247 else if(kTrig=="EMC1")
249 printf("CaloTrackCorr trigger EMC1\n");
250 task->SelectCollisionCandidates(AliVEvent::kEMC1);
254 printf("CaloTrackCorr trigger MB\n");
255 task->SelectCollisionCandidates(AliVEvent::kMB);
257 else if(kTrig=="PHOS")
259 printf("CaloTrackCorr trigger PHOS\n");
260 task->SelectCollisionCandidates(AliVEvent::kPHI7);
262 else if(kTrig=="PHOSPb")
264 printf("CaloTrackCorr trigger PHOSPb\n");
265 task->SelectCollisionCandidates(AliVEvent::kPHOSPb);
267 else if(kTrig=="AnyINT")
269 printf("CaloTrackCorr trigger AnyINT\n");
270 task->SelectCollisionCandidates(AliVEvent::kAnyINT);
272 else if(kTrig=="INT")
274 printf("CaloTrackCorr trigger AnyINT\n");
275 task->SelectCollisionCandidates(AliVEvent::kAny);
277 else if(kTrig=="EMCEGA")
279 printf("CaloTrackCorr trigger EMC Gamma\n");
280 task->SelectCollisionCandidates(AliVEvent::kEMCEGA);
282 else if(kTrig=="EMCEJE")
284 printf("CaloTrackCorr trigger EMC Jet\n");
285 task->SelectCollisionCandidates(AliVEvent::kEMCEJE);
287 else if(kTrig=="Central")
289 printf("CaloTrackCorr trigger Central\n");
290 task->SelectCollisionCandidates(AliVEvent::kCentral);
292 else if(kTrig=="SemiCentral")
294 printf("CaloTrackCorr trigger SemiCentral\n");
295 task->SelectCollisionCandidates(AliVEvent::kSemiCentral);
301 //____________________________________
302 AliCaloTrackReader * ConfigureReader()
305 AliCaloTrackReader * reader = 0;
306 if (kInputDataType == "ESD"&& kData=="MC" )
307 reader = new AliCaloTrackMCReader();
308 else if(kInputDataType=="AOD" || kData.Contains("AOD"))
309 reader = new AliCaloTrackAODReader();
310 else if(kInputDataType=="ESD")
311 reader = new AliCaloTrackESDReader();
313 printf("AliCaloTrackReader::ConfigureReader() - Data combination not known kData=%s, kInputData=%s\n",kData.Data(),kInputDataType.Data());
315 reader->SetDebug(kDebug);//10 for lots of messages
318 //reader->SetDeltaAODFileName("");
319 if(kOutputAOD) reader->SwitchOnWriteDeltaAOD() ;
323 if(kInputDataType == "ESD"){
324 reader->SwitchOnStack();
325 reader->SwitchOffAODMCParticles();
327 else if(kInputDataType == "AOD"){
328 reader->SwitchOffStack();
329 reader->SwitchOnAODMCParticles();
333 //------------------------
334 // Detector input filling
335 //------------------------
337 //Min cluster/track E
338 reader->SetEMCALEMin(0.3);
339 reader->SetEMCALEMax(1000);
340 reader->SetPHOSEMin(0.3);
341 reader->SetPHOSEMax(1000);
342 reader->SetCTSPtMin(0.2);
343 reader->SetCTSPtMax(1000);
345 if(!kSimulation && kCalibT) reader->SetEMCALTimeCut(-30,30);
346 else reader->SetEMCALTimeCut(-1000,1000); // Open time cut
348 reader->SwitchOnFiducialCut();
349 reader->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ;
352 reader->SwitchOnCTS();
353 if(kInputDataType=="ESD")
355 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
356 AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWGJE(10041004);
357 reader->SetTrackCuts(esdTrackCuts);
358 reader->SwitchOnConstrainTrackToVertex();
360 else if(kInputDataType=="AOD")
362 reader->SwitchOnAODHybridTrackSelection();
363 reader->SetTrackFilterMask(128); // Filter bit, not mask, use if off hybrid
368 reader->SetEMCALClusterListName(kClusterArray);
369 if(kClusterArray == "")
371 printf("**************** Standard EMCAL clusters branch analysis **************** \n");
372 reader->SwitchOnClusterRecalculation();
373 // Check in ConfigureCaloUtils that the recalibration and bad map are ON
377 printf("**************** Input for analysis is Clusterizer %s **************** \n", kClusterArray.Data());
378 reader->SwitchOffClusterRecalculation();
381 //if(kCalorimeter == "EMCAL") {
382 reader->SwitchOnEMCALCells();
383 reader->SwitchOnEMCAL();
385 //if(kCalorimeter == "PHOS") {
386 reader->SwitchOnPHOSCells();
387 reader->SwitchOnPHOS();
390 // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
391 if(kData.Contains("delta")){
392 reader->SwitchOffEMCAL();
393 reader->SwitchOffPHOS();
394 reader->SwitchOffEMCALCells();
395 reader->SwitchOffPHOSCells();
402 //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
404 // For mixing with AliAnaParticleHadronCorrelation switch it off
405 reader->SwitchOnEventTriggerAtSE();
406 reader->SetEventTriggerMaks(AliVEvent::kEMC7); // Only for mixing and SwitchOffEventTriggerAtSE();
408 reader->SetZvertexCut(10.); // Open cut
409 reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
413 reader->SwitchOnEventSelection(); // remove pileup by default
414 reader->SwitchOnV0ANDSelection() ; // and besides v0 AND
418 reader->SwitchOffEventSelection(); // remove pileup by default
419 reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
422 if(kCollisions=="PbPb")
425 reader->SetCentralityClass("V0M");
426 reader->SetCentralityOpt(10); // 10 (c= 0-10, 10-20 ...), 20 (c= 0-5, 5-10 ...) or 100 (c= 1, 2, 3 ..)
427 reader->SetCentralityBin(kMinCen,kMaxCen); // Accept all events, if not select range
429 // Event plane (only used in AliAnaPi0 for the moment)
430 reader->SetEventPlaneMethod("Q");
433 reader->SetImportGeometryFromFile(kTRUE);
435 if(kPrint) reader->Print("");
441 //_______________________________________
442 AliCalorimeterUtils* ConfigureCaloUtils()
445 AliCalorimeterUtils *cu = new AliCalorimeterUtils;
446 cu->SetDebug(kDebug);
448 // Remove clusters close to borders, at least max energy cell is 1 cell away
449 cu->SetNumberOfCellsFromEMCALBorder(1);
450 cu->SetNumberOfCellsFromPHOSBorder(2);
452 // Search of local maxima in cluster
453 if(kCollisions=="pp")
455 cu->SetLocalMaximaCutE(0.1);
456 cu->SetLocalMaximaCutEDiff(0.03);
460 cu->SetLocalMaximaCutE(0.2);
461 cu->SetLocalMaximaCutEDiff(0.03);
464 cu->SwitchOffClusterPlot();
466 if(kRecalTM) cu->SwitchOnRecalculateClusterTrackMatching(); // Done in clusterization
467 else cu->SwitchOffRecalculateClusterTrackMatching();
469 cu->SwitchOnBadChannelsRemoval() ;
474 cu->SwitchOnLoadOwnEMCALGeometryMatrices();
476 AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
479 cu->SwitchOnRecalibration(); // Check the reader if it is taken into account during filtering
482 gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/ConfigureEMCALRecoUtils.C");
483 ConfigureEMCALRecoUtils(recou,
493 printf("ConfigureCaloUtils() - Apply non linearity to EMCAL\n");
494 cu->SwitchOnCorrectClusterLinearity();
497 printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
498 printf("ConfigureCaloUtils() - EMCAL BadMap ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
502 cu->SwitchOffLoadOwnPHOSGeometryMatrices();
504 if(kPrint) cu->Print("");
510 //_____________________________________
511 AliAnaPhoton* ConfigurePhotonAnalysis()
514 AliAnaPhoton *ana = new AliAnaPhoton();
515 ana->SetDebug(kDebug); //10 for lots of messages
517 // cluster selection cuts
519 ana->SwitchOffFiducialCut();
521 ana->SetCalorimeter(kCalorimeter);
523 if(kCalorimeter == "PHOS")
525 ana->SetNCellCut(2);// At least 3 cells
527 ana->SetMinDistanceToBadChannel(2, 4, 5);
528 ana->SetTimeCut(-2000,2000); // open cut
532 ana->SetNCellCut(1);// At least 2 cells
533 ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
534 ana->SetMaxEnergy(1000);
535 ana->SetTimeCut(-1000,1000); // open cut, usual time window of [425-825] ns if time recalibration is off
536 // restrict to less than 100 ns when time calibration is on
537 ana->SetMinDistanceToBadChannel(2, 4, 6);
542 ana->SwitchOnTrackMatchRejection() ;
543 ana->SwitchOffTMHistoFill() ;
547 ana->SwitchOffTrackMatchRejection() ;
548 ana->SwitchOnTMHistoFill() ;
551 //PID cuts (shower shape)
552 ana->SwitchOnCaloPID(); // do PID selection, unless specified in GetCaloPID, selection not based on bayesian
553 AliCaloPID* caloPID = ana->GetCaloPID();
554 //Not used in bayesian
557 caloPID->SetEMCALLambda0CutMax(0.27);
558 caloPID->SetEMCALLambda0CutMin(0.10);
560 caloPID->SetEMCALDEtaCut(0.025);
561 caloPID->SetEMCALDPhiCut(0.030);
564 caloPID->SetPHOSDispersionCut(2.5);
565 caloPID->SetPHOSRCut(2.);
566 if(kInputData=="AOD") caloPID->SetPHOSRCut(2000.); // Open cut since dX, dZ not stored
568 ana->SwitchOffFillShowerShapeHistograms(); // Filled before photon shower shape selection
570 // Input / output delta AOD settings
572 if(!kData.Contains("delta"))
574 ana->SetOutputAODName(Form("Photon%s",kName.Data()));
575 ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
576 //ana->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
578 else ana->SetInputAODName(Form("Photon%s",kName.Data()));
580 //Set Histograms name tag, bins and ranges
582 ana->AddToHistogramsName(Form("AnaPhoton_TM%d_",kTM));
583 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
585 // Number of particle type MC histograms
586 ana->FillNOriginHistograms(20);
587 ana->FillNPrimaryHistograms(20);
591 if(kPrint) ana->Print("");
597 //________________________________________________________________________________
598 AliAnaElectron* ConfigureElectronAnalysis()
601 AliAnaElectron *ana = new AliAnaElectron();
602 ana->SetDebug(kDebug); //10 for lots of messages
604 if(kCalorimeter == "PHOS")
606 ana->SetNCellCut(2);// At least 2 cells
608 ana->SetMinDistanceToBadChannel(2, 4, 5);
612 ana->SetNCellCut(1);// At least 2 cells
613 ana->SetMinPt(0.5); // no effect minium EMCAL cut.
615 //ana->SetTimeCut(400,900);// Time window of [400-900] ns
616 ana->SetMinDistanceToBadChannel(2, 4, 6);
619 //Electron selection cuts with tracks
620 ana->SetEOverP(0.85, 1.2);
621 // TO DO, find a more suitable way to set this
624 ana->SetdEdxCut(76, 85);
628 ana->SetdEdxCut(56, 64);
631 ana->SetCalorimeter(kCalorimeter);
633 ana->SwitchOffCaloPID();
634 ana->SwitchOffFillShowerShapeHistograms();
635 ana->SwitchOffFillWeightHistograms() ;
636 ana->SwitchOffFiducialCut();
638 if(!kData.Contains("delta"))
640 ana->SetOutputAODName(Form("Electron%s",kName.Data()));
641 ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
643 else ana->SetInputAODName(Form("Electron%s",kName.Data()));
645 //Set Histograms name tag, bins and ranges
647 ana->AddToHistogramsName(Form("AnaElectron_TM%d_",kTM));
648 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
652 if(kPrint) ana->Print("");
658 //__________________________________________________________________________________________
659 AliAnaRandomTrigger* ConfigureRandomTriggerAnalysis(TString detector = "")
662 AliAnaRandomTrigger *ana = new AliAnaRandomTrigger();
663 ana->SetDebug(kDebug); //10 for lots of messages
665 if(detector=="") detector = kCalorimeter;
666 ana->SetDetector(detector);
672 if (detector=="EMCAL")
674 ana->SetEtaCut(-0.71,0.71);
675 ana->SetPhiCut(100*TMath::DegToRad(), 160*TMath::DegToRad());
677 else if(detector=="PHOS")
679 ana->SetEtaCut(-0.13,0.13);
680 ana->SetPhiCut(260*TMath::DegToRad(), 320*TMath::DegToRad());
682 else if(detector=="CTS")
684 ana->SetEtaCut(-0.9,0.9);
685 ana->SetPhiCut(0, TMath::TwoPi());
689 if(!kData.Contains("delta"))
691 ana->SetOutputAODName(Form("RandomTrigger%s%s",detector.Data(),kName.Data()));
692 ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
695 ana->SetInputAODName(Form("RandomTrigger%s%s",detector.Data(),kName.Data()));
697 printf("Set RandomTrigger%s%s\n",detector.Data(),kName.Data());
699 //Set Histograms name tag, bins and ranges
701 ana->AddToHistogramsName(Form("AnaRandomTrigger%s_",detector.Data()));
703 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
707 ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
708 ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
711 if(kPrint) ana->Print("");
717 //__________________________________________________________________________________________
718 AliAnaInsideClusterInvariantMass* ConfigureInClusterIMAnalysis(Float_t l0min, Float_t l0max)
720 AliAnaInsideClusterInvariantMass *ana = new AliAnaInsideClusterInvariantMass();
721 ana->SetDebug(kDebug); //10 for lots of messages
725 ana->SetMinEnergy(5);
726 ana->SetMaxEnergy(200.);
727 ana->SetMinNCells(3);
728 ana->SetM02Cut(l0min,l0max);
729 ana->SetCalorimeter(kCalorimeter);
731 //ana->AddToHistogramsName(Form("AnaInClusterIM_%1.2f_%1.2f_",l0min,l0max));
732 ana->AddToHistogramsName("AnaInClusterIM_");
734 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
736 AliCaloPID* caloPID = ana->GetCaloPID();
737 caloPID->SetEMCALDEtaCut(0.025);
738 caloPID->SetEMCALDPhiCut(0.030);
739 caloPID->SetClusterSplittingM02Cut(0,100); // Do the selection in the analysis class and not in the PID method to fill SS histograms
741 caloPID->SetPi0MassRange(0.10, 0.18);
742 caloPID->SetEtaMassRange(0.40, 0.60);
743 caloPID->SetPhotonMassRange(0.00, 0.08);
747 if(kPrint) ana->Print("");
753 //_______________________________________________
754 AliAnaChargedParticles* ConfigureChargedAnalysis()
757 AliAnaChargedParticles *ana = new AliAnaChargedParticles();
758 ana->SetDebug(kDebug); //10 for lots of messages
763 ana->SwitchOnFiducialCut();
764 ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.8, 0, 360) ; //more restrictive cut in reader and after in isolation
766 // Input / output delta AOD settings
768 if(!kData.Contains("delta"))
770 ana->SetOutputAODName(Form("Hadron%s",kName.Data()));
771 ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
772 //ana->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
775 ana->SetInputAODName(Form("Hadron%s",kName.Data()));
776 printf("Set Hadron%s\n",kName.Data());
777 //Set Histograms name tag, bins and ranges
779 ana->AddToHistogramsName("AnaHadrons_");
780 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
782 ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
783 ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
787 if(kPrint) ana->Print("");
794 //_______________________________
795 AliAnaPi0* ConfigurePi0Analysis()
798 AliAnaPi0 *ana = new AliAnaPi0();
800 ana->SetDebug(kDebug);//10 for lots of messages
802 // Input delta AOD settings
803 ana->SetInputAODName(Form("Photon%s",kName.Data()));
805 // Calorimeter settings
806 ana->SetCalorimeter(kCalorimeter);
807 if(kCalorimeter=="PHOS") ana->SetNumberOfModules(3); //PHOS first year
810 if (kYears == 2010) ana->SetNumberOfModules( 4); // EMCAL first year
811 else if(kYears == 2011) ana->SetNumberOfModules(10); // Second year
812 else ana->SetNumberOfModules(12);
815 //settings for pp collision mixing
816 ana->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
819 if(kCalorimeter=="EMCAL") ana->SetPairTimeCut(70);
821 if (kCollisions=="pp" )
823 ana->SetNCentrBin(1);
824 ana->SetNZvertBin(10);
826 ana->SetNMaxEvMix(100);
827 ana->SwitchOnSMCombinations();
829 else if(kCollisions=="PbPb")
831 ana->SetNCentrBin(10);
832 ana->SetNZvertBin(10);
834 ana->SetNMaxEvMix(10);
835 ana->SwitchOffSMCombinations();
838 ana->SwitchOffMultipleCutAnalysis();
840 //Set Histograms name tag, bins and ranges
842 ana->AddToHistogramsName(Form("AnaPi0_TM%d_",kTM));
843 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
847 if(kPrint) ana->Print("");
853 //_____________________________________________________
854 AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
858 AliAnaPi0EbE *ana = new AliAnaPi0EbE();
859 ana->SetDebug(kDebug);//10 for lots of messages
861 ana->SetAnalysisType(analysis);
863 if(analysis==AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
864 if(analysis==AliAnaPi0EbE::kSSCalo) opt = "SS";
868 if(kCalorimeter=="EMCAL")ana->SetPairTimeCut(15); // More strict than in pi0 inv mass analysis
870 ana->SetCalorimeter(kCalorimeter);
872 // Input / output delta AOD settings
874 ana->SetInputAODName(Form("Photon%s",kName.Data()));
875 if(!kInputDataType.Contains("delta"))
877 ana->SetOutputAODName(Form("%s%s%s",particle.Data(), opt.Data(), kName.Data()));
878 ana->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
881 ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
883 if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
885 if(analysis!=AliAnaPi0EbE::kSSCalo)
887 AliNeutralMesonSelection *nms = ana->GetNeutralMesonSelection();
888 nms->SetParticle(particle);
890 // Tighten a bit mass cut with respect to default window
891 if(particle=="Pi0") nms->SetInvMassCutRange(0.120,0.150);
892 if(particle=="Eta") nms->SetInvMassCutRange(0.520,0.580);
894 nms->SwitchOnAngleSelection();
895 nms->KeepNeutralMesonSelectionHistos(kTRUE);
896 //nms->SetAngleMaxParam(2,0.2);
897 nms->SetHistoERangeAndNBins(0, 20, 80) ;
898 //nms->SetHistoIMRangeAndNBins(0, 1, 400);
901 { // cluster splitting settings
902 ana->SetTimeCut(-1000,1000); // Open time cut
903 AliCaloPID* caloPID = ana->GetCaloPID();
904 caloPID->SetPi0MassRange(0.10, 0.18);
905 caloPID->SetEtaMassRange(0.40, 0.60);
906 caloPID->SetPhotonMassRange(0.00, 0.08);
907 caloPID->SetClusterSplittingM02Cut(0.5,100); // Do the selection in the analysis class and not in the PID method to fill SS histograms
910 ana->SwitchOffSelectedClusterHistoFill();
911 ana->SwitchOffFillWeightHistograms();
913 if(!kTM) ana->SwitchOnTMHistoFill();
914 else ana->SwitchOffTMHistoFill();
916 //Set Histograms name tag, bins and ranges
918 ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
919 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
923 if(kPrint) ana->Print("");
929 //____________________________________________________________________________________________________
930 AliAnaParticleIsolation* ConfigureIsolationAnalysis(TString particle="Photon",
931 Int_t partInCone = AliIsolationCut::kOnlyCharged,
932 Int_t thresType = AliIsolationCut::kSumPtFracIC,
933 Bool_t multi = kFALSE)
936 AliAnaParticleIsolation *ana = new AliAnaParticleIsolation();
937 //ana->SetDebug(kDebug);
938 ana->SetDebug(kDebug);
940 ana->SwitchOnFiducialCut();
941 //Avoid borders of EMCal
942 if(kCalorimeter=="EMCAL")
943 ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.6, 86, 174) ;
945 // Same Eta as EMCal, cut in phi if EMCAL was triggering
946 if(particle=="Hadron" || particle.Contains("CTS"))
948 if(kTrig.Contains("EMC"))
949 ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
951 ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
956 // Input / output delta AOD settings
958 ana->SetInputAODName(Form("%s%s",particle.Data(),kName.Data()));
959 ana->SetAODObjArrayName(Form("IC%sTM%d",particle.Data(),kTM));
961 ana->SetCalorimeter(kCalorimeter);
963 if(!kTM) ana->SwitchOnTMHistoFill();
964 else ana->SwitchOffTMHistoFill();
966 ana->SwitchOffSSHistoFill();
968 //Do settings for main isolation cut class
969 AliIsolationCut * ic = ana->GetIsolationCut();
970 ic->SetDebug(kDebug);
973 if(kCollisions=="pp")
975 ic->SetPtThreshold(0.5);
976 ic->SetConeSize(0.5);
978 if(kCollisions=="PbPb")
980 ic->SetPtThreshold(2.);
981 //ic->SetPtThreshold(1.);
982 ic->SetConeSize(0.3);
985 ic->SetPtFraction(0.1);
986 ic->SetSumPtThreshold(1.0) ;
987 ic->SetParticleTypeInCone(partInCone);
988 ic->SetICMethod(thresType);
990 //Do or not do isolation with previously produced AODs.
991 //No effect if use of SwitchOnSeveralIsolation()
992 ana->SwitchOffReIsolation();
997 ic->SetConeSize(1.); // Take all for first iteration
998 ic->SetPtThreshold(100);// Take all for first iteration
999 ana->SwitchOnSeveralIsolation() ;
1000 ana->SetAODObjArrayName(Form("MultiIC%sTM%d",particle.Data(),kTM));
1003 ana->SetNPtThresFrac(4);
1004 ana->SetConeSizes(0,0.3); ana->SetConeSizes(1,0.4);
1005 ana->SetConeSizes(2,0.5); ana->SetConeSizes(3,0.6);
1006 ana->SetPtThresholds(0, 0.5); ana->SetPtThresholds(1, 1); ana->SetPtThresholds(2, 2);
1007 ana->SetPtFractions (0, 0.05) ; ana->SetPtFractions (1, 0.1); ana->SetPtFractions (2, 0.2) ; ana->SetPtFractions (3, 0.3) ;
1008 ana->SetSumPtThresholds(0, 1) ; ana->SetSumPtThresholds(1, 3) ; ana->SetSumPtThresholds(2, 5); ana->SetSumPtThresholds(3, 7) ;
1010 ana->SwitchOffTMHistoFill();
1011 ana->SwitchOffSSHistoFill();
1014 ana->SwitchOffSeveralIsolation() ;
1016 AliCaloPID* caloPID = ana->GetCaloPID();
1017 caloPID->SetEMCALDEtaCut(0.025);
1018 caloPID->SetEMCALDPhiCut(0.030);
1020 //Set Histograms name tag, bins and ranges
1022 if(!multi)ana->AddToHistogramsName(Form("AnaIsol%s_TM%d_",particle.Data(),kTM));
1023 else ana->AddToHistogramsName(Form("AnaMultiIsol%s_TM%d_",particle.Data(),kTM));
1025 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1027 ana->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
1028 ana->SetHistoPtSumRangeAndNBins (0, 100, 250);
1030 if(particle=="Hadron" || particle.Contains("CTS"))
1032 ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1033 ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1038 if(kPrint) ic ->Print("");
1039 if(kPrint) ana->Print("");
1045 //___________________________________________________________________________________
1046 AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString particle,
1050 AliAnaParticleHadronCorrelation *ana = new AliAnaParticleHadronCorrelation();
1051 ana->SetDebug(kDebug);
1053 ana->SetMinimumTriggerPt(4);
1054 ana->SetAssociatedPtRange(0.2,200);
1055 ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
1057 ana->SelectIsolated(bIsolated); // do correlation with isolated photons
1059 ana->SwitchOnAbsoluteLeading(); // Select trigger leading particle of all the selected tracks
1060 ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
1062 // Mixing with own pool
1063 ana->SwitchOffOwnMix();
1064 ana->SetNCentrBin(9);
1065 ana->SetNZvertBin(10);
1066 if(kCollisions=="pp")
1068 ana->SetNMaxEvMix(10);
1069 ana->SwitchOnTrackMultBins();
1073 ana->SetNMaxEvMix(2);
1074 ana->SwitchOffTrackMultBins();
1077 ana->SwitchOnFiducialCut();
1079 //Avoid borders of EMCal, same as for isolation
1080 if(kCalorimeter=="EMCAL")
1081 ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.6, 86, 174) ;
1083 // Same Eta as EMCal, cut in phi if EMCAL was triggering
1084 if(particle=="Hadron" || particle.Contains("CTS"))
1086 if(kTrig.Contains("EMC"))
1087 ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 260, 360) ;
1089 ana->GetFiducialCut()->SetSimpleCTSFiducialCut (0.6, 0, 360) ;
1092 // Input / output delta AOD settings
1094 ana->SetInputAODName(Form("%s%s",particle.Data(),kName.Data()));
1095 ana->SetAODObjArrayName(Form("%sHadronCorrIso%dTM%d",particle.Data(),bIsolated,kTM));
1097 // Fill extra plots on tagged decay photons
1098 // If trigger is pi0/eta found with invariant mass, get the decays
1099 // If trigger is photon, check if it was tagged as decay previously
1100 if(particle!="Hadron" )
1102 if(particle=="Pi0" || particle =="Eta")
1104 if(!particle.Contains("SS")) ana->SwitchOnPi0TriggerDecayCorr();
1105 else ana->SwitchOffPi0TriggerDecayCorr();
1106 ana->SwitchOffDecayTriggerDecayCorr();
1110 ana->SwitchOffPi0TriggerDecayCorr();
1111 ana->SwitchOnDecayTriggerDecayCorr(); // Make sure pi0 decay tagging runs before this task
1116 ana->SwitchOffPi0TriggerDecayCorr();
1117 ana->SwitchOffDecayTriggerDecayCorr();
1120 // if triggering on PHOS and EMCAL is on
1121 //if(kCalorimeter=="PHOS") ana->SwitchOnNeutralCorr();
1122 ana->SwitchOffNeutralCorr(); // Do only correlation with TPC
1124 ana->SwitchOffHMPIDCorrelation();
1126 ana->SwitchOffFillBradHistograms();
1129 ana->SwitchOffEventSelection();
1130 ana->SwitchOnSeveralUECalculation();
1131 ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
1132 ana->SetMultiBin(1);
1134 //Set Histograms name tag, bins and ranges
1136 ana->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_TM%d_",particle.Data(),bIsolated,kTM));
1137 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1139 if(particle=="Hadron" || particle.Contains("CTS"))
1141 ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
1142 ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
1147 if(kPrint) ana->Print("");
1153 //________________________________________
1154 AliAnaCalorimeterQA* ConfigureQAAnalysis()
1157 AliAnaCalorimeterQA *ana = new AliAnaCalorimeterQA();
1158 ana->SetDebug(kDebug); //10 for lots of messages
1159 ana->SetCalorimeter(kCalorimeter);
1161 ana->SetTimeCut(-1000,1000); // Open time cut
1163 // Study inter detector correlation (PHOS, EMCAL, Tracks, V0)
1164 if(kCalorimeter=="PHOS" && kTrig=="PHOS")
1165 ana->SwitchOnCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1166 if(kCalorimeter=="EMCAL" && kClusterArray=="")
1167 ana->SwitchOnCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
1169 ana->SwitchOffCorrelation();
1171 // Study exotic clusters PHOS and EMCAL
1172 if(kClusterArray=="") ana->SwitchOnStudyBadClusters() ;
1173 else ana->SwitchOffStudyBadClusters() ;
1176 ana->SwitchOffFiducialCut();
1177 ana->SwitchOffFillAllTH3Histogram();
1178 ana->SwitchOffFillAllPositionHistogram();
1179 ana->SwitchOffFillAllPositionHistogram2();
1180 if(!kExotic)ana->SwitchOnStudyBadClusters();
1181 else ana->SwitchOffStudyBadClusters();
1182 ana->SwitchOffStudyClustersAsymmetry();
1183 ana->SwitchOffStudyWeight();
1184 ana->SwitchOnFillAllTrackMatchingHistogram();
1186 if(kCalorimeter=="EMCAL")
1188 if (kYears==2010) ana->SetNumberOfModules(4);
1189 else if(kYears==2011) ana->SetNumberOfModules(10);
1190 else ana->SetNumberOfModules(12);
1194 ana->SetNumberOfModules(3);
1197 ana->AddToHistogramsName("QA_"); //Begining of histograms name
1198 SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
1202 if(kPrint) ana->Print("");
1208 //________________________________________________________
1209 void ConfigureMC(AliAnaCaloTrackCorrBaseClass* ana)
1211 if(kSimulation) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
1212 else ana->SwitchOffDataMC() ;
1214 //Set here generator name, default pythia
1215 //ana->GetMCAnalysisUtils()->SetMCGenerator("");
1218 //________________________________________________________
1219 void SetHistoRangeAndNBins (AliHistogramRanges* histoRanges)
1221 // Set common bins for all analysis and MC histograms filling
1223 histoRanges->SetHistoPtRangeAndNBins(0, 100, 200) ; // Energy and pt histograms
1225 if(kCalorimeter=="EMCAL")
1229 histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
1230 histoRanges->SetHistoXRangeAndNBins(-230,90,120); // QA
1231 histoRanges->SetHistoYRangeAndNBins(370,450,40); // QA
1233 else if(kYears==2011)
1235 histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
1236 histoRanges->SetHistoXRangeAndNBins(-600,90,200); // QA
1237 histoRanges->SetHistoYRangeAndNBins(100,450,100); // QA
1241 histoRanges->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 190*TMath::DegToRad(), 122) ;
1242 histoRanges->SetHistoXRangeAndNBins(-100,90,200); // QA
1243 histoRanges->SetHistoYRangeAndNBins(50,450,100); // QA
1246 histoRanges->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
1250 histoRanges->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 320*TMath::DegToRad(), 60) ;
1251 histoRanges->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
1254 histoRanges->SetHistoShowerShapeRangeAndNBins(-0.1, 4.9, 500);
1256 // Invariant mass histoRangeslysis
1257 histoRanges->SetHistoMassRangeAndNBins(0., 1., 200) ;
1258 histoRanges->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
1260 // check if time calibration is on
1261 histoRanges->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
1262 histoRanges->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
1264 // track-cluster residuals
1265 histoRanges->SetHistoTrackResidualEtaRangeAndNBins(-0.15,0.15,300);
1266 histoRanges->SetHistoTrackResidualPhiRangeAndNBins(-0.15,0.15,300);
1267 histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
1269 // QA, electron, charged
1270 histoRanges->SetHistoPOverERangeAndNBins(0,10.,100);
1271 histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
1274 histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
1275 histoRanges->SetHistoRatioRangeAndNBins(0.,2.,100);
1276 histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
1277 histoRanges->SetHistoNClusterCellRangeAndNBins(0,500,500);
1278 histoRanges->SetHistoZRangeAndNBins(-400,400,200);
1279 histoRanges->SetHistoRRangeAndNBins(400,450,25);
1280 histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
1281 histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
1282 histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);