]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muondep/AliAnalysisMuMu.h
Merge branch 'feature-movesplit'
[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 #include "TH1.h"
24 #include "TH2.h"
25
26 class AliAnalysisMuMuConfig;
27 class AliAnalysisMuMuResult;
28 class AliAnalysisMuMuJpsiResult;
29 class AliAnalysisMuMuSpectra;
30 class AliCounterCollection;
31 class AliMergeableCollection;
32 class TF1;
33 class TFile;
34 class TGraph;
35 class TGraphErrors;
36 class TH1;
37 class TMap;
38
39 class AliAnalysisMuMu : public TObject, public TQObject
40 {
41
42 public:
43   
44   AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root",
45                   const char* associatedSimFileName="",
46                   const char* associatedSimFileName2="",
47                   const char* beamYear="pPb2013");
48   
49   virtual ~AliAnalysisMuMu();
50   
51   /* Basic checks */
52   void BasicCounts(Bool_t detailTrigger=kFALSE,
53                    ULong64_t* totalNmb=0x0,
54                    ULong64_t* totalNmsl=0x0,
55                    ULong64_t* totalNmul=0x0);
56   
57   void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
58                             Bool_t orderByTriggerCount=kTRUE);
59   
60   void SelectRunByTrigger(const char* triggerList);
61   
62   AliAnalysisMuMuSpectra* FitParticle(const char* particle,
63                                       const char* trigger,
64                                       const char* eventType,
65                                       const char* pairCut,
66                                       const char* centrality,
67                                       const AliAnalysisMuMuBinning& binning,
68                                       const char* spectraType="minv",
69                                       Bool_t corrected=kFALSE);
70
71   AliAnalysisMuMuSpectra* CorrectSpectra(const char* type, const char* flavour="");
72   
73   TH2* ComputeSPDCorrection(const char* type="oneOverAccEff", const char* eventSel="PSALL", const char* triggerSel="ANY", Bool_t bkgReject=kTRUE);
74   
75   void ComputeFnorm();
76   
77   TH1* ComputeDiffFnormFromHistos(const char* what="psi",const char* quantity="ntrcorr",const char* flavour="JAVI",Bool_t printout=kFALSE);
78   
79   void ComputeDiffFnormFromInt(const char* triggerCluster="MUON", const char* eventSelection="PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00", AliMergeableCollection* mc=0x0, const char* what="psi",const char* quantity="ntrcorr",const char* flavour="JAVI",Bool_t printout=kTRUE);
80   
81   void ComputeDiffFnormFromCounters(const char* triggerCluster="MUON",const char* eventSelection="PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00", const char* filePileUpCorr="", const char* what="psi",const char* quantity="ntrcorr",const char* flavour="JAVI",Bool_t printout=kTRUE);
82   
83   void ComputeDiffFnormFromGlobal(const char* triggerCluster="MUON",const char* eventSelection="PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00", const char* what="psi",const char* quantity="ntrcorr",const char* flavour="JAVI",Bool_t printout=kTRUE);
84   
85   void ComputeMeanFnorm(const char* triggerCluster="MUON", const char* eventSelection="PSALL", const char* what="psi",const char* quantity="ntrcorr",const char* flavour="JAVI", Bool_t printout=kTRUE);
86   
87   void ComputeIntFnormFromCounters(const char* triggerCluster="MUON", const char* eventSelection="PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00", const char* filePileUpCorr="", Bool_t printout=kTRUE);
88   
89   void PlotYiedWSyst(const char* triggerCluster="MUON");
90   
91   void ComputeJpsiYield(AliMergeableCollection* oc=0x0, Bool_t relative=kFALSE, const char* fNormType="mean",const char* triggerCluster="MUON",const char* whatever="PSI-DNCHDETA-AccEffCorr",const char* sResName="",AliMergeableCollection* ocMBTrigger=0x0, Double_t mNTrCorrection=0.);
92   
93   void ComputeJpsiMPt(Bool_t relative=kFALSE, const char* whatever="PSI-DNCHDETA-AccEffCorr-MeanPtVsMinvUS",const char* sResName="",AliMergeableCollection* ocMBTrigger=0x0, Double_t mNTrCorrection=0.);
94   
95   Double_t ErrorPropagationAxBoverCxD(Double_t a,Double_t b,Double_t c,Double_t d);
96   
97   TH1* ComputeEquNofMB(const char* what="psi",const char* quantity="dnchdeta",const char* flavour="JAVI",Bool_t printout=kFALSE);
98
99   void TwikiOutputFnorm(const char* series="FnormOffline2PUPS,FnormScalersPUPS,FnormBest2,RelDifFnormScalersPUPSvsFnormOffline2PUPS,FnormScalersPUVDM,RelDifFnormScalersPUPSvsFnormScalersPUVDM") const;
100
101   AliAnalysisMuMuSpectra* ComputeYield(const char* type, const char* flavour="");
102
103   void CleanAllSpectra();
104   
105   ///------
106   
107 //  static AliAnalysisMuMuSpectra* ComputeYield(const char* realFile="ds.list.saf.root",
108 //                                              const char* simFile="ds.sim.list.saf.root",
109 //                                              const  char* type="PSI-Y VS PT");
110
111    AliAnalysisMuMuSpectra* RABy(const char* type="", const char* direction="pPb");
112
113   ///-------
114   
115   TGraph* PlotEventSelectionEvolution(const char* trigger1="CINT7-B-NOPF-MUON", const char* event1="PSALL",
116                                    const char* trigger2="CINT7-B-NOPF-MUON", const char* event2="PSALL",
117                                       Bool_t drawFills=kFALSE,
118                                       Bool_t asRejection=kTRUE) const;
119
120   Bool_t Upgrade();
121   
122    Bool_t Upgrade(const char* filename);
123   
124    TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
125                                                      const char* backgroundresults="background.lhc11d.root");
126   
127    TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
128                                       const char* simjpsiresults="results.sim.root");
129   
130   
131   static TFile* FileOpen(const char* file);
132   
133   static TString ExpandPathName(const char* file);
134   
135   
136   Bool_t GetCollections(const char* rootfile,
137                         AliMergeableCollection*& oc,
138                         AliCounterCollection*& cc,
139                         AliAnalysisMuMuBinning*& bin,
140                         std::set<int>& runnumbers);
141   
142   AliAnalysisMuMuSpectra* GetSpectra(const char* what, const char* flavour="") const;
143   
144   TH1* PlotAccEfficiency(const char* whatever="PSI-INTEGRATED");
145   
146   TH1* PlotJpsiYield(const char* whatever="PSI-DNCHDETA-AccEffCorr");
147   
148   TH1* PlotSystematicsTestsRelative(const char* quantity,const char* flavour,const char* value2Test);
149   
150   UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
151   
152   ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
153   
154   Int_t Jpsi(const char* what="integrated", const char* binningFlavour="", Bool_t fitmPt=kFALSE);
155   
156   Bool_t IsSimulation() const;
157   
158   AliMergeableCollection* OC() const { return fMergeableCollection; }
159   AliCounterCollection* CC() const { return fCounterCollection; }
160   AliAnalysisMuMuBinning* BIN() const { return fBinning; }
161
162   void Print(Option_t* opt="") const;
163   
164   const std::set<int>& RunNumbers() const { return fRunNumbers; }
165   
166   void DrawMinv(const char* type,
167                 const char* particle,
168                 const char* trigger,
169                 const char* eventType,
170                 const char* pairCut,
171                 const char* centrality,
172                 const char* subresultname="",
173                 const char* flavour="") const;
174
175   void DrawMinv(const char* type="PT", const char* particle="PSI", const char* flavour="", const char* subresultname="") const;
176   
177   Bool_t SetCorrectionPerRun(const TGraph& corr, const char* formula="");
178   
179   void UnsetCorrectionPerRun();
180   
181   void ExecuteCanvasEvent(Int_t event, Int_t px, Int_t py, TObject *sel);
182
183   //  std::vector<Double_t> GetMCCB2Tails(const AliAnalysisMuMuBinning::Range& bin) const; // Not implemented
184   
185   AliAnalysisMuMu* SIM() const { return fAssociatedSimulation; }
186   
187   AliAnalysisMuMu* SIM2() const { return fAssociatedSimulation2; }
188   
189   AliAnalysisMuMuSpectra* SPECTRA(const char* fullpath) const;
190   
191   void SetParticleName(const char* particleName) { fParticleName = particleName; }
192   
193   const char* GetParticleName() { return fParticleName; }
194   
195   void Update();
196
197   AliAnalysisMuMuConfig* Config();
198
199   AliAnalysisMuMuConfig* Config() const { return fConfig; }
200   
201   void SetConfig(const AliAnalysisMuMuConfig& config);
202
203   void SetCentralitySelectionList(const char* centralitySelectionList);
204   
205 private:
206   AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
207   AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
208   
209   void ShowList(const char* title, const TString& list, const char separator=',') const;
210
211   TFile* ReOpen(const char* filename, const char* mode) const;
212
213   TString First(const TString& list) const;
214   
215   void GetParametersFromMC(TString& fitType, const char* pathCentrPairCut, const char* spectraName, AliAnalysisMuMuBinning::Range* bin) const;
216   void GetParametersFromResult(TString& fitType, AliAnalysisMuMuJpsiResult* minvResult) const;
217
218 private:
219
220   void SetNofInputParticles(AliAnalysisMuMuJpsiResult& r);
221
222   
223   TString fFilename; // file containing the result collections (of objects and counters) from AliAnalysisTaskMuMu
224   AliCounterCollection* fCounterCollection; // collection of counters in file
225
226   AliAnalysisMuMuBinning* fBinning; // binning
227   
228   AliMergeableCollection* fMergeableCollection; // collection of objects in file
229
230   std::set<int> fRunNumbers; // run numbers
231   
232   TGraph* fCorrectionPerRun; // correction factor per run
233   
234   AliAnalysisMuMu* fAssociatedSimulation; // associated simulations (if any)
235   AliAnalysisMuMu* fAssociatedSimulation2; // second associated simulations (if any)
236   
237   TString fParticleName; // Name of the simulated particle in the associated simulations
238
239   AliAnalysisMuMuConfig* fConfig; // configuration
240   
241   ClassDef(AliAnalysisMuMu,12) // class to analysis results from AliAnalysisTaskMuMuXXX tasks
242 };
243
244 #endif