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)
22 class AliAnalysisMuMuResult : public TNamed
27 AliAnalysisMuMuResult(const char* name="", const char* title="");
28 AliAnalysisMuMuResult(const AliAnalysisMuMuResult& rhs);
29 AliAnalysisMuMuResult& operator=(const AliAnalysisMuMuResult& rhs);
31 virtual ~AliAnalysisMuMuResult();
33 void AdoptSubResult(AliAnalysisMuMuResult* r);
35 virtual TObject* Clone(const char* newname = "") const;
37 void Set(const char* name, Double_t value, Double_t errorStat, Double_t rms=0.0);
39 Bool_t HasValue(const char* name, const char* subResultName="") const;
41 Double_t GetValue(const char* name, const char* subResultName="") const;
43 Double_t GetErrorStat(const char* name, const char* subResultName="") const;
45 Double_t GetRMS(const char* name, const char* subResultName="") const;
47 void Print(Option_t* opt="") const;
49 AliAnalysisMuMuResult* SubResult(const char* subResultName) const;
51 TObjArray* SubResults() const { return fSubResults; }
53 Long64_t Merge(TCollection* list);
55 AliAnalysisMuMuResult* Mother() const { return fMother; }
57 THashList* Keys() const;
59 Double_t Weight() const { return fWeight; }
61 void SetWeight(Double_t w) { fWeight=w; }
63 static Double_t ErrorAB(Double_t a, Double_t aerr, Double_t b, Double_t berr);
65 static Double_t ErrorABC(Double_t a, Double_t aerr, Double_t b, Double_t berr, Double_t c, Double_t cerror);
67 static Double_t ErrorABCD(Double_t a, Double_t aerr, Double_t b, Double_t berr, Double_t c, Double_t cerror,
68 Double_t d, Double_t derror);
70 static Double_t ErrorABCDE(Double_t a, Double_t aerr, Double_t b, Double_t berr, Double_t c, Double_t cerror,
71 Double_t d, Double_t derror, Double_t e, Double_t eerror);
73 void PrintValue(const char* key, const char* opt, Double_t value, Double_t errorStat, Double_t rms=0.0) const;
75 void SetAlias(const char* alias) { fAlias = alias; }
77 TString Alias() const { if ( fAlias.Length()>0) return fAlias; else return GetName(); }
79 void Include(const char* subResultsList);
81 void Exclude(const char* subResultsList);
83 Bool_t IsIncluded(const TString& alias) const;
85 void Scale(Double_t value);
96 void PrintParticle(const char* particle, const char* opt) const;
98 TList* SubResultsToBeIncluded() const;
100 TString GetSubResultNameList() const;
102 Int_t NofIncludedSubResults(const char* name) const;
105 TObjArray* fSubResults; // TObjArray of AliAnalysisMuMuResult*
106 TMap* fMap; // internal parameter map
107 AliAnalysisMuMuResult* fMother; // mother result
108 mutable THashList* fKeys; //! keys we have in our internal map (or the one of our subresults)
109 Double_t fWeight; // weight of this result (default 1.0)
110 TString fAlias; // alias name
111 mutable TList* fSubResultsToBeIncluded; // inclusion list
113 ClassDef(AliAnalysisMuMuResult,11) // a class to some results (counts, yields, AccxEff, R_AB, etc...)