#ifndef ALIITSSEGMENTATION_H
#define ALIITSSEGMENTATION_H
#include <TObject.h>
#include "AliLog.h"
#include "AliITSgeom.h"
class TF1;
class AliITSsegmentation :
public TObject {
public:
AliITSsegmentation();
AliITSsegmentation(const AliITSsegmentation& source);
virtual ~AliITSsegmentation();
AliITSsegmentation& operator=(const AliITSsegmentation &source);
virtual void SetDetSize(Float_t p1,Float_t p2,Float_t p3)
{fDx=p1; fDz=p2; fDy=p3;}
virtual void SetPadSize(Float_t,Float_t) {MayNotUse("SetPadSize");}
virtual void SetNPads(Int_t,Int_t) = 0;
virtual Int_t GetNPads() const = 0;
virtual void SetLayer(Int_t) {MayNotUse("SetLayer");}
virtual Int_t GetNumberOfChips() const {MayNotUse("GetNumberOfChips"); return 0;}
virtual Int_t GetMaximumChipIndex() const {MayNotUse("GetNumberOfChips"); return 0;}
virtual Int_t GetChipFromLocal(Float_t, Float_t) const {MayNotUse("GetChipFromLocal"); return 0;}
virtual Int_t GetChipsInLocalWindow(Int_t* , Float_t , Float_t , Float_t , Float_t ) const {MayNotUse("GetChipsInLocalWindow"); return 0;}
virtual Int_t GetChipFromChannel(Int_t, Int_t) const {MayNotUse("GetChipFromChannel"); return 0;}
virtual void GetPadIxz(Float_t,Float_t,Int_t &,Int_t &) const = 0;
virtual void GetPadCxz(Int_t,Int_t,Float_t &,Float_t &) const = 0;
virtual void GetPadTxz(Float_t &,Float_t &) const = 0;
virtual Bool_t LocalToDet(Float_t,Float_t,Int_t &,Int_t &) const = 0;
virtual void DetToLocal(Int_t,Int_t,Float_t &,Float_t &) const = 0;
virtual void Init() = 0;
virtual Float_t Dx() const {return fDx;}
virtual Float_t Dz() const {return fDz;}
virtual Float_t Dy() const {return fDy;}
virtual Float_t Dpx(Int_t) const = 0;
virtual Float_t Dpz(Int_t) const = 0;
virtual Int_t Npx() const = 0;
virtual Int_t Npz() const = 0;
virtual Int_t GetLayer() const {MayNotUse("GetLayer"); return 0;}
virtual void Angles(Float_t& , Float_t& ) const
{MayNotUse("Angles");}
virtual void Neighbours(Int_t,Int_t,Int_t*,Int_t[10],Int_t[10]) const
{MayNotUse("Neighbours");}
virtual void SetCorrFunc(TF1* fc) {fCorr = fc;}
virtual TF1* CorrFunc() {return fCorr;}
virtual void PrintDefaultParameters() const = 0;
protected:
virtual void Copy(TObject &obj) const;
Float_t fDx;
Float_t fDz;
Float_t fDy;
TF1* fCorr;
ClassDef(AliITSsegmentation,2)
};
#endif