]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muondep/AliAnalysisMuMu.h
fbd0ddd77bab58371c209dcc9309e114f5976dae
[u/mrichter/AliRoot.git] / PWG / muondep / AliAnalysisMuMu.h
1 #ifndef ALIANALYSISMUMU_H
2 #define ALIANALYSISMUMU_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 ///
10 /// AliAnalysisMuMu : helper class to digest/plot/massage results from
11 /// AliAnalysisTaskMuMu
12 ///
13 /// author : Laurent Aphecetche (Subatech)
14
15 #include "AliAnalysisMuMuBinning.h"
16 #include "TNamed.h"
17 #include <map>
18 #include <set>
19 #include <string>
20 #include <TString.h>
21 #include <vector>
22
23 class AliAnalysisMuMuResult;
24 class AliAnalysisMuMuSpectra;
25 class AliCounterCollection;
26 class AliMergeableCollection;
27 class TF1;
28 class TFile;
29 class TGraph;
30 class TH1;
31 class TMap;
32
33 class AliAnalysisMuMu : public TObject
34 {
35   
36 public:
37   
38   enum EColor {
39     kBlue=1500,
40     kOrange=1501,
41     kGreen=1502
42   };
43   
44   AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root");
45   virtual ~AliAnalysisMuMu();
46   
47   /* Basic checks */
48   void BasicCounts(Bool_t detailTrigger=kFALSE,
49                    ULong64_t* totalNmb=0x0,
50                    ULong64_t* totalNmsl=0x0,
51                    ULong64_t* totalNmul=0x0);
52   
53   static void BasicCountsEvolution(const char* filelist, Bool_t detailTrigger=kFALSE);
54   
55   void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
56                             Bool_t orderByTriggerCount=kTRUE);
57   
58   
59   /** Background evolution functions */
60   static TObjArray* ComputeBackgroundEvolution(const char* filelist, const char* triggerList,
61                                                Double_t ptmin=0.0,
62                                                const char* outputfile="background-evolution.root", const char* outputMode="UPDATE");
63   
64   static void PlotBackgroundEvolution(const char* gfile, const char* triggerList, Double_t ymax=100.0, Bool_t fillBoundaries=kFALSE);
65   
66   
67   /** Fitting */
68   static TMap* ComputeJpsiEvolution(const char* filelist, const char* triggerList,
69                                     const char* outputFile="jpsi-evolution.root");
70   
71   static void PlotJpsiEvolution(const char* resultFile, const char* triggerList, Bool_t fillBoundaries=kFALSE,
72                                 const char* efficiencyFile=0x0, Bool_t simulation=kFALSE);
73   
74   
75   AliAnalysisMuMuSpectra* FitParticle(const char* particle,
76                                       const char* trigger,
77                                       const char* eventType,
78                                       const char* pairCut,
79                                       const char* centrality,
80                                       const AliAnalysisMuMuBinning& binning);
81
82   ///------
83   
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");
85
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");
87
88   static TGraph* ResultEvolution(const char* runlist, const char* period="LHC13f", const char* what="Y",
89                                  Bool_t forceRecomputation=kFALSE);
90   
91   ///-------
92   
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;
97
98   Bool_t Upgrade();
99   
100   static Bool_t Upgrade(const char* filename);
101   
102   static void CentralityCheck(const char* filelist);
103   
104   static TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
105                                                      const char* backgroundresults="background.lhc11d.root");
106   
107   static TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
108                                             const char* simjpsiresults="results.sim.root");
109   
110   static Bool_t DecodeFileName(const char* filename, TString& period, int& esdpass, int& aodtrain, int& runnumber);
111   
112   
113   static TFile* FileOpen(const char* file);
114   
115   
116   static Bool_t GetCollections(const char* rootfile,
117                                AliMergeableCollection*& mc,
118                                AliCounterCollection*& cc,
119                                AliAnalysisMuMuBinning*& bin,
120                                std::set<int>& runnumbers);
121   
122   static UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
123   
124   static ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
125   
126   Int_t Jpsi(const char* what="");
127   
128   Bool_t IsSimulation() const;
129   
130   static TObjArray* ReadFileList(const char* filelist);
131   
132   static Int_t RunNumberFromFileName(const char* filename);
133   
134   TString DimuonTriggerList() const { return fDimuonTriggers; }
135   void SetDimuonTriggerList(const char* dimuonTriggerList) { fDimuonTriggers = dimuonTriggerList; }
136
137   TString MuonTriggerList() const { return fMuonTriggers; }
138   void SetMuonTriggerList(const char* muonTriggerList) { fMuonTriggers = muonTriggerList; }
139
140   TString MinbiasTriggerList() const { return fMinbiasTriggers; }
141   void SetMinbiasTriggerList(const char* minbiasTriggerList) { fMinbiasTriggers = minbiasTriggerList; }
142   
143   TString EventSelectionList() const { return fEventSelectionList; }
144   void SetEventSelectionList(const char* eventSelectionList) { fEventSelectionList = eventSelectionList; }
145   
146   TString PairSelectionList() const { return fPairSelectionList; }
147   void SetPairSelectionList(const char* pairSelectionList) { fPairSelectionList = pairSelectionList; }
148
149   TString CentralitySelectionList() const { return fCentralitySelectionList; }
150   void SetCentralitySelectionList(const char* centralitySelectionList) { fCentralitySelectionList = centralitySelectionList; }
151
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; }
158   
159   
160   AliMergeableCollection* MC() const { return fMergeableCollection; }
161   AliCounterCollection* CC() const { return fCounterCollection; }
162   AliAnalysisMuMuBinning* BIN() const { return fBinning; }
163   
164   static void SetOCDBPath(const char* ocdbPath) { fgOCDBPath = ocdbPath; }
165   
166   static void SetColorScheme();
167   
168   static void SetCompactGraphs(Bool_t value=kTRUE) { fgIsCompactGraphs = value; }
169   
170   static Bool_t CompactGraphs() { return fgIsCompactGraphs; }
171   
172   static void Compact(TGraph& g);
173   
174   void Print(Option_t* opt="") const;
175   
176   void GetMBR(Int_t runNumber, const char* eventSelection, Double_t& value, Double_t& error) const;
177
178   TGraph* MBREvolution(const char* eventSelection1="PSALLNOTZEROPILEUP", const char* eventSelection2="PSALL") const;
179
180   const std::set<int>& RunNumbers() const { return fRunNumbers; }
181   
182   void DrawMinv(const char* type,
183                 const char* particle,
184                 const char* trigger,
185                 const char* eventType,
186                 const char* pairCut,
187                 const char* centrality) const;
188
189   void DrawMinv(const char* type="PT", const char* particle="PSI") const;
190   
191   Bool_t SetCorrectionPerRun(const TGraph& corr);
192   
193   void UnsetCorrectionPerRun();
194   
195 private:
196   AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
197   AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
198   
199   TFile* ReOpen(const char* filename, const char* mode) const;
200
201   TString First(const TString& list) const;
202   
203 private:
204
205   void SetNofInputParticles(AliAnalysisMuMuResult& r);
206
207   static TString ExpandPathName(const char* file);
208   
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
217   
218   AliAnalysisMuMuBinning* fBinning; // binning
219   
220   static TString fgOCDBPath; // OCDB to be used (raw:// by default)
221   
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
228   
229   static Bool_t fgIsCompactGraphs; // whether the graph produced should be compact
230   
231   AliMergeableCollection* fMergeableCollection; // collection of objects in file
232
233   std::set<int> fRunNumbers; // run numbers
234   
235   TGraph* fCorrectionPerRun; // correction factor per run
236   
237   ClassDef(AliAnalysisMuMu,10) // class to analysis results from AliAnalysisTaskMuMuXXX tasks
238 };
239
240 #endif