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 AliAnalysisMuMuJpsiResult;
26 class AliAnalysisMuMuSpectra;
27 class AliCounterCollection;
28 class AliMergeableCollection;
36 class AliAnalysisMuMu : public TObject, public TQObject
48 AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root",
49 const char* associatedSimFileName="");
51 virtual ~AliAnalysisMuMu();
54 void BasicCounts(Bool_t detailTrigger=kFALSE,
55 ULong64_t* totalNmb=0x0,
56 ULong64_t* totalNmsl=0x0,
57 ULong64_t* totalNmul=0x0);
59 static void BasicCountsEvolution(const char* filelist, Bool_t detailTrigger=kFALSE);
61 void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
62 Bool_t orderByTriggerCount=kTRUE);
65 /** Background evolution functions */
66 static TObjArray* ComputeBackgroundEvolution(const char* filelist, const char* triggerList,
68 const char* outputfile="background-evolution.root", const char* outputMode="UPDATE");
70 static void PlotBackgroundEvolution(const char* gfile, const char* triggerList, Double_t ymax=100.0, Bool_t fillBoundaries=kFALSE);
74 static TMap* ComputeJpsiEvolution(const char* filelist, const char* triggerList,
75 const char* outputFile="jpsi-evolution.root");
77 static void PlotJpsiEvolution(const char* resultFile, const char* triggerList, Bool_t fillBoundaries=kFALSE,
78 const char* efficiencyFile=0x0, Bool_t simulation=kFALSE);
81 AliAnalysisMuMuSpectra* FitParticle(const char* particle,
83 const char* eventType,
85 const char* centrality,
86 const AliAnalysisMuMuBinning& binning);
88 AliAnalysisMuMuSpectra* CorrectSpectra(const char* type, const char* flavour="");
92 void TwikiOutputFnorm(const char* series="FnormOffline2PUPS,FnormScalersPUPS,FnormBest2,RelDifFnormScalersPUPSvsFnormOffline2PUPS") const;
94 static void FigureOutputFnorm(const char* filelist);
96 static void LatexOutputFnorm(const char* filelist, const char* subresultnames="FnormOffline2PUPS,FnormScalersPUPS,FnormBest2,RelDifFnormScalersPUPSvsFnormOffline2PUPS", Bool_t rms=kFALSE);
98 AliAnalysisMuMuSpectra* ComputeYield(const char* type, const char* flavour="");
100 void CleanAllSpectra();
104 // static AliAnalysisMuMuSpectra* ComputeYield(const char* realFile="ds.list.saf.root",
105 // const char* simFile="ds.sim.list.saf.root",
106 // const char* type="PSI-Y VS PT");
108 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");
110 static TGraph* ResultEvolution(const char* runlist,
111 const char* realPrefix="LHC13f_muon_calo_AODMUON127",
112 const char* simPrefix="SIM_JPSI_LHC13f_CynthiaTuneWithRejectList",
113 const char* what="Y",
114 Bool_t forceRecomputation=kFALSE);
116 static void ComputeJpsi(const char* runlist, const char* prefix="SIM_JPSI_LHC13f_CynthiaTuneWithRejectList", const char* what="integrated", const char* binningFlavour="");
118 static AliAnalysisMuMuSpectra* CombineSpectra(const char* runlist,
119 const char* realPrefix="LHC13f_muon_calo_AODMUON127",
120 const char* simPrefix="SIM_JPSI_LHC13f_CynthiaTuneWithRejectList",
121 const char* quantity="AccEff",
122 const char* variable="INTEGRATED",
123 const char* binningFlavour="");
126 TGraph* PlotEventSelectionEvolution(const char* trigger1="CINT7-B-NOPF-MUON", const char* event1="PSALL",
127 const char* trigger2="CINT7-B-NOPF-MUON", const char* event2="PSALL",
128 Bool_t drawFills=kFALSE,
129 Bool_t asRejection=kTRUE) const;
133 static Bool_t Upgrade(const char* filename);
135 static void CentralityCheck(const char* filelist);
137 static TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
138 const char* backgroundresults="background.lhc11d.root");
140 static TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
141 const char* simjpsiresults="results.sim.root");
143 static Bool_t DecodeFileName(const char* filename, TString& period, int& esdpass, int& aodtrain, int& runnumber);
146 static TFile* FileOpen(const char* file);
149 static Bool_t GetCollections(const char* rootfile,
150 AliMergeableCollection*& mc,
151 AliCounterCollection*& cc,
152 AliAnalysisMuMuBinning*& bin,
153 std::set<int>& runnumbers);
155 AliAnalysisMuMuSpectra* GetSpectra(const char* what, const char* flavour="") const;
157 static UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
159 static ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
161 Int_t Jpsi(const char* what="integrated", const char* binningFlavour="");
163 Bool_t IsSimulation() const;
165 static TObjArray* ReadFileList(const char* filelist);
167 static Int_t RunNumberFromFileName(const char* filename);
169 TString DimuonTriggerList() const { return fDimuonTriggers; }
170 void SetDimuonTriggerList(const char* dimuonTriggerList) { fDimuonTriggers = dimuonTriggerList; }
172 TString MuonTriggerList() const { return fMuonTriggers; }
173 void SetMuonTriggerList(const char* muonTriggerList) { fMuonTriggers = muonTriggerList; }
175 TString MinbiasTriggerList() const { return fMinbiasTriggers; }
176 void SetMinbiasTriggerList(const char* minbiasTriggerList) { fMinbiasTriggers = minbiasTriggerList; }
178 TString EventSelectionList() const { return fEventSelectionList; }
179 void SetEventSelectionList(const char* eventSelectionList) { fEventSelectionList = eventSelectionList; }
181 TString PairSelectionList() const { return fPairSelectionList; }
182 void SetPairSelectionList(const char* pairSelectionList) { fPairSelectionList = pairSelectionList; }
184 TString CentralitySelectionList() const { return fCentralitySelectionList; }
185 void SetCentralitySelectionList(const char* centralitySelectionList) { fCentralitySelectionList = centralitySelectionList; }
187 TString FitTypeList() const { return fFitTypeList; }
188 void SetFitTypeList(const char* fitTypelist) { fFitTypeList = fitTypelist; }
190 static void SetDefaultDimuonTriggerList(const char* dimuonTriggerList) { fgDefaultDimuonTriggers = dimuonTriggerList; }
191 static void SetDefaultMuonTriggerList(const char* muonTriggerList) { fgDefaultMuonTriggers = muonTriggerList; }
192 static void SetDefaultMinbiasTriggerList(const char* minbiasTriggerList) { fgDefaultMinbiasTriggers = minbiasTriggerList; }
193 static void SetDefaultEventSelectionList(const char* eventSelectionList) { fgDefaultEventSelectionList = eventSelectionList; }
194 static void SetDefaultPairSelectionList(const char* pairSelectionList) { fgDefaultPairSelectionList = pairSelectionList; }
195 static void SetDefaultCentralitySelectionList(const char* centralitySelectionList) { fgDefaultCentralitySelectionList = centralitySelectionList; }
196 static void SetDefaultFitTypes(const char* fitTypes) { fgDefaultFitTypeList = fitTypes; }
198 static void SetDefaultEventSelectionForSimulations(const char* value) { fgDefaultEventSelectionForSimulations = value; }
199 static void SetDefaultDimuonTriggerForSimulations(const char* value) { fgDefaultDimuonTriggerForSimulations = value; }
201 AliMergeableCollection* MC() const { return fMergeableCollection; }
202 AliCounterCollection* CC() const { return fCounterCollection; }
203 AliAnalysisMuMuBinning* BIN() const { return fBinning; }
205 static void SetOCDBPath(const char* ocdbPath) { fgOCDBPath = ocdbPath; }
207 static void SetColorScheme();
209 static void SetCompactGraphs(Bool_t value=kTRUE) { fgIsCompactGraphs = value; }
211 static Bool_t CompactGraphs() { return fgIsCompactGraphs; }
213 void Print(Option_t* opt="") const;
215 const std::set<int>& RunNumbers() const { return fRunNumbers; }
217 void DrawMinv(const char* type,
218 const char* particle,
220 const char* eventType,
222 const char* centrality,
223 const char* subresultname="",
224 const char* flavour="") const;
226 void DrawMinv(const char* type="PT", const char* particle="PSI", const char* flavour="", const char* subresultname="") const;
228 Bool_t SetCorrectionPerRun(const TGraph& corr, const char* formula="");
230 void UnsetCorrectionPerRun();
232 void ExecuteCanvasEvent(Int_t event, Int_t px, Int_t py, TObject *sel);
234 std::vector<Double_t> GetMCCB2Tails(const AliAnalysisMuMuBinning::Range& bin) const;
236 AliAnalysisMuMu* SIM() const { return fAssociatedSimulation; }
238 AliAnalysisMuMuSpectra* SPECTRA(const char* fullpath) const;
243 AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
244 AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
246 TFile* ReOpen(const char* filename, const char* mode) const;
248 TString First(const TString& list) const;
252 void SetNofInputParticles(AliAnalysisMuMuJpsiResult& r);
254 static TString ExpandPathName(const char* file);
257 TString fFilename; // file containing the result collections (of objects and counters) from AliAnalysisTaskMuMu
258 AliCounterCollection* fCounterCollection; // collection of counters in file
259 TString fDimuonTriggers; // list of dimuon triggers to consider
260 TString fMuonTriggers; // list of single muon triggers to consider
261 TString fMinbiasTriggers; // list of minbias triggers to consider
262 TString fEventSelectionList; // list of event types to consider
263 TString fPairSelectionList; // list of pair cuts to consider
264 TString fCentralitySelectionList; // list of centrality cuts to consider
265 TString fFitTypeList; // list of fit types to perform
267 AliAnalysisMuMuBinning* fBinning; // binning
269 static TString fgOCDBPath; // OCDB to be used (raw:// by default)
271 static TString fgDefaultMuonTriggers; // default list of single muon triggers
272 static TString fgDefaultMinbiasTriggers; // default list of MB triggers
273 static TString fgDefaultDimuonTriggers; // default list of dimuon triggers
274 static TString fgDefaultEventSelectionList; // default list of event selections
275 static TString fgDefaultPairSelectionList; // default list of pair selections
276 static TString fgDefaultCentralitySelectionList; // default list of centrality selections
277 static TString fgDefaultFitTypeList; // default list of fit types
278 static TString fgDefaultEventSelectionForSimulations; // default event selection (simulations)
279 static TString fgDefaultDimuonTriggerForSimulations; // default dimuon trigger (simulations)
281 static Bool_t fgIsCompactGraphs; // whether the graph produced should be compact
283 AliMergeableCollection* fMergeableCollection; // collection of objects in file
285 std::set<int> fRunNumbers; // run numbers
287 TGraph* fCorrectionPerRun; // correction factor per run
289 AliAnalysisMuMu* fAssociatedSimulation; // associated simulations (if any)
291 ClassDef(AliAnalysisMuMu,11) // class to analysis results from AliAnalysisTaskMuMuXXX tasks