]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muondep/AliAnalysisMuMu.h
increase classdef - Marta
[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 #include "RQ_OBJECT.h"
23
24 class AliAnalysisMuMuResult;
25 class AliAnalysisMuMuJpsiResult;
26 class AliAnalysisMuMuSpectra;
27 class AliCounterCollection;
28 class AliMergeableCollection;
29 class TF1;
30 class TFile;
31 class TGraph;
32 class TGraphErrors;
33 class TH1;
34 class TMap;
35
36 class AliAnalysisMuMu : public TObject, public TQObject
37 {
38
39 public:
40   
41   enum EColor
42   {
43     kBlue=1500,
44     kOrange=1501,
45     kGreen=1502
46   };
47   
48   AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root",
49                   const char* associatedSimFileName="");
50   
51   virtual ~AliAnalysisMuMu();
52   
53   /* Basic checks */
54   void BasicCounts(Bool_t detailTrigger=kFALSE,
55                    ULong64_t* totalNmb=0x0,
56                    ULong64_t* totalNmsl=0x0,
57                    ULong64_t* totalNmul=0x0);
58   
59   static void BasicCountsEvolution(const char* filelist, Bool_t detailTrigger=kFALSE);
60   
61   void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
62                             Bool_t orderByTriggerCount=kTRUE);
63   
64   
65   /** Background evolution functions */
66   static TObjArray* ComputeBackgroundEvolution(const char* filelist, const char* triggerList,
67                                                Double_t ptmin=0.0,
68                                                const char* outputfile="background-evolution.root", const char* outputMode="UPDATE");
69   
70   static void PlotBackgroundEvolution(const char* gfile, const char* triggerList, Double_t ymax=100.0, Bool_t fillBoundaries=kFALSE);
71   
72   
73   /** Fitting */
74   static TMap* ComputeJpsiEvolution(const char* filelist, const char* triggerList,
75                                     const char* outputFile="jpsi-evolution.root");
76   
77   static void PlotJpsiEvolution(const char* resultFile, const char* triggerList, Bool_t fillBoundaries=kFALSE,
78                                 const char* efficiencyFile=0x0, Bool_t simulation=kFALSE);
79   
80   
81   AliAnalysisMuMuSpectra* FitParticle(const char* particle,
82                                       const char* trigger,
83                                       const char* eventType,
84                                       const char* pairCut,
85                                       const char* centrality,
86                                       const AliAnalysisMuMuBinning& binning);
87
88   AliAnalysisMuMuSpectra* CorrectSpectra(const char* type, const char* flavour="");
89
90   void ComputeFnorm();
91
92   void TwikiOutputFnorm(const char* series="FnormOffline2PUPS,FnormScalersPUPS,FnormBest2,RelDifFnormScalersPUPSvsFnormOffline2PUPS") const;
93
94   static void FigureOutputFnorm(const char* filelist);
95   
96   static void LatexOutputFnorm(const char* filelist, const char* subresultnames="FnormOffline2PUPS,FnormScalersPUPS,FnormBest2,RelDifFnormScalersPUPSvsFnormOffline2PUPS", Bool_t rms=kFALSE);
97   
98   AliAnalysisMuMuSpectra* ComputeYield(const char* type, const char* flavour="");
99
100   void CleanAllSpectra();
101   
102   ///------
103   
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");
107
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");
109
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);
115   
116   static void ComputeJpsi(const char* runlist, const char* prefix="SIM_JPSI_LHC13f_CynthiaTuneWithRejectList", const char* what="integrated", const char* binningFlavour="");
117   
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="");
124   ///-------
125   
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;
130
131   Bool_t Upgrade();
132   
133   static Bool_t Upgrade(const char* filename);
134   
135   static void CentralityCheck(const char* filelist);
136   
137   static TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
138                                                      const char* backgroundresults="background.lhc11d.root");
139   
140   static TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
141                                             const char* simjpsiresults="results.sim.root");
142   
143   static Bool_t DecodeFileName(const char* filename, TString& period, int& esdpass, int& aodtrain, int& runnumber);
144   
145   
146   static TFile* FileOpen(const char* file);
147   
148   
149   static Bool_t GetCollections(const char* rootfile,
150                                AliMergeableCollection*& mc,
151                                AliCounterCollection*& cc,
152                                AliAnalysisMuMuBinning*& bin,
153                                std::set<int>& runnumbers);
154   
155   AliAnalysisMuMuSpectra* GetSpectra(const char* what, const char* flavour="") const;
156
157   static UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
158   
159   static ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
160   
161   Int_t Jpsi(const char* what="integrated", const char* binningFlavour="");
162   
163   Bool_t IsSimulation() const;
164   
165   static TObjArray* ReadFileList(const char* filelist);
166   
167   static Int_t RunNumberFromFileName(const char* filename);
168   
169   TString DimuonTriggerList() const { return fDimuonTriggers; }
170   void SetDimuonTriggerList(const char* dimuonTriggerList) { fDimuonTriggers = dimuonTriggerList; }
171
172   TString MuonTriggerList() const { return fMuonTriggers; }
173   void SetMuonTriggerList(const char* muonTriggerList) { fMuonTriggers = muonTriggerList; }
174
175   TString MinbiasTriggerList() const { return fMinbiasTriggers; }
176   void SetMinbiasTriggerList(const char* minbiasTriggerList) { fMinbiasTriggers = minbiasTriggerList; }
177   
178   TString EventSelectionList() const { return fEventSelectionList; }
179   void SetEventSelectionList(const char* eventSelectionList) { fEventSelectionList = eventSelectionList; }
180   
181   TString PairSelectionList() const { return fPairSelectionList; }
182   void SetPairSelectionList(const char* pairSelectionList) { fPairSelectionList = pairSelectionList; }
183
184   TString CentralitySelectionList() const { return fCentralitySelectionList; }
185   void SetCentralitySelectionList(const char* centralitySelectionList) { fCentralitySelectionList = centralitySelectionList; }
186
187   TString FitTypeList() const { return fFitTypeList; }
188   void SetFitTypeList(const char* fitTypelist) { fFitTypeList = fitTypelist; }
189   
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; }
197   
198   static void SetDefaultEventSelectionForSimulations(const char* value) { fgDefaultEventSelectionForSimulations = value; }
199   static void SetDefaultDimuonTriggerForSimulations(const char* value) { fgDefaultDimuonTriggerForSimulations = value; }
200
201   AliMergeableCollection* MC() const { return fMergeableCollection; }
202   AliCounterCollection* CC() const { return fCounterCollection; }
203   AliAnalysisMuMuBinning* BIN() const { return fBinning; }
204   
205   static void SetOCDBPath(const char* ocdbPath) { fgOCDBPath = ocdbPath; }
206   
207   static void SetColorScheme();
208   
209   static void SetCompactGraphs(Bool_t value=kTRUE) { fgIsCompactGraphs = value; }
210   
211   static Bool_t CompactGraphs() { return fgIsCompactGraphs; }
212   
213   void Print(Option_t* opt="") const;
214   
215   const std::set<int>& RunNumbers() const { return fRunNumbers; }
216   
217   void DrawMinv(const char* type,
218                 const char* particle,
219                 const char* trigger,
220                 const char* eventType,
221                 const char* pairCut,
222                 const char* centrality,
223                 const char* subresultname="",
224                 const char* flavour="") const;
225
226   void DrawMinv(const char* type="PT", const char* particle="PSI", const char* flavour="", const char* subresultname="") const;
227   
228   Bool_t SetCorrectionPerRun(const TGraph& corr, const char* formula="");
229   
230   void UnsetCorrectionPerRun();
231   
232   void ExecuteCanvasEvent(Int_t event, Int_t px, Int_t py, TObject *sel);
233
234   std::vector<Double_t> GetMCCB2Tails(const AliAnalysisMuMuBinning::Range& bin) const;
235   
236   AliAnalysisMuMu* SIM() const { return fAssociatedSimulation; }
237   
238   AliAnalysisMuMuSpectra* SPECTRA(const char* fullpath) const;
239   
240   void Update();
241
242 private:
243   AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
244   AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
245   
246   TFile* ReOpen(const char* filename, const char* mode) const;
247
248   TString First(const TString& list) const;
249   
250 private:
251
252   void SetNofInputParticles(AliAnalysisMuMuJpsiResult& r);
253
254   static TString ExpandPathName(const char* file);
255   
256   
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
266
267   AliAnalysisMuMuBinning* fBinning; // binning
268   
269   static TString fgOCDBPath; // OCDB to be used (raw:// by default)
270   
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)
280   
281   static Bool_t fgIsCompactGraphs; // whether the graph produced should be compact
282   
283   AliMergeableCollection* fMergeableCollection; // collection of objects in file
284
285   std::set<int> fRunNumbers; // run numbers
286   
287   TGraph* fCorrectionPerRun; // correction factor per run
288   
289   AliAnalysisMuMu* fAssociatedSimulation; // associated simulations (if any)
290
291   ClassDef(AliAnalysisMuMu,11) // class to analysis results from AliAnalysisTaskMuMuXXX tasks
292 };
293
294 #endif