]> git.uio.no Git - u/mrichter/AliRoot.git/blame - CORRFW/AliCFContainer.h
A little task for checking the c*tau of the strange particles
[u/mrichter/AliRoot.git] / CORRFW / AliCFContainer.h
CommitLineData
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 16class TH1D;
17class TH2D;
18class TH3D;
07b0477d 19class TCollection;
563113d0 20
21class 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
1db34d6e 39 virtual void SetBinLabel (Int_t ivar,Int_t ibin, const Char_t* label);// set a label to bin ibin on axis ivar
40 virtual void SetBinContent(Int_t* bin, Int_t step, Double_t value);
41 virtual void SetBinError (Int_t* bin, Int_t step, Double_t value);
fb494025 42 virtual void GetBinLimits(Int_t ivar, Double_t * array) const {return fGrid[0]->GetBinLimits(ivar,array);}
43 virtual Double_t * GetBinLimits(Int_t ivar) const {return fGrid[0]->GetBinLimits(ivar);}
44 virtual Long_t GetNBinsTotal() const {return fGrid[0]->GetNBinsTotal()*fNStep;}
45 virtual Int_t GetNBins(Int_t ivar) const {return fGrid[0]->GetNBins(ivar);}
46 virtual Int_t * GetNBins() const {return fGrid[0]->GetNBins();}
47 virtual Float_t GetBinCenter(Int_t ivar,Int_t ibin) const {return fGrid[0]->GetBinCenter(ivar,ibin);}
48 virtual Float_t GetBinSize (Int_t ivar,Int_t ibin) const {return fGrid[0]->GetBinSize (ivar,ibin);}
1db34d6e 49 virtual const Char_t* GetBinLabel (Int_t ivar,Int_t ibin) const {return GetAxis(ivar,0)->GetBinLabel(ibin);}
fb494025 50
71b2614f 51 virtual void Print(const Option_t*) const ;
52
fb494025 53 //virtual void GetBinCenters(const Int_t *ibin, const Double_t *binCenter) const {return fGrid[0]->GetBinCenters(ibin,binCenter);}
54 //virtual void GetBinSizes(const Int_t *ibin, const Double_t *binSizes) const {return fGrid[0]->GetBinSizes(ibin,binSizes);}
55
56 //probably not needed anymore
57 //virtual Int_t GetBinIndex(const Int_t *ibin) const {return fGrid[0]->GetBinIndex(ibin);}
58 //virtual void GetBinIndex(Int_t iel, const Int_t *ibin) const {return fGrid[0]->GetBinIndex(iel,ibin);}
59 //virtual Int_t GetBinIndex(Int_t ivar, Int_t ind) const {return fGrid[0]->GetBinIndex(ivar,ind);}
60
61 virtual TAxis * GetAxis(Int_t ivar, Int_t istep) const {return fGrid[istep]->GetAxis(ivar);}
62 virtual void SetVarTitle (Int_t ivar, const Char_t* title) ;
63 virtual void SetStepTitle(Int_t istep, const Char_t* title) ;
64 virtual const Char_t* GetVarTitle (Int_t ivar) const {return GetAxis(ivar,0)->GetTitle();}
65 virtual const Char_t* GetStepTitle(Int_t istep) const {return fGrid[istep]->GetTitle();}
66 virtual Int_t GetStep(const Char_t* title) const ; // returns the step corresponding to the given title
67 virtual Int_t GetVar (const Char_t* title) const ; // returns the variable corresponding to the given title
9105291d 68
fb494025 69 virtual Int_t GetNStep() const {return fNStep;};
9105291d 70 virtual void SetNStep(Int_t nStep) {fNStep=nStep;}
fb494025 71 virtual void Fill(const Double_t *var, Int_t istep, Double_t weight=1.) ;
9105291d 72
fb494025 73 virtual Float_t GetOverFlows (Int_t var,Int_t istep,Bool_t excl=kFALSE) const;
74 virtual Float_t GetUnderFlows(Int_t var,Int_t istep,Bool_t excl=kFALSE) const ;
75 virtual Float_t GetEntries (Int_t istep) const ;
76 virtual Long_t GetEmptyBins(Int_t istep) const {return fGrid[istep]->GetEmptyBins();}
77 //virtual Int_t GetEmptyBins(Int_t istep, Double_t *varMin,Double_t *varMax) const ;
78 virtual Double_t GetIntegral (Int_t istep) const ;
79 //virtual Double_t GetIntegral (Int_t istep, Double_t *varMin,Double_t *varMax) const ;
563113d0 80
563113d0 81
fb494025 82 //basic operations
83 virtual void Add(const AliCFContainer* aContainerToAdd, Double_t c=1.);
563113d0 84 virtual Long64_t Merge(TCollection* list);
85
fb494025 86 virtual TH1D* ShowProjection( Int_t ivar, Int_t istep) const {return Project(ivar ,istep);}
87 virtual TH2D* ShowProjection( Int_t ivar1, Int_t ivar2, Int_t istep) const {return Project(ivar1,ivar2 ,istep);}
88 virtual TH3D* ShowProjection( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const {return Project(ivar1,ivar2,ivar3,istep);}
89 virtual TH1D* Project( Int_t ivar, Int_t istep) const;
90 virtual TH2D* Project( Int_t ivar1, Int_t ivar2, Int_t istep) const;
91 virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const;
98a5f772 92
93 virtual TH1D* ShowSlice(Int_t ivar, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ;
94 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 ;
95 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 ;
96 virtual AliCFContainer* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const ;
97 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 ;
98
c8df672e 99 virtual void SetRangeUser(Int_t ivar, Double_t varMin, Double_t varMax, Int_t istep) ;
9105291d 100 virtual void SetRangeUser(Double_t* varMin, Double_t* varMax, Int_t istep) ;
fb494025 101 virtual void SetGrid(Int_t step, AliCFGridSparse* grid) {fGrid[step]=grid;}
102 virtual AliCFGridSparse * GetGrid(Int_t istep) const {return fGrid[istep];};
1db34d6e 103
104 virtual void Scale(Double_t factor) const;
563113d0 105
106 private:
107 Int_t fNStep; //number of selection steps
fb494025 108 AliCFGridSparse **fGrid;//[fNStep]
563113d0 109
fb494025 110 ClassDef(AliCFContainer,5);
563113d0 111};
fb494025 112
113inline void AliCFContainer::SetBinLimits(Int_t ivar, const Double_t* array) {
114 for (Int_t iStep=0; iStep<GetNStep(); iStep++) {
115 fGrid[iStep]->SetBinLimits(ivar,array);
116 }
117}
118
aa29aca9 119inline void AliCFContainer::SetBinLimits(Int_t ivar, Double_t min, Double_t max) {
120 for (Int_t iStep=0; iStep<GetNStep(); iStep++) {
121 fGrid[iStep]->SetBinLimits(ivar,min,max);
122 }
123}
124
fb494025 125inline void AliCFContainer::SetVarTitle(Int_t ivar, const Char_t* title) {
126 for (Int_t iStep=0; iStep<fNStep; iStep++) {
127 GetAxis(ivar,iStep)->SetTitle(title);
128 }
129}
130
131inline void AliCFContainer::SetStepTitle(Int_t istep, const Char_t* title) {
132 fGrid[istep]->SetTitle(title);
133}
134
135inline Int_t AliCFContainer::GetStep(const Char_t* title) const {
136 TString str(title);
137 for (Int_t iStep=0; iStep<fNStep; iStep++) {
138 if (!str.CompareTo(GetStepTitle(iStep))) return iStep;
139 }
140 AliError("Step not found");
141 return -1;
142}
143
144inline Int_t AliCFContainer::GetVar(const Char_t* title) const {
145 return fGrid[0]->GetVar(title);
146}
1db34d6e 147
148inline void AliCFContainer::SetBinLabel(Int_t iVar, Int_t iBin, const Char_t* label) {
149 for (Int_t iStep=0; iStep<GetNStep(); iStep++) GetAxis(iVar,iStep)->SetBinLabel(iBin,label);
150}
151
152inline void AliCFContainer::Scale(Double_t factor) const {
153 Double_t fact[2] = {factor,0} ;
154 for (Int_t iStep=0; iStep<fNStep; iStep++) fGrid[iStep]->Scale(fact);
155}
156
157inline void AliCFContainer::SetBinContent(Int_t* bin, Int_t step, Double_t value) {
158 GetGrid(step)->GetGrid()->SetBinContent(bin,value);
159}
160
161inline void AliCFContainer::SetBinError(Int_t* bin, Int_t step, Double_t value) {
162 GetGrid(step)->GetGrid()->SetBinError(bin,value);
163}
164
563113d0 165#endif
166