1 #ifndef ALIANALYSISMUMUFNORM_H
2 #define ALIANALYSISMUMUFNORM_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
21 class AliAnalysisMuMuResult;
22 class AliCounterCollection;
23 class AliMergeableCollection;
25 class AliAnalysisMuMuFnorm : public TObject
38 AliAnalysisMuMuFnorm(AliCounterCollection& cc,
39 AliAnalysisMuMuFnorm::ETriggerType triggerType=AliAnalysisMuMuFnorm::kMUL,
40 const char* ocdbpath="raw://",
41 Bool_t compactGraphs=kFALSE);
43 virtual ~AliAnalysisMuMuFnorm();
47 void ComputeCorrectionFactors(Int_t eventSelectionCorrected);
49 void ComputeFnormOffline(Int_t nstep, Bool_t pileUpCorrected, Int_t eventSelectionCorrected);
52 void ComputeFnormScalers(Bool_t pileUpCorrected, Int_t eventSelectionCorrected);
54 void ComputeGraphRelDif(const char* a, const char* b) const;
56 void ComputeNofEvents(ETriggerType triggerType, Bool_t pileUpCorrected, Int_t eventSelectionCorrected);
58 void ComputePileUpGraph(ETriggerType tt, Int_t eventSelectionCorrected=0);
60 void ComputeEventSelectionGraph(ETriggerType tt, Int_t eventSelectionCorrected);
62 void ComputeResultsFromGraphs();
64 void ComputeTriggerFractions(ETriggerType triggerType, Bool_t physicsSelectionCorrected);
66 void ComputeTriggerL0B(ETriggerType tt);
68 void ComputeTSGraph(ETriggerType tt);
70 AliMergeableCollection* DetachMC();
72 void DrawWith2Scales(const char* graphName1, const char* graphName2);
74 TString GetEventSelectionName(Int_t eventSelectionCorrected) const;
76 void GetFnorm(Int_t runNumber, const char* eventSelection, Double_t& value, Double_t& error) const;
78 TGraphErrors* GetGraph(const char* name) const;
80 void GetPurity(const char* triggerClassName, Int_t runNumber, Double_t& value, Double_t& error, Int_t eventSelectionCorrected) const;
82 void GetValueAndErrorFromGraph(TGraphErrors* graph,
85 Double_t& error) const;
87 AliAnalysisMuMuResult* GetResult(const char* name) const;
89 AliAnalysisMuMuResult* GetRunIntegratedResult(const TGraphErrors& g, const char* basename="Fnorm");
91 AliMergeableCollection* MC() const;
93 void MultiplyGraphs(const char* g1, const char* g2, const char* name="");
95 TString OCDBPath() const { return fOCDBPath; }
97 void Print(Option_t* opt="") const;
99 void ScalerFnorm(Double_t& value, Double_t& error,
100 Double_t L0bCMUL7, Double_t purityCMUL7, Double_t purityCMUL7error,
101 Double_t L0bCINT7, Double_t purityCINT7, Double_t purityCINT7error,
102 Double_t pileUpFactor, Double_t pileUpFactorError);
104 void ShowFnorm(const TObjArray& a) const;
106 Bool_t TriggerClassnameTest(const char* triggerClassName, Int_t runNumber) const;
108 void WeightedMeanGraphs(const char* pattern, const char* name="");
112 AliAnalysisMuMuFnorm(const AliAnalysisMuMuFnorm& rhs); // not implemented on purpose
113 AliAnalysisMuMuFnorm& operator=(const AliAnalysisMuMuFnorm& rhs); // not implemented on purpose
115 TGraphErrors* CreateAndAddGraph(const TString& name,
116 const TString& title,
117 const std::vector<double>& vx,
118 const std::vector<double>& vxerr,
119 const std::vector<double>& vy,
120 const std::vector<double>& vyerr) const;
122 Double_t GetSum(const char* triggerClassName, Int_t runNumber, Int_t eventSelectionCorrected) const;
124 TString GetTriggerClassName(ETriggerType tt, Int_t runNumber) const;
126 TString GetTriggerTypeName(ETriggerType tt) const;
128 std::set<int> RunNumbers() const;
130 TString MBTriggerClassName(Int_t runNumber) const;
131 TString MSLTriggerClassName(Int_t runNumber) const;
132 TString MULTriggerClassName(Int_t runNumber) const;
133 TString MSHTriggerClassName(Int_t runNumber) const;
137 /*const*/ AliCounterCollection& fCounterCollection; // collection of trigger counters (not owner)
138 mutable AliMergeableCollection* fMergeableCollection; // collection of results, histograms, graphs (ownership is in fIsOwner)
139 Bool_t fIsOwner; // whether we are the owner of the mergeable collection
140 TString fOCDBPath; // OCDB to be used (raw:// by default)
141 mutable AliAnalysisMuMuResult* fResult; // combined result of the various computations
142 Bool_t fIsCompactGraphs; // whether the graph produced should be compact
143 ETriggerType fReferenceTriggerType; // reference trigger to get the weighting factors
145 ClassDef(AliAnalysisMuMuFnorm,0) // class to compute MB to MUON trigger normalization factor