#ifndef ALIFIDUCIALCUT_H
#define ALIFIDUCIALCUT_H
#include <TObject.h>
#include <TArrayF.h>
class TString ;
class AliFiducialCut : public TObject {
public:
AliFiducialCut() ;
virtual ~AliFiducialCut() ;
void InitParameters();
Bool_t CheckFiducialRegion(Float_t eta, Float_t phi,
const TArrayF* minphi, const TArrayF* maxphi,
const TArrayF* mineta, const TArrayF* maxeta) const ;
Bool_t IsInFiducialCut (Float_t eta, Float_t phi, Int_t det) const ;
void DoCTSFiducialCut (Bool_t b) { fCTSFiducialCut = b ; }
void DoEMCALFiducialCut(Bool_t b) { fEMCALFiducialCut = b ; }
void DoPHOSFiducialCut (Bool_t b) { fPHOSFiducialCut = b ; }
void DoDCALFiducialCut (Bool_t b) { fDCALFiducialCut = b ; }
Bool_t GetCTSFiducialCutStatus() const { return fCTSFiducialCut ; }
Bool_t GetEMCALFiducialCut() const { return fEMCALFiducialCut ; }
Bool_t GetPHOSFiducialCutStatus() const { return fPHOSFiducialCut ; }
Bool_t GetDCALFiducialCut() const { return fDCALFiducialCut ; }
void SetSimpleCTSFiducialCut (Float_t abseta, Float_t phimin, Float_t phimax) ;
void SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax) ;
void SetSimplePHOSFiducialCut (Float_t abseta, Float_t phimin, Float_t phimax) ;
void SetSimpleDCALFiducialCut (Float_t abseta, Float_t phimin, Float_t phimax) ;
void Print(const Option_t * opt)const;
void AddCTSFidCutMaxEtaArray(Int_t size, Float_t* array)
{ fCTSFidCutMaxEta->Set(size,array) ; }
TArrayF * GetCTSFidCutMaxEtaArray() const { return fCTSFidCutMaxEta ; }
void AddCTSFidCutMaxPhiArray(Int_t size, Float_t* array)
{ fCTSFidCutMaxPhi->Set(size,array) ; }
TArrayF * GetCTSFidCutMaxPhiArray() const { return fCTSFidCutMaxPhi ; }
void AddCTSFidCutMinEtaArray(Int_t size, Float_t* array)
{ fCTSFidCutMinEta->Set(size,array) ; }
TArrayF * GetCTSFidCutMinEtaArray() const { return fCTSFidCutMinEta ; }
void AddCTSFidCutMinPhiArray(Int_t size, Float_t* array)
{ fCTSFidCutMinPhi->Set(size,array) ; }
TArrayF * GetCTSFidCutMinPhiArray() const { return fCTSFidCutMinPhi ; }
void AddEMCALFidCutMaxEtaArray(Int_t size, Float_t* array)
{ fEMCALFidCutMaxEta->Set(size,array) ; }
TArrayF * GetEMCALFidCutMaxEtaArray() const { return fEMCALFidCutMaxEta ; }
void AddEMCALFidCutMaxPhiArray(Int_t size, Float_t* array)
{ fEMCALFidCutMaxPhi->Set(size,array) ; }
TArrayF * GetEMCALFidCutMaxPhiArray() const { return fEMCALFidCutMaxPhi ; }
void AddEMCALFidCutMinEtaArray(Int_t size, Float_t* array)
{ fEMCALFidCutMinEta->Set(size,array) ; }
TArrayF * GetEMCALFidCutMinEtaArray() const { return fEMCALFidCutMinEta ; }
void AddEMCALFidCutMinPhiArray(Int_t size, Float_t* array)
{ fEMCALFidCutMinPhi->Set(size,array) ; }
TArrayF * GetEMCALFidCutMinPhiArray() const { return fEMCALFidCutMinPhi ; }
void AddPHOSFidCutMaxEtaArray(Int_t size, Float_t* array)
{ fPHOSFidCutMaxEta->Set(size,array) ; }
TArrayF * GetPHOSFidCutMaxEtaArray() const { return fPHOSFidCutMaxEta ; }
void AddPHOSFidCutMaxPhiArray(Int_t size, Float_t* array)
{ fPHOSFidCutMaxPhi->Set(size,array) ; }
TArrayF * GetPHOSFidCutMaxPhiArray() const { return fPHOSFidCutMaxPhi ; }
void AddPHOSFidCutMinEtaArray(Int_t size, Float_t* array)
{ fPHOSFidCutMinEta->Set(size,array) ; }
TArrayF * GetPHOSFidCutMinEtaArray() const { return fPHOSFidCutMinEta ; }
void AddPHOSFidCutMinPhiArray(Int_t size, Float_t* array)
{ fPHOSFidCutMinPhi->Set(size,array) ; }
TArrayF * GetPHOSFidCutMinPhiArray() const { return fPHOSFidCutMinPhi ; }
void AddDCALFidCutMaxEtaArray(Int_t size, Float_t* array)
{ fDCALFidCutMaxEta->Set(size,array) ; }
TArrayF * GetDCALFidCutMaxEtaArray() const { return fDCALFidCutMaxEta ; }
void AddDCALFidCutMaxPhiArray(Int_t size, Float_t* array)
{ fDCALFidCutMaxPhi->Set(size,array) ; }
TArrayF * GetDCALFidCutMaxPhiArray() const { return fDCALFidCutMaxPhi ; }
void AddDCALFidCutMinEtaArray(Int_t size, Float_t* array)
{ fDCALFidCutMinEta->Set(size,array) ; }
TArrayF * GetDCALFidCutMinEtaArray() const { return fDCALFidCutMinEta ; }
void AddDCALFidCutMinPhiArray(Int_t size, Float_t* array)
{ fDCALFidCutMinPhi->Set(size,array) ; }
TArrayF * GetDCALFidCutMinPhiArray() const { return fDCALFidCutMinPhi ; }
enum detector {kEMCAL = 0, kPHOS = 1, kCTS = 2, kDCAL = 3, kDCALPHOS = 4 };
private:
Bool_t fEMCALFiducialCut ;
Bool_t fDCALFiducialCut ;
Bool_t fPHOSFiducialCut ;
Bool_t fCTSFiducialCut ;
TArrayF * fCTSFidCutMinEta ;
TArrayF * fCTSFidCutMinPhi ;
TArrayF * fCTSFidCutMaxEta ;
TArrayF * fCTSFidCutMaxPhi ;
TArrayF * fEMCALFidCutMinEta ;
TArrayF * fEMCALFidCutMinPhi ;
TArrayF * fEMCALFidCutMaxEta ;
TArrayF * fEMCALFidCutMaxPhi ;
TArrayF * fPHOSFidCutMinEta ;
TArrayF * fPHOSFidCutMinPhi ;
TArrayF * fPHOSFidCutMaxEta ;
TArrayF * fPHOSFidCutMaxPhi ;
TArrayF * fDCALFidCutMinEta ;
TArrayF * fDCALFidCutMinPhi ;
TArrayF * fDCALFidCutMaxEta ;
TArrayF * fDCALFidCutMaxPhi ;
AliFiducialCut( const AliFiducialCut & g) ;
AliFiducialCut & operator = (const AliFiducialCut & g) ;
ClassDef(AliFiducialCut,2)
} ;
#endif //ALIFIDUCIALCUT_H