1 #ifndef ALIANALYSISMUMURESULT_H
2 #define ALIANALYSISMUMURESULT_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 /// AliAnalysisMuMuResult : helper class to store results from
11 /// AliAnalysisTaskMuMu
13 /// author : Laurent Aphecetche (Subatech)
17 #include "AliAnalysisMuMuBinning.h"
24 class AliAnalysisMuMuResult : public TNamed
29 AliAnalysisMuMuResult(TRootIOCtor* io);
31 AliAnalysisMuMuResult(const TH1& hminv);
33 AliAnalysisMuMuResult(const TH1& hminv,
37 AliAnalysisMuMuResult(const TH1& hminv,
38 const char* triggerClass,
39 const char* eventSelection,
40 const char* pairSelection,
41 const char* centSelection,
42 const AliAnalysisMuMuBinning::Range& bin);
44 AliAnalysisMuMuResult(const AliAnalysisMuMuResult& rhs);
45 AliAnalysisMuMuResult& operator=(const AliAnalysisMuMuResult&);
47 virtual ~AliAnalysisMuMuResult();
49 virtual TObject* Clone(const char* newname = "") const;
51 Bool_t Correct(const AliAnalysisMuMuResult& other, const char* particle, const char* subResultName="");
53 TH1* Minv() const { return fMinv; }
55 void Set(const char* name, Double_t value, Double_t errorStat);
57 Bool_t HasValue(const char* name, const char* subResultName="") const;
59 Double_t GetValue(const char* name, const char* subResultName="") const;
61 Double_t GetErrorStat(const char* name, const char* subResultName="") const;
63 Int_t NofTriggers() const;
65 void SetNofTriggers(Int_t n);
67 void Print(Option_t* opt="") const;
69 Bool_t AddFit(const char* fitType, Int_t rebin=1);
71 AliAnalysisMuMuResult* CountJpsi(TH1& h);
73 // void FitJpsiPsiPrimeCB(TH1& h);
74 AliAnalysisMuMuResult* FitJpsi(TH1& h);
75 // void FitJpsiCBE(TH1& h);
76 // void FitJpsiECBE(TH1& h);
77 // void FitJpsiPCBE(TH1& h);
78 // void FitUpsilon(TH1& h);
80 AliAnalysisMuMuResult* FitJpsi2CB2VWG(const TH1& h);
81 AliAnalysisMuMuResult* FitJpsiGCBE(TH1& h);
83 // SubResult* FitJpsiPsiPrimeCustom(TH1& h);
85 Int_t NofRuns() const;
87 void SetNofRuns(int n);
89 const AliAnalysisMuMuBinning::Range& Bin() const;
91 void SetBin(const AliAnalysisMuMuBinning::Range& bin);
93 void SetNofInputParticles(const char* particle, int n);
95 void SetNofInputParticles(const TH1& hminv);
97 void SetMinv(const TH1& hminv);
99 TObjArray* SubResults() const { return fSubResults; }
101 static Double_t CountParticle(const TH1& hminv, const char* particle, Double_t sigma=-1);
103 static Double_t ErrorAB(Double_t a, Double_t aerr, Double_t b, Double_t berr);
105 static Double_t ErrorABC(Double_t a, Double_t aerr, Double_t b, Double_t berr, Double_t c, Double_t cerror);
107 Long64_t Merge(TCollection* list);
109 AliAnalysisMuMuResult* Mother() const { return fMother; }
111 THashList* Keys() const;
113 Double_t Weight() const { return fWeight > 0 ? fWeight : fNofTriggers; }
115 void SetWeight(Double_t w) { fWeight=w; }
126 void PrintParticle(const char* particle, const char* opt) const;
127 void PrintValue(const char* key, const char* opt, Double_t value, Double_t errorStat) const;
130 Int_t fNofRuns; // number of runs used to get this result
131 Int_t fNofTriggers; // number of trigger analyzed
132 TH1* fMinv; // invariant mass spectrum
133 AliAnalysisMuMuBinning::Range fBin; // bin range
134 TObjArray* fSubResults; // TObjArray of AliAnalysisMuMuResult*
135 TMap* fMap; // internal parameter map
136 AliAnalysisMuMuResult* fMother; // mother result
137 mutable THashList* fKeys; //! keys we have in our internal map (or the one of our subresults)
138 Double_t fWeight; // weight of this result (default 1.0)
140 ClassDef(AliAnalysisMuMuResult,5) // a class to hold invariant mass analysis results (counts, yields, AccxEff, R_AB, etc...)