]>
Commit | Line | Data |
---|---|---|
563113d0 | 1 | #ifndef ALICFCONTAINER_H |
2 | #define ALICFCONTAINER_H | |
3 | ||
4 | /* $Id$ */ | |
5 | ||
6 | //--------------------------------------------------------------------// | |
7 | // // | |
8 | // AliCFContainer Class // | |
9 | // Class to handle input data for correction Framework // | |
10 | // // | |
11 | //--------------------------------------------------------------------// | |
12 | ||
13 | #include "AliCFFrame.h" | |
fb494025 | 14 | #include "AliCFGridSparse.h" |
563113d0 | 15 | |
1e9dad92 | 16 | class TH1D; |
17 | class TH2D; | |
18 | class TH3D; | |
07b0477d | 19 | class TCollection; |
563113d0 | 20 | |
21 | class AliCFContainer : public AliCFFrame | |
22 | { | |
23 | public: | |
24 | AliCFContainer(); | |
25 | AliCFContainer(const Char_t* name,const Char_t* title); | |
fb494025 | 26 | AliCFContainer(const Char_t* name, const Char_t* title,const Int_t nSelStep, const Int_t nVarIn, const Int_t* nBinIn); |
563113d0 | 27 | AliCFContainer(const AliCFContainer& c); |
563113d0 | 28 | AliCFContainer& operator=(const AliCFContainer& corr); |
fb494025 | 29 | virtual void Copy(TObject& c) const; |
30 | ||
31 | virtual ~AliCFContainer(); | |
32 | ||
33 | // AliCFFrame functions | |
34 | virtual Int_t GetNVar() const {return fGrid[0]->GetNVar();} | |
35 | virtual void PrintBinLimits() const {fGrid[0]->PrintBinLimits();} | |
36 | virtual void PrintNBins() const {fGrid[0]->PrintNBins();} | |
aa29aca9 | 37 | virtual void SetBinLimits(Int_t ivar, Double_t min, Double_t max) ; // for uniform bin width only |
38 | virtual void SetBinLimits(Int_t ivar, const Double_t * array) ; // for variable or uniform bin width | |
fb494025 | 39 | virtual void GetBinLimits(Int_t ivar, Double_t * array) const {return fGrid[0]->GetBinLimits(ivar,array);} |
40 | virtual Double_t * GetBinLimits(Int_t ivar) const {return fGrid[0]->GetBinLimits(ivar);} | |
41 | virtual Long_t GetNBinsTotal() const {return fGrid[0]->GetNBinsTotal()*fNStep;} | |
42 | virtual Int_t GetNBins(Int_t ivar) const {return fGrid[0]->GetNBins(ivar);} | |
43 | virtual Int_t * GetNBins() const {return fGrid[0]->GetNBins();} | |
44 | virtual Float_t GetBinCenter(Int_t ivar,Int_t ibin) const {return fGrid[0]->GetBinCenter(ivar,ibin);} | |
45 | virtual Float_t GetBinSize (Int_t ivar,Int_t ibin) const {return fGrid[0]->GetBinSize (ivar,ibin);} | |
46 | ||
71b2614f | 47 | virtual void Print(const Option_t*) const ; |
48 | ||
fb494025 | 49 | //virtual void GetBinCenters(const Int_t *ibin, const Double_t *binCenter) const {return fGrid[0]->GetBinCenters(ibin,binCenter);} |
50 | //virtual void GetBinSizes(const Int_t *ibin, const Double_t *binSizes) const {return fGrid[0]->GetBinSizes(ibin,binSizes);} | |
51 | ||
52 | //probably not needed anymore | |
53 | //virtual Int_t GetBinIndex(const Int_t *ibin) const {return fGrid[0]->GetBinIndex(ibin);} | |
54 | //virtual void GetBinIndex(Int_t iel, const Int_t *ibin) const {return fGrid[0]->GetBinIndex(iel,ibin);} | |
55 | //virtual Int_t GetBinIndex(Int_t ivar, Int_t ind) const {return fGrid[0]->GetBinIndex(ivar,ind);} | |
56 | ||
57 | virtual TAxis * GetAxis(Int_t ivar, Int_t istep) const {return fGrid[istep]->GetAxis(ivar);} | |
58 | virtual void SetVarTitle (Int_t ivar, const Char_t* title) ; | |
59 | virtual void SetStepTitle(Int_t istep, const Char_t* title) ; | |
60 | virtual const Char_t* GetVarTitle (Int_t ivar) const {return GetAxis(ivar,0)->GetTitle();} | |
61 | virtual const Char_t* GetStepTitle(Int_t istep) const {return fGrid[istep]->GetTitle();} | |
62 | virtual Int_t GetStep(const Char_t* title) const ; // returns the step corresponding to the given title | |
63 | virtual Int_t GetVar (const Char_t* title) const ; // returns the variable corresponding to the given title | |
9105291d | 64 | |
fb494025 | 65 | virtual Int_t GetNStep() const {return fNStep;}; |
9105291d | 66 | virtual void SetNStep(Int_t nStep) {fNStep=nStep;} |
fb494025 | 67 | virtual void Fill(const Double_t *var, Int_t istep, Double_t weight=1.) ; |
9105291d | 68 | |
fb494025 | 69 | virtual Float_t GetOverFlows (Int_t var,Int_t istep,Bool_t excl=kFALSE) const; |
70 | virtual Float_t GetUnderFlows(Int_t var,Int_t istep,Bool_t excl=kFALSE) const ; | |
71 | virtual Float_t GetEntries (Int_t istep) const ; | |
72 | virtual Long_t GetEmptyBins(Int_t istep) const {return fGrid[istep]->GetEmptyBins();} | |
73 | //virtual Int_t GetEmptyBins(Int_t istep, Double_t *varMin,Double_t *varMax) const ; | |
74 | virtual Double_t GetIntegral (Int_t istep) const ; | |
75 | //virtual Double_t GetIntegral (Int_t istep, Double_t *varMin,Double_t *varMax) const ; | |
563113d0 | 76 | |
563113d0 | 77 | |
fb494025 | 78 | //basic operations |
79 | virtual void Add(const AliCFContainer* aContainerToAdd, Double_t c=1.); | |
563113d0 | 80 | virtual Long64_t Merge(TCollection* list); |
81 | ||
fb494025 | 82 | virtual TH1D* ShowProjection( Int_t ivar, Int_t istep) const {return Project(ivar ,istep);} |
83 | virtual TH2D* ShowProjection( Int_t ivar1, Int_t ivar2, Int_t istep) const {return Project(ivar1,ivar2 ,istep);} | |
84 | virtual TH3D* ShowProjection( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const {return Project(ivar1,ivar2,ivar3,istep);} | |
85 | virtual TH1D* Project( Int_t ivar, Int_t istep) const; | |
86 | virtual TH2D* Project( Int_t ivar1, Int_t ivar2, Int_t istep) const; | |
87 | virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const; | |
98a5f772 | 88 | |
89 | virtual TH1D* ShowSlice(Int_t ivar, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ; | |
90 | virtual TH2D* ShowSlice(Int_t ivar1, Int_t ivar2, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ; | |
91 | virtual TH3D* ShowSlice(Int_t ivar1, Int_t ivar2, Int_t ivar3, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ; | |
92 | virtual AliCFContainer* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const ; | |
93 | virtual AliCFContainer* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Int_t nStep, const Int_t* steps, Bool_t useBins=0) const ; | |
94 | ||
c8df672e | 95 | virtual void SetRangeUser(Int_t ivar, Double_t varMin, Double_t varMax, Int_t istep) ; |
9105291d | 96 | virtual void SetRangeUser(Double_t* varMin, Double_t* varMax, Int_t istep) ; |
fb494025 | 97 | virtual void SetGrid(Int_t step, AliCFGridSparse* grid) {fGrid[step]=grid;} |
98 | virtual AliCFGridSparse * GetGrid(Int_t istep) const {return fGrid[istep];}; | |
563113d0 | 99 | |
100 | private: | |
101 | Int_t fNStep; //number of selection steps | |
fb494025 | 102 | AliCFGridSparse **fGrid;//[fNStep] |
563113d0 | 103 | |
fb494025 | 104 | ClassDef(AliCFContainer,5); |
563113d0 | 105 | }; |
fb494025 | 106 | |
107 | inline void AliCFContainer::SetBinLimits(Int_t ivar, const Double_t* array) { | |
108 | for (Int_t iStep=0; iStep<GetNStep(); iStep++) { | |
109 | fGrid[iStep]->SetBinLimits(ivar,array); | |
110 | } | |
111 | } | |
112 | ||
aa29aca9 | 113 | inline void AliCFContainer::SetBinLimits(Int_t ivar, Double_t min, Double_t max) { |
114 | for (Int_t iStep=0; iStep<GetNStep(); iStep++) { | |
115 | fGrid[iStep]->SetBinLimits(ivar,min,max); | |
116 | } | |
117 | } | |
118 | ||
fb494025 | 119 | inline void AliCFContainer::SetVarTitle(Int_t ivar, const Char_t* title) { |
120 | for (Int_t iStep=0; iStep<fNStep; iStep++) { | |
121 | GetAxis(ivar,iStep)->SetTitle(title); | |
122 | } | |
123 | } | |
124 | ||
125 | inline void AliCFContainer::SetStepTitle(Int_t istep, const Char_t* title) { | |
126 | fGrid[istep]->SetTitle(title); | |
127 | } | |
128 | ||
129 | inline Int_t AliCFContainer::GetStep(const Char_t* title) const { | |
130 | TString str(title); | |
131 | for (Int_t iStep=0; iStep<fNStep; iStep++) { | |
132 | if (!str.CompareTo(GetStepTitle(iStep))) return iStep; | |
133 | } | |
134 | AliError("Step not found"); | |
135 | return -1; | |
136 | } | |
137 | ||
138 | inline Int_t AliCFContainer::GetVar(const Char_t* title) const { | |
139 | return fGrid[0]->GetVar(title); | |
140 | } | |
563113d0 | 141 | #endif |
142 |