Skip to content

Commit

Permalink
Simplification of container and grid classes.
Browse files Browse the repository at this point in the history
Added several features (eg. axis titles , step labels...)
Removed test/muons (--> PWG3)
  • Loading branch information
rvernet committed Jul 10, 2009
1 parent 68c1fc3 commit 3d1640d
Show file tree
Hide file tree
Showing 28 changed files with 1,078 additions and 3,387 deletions.
228 changes: 95 additions & 133 deletions CORRFW/AliCFContainer.cxx

Large diffs are not rendered by default.

113 changes: 86 additions & 27 deletions CORRFW/AliCFContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,62 +11,121 @@
//--------------------------------------------------------------------//

#include "AliCFFrame.h"
#include "AliCFGridSparse.h"

class TH1D;
class TH2D;
class TH3D;
class AliCFVGrid;
class TCollection;

class AliCFContainer : public AliCFFrame
{
public:
AliCFContainer();
AliCFContainer(const Char_t* name,const Char_t* title);
AliCFContainer(const Char_t* name, const Char_t* title,const Int_t nSelStep, const Int_t nVarIn, const Int_t* nBinIn, const Double_t *binLimitsIn=0, const Bool_t useSparse = kTRUE);
AliCFContainer(const Char_t* name, const Char_t* title,const Int_t nSelStep, const Int_t nVarIn, const Int_t* nBinIn);
AliCFContainer(const AliCFContainer& c);

virtual ~AliCFContainer();
AliCFContainer& operator=(const AliCFContainer& corr);
virtual Int_t GetNStep() const {return fNStep;};
virtual void Copy(TObject& c) const;

virtual ~AliCFContainer();

// AliCFFrame functions
virtual Int_t GetNVar() const {return fGrid[0]->GetNVar();}
virtual void PrintBinLimits() const {fGrid[0]->PrintBinLimits();}
virtual void PrintNBins() const {fGrid[0]->PrintNBins();}
virtual void SetBinLimits(Int_t ivar, const Double_t * array) ;
virtual void GetBinLimits(Int_t ivar, Double_t * array) const {return fGrid[0]->GetBinLimits(ivar,array);}
virtual Double_t * GetBinLimits(Int_t ivar) const {return fGrid[0]->GetBinLimits(ivar);}
virtual Long_t GetNBinsTotal() const {return fGrid[0]->GetNBinsTotal()*fNStep;}
virtual Int_t GetNBins(Int_t ivar) const {return fGrid[0]->GetNBins(ivar);}
virtual Int_t * GetNBins() const {return fGrid[0]->GetNBins();}
virtual Float_t GetBinCenter(Int_t ivar,Int_t ibin) const {return fGrid[0]->GetBinCenter(ivar,ibin);}
virtual Float_t GetBinSize (Int_t ivar,Int_t ibin) const {return fGrid[0]->GetBinSize (ivar,ibin);}

//virtual void GetBinCenters(const Int_t *ibin, const Double_t *binCenter) const {return fGrid[0]->GetBinCenters(ibin,binCenter);}
//virtual void GetBinSizes(const Int_t *ibin, const Double_t *binSizes) const {return fGrid[0]->GetBinSizes(ibin,binSizes);}

//probably not needed anymore
//virtual Int_t GetBinIndex(const Int_t *ibin) const {return fGrid[0]->GetBinIndex(ibin);}
//virtual void GetBinIndex(Int_t iel, const Int_t *ibin) const {return fGrid[0]->GetBinIndex(iel,ibin);}
//virtual Int_t GetBinIndex(Int_t ivar, Int_t ind) const {return fGrid[0]->GetBinIndex(ivar,ind);}

virtual TAxis * GetAxis(Int_t ivar, Int_t istep) const {return fGrid[istep]->GetAxis(ivar);}
virtual void SetVarTitle (Int_t ivar, const Char_t* title) ;
virtual void SetStepTitle(Int_t istep, const Char_t* title) ;
virtual const Char_t* GetVarTitle (Int_t ivar) const {return GetAxis(ivar,0)->GetTitle();}
virtual const Char_t* GetStepTitle(Int_t istep) const {return fGrid[istep]->GetTitle();}
virtual Int_t GetStep(const Char_t* title) const ; // returns the step corresponding to the given title
virtual Int_t GetVar (const Char_t* title) const ; // returns the variable corresponding to the given title

virtual Int_t GetNStep() const {return fNStep;};
virtual void SetNStep(Int_t nStep) {fNStep=nStep;}
virtual void SetBinLimits(Int_t varindex, Double_t * array);
virtual void Fill(const Double_t *var, Int_t istep, Double_t weight=1.) ;

virtual void Fill(Double_t *var, Int_t istep, Double_t weight=1.);
virtual Float_t GetOverFlows (Int_t var,Int_t istep,Bool_t excl=kFALSE) const;
virtual Float_t GetUnderFlows(Int_t var,Int_t istep,Bool_t excl=kFALSE) const ;
virtual Float_t GetEntries (Int_t istep) const ;
virtual Long_t GetEmptyBins(Int_t istep) const {return fGrid[istep]->GetEmptyBins();}
//virtual Int_t GetEmptyBins(Int_t istep, Double_t *varMin,Double_t *varMax) const ;
virtual Double_t GetIntegral (Int_t istep) const ;
//virtual Double_t GetIntegral (Int_t istep, Double_t *varMin,Double_t *varMax) const ;

virtual Float_t GetOverFlows(Int_t var,Int_t istep) const;
virtual Float_t GetUnderFlows(Int_t var,Int_t istep)const ;
virtual Float_t GetEntries(Int_t istep)const ;
virtual Int_t GetEmptyBins(Int_t istep)const ;
virtual Int_t GetEmptyBins(Int_t istep, Double_t *varMin,Double_t *varMax) const ;
virtual Double_t GetIntegral(Int_t istep) const ;
virtual Double_t GetIntegral(Int_t istep, Double_t *varMin,Double_t *varMax) const ;
//basic operations

virtual void Copy(TObject& c) const;
virtual void Add(AliCFContainer* aContainerToAdd, Double_t c=1.);
//basic operations
virtual void Add(const AliCFContainer* aContainerToAdd, Double_t c=1.);
virtual Long64_t Merge(TCollection* list);

virtual TH1D* ShowProjection( Int_t ivar, Int_t istep) const;
virtual TH2D* ShowProjection( Int_t ivar1, Int_t ivar2, Int_t istep) const;
virtual TH3D* ShowProjection( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const;
virtual TH1D* ShowProjection( Int_t ivar, Int_t istep) const {return Project(ivar ,istep);}
virtual TH2D* ShowProjection( Int_t ivar1, Int_t ivar2, Int_t istep) const {return Project(ivar1,ivar2 ,istep);}
virtual TH3D* ShowProjection( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const {return Project(ivar1,ivar2,ivar3,istep);}
virtual TH1D* Project( Int_t ivar, Int_t istep) const;
virtual TH2D* Project( Int_t ivar1, Int_t ivar2, Int_t istep) const;
virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const;
virtual TH1D* ShowSlice( Int_t ivar, Double_t *varMin, Double_t *varMax, Int_t istep) const;
virtual TH2D* ShowSlice( Int_t ivar1, Int_t ivar2, Double_t *varMin, Double_t *varMax, Int_t istep) const;
virtual TH3D* ShowSlice( Int_t ivar1, Int_t ivar2, Int_t ivar3, Double_t *varMin, Double_t *varMax, Int_t istep) const;
virtual AliCFContainer* MakeSlice (Int_t nVars, Int_t* vars, Double_t* varMin, Double_t* varMax) const ;
virtual AliCFContainer* MakeSlice (Int_t nVars, Int_t* vars, Double_t* varMin, Double_t* varMax, Int_t nStep, Int_t* steps) const ;
virtual AliCFContainer* MakeSlice (Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax) const ;
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) const ;
virtual void SetRangeUser(Int_t ivar, Double_t varMin, Double_t varMax, Int_t istep) ;
virtual void SetRangeUser(Double_t* varMin, Double_t* varMax, Int_t istep) ;
virtual void SetGrid(Int_t step, AliCFVGrid* grid) {fGrid[step]=grid;}
virtual AliCFVGrid * GetGrid(Int_t istep) const {return (AliCFVGrid*)fGrid[istep];};
virtual void SetGrid(Int_t step, AliCFGridSparse* grid) {fGrid[step]=grid;}
virtual AliCFGridSparse * GetGrid(Int_t istep) const {return fGrid[istep];};

private:
Int_t fNStep; //number of selection steps
AliCFVGrid **fGrid;//[fNStep]
AliCFGridSparse **fGrid;//[fNStep]

ClassDef(AliCFContainer,4);
ClassDef(AliCFContainer,5);
};


inline void AliCFContainer::SetBinLimits(Int_t ivar, const Double_t* array) {
for (Int_t iStep=0; iStep<GetNStep(); iStep++) {
fGrid[iStep]->SetBinLimits(ivar,array);
}
}

inline void AliCFContainer::SetVarTitle(Int_t ivar, const Char_t* title) {
for (Int_t iStep=0; iStep<fNStep; iStep++) {
GetAxis(ivar,iStep)->SetTitle(title);
}
}

inline void AliCFContainer::SetStepTitle(Int_t istep, const Char_t* title) {
fGrid[istep]->SetTitle(title);
}

inline Int_t AliCFContainer::GetStep(const Char_t* title) const {
TString str(title);
for (Int_t iStep=0; iStep<fNStep; iStep++) {
if (!str.CompareTo(GetStepTitle(iStep))) return iStep;
}
AliError("Step not found");
return -1;
}

inline Int_t AliCFContainer::GetVar(const Char_t* title) const {
return fGrid[0]->GetVar(title);
}
#endif

30 changes: 14 additions & 16 deletions CORRFW/AliCFDataGrid.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ AliCFDataGrid::AliCFDataGrid(const Char_t* name,const Char_t* title) :
}

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t * nBinIn, const Double_t *binLimitsIn) :
AliCFGridSparse(name,title,nVarIn,nBinIn,binLimitsIn),
AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t * nBinIn) :
AliCFGridSparse(name,title,nVarIn,nBinIn),
fSelData(-1),
fContainer(0x0)
{
Expand All @@ -65,22 +65,21 @@ AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const Int_
//
SumW2();// errors saved
}

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const AliCFContainer &c) :
AliCFGridSparse(name,title),
fSelData(-1),
fContainer(0x0)
fContainer(&c)
{
//
// main constructor
//

//assign the container;
fContainer=&c;
fNVar = c.GetNVar();
}

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid(const AliCFDataGrid& data) : AliCFGridSparse(),
AliCFDataGrid::AliCFDataGrid(const AliCFDataGrid& data) :
AliCFGridSparse(data),
fSelData(-1),
fContainer(0x0)
{
Expand All @@ -97,18 +96,18 @@ AliCFDataGrid::~AliCFDataGrid()
// destructor
//
}

//____________________________________________________________________
AliCFDataGrid &AliCFDataGrid::operator=(const AliCFDataGrid &c)
{
//
// assigment operator
//
if (this != &c)
((AliCFDataGrid &) c).Copy(*this);
if (this != &c) c.Copy(*this);
return *this;
}
//____________________________________________________________________

//____________________________________________________________________
void AliCFDataGrid::SetMeasured(Int_t istep)
{
//
Expand All @@ -117,7 +116,7 @@ void AliCFDataGrid::SetMeasured(Int_t istep)

fSelData = istep ;
//simply clones the container's data at specified step
fData = (THnSparse*) ((AliCFGridSparse*)fContainer->GetGrid(istep))->GetGrid()->Clone();
fData = (THnSparse*) fContainer->GetGrid(istep)->GetGrid()->Clone();
SumW2();
AliInfo(Form("retrieving measured data from Container %s at selection step %i.",fContainer->GetName(),fSelData));
}
Expand All @@ -128,7 +127,7 @@ void AliCFDataGrid::ApplyEffCorrection(const AliCFEffGrid &c)
//
// Apply the efficiency correction
//
if(c.GetNVar()!=fNVar){
if (c.GetNVar()!=GetNVar()) {
AliInfo("Different number of variables, cannot apply correction");
return;
}
Expand All @@ -142,21 +141,20 @@ void AliCFDataGrid::ApplyBGCorrection(const AliCFDataGrid &c)
//
// Apply correction for background
//
if(c.GetNVar()!=fNVar){
if (c.GetNVar()!=GetNVar()) {
AliInfo("Different number of variables, cannot apply correction");
return;
}
Add(&c);
AliInfo(Form("background %s subtracted from data %s.",c.GetName(),GetName()));
}

//____________________________________________________________________
void AliCFDataGrid::Copy(TObject& c) const
{
// copy function

Copy(c);
AliCFDataGrid& target = (AliCFDataGrid &) c;
target.fContainer=fContainer;
target.fSelData=fSelData;

}
11 changes: 5 additions & 6 deletions CORRFW/AliCFDataGrid.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@ class AliCFDataGrid : public AliCFGridSparse
public:
AliCFDataGrid();
AliCFDataGrid(const Char_t* name,const Char_t* title);
AliCFDataGrid(const Char_t* name,const Char_t* title, const Int_t nVarIn, const Int_t* nBinIn, const Double_t *binLimitsIn=0);
AliCFDataGrid(const Char_t* name,const Char_t* title,const AliCFContainer &c);
AliCFDataGrid(const Char_t* name,const Char_t* title, const AliCFContainer &c);
AliCFDataGrid(const Char_t* name,const Char_t* title, const Int_t nVarIn, const Int_t* nBinIn);
AliCFDataGrid(const AliCFDataGrid& c);

virtual ~AliCFDataGrid();
AliCFDataGrid& operator=(const AliCFDataGrid& c);
virtual ~AliCFDataGrid();

virtual Int_t GetSelDataStep() const {return fSelData;};

// Methods for handling/correcting data

virtual void SetMeasured(Int_t istep);
virtual const AliCFVGrid* GetData() {return (AliCFVGrid*)fContainer->GetGrid(fSelData);};
virtual const AliCFGridSparse* GetData() {return fContainer->GetGrid(fSelData);};
virtual void ApplyEffCorrection(const AliCFEffGrid &eff);
virtual void ApplyBGCorrection(const AliCFDataGrid &c);
virtual void SetContainer(const AliCFContainer &c) {fContainer=&c;};
Expand All @@ -45,4 +45,3 @@ class AliCFDataGrid : public AliCFGridSparse
};

#endif

Loading

0 comments on commit 3d1640d

Please sign in to comment.