]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdEta/AliMultiplicityCorrection.h
introducing multiplicity measurement with the ITS or TPC
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / AliMultiplicityCorrection.h
CommitLineData
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
13class TH1;
14class TH2;
15class TH1F;
16class TH2F;
17class TH3F;
18
19class 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