1 #ifndef ALIANALYSISMUMU_H
2 #define ALIANALYSISMUMU_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 /// AliAnalysisMuMu : helper class to digest/plot/massage results from
11 /// AliAnalysisTaskMuMu
13 /// author : Laurent Aphecetche (Subatech)
15 #include "AliAnalysisMuMuBinning.h"
22 #include "RQ_OBJECT.h"
24 class AliAnalysisMuMuResult;
25 class AliAnalysisMuMuSpectra;
26 class AliCounterCollection;
27 class AliMergeableCollection;
34 class AliAnalysisMuMu : public TObject
37 RQ_OBJECT("AliAnalysisMuMu")
49 AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root",
50 const char* associatedSimFileName="");
52 virtual ~AliAnalysisMuMu();
55 void BasicCounts(Bool_t detailTrigger=kFALSE,
56 ULong64_t* totalNmb=0x0,
57 ULong64_t* totalNmsl=0x0,
58 ULong64_t* totalNmul=0x0);
60 static void BasicCountsEvolution(const char* filelist, Bool_t detailTrigger=kFALSE);
62 void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
63 Bool_t orderByTriggerCount=kTRUE);
66 /** Background evolution functions */
67 static TObjArray* ComputeBackgroundEvolution(const char* filelist, const char* triggerList,
69 const char* outputfile="background-evolution.root", const char* outputMode="UPDATE");
71 static void PlotBackgroundEvolution(const char* gfile, const char* triggerList, Double_t ymax=100.0, Bool_t fillBoundaries=kFALSE);
75 static TMap* ComputeJpsiEvolution(const char* filelist, const char* triggerList,
76 const char* outputFile="jpsi-evolution.root");
78 static void PlotJpsiEvolution(const char* resultFile, const char* triggerList, Bool_t fillBoundaries=kFALSE,
79 const char* efficiencyFile=0x0, Bool_t simulation=kFALSE);
82 AliAnalysisMuMuSpectra* FitParticle(const char* particle,
84 const char* eventType,
86 const char* centrality,
87 const AliAnalysisMuMuBinning& binning);
89 AliAnalysisMuMuSpectra* CorrectSpectra(const char* type, const char* flavour="");
91 AliAnalysisMuMuSpectra* ComputeYield(const char* type, const char* flavour="");
93 void CleanAllSpectra();
97 // static AliAnalysisMuMuSpectra* ComputeYield(const char* realFile="ds.list.saf.root",
98 // const char* simFile="ds.sim.list.saf.root",
99 // const char* type="PSI-Y VS PT");
101 static AliAnalysisMuMuSpectra* RABy(const char* realFile="ds.list.saf.root", const char* simFile="ds.sim.list.saf.root", const char* type="", const char* direction="pPb");
103 static TGraph* ResultEvolution(const char* runlist, const char* period="LHC13f", const char* what="Y",
104 Bool_t forceRecomputation=kFALSE);
108 TGraph* PlotEventSelectionEvolution(const char* trigger1="CINT7-B-NOPF-MUON", const char* event1="PSALL",
109 const char* trigger2="CINT7-B-NOPF-MUON", const char* event2="PSALL",
110 Bool_t drawFills=kFALSE,
111 Bool_t asRejection=kTRUE) const;
115 static Bool_t Upgrade(const char* filename);
117 static void CentralityCheck(const char* filelist);
119 static TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
120 const char* backgroundresults="background.lhc11d.root");
122 static TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
123 const char* simjpsiresults="results.sim.root");
125 static Bool_t DecodeFileName(const char* filename, TString& period, int& esdpass, int& aodtrain, int& runnumber);
128 static TFile* FileOpen(const char* file);
131 static Bool_t GetCollections(const char* rootfile,
132 AliMergeableCollection*& mc,
133 AliCounterCollection*& cc,
134 AliAnalysisMuMuBinning*& bin,
135 std::set<int>& runnumbers);
137 AliAnalysisMuMuSpectra* GetSpectra(const char* what, const char* flavour="") const;
139 static UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
141 static ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
143 Int_t Jpsi(const char* what="integrated", const char* binningFlavour="");
145 Bool_t IsSimulation() const;
147 static TObjArray* ReadFileList(const char* filelist);
149 static Int_t RunNumberFromFileName(const char* filename);
151 TString DimuonTriggerList() const { return fDimuonTriggers; }
152 void SetDimuonTriggerList(const char* dimuonTriggerList) { fDimuonTriggers = dimuonTriggerList; }
154 TString MuonTriggerList() const { return fMuonTriggers; }
155 void SetMuonTriggerList(const char* muonTriggerList) { fMuonTriggers = muonTriggerList; }
157 TString MinbiasTriggerList() const { return fMinbiasTriggers; }
158 void SetMinbiasTriggerList(const char* minbiasTriggerList) { fMinbiasTriggers = minbiasTriggerList; }
160 TString EventSelectionList() const { return fEventSelectionList; }
161 void SetEventSelectionList(const char* eventSelectionList) { fEventSelectionList = eventSelectionList; }
163 TString PairSelectionList() const { return fPairSelectionList; }
164 void SetPairSelectionList(const char* pairSelectionList) { fPairSelectionList = pairSelectionList; }
166 TString CentralitySelectionList() const { return fCentralitySelectionList; }
167 void SetCentralitySelectionList(const char* centralitySelectionList) { fCentralitySelectionList = centralitySelectionList; }
169 TString FitTypeList() const { return fFitTypeList; }
170 void SetFitTypeList(const char* fitTypelist) { fFitTypeList = fitTypelist; }
172 static void SetDefaultDimuonTriggerList(const char* dimuonTriggerList) { fgDefaultDimuonTriggers = dimuonTriggerList; }
173 static void SetDefaultMuonTriggerList(const char* muonTriggerList) { fgDefaultMuonTriggers = muonTriggerList; }
174 static void SetDefaultMinbiasTriggerList(const char* minbiasTriggerList) { fgDefaultMinbiasTriggers = minbiasTriggerList; }
175 static void SetDefaultEventSelectionList(const char* eventSelectionList) { fgDefaultEventSelectionList = eventSelectionList; }
176 static void SetDefaultPairSelectionList(const char* pairSelectionList) { fgDefaultPairSelectionList = pairSelectionList; }
177 static void SetDefaultCentralitySelectionList(const char* centralitySelectionList) { fgDefaultCentralitySelectionList = centralitySelectionList; }
178 static void SetDefaultFitTypes(const char* fitTypes) { fgDefaultFitTypeList = fitTypes; }
180 static void SetDefaultEventSelectionForSimulations(const char* value) { fgDefaultEventSelectionForSimulations = value; }
181 static void SetDefaultDimuonTriggerForSimulations(const char* value) { fgDefaultDimuonTriggerForSimulations = value; }
183 AliMergeableCollection* MC() const { return fMergeableCollection; }
184 AliCounterCollection* CC() const { return fCounterCollection; }
185 AliAnalysisMuMuBinning* BIN() const { return fBinning; }
187 static void SetOCDBPath(const char* ocdbPath) { fgOCDBPath = ocdbPath; }
189 static void SetColorScheme();
191 static void SetCompactGraphs(Bool_t value=kTRUE) { fgIsCompactGraphs = value; }
193 static Bool_t CompactGraphs() { return fgIsCompactGraphs; }
195 static void Compact(TGraph& g);
197 void Print(Option_t* opt="") const;
199 void GetMBR(Int_t runNumber, const char* eventSelection, Double_t& value, Double_t& error) const;
201 TGraph* MBREvolution(const char* eventSelection1="PSALLNOTZEROPILEUP", const char* eventSelection2="PSALL") const;
203 const std::set<int>& RunNumbers() const { return fRunNumbers; }
205 void DrawMinv(const char* type,
206 const char* particle,
208 const char* eventType,
210 const char* centrality,
211 const char* subresultname="",
212 const char* flavour="") const;
214 void DrawMinv(const char* type="PT", const char* particle="PSI", const char* flavour="", const char* subresultname="") const;
216 Bool_t SetCorrectionPerRun(const TGraph& corr, const char* formula="");
218 void UnsetCorrectionPerRun();
220 void ExecuteCanvasEvent(Int_t event, Int_t px, Int_t py, TObject *sel);
222 std::vector<Double_t> GetMCCB2Tails(const AliAnalysisMuMuBinning::Range& bin) const;
224 AliAnalysisMuMu* SIM() const { return fAssociatedSimulation; }
226 AliAnalysisMuMuSpectra* SPECTRA(const char* fullpath) const;
231 AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
232 AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
234 TFile* ReOpen(const char* filename, const char* mode) const;
236 TString First(const TString& list) const;
240 void SetNofInputParticles(AliAnalysisMuMuResult& r);
242 static TString ExpandPathName(const char* file);
245 TString fFilename; // file containing the result collections (of objects and counters) from AliAnalysisTaskMuMu
246 AliCounterCollection* fCounterCollection; // collection of counters in file
247 TString fDimuonTriggers; // list of dimuon triggers to consider
248 TString fMuonTriggers; // list of single muon triggers to consider
249 TString fMinbiasTriggers; // list of minbias triggers to consider
250 TString fEventSelectionList; // list of event types to consider
251 TString fPairSelectionList; // list of pair cuts to consider
252 TString fCentralitySelectionList; // list of centrality cuts to consider
253 TString fFitTypeList; // list of fit types to perform
255 AliAnalysisMuMuBinning* fBinning; // binning
257 static TString fgOCDBPath; // OCDB to be used (raw:// by default)
259 static TString fgDefaultMuonTriggers; // default list of single muon triggers
260 static TString fgDefaultMinbiasTriggers; // default list of MB triggers
261 static TString fgDefaultDimuonTriggers; // default list of dimuon triggers
262 static TString fgDefaultEventSelectionList; // default list of event selections
263 static TString fgDefaultPairSelectionList; // default list of pair selections
264 static TString fgDefaultCentralitySelectionList; // default list of centrality selections
265 static TString fgDefaultFitTypeList; // default list of fit types
266 static TString fgDefaultEventSelectionForSimulations; // default event selection (simulations)
267 static TString fgDefaultDimuonTriggerForSimulations; // default dimuon trigger (simulations)
269 static Bool_t fgIsCompactGraphs; // whether the graph produced should be compact
271 AliMergeableCollection* fMergeableCollection; // collection of objects in file
273 std::set<int> fRunNumbers; // run numbers
275 TGraph* fCorrectionPerRun; // correction factor per run
277 AliAnalysisMuMu* fAssociatedSimulation; // associated simulations (if any)
279 ClassDef(AliAnalysisMuMu,11) // class to analysis results from AliAnalysisTaskMuMuXXX tasks