3 #ifndef ALIMULTIPLICITYCORRECTION_H
4 #define ALIMULTIPLICITYCORRECTION_H
9 // class that contains the correction matrix and the functions for
10 // correction the multiplicity spectrum
21 class AliMultiplicityCorrection : public TNamed {
23 AliMultiplicityCorrection();
24 AliMultiplicityCorrection(const Char_t* name, const Char_t* title);
25 virtual ~AliMultiplicityCorrection();
27 virtual Long64_t Merge(TCollection* list);
29 void FillMeasured(Float_t vtx, Int_t measured05, Int_t measured10, Int_t measured15, Int_t measured20);
30 void FillGenerated(Float_t vtx, Int_t generated05, Int_t generated10, Int_t generated15, Int_t generated20, Int_t generatedAll);
32 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);
34 Bool_t LoadHistograms(const Char_t* dir);
35 void SaveHistograms();
36 void DrawHistograms();
37 void DrawComparison(const char* name, Int_t mcID, Int_t esdCorrId, Bool_t normalizeESD = kTRUE);
39 void ApplyMinuitFit(Int_t inputRange, Bool_t fullPhaseSpace, Bool_t check = kFALSE);
40 void ApplyMinuitFitAll();
42 void ApplyBayesianMethod(Int_t inputRange, Bool_t fullPhaseSpace);
44 void ApplyGaussianMethod(Int_t inputRange, Bool_t fullPhaseSpace);
46 TH2F* GetMultiplicityESD(Int_t i) { return fMultiplicityESD[i]; }
47 TH2F* GetMultiplicityMC(Int_t i) { return fMultiplicityMC[i]; }
48 TH3F* GetCorrelation(Int_t i) { return fCorrelation[i]; }
50 void SetMultiplicityESD(Int_t i, TH2F* hist) { fMultiplicityESD[i] = hist; }
51 void SetMultiplicityMC(Int_t i, TH2F* hist) { fMultiplicityMC[i] = hist; }
52 void SetCorrelation(Int_t i, TH3F* hist) { fCorrelation[i] = hist; }
54 void SetGenMeasFromFunc(TF1* inputMC, Int_t id);
55 TH2F* CalculateMultiplicityESD(TH1* inputMC, Int_t correlationMap);
57 TH1F* GetMultiplicityESDCorrected(Int_t i) { return fMultiplicityESDCorrected[i]; }
59 static void NormalizeToBinWidth(TH1* hist);
60 static void NormalizeToBinWidth(TH2* hist);
64 enum { kESDHists = 4, kMCHists = 5, kCorrHists = 8 };
66 static const Int_t fgMaxParams; // number of fit params
68 static Double_t RegularizationPol0(Double_t *params);
69 static Double_t RegularizationPol1(Double_t *params);
70 static Double_t RegularizationTotalCurvature(Double_t *params);
71 static Double_t RegularizationEntropy(Double_t *params);
73 static void MinuitFitFunction(Int_t&, Double_t*, Double_t& chi2, Double_t *params, Int_t);
75 void SetupCurrentHists(Int_t inputRange, Bool_t fullPhaseSpace);
77 static TH1* fCurrentESD; // static variable to be accessed by MINUIT
78 static TH1* fCurrentCorrelation; // static variable to be accessed by MINUIT
80 TH2F* fMultiplicityESD[kESDHists]; // multiplicity histogram: vtx vs multiplicity; array: |eta| < 0.5, 1, 1.5, 2 (0..3)
81 TH2F* fMultiplicityMC[kMCHists]; // multiplicity histogram: vtx vs multiplicity; array: |eta| < 0.5, 1, 1.5, 2, inf (0..4)
83 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
84 TH1F* fMultiplicityESDCorrected[kCorrHists]; // corrected histograms
87 AliMultiplicityCorrection(const AliMultiplicityCorrection&);
88 AliMultiplicityCorrection& operator=(const AliMultiplicityCorrection&);
90 ClassDef(AliMultiplicityCorrection, 1);