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"
26 class AliAnalysisMuMuConfig;
27 class AliAnalysisMuMuResult;
28 class AliAnalysisMuMuJpsiResult;
29 class AliAnalysisMuMuSpectra;
30 class AliCounterCollection;
31 class AliMergeableCollection;
39 class AliAnalysisMuMu : public TObject, public TQObject
44 AliAnalysisMuMu(const char* filename="LHC12c_muons_AOD000_000179687.saf.root",
45 const char* associatedSimFileName="",
46 const char* associatedSimFileName2="",
47 const char* beamYear="pPb2013");
49 virtual ~AliAnalysisMuMu();
52 void BasicCounts(Bool_t detailTrigger=kFALSE,
53 ULong64_t* totalNmb=0x0,
54 ULong64_t* totalNmsl=0x0,
55 ULong64_t* totalNmul=0x0);
57 void TriggerCountCoverage(const char* triggerList, Bool_t compact=kTRUE,
58 Bool_t orderByTriggerCount=kTRUE);
60 void SelectRunByTrigger(const char* triggerList);
62 AliAnalysisMuMuSpectra* FitParticle(const char* particle,
64 const char* eventType,
66 const char* centrality,
67 const AliAnalysisMuMuBinning& binning,
68 const char* spectraType="minv",
69 Bool_t corrected=kFALSE);
71 AliAnalysisMuMuSpectra* CorrectSpectra(const char* type, const char* flavour="");
73 TH2* ComputeSPDCorrection(const char* type="oneOverAccEff", const char* eventSel="PSALL", const char* triggerSel="ANY", Bool_t bkgReject=kTRUE);
77 TH1* ComputeDiffFnormFromHistos(const char* what="psi",const char* quantity="ntrcorr",const char* flavour="JAVI",Bool_t printout=kFALSE);
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);
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);
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);
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);
87 void ComputeIntFnormFromCounters(const char* triggerCluster="MUON", const char* eventSelection="PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00", const char* filePileUpCorr="", Bool_t printout=kTRUE);
89 void PlotYiedWSyst(const char* triggerCluster="MUON");
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.);
93 void ComputeJpsiMPt(Bool_t relative=kFALSE, const char* whatever="PSI-DNCHDETA-AccEffCorr-MeanPtVsMinvUS",const char* sResName="",AliMergeableCollection* ocMBTrigger=0x0, Double_t mNTrCorrection=0.);
95 Double_t ErrorPropagationAxBoverCxD(Double_t a,Double_t b,Double_t c,Double_t d);
97 TH1* ComputeEquNofMB(const char* what="psi",const char* quantity="dnchdeta",const char* flavour="JAVI",Bool_t printout=kFALSE);
99 void TwikiOutputFnorm(const char* series="FnormOffline2PUPS,FnormScalersPUPS,FnormBest2,RelDifFnormScalersPUPSvsFnormOffline2PUPS,FnormScalersPUVDM,RelDifFnormScalersPUPSvsFnormScalersPUVDM") const;
101 AliAnalysisMuMuSpectra* ComputeYield(const char* type, const char* flavour="");
103 void CleanAllSpectra();
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");
111 AliAnalysisMuMuSpectra* RABy(const char* type="", const char* direction="pPb");
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;
122 Bool_t Upgrade(const char* filename);
124 TObjArray* CompareJpsiPerCMUUWithBackground(const char* jpsiresults="results.root",
125 const char* backgroundresults="background.lhc11d.root");
127 TGraph* CompareJpsiPerCMUUWithSimu(const char* realjpsiresults="results.root",
128 const char* simjpsiresults="results.sim.root");
131 static TFile* FileOpen(const char* file);
133 static TString ExpandPathName(const char* file);
136 Bool_t GetCollections(const char* rootfile,
137 AliMergeableCollection*& oc,
138 AliCounterCollection*& cc,
139 AliAnalysisMuMuBinning*& bin,
140 std::set<int>& runnumbers);
142 AliAnalysisMuMuSpectra* GetSpectra(const char* what, const char* flavour="") const;
144 TH1* PlotAccEfficiency(const char* whatever="PSI-INTEGRATED");
146 TH1* PlotJpsiYield(const char* whatever="PSI-DNCHDETA-AccEffCorr");
148 TH1* PlotSystematicsTestsRelative(const char* quantity,const char* flavour,const char* value2Test);
150 UInt_t GetSum(AliCounterCollection& cc, const char* triggerList, const char* eventSelection, Int_t runNumber=-1);
152 ULong64_t GetTriggerScalerCount(const char* triggerList, Int_t runNumber);
154 Int_t Jpsi(const char* what="integrated", const char* binningFlavour="", Bool_t fitmPt=kFALSE);
156 Bool_t IsSimulation() const;
158 AliMergeableCollection* OC() const { return fMergeableCollection; }
159 AliCounterCollection* CC() const { return fCounterCollection; }
160 AliAnalysisMuMuBinning* BIN() const { return fBinning; }
162 void Print(Option_t* opt="") const;
164 const std::set<int>& RunNumbers() const { return fRunNumbers; }
166 void DrawMinv(const char* type,
167 const char* particle,
169 const char* eventType,
171 const char* centrality,
172 const char* subresultname="",
173 const char* flavour="") const;
175 void DrawMinv(const char* type="PT", const char* particle="PSI", const char* flavour="", const char* subresultname="") const;
177 Bool_t SetCorrectionPerRun(const TGraph& corr, const char* formula="");
179 void UnsetCorrectionPerRun();
181 void ExecuteCanvasEvent(Int_t event, Int_t px, Int_t py, TObject *sel);
183 // std::vector<Double_t> GetMCCB2Tails(const AliAnalysisMuMuBinning::Range& bin) const; // Not implemented
185 AliAnalysisMuMu* SIM() const { return fAssociatedSimulation; }
187 AliAnalysisMuMu* SIM2() const { return fAssociatedSimulation2; }
189 AliAnalysisMuMuSpectra* SPECTRA(const char* fullpath) const;
191 void SetParticleName(const char* particleName) { fParticleName = particleName; }
193 const char* GetParticleName() { return fParticleName; }
197 AliAnalysisMuMuConfig* Config();
199 AliAnalysisMuMuConfig* Config() const { return fConfig; }
201 void SetConfig(const AliAnalysisMuMuConfig& config);
203 void SetCentralitySelectionList(const char* centralitySelectionList);
206 AliAnalysisMuMu(const AliAnalysisMuMu& rhs); // not implemented on purpose
207 AliAnalysisMuMu& operator=(const AliAnalysisMuMu& rhs); // not implemented on purpose
209 void ShowList(const char* title, const TString& list, const char separator=',') const;
211 TFile* ReOpen(const char* filename, const char* mode) const;
213 TString First(const TString& list) const;
215 void GetParametersFromMC(TString& fitType, const char* pathCentrPairCut, const char* spectraName, AliAnalysisMuMuBinning::Range* bin) const;
216 void GetParametersFromResult(TString& fitType, AliAnalysisMuMuJpsiResult* minvResult) const;
220 void SetNofInputParticles(AliAnalysisMuMuJpsiResult& r);
223 TString fFilename; // file containing the result collections (of objects and counters) from AliAnalysisTaskMuMu
224 AliCounterCollection* fCounterCollection; // collection of counters in file
226 AliAnalysisMuMuBinning* fBinning; // binning
228 AliMergeableCollection* fMergeableCollection; // collection of objects in file
230 std::set<int> fRunNumbers; // run numbers
232 TGraph* fCorrectionPerRun; // correction factor per run
234 AliAnalysisMuMu* fAssociatedSimulation; // associated simulations (if any)
235 AliAnalysisMuMu* fAssociatedSimulation2; // second associated simulations (if any)
237 TString fParticleName; // Name of the simulated particle in the associated simulations
239 AliAnalysisMuMuConfig* fConfig; // configuration
241 ClassDef(AliAnalysisMuMu,12) // class to analysis results from AliAnalysisTaskMuMuXXX tasks