]>
Commit | Line | Data |
---|---|---|
0a173978 | 1 | /* $Id$ */ |
2 | ||
3 | #ifndef ALIMULTIPLICITYCORRECTION_H | |
4 | #define ALIMULTIPLICITYCORRECTION_H | |
5 | ||
6 | #include "TNamed.h" | |
7 | ||
8 | // | |
9 | // class that contains the correction matrix and the functions for | |
10 | // correction the multiplicity spectrum | |
11 | // | |
12 | ||
13 | class TH1; | |
14 | class TH2; | |
15 | class TH1F; | |
16 | class TH2F; | |
17 | class TH3F; | |
18 | ||
19 | class AliMultiplicityCorrection : public TNamed { | |
20 | public: | |
21 | AliMultiplicityCorrection(); | |
22 | AliMultiplicityCorrection(const Char_t* name, const Char_t* title); | |
23 | virtual ~AliMultiplicityCorrection(); | |
24 | ||
25 | virtual Long64_t Merge(TCollection* list); | |
26 | ||
27 | void FillMeasured(Float_t vtx, Int_t measured05, Int_t measured10, Int_t measured15, Int_t measured20); | |
28 | void FillGenerated(Float_t vtx, Int_t generated05, Int_t generated10, Int_t generated15, Int_t generated20, Int_t generatedAll); | |
29 | ||
30 | void FillCorrection(Float_t vtx, Int_t generated05, Int_t generated10, Int_t generated15, Int_t generated20, Int_t generatedAll, Int_t measured05, Int_t measured10, Int_t measured15, Int_t measured20); | |
31 | ||
32 | Bool_t LoadHistograms(const Char_t* dir); | |
33 | void SaveHistograms(); | |
34 | void DrawHistograms(); | |
35 | void DrawComparison(Int_t mcID, Int_t esdCorrId); | |
36 | ||
37 | void ApplyMinuitFit(Int_t inputRange, Bool_t fullPhaseSpace); | |
38 | void ApplyMinuitFitAll(); | |
39 | ||
40 | void ApplyBayesianMethod(Int_t inputRange, Bool_t fullPhaseSpace); | |
41 | ||
42 | TH2F* GetMultiplicityESD(Int_t i) { return fMultiplicityESD[i]; } | |
43 | TH2F* GetMultiplicityMC(Int_t i) { return fMultiplicityMC[i]; } | |
44 | TH3F* GetCorrelation(Int_t i) { return fCorrelation[i]; } | |
45 | ||
46 | TH1F* GetMultiplicityESDCorrected(Int_t i) { return fMultiplicityESDCorrected[i]; } | |
47 | ||
48 | static void NormalizeToBinWidth(TH1* hist); | |
49 | static void NormalizeToBinWidth(TH2* hist); | |
50 | ||
51 | protected: | |
52 | enum { kESDHists = 4, kMCHists = 5, kCorrHists = 8 }; | |
53 | ||
54 | static const Int_t fgMaxParams; // number of fit params | |
55 | ||
56 | static Double_t MinuitHomogenityPol0(Double_t *params); | |
57 | static Double_t MinuitHomogenityPol1(Double_t *params); | |
58 | static void MinuitFitFunction(Int_t&, Double_t*, Double_t& chi2, Double_t *params, Int_t); | |
59 | ||
60 | static TH1* fCurrentMinuitESD; // static variable to be accessed by MINUIT | |
61 | static TH1* fCurrentMinuitCorrelation; // static variable to be accessed by MINUIT | |
62 | ||
63 | TH2F* fMultiplicityESD[kESDHists]; // multiplicity histogram: vtx vs multiplicity; array: |eta| < 0.5, 1, 1.5, 2 (0..3) | |
64 | TH2F* fMultiplicityMC[kMCHists]; // multiplicity histogram: vtx vs multiplicity; array: |eta| < 0.5, 1, 1.5, 2, inf (0..4) | |
65 | ||
66 | TH3F* fCorrelation[kCorrHists]; // vtx vs. (gene multiplicity) vs. (meas multiplicity); array: |eta| < 0.5, 1, 1.5, 2 (0..3 and 4..7), the first corrects to the eta range itself, the second to full phase space | |
67 | TH1F* fMultiplicityESDCorrected[kCorrHists]; // corrected histograms | |
68 | ||
69 | private: | |
70 | AliMultiplicityCorrection(const AliMultiplicityCorrection&); | |
71 | AliMultiplicityCorrection& operator=(const AliMultiplicityCorrection&); | |
72 | ||
73 | ClassDef(AliMultiplicityCorrection, 1); | |
74 | }; | |
75 | ||
76 | #endif |