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"
23 class AliAnalysisMuMuResult;
24 class AliAnalysisMuMuSpectra;
25 class AliCounterCollection;
26 class AliMergeableCollection;
33 class AliAnalysisMuMu : public TObject
44 AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root");
45 virtual ~AliAnalysisMuMu();
48 void BasicCounts(Bool_t detailTrigger=kFALSE,
49 ULong64_t* totalNmb=0x0,
50 ULong64_t* totalNmsl=0x0,
51 ULong64_t* totalNmul=0x0);
53 static void BasicCountsEvolution(const char* filelist, Bool_t detailTrigger=kFALSE);
55 void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
56 Bool_t orderByTriggerCount=kTRUE);
59 /** Background evolution functions */
60 static TObjArray* ComputeBackgroundEvolution(const char* filelist, const char* triggerList,
62 const char* outputfile="background-evolution.root", const char* outputMode="UPDATE");
64 static void PlotBackgroundEvolution(const char* gfile, const char* triggerList, Double_t ymax=100.0, Bool_t fillBoundaries=kFALSE);
68 static TMap* ComputeJpsiEvolution(const char* filelist, const char* triggerList,
69 const char* outputFile="jpsi-evolution.root");
71 static void PlotJpsiEvolution(const char* resultFile, const char* triggerList, Bool_t fillBoundaries=kFALSE,
72 const char* efficiencyFile=0x0, Bool_t simulation=kFALSE);
75 AliAnalysisMuMuSpectra* FitParticle(const char* particle,
77 const char* eventType,
79 const char* centrality,
80 const AliAnalysisMuMuBinning& binning);
84 static AliAnalysisMuMuSpectra* CorrectSpectra(const char* realFile="ds.list.saf.root", const char* simFile="ds.sim.list.saf.root", const char* particle="Jpsi", const char* type="PSI-PT");
86 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");
88 static TGraph* ResultEvolution(const char* runlist, const char* period="LHC13f", const char* what="Y",
89 Bool_t forceRecomputation=kFALSE);
93 TGraph* PlotEventSelectionEvolution(const char* trigger1="CINT7-B-NOPF-MUON", const char* event1="PSALL",
94 const char* trigger2="CINT7-B-NOPF-MUON", const char* event2="PSALL",
95 Bool_t drawFills=kFALSE,
96 Bool_t asRejection=kTRUE) const;
100 static Bool_t Upgrade(const char* filename);
102 static void CentralityCheck(const char* filelist);
104 static TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
105 const char* backgroundresults="background.lhc11d.root");
107 static TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
108 const char* simjpsiresults="results.sim.root");
110 static Bool_t DecodeFileName(const char* filename, TString& period, int& esdpass, int& aodtrain, int& runnumber);
113 static TFile* FileOpen(const char* file);
116 static Bool_t GetCollections(const char* rootfile,
117 AliMergeableCollection*& mc,
118 AliCounterCollection*& cc,
119 AliAnalysisMuMuBinning*& bin,
120 std::set<int>& runnumbers);
122 static UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
124 static ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
126 Int_t Jpsi(const char* what="");
128 Bool_t IsSimulation() const;
130 static TObjArray* ReadFileList(const char* filelist);
132 static Int_t RunNumberFromFileName(const char* filename);
134 TString DimuonTriggerList() const { return fDimuonTriggers; }
135 void SetDimuonTriggerList(const char* dimuonTriggerList) { fDimuonTriggers = dimuonTriggerList; }
137 TString MuonTriggerList() const { return fMuonTriggers; }
138 void SetMuonTriggerList(const char* muonTriggerList) { fMuonTriggers = muonTriggerList; }
140 TString MinbiasTriggerList() const { return fMinbiasTriggers; }
141 void SetMinbiasTriggerList(const char* minbiasTriggerList) { fMinbiasTriggers = minbiasTriggerList; }
143 TString EventSelectionList() const { return fEventSelectionList; }
144 void SetEventSelectionList(const char* eventSelectionList) { fEventSelectionList = eventSelectionList; }
146 TString PairSelectionList() const { return fPairSelectionList; }
147 void SetPairSelectionList(const char* pairSelectionList) { fPairSelectionList = pairSelectionList; }
149 TString CentralitySelectionList() const { return fCentralitySelectionList; }
150 void SetCentralitySelectionList(const char* centralitySelectionList) { fCentralitySelectionList = centralitySelectionList; }
152 static void SetDefaultDimuonTriggerList(const char* dimuonTriggerList) { fgDefaultDimuonTriggers = dimuonTriggerList; }
153 static void SetDefaultMuonTriggerList(const char* muonTriggerList) { fgDefaultMuonTriggers = muonTriggerList; }
154 static void SetDefaultMinbiasTriggerList(const char* minbiasTriggerList) { fgDefaultMinbiasTriggers = minbiasTriggerList; }
155 static void SetDefaultEventSelectionList(const char* eventSelectionList) { fgDefaultEventSelectionList = eventSelectionList; }
156 static void SetDefaultPairSelectionList(const char* pairSelectionList) { fgDefaultPairSelectionList = pairSelectionList; }
157 static void SetDefaultCentralitySelectionList(const char* centralitySelectionList) { fgDefaultCentralitySelectionList = centralitySelectionList; }
160 AliMergeableCollection* MC() const { return fMergeableCollection; }
161 AliCounterCollection* CC() const { return fCounterCollection; }
162 AliAnalysisMuMuBinning* BIN() const { return fBinning; }
164 static void SetOCDBPath(const char* ocdbPath) { fgOCDBPath = ocdbPath; }
166 static void SetColorScheme();
168 static void SetCompactGraphs(Bool_t value=kTRUE) { fgIsCompactGraphs = value; }
170 static Bool_t CompactGraphs() { return fgIsCompactGraphs; }
172 static void Compact(TGraph& g);
174 void Print(Option_t* opt="") const;
176 void GetMBR(Int_t runNumber, const char* eventSelection, Double_t& value, Double_t& error) const;
178 TGraph* MBREvolution(const char* eventSelection1="PSALLNOTZEROPILEUP", const char* eventSelection2="PSALL") const;
180 const std::set<int>& RunNumbers() const { return fRunNumbers; }
182 void DrawMinv(const char* type,
183 const char* particle,
185 const char* eventType,
187 const char* centrality) const;
189 void DrawMinv(const char* type="PT", const char* particle="PSI") const;
191 Bool_t SetCorrectionPerRun(const TGraph& corr);
193 void UnsetCorrectionPerRun();
196 AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
197 AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
199 TFile* ReOpen(const char* filename, const char* mode) const;
201 TString First(const TString& list) const;
205 void SetNofInputParticles(AliAnalysisMuMuResult& r);
207 static TString ExpandPathName(const char* file);
209 TString fFilename; // file containing the result collections (of objects and counters) from AliAnalysisTaskMuMu
210 AliCounterCollection* fCounterCollection; // collection of counters in file
211 TString fDimuonTriggers; // list of dimuon triggers to consider
212 TString fMuonTriggers; // list of single muon triggers to consider
213 TString fMinbiasTriggers; // list of minbias triggers to consider
214 TString fEventSelectionList; // list of event types to consider
215 TString fPairSelectionList; // list of pair cuts to consider
216 TString fCentralitySelectionList; // list of centrality cuts to consider
218 AliAnalysisMuMuBinning* fBinning; // binning
220 static TString fgOCDBPath; // OCDB to be used (raw:// by default)
222 static TString fgDefaultMuonTriggers; // default list of single muon triggers
223 static TString fgDefaultMinbiasTriggers; // default list of MB triggers
224 static TString fgDefaultDimuonTriggers; // default list of dimuon triggers
225 static TString fgDefaultEventSelectionList; // default list of event selections
226 static TString fgDefaultPairSelectionList; // default list of pair selections
227 static TString fgDefaultCentralitySelectionList; // default list of centrality selections
229 static Bool_t fgIsCompactGraphs; // whether the graph produced should be compact
231 AliMergeableCollection* fMergeableCollection; // collection of objects in file
233 std::set<int> fRunNumbers; // run numbers
235 TGraph* fCorrectionPerRun; // correction factor per run
237 ClassDef(AliAnalysisMuMu,10) // class to analysis results from AliAnalysisTaskMuMuXXX tasks