#ifndef ALIITSUV0_H
#define ALIITSUV0_H
#include "AliITSU.h"
class AliITSUv0Layer;
class TGeoVolume;
class TGeoVolumeAssembly;
class AliITSUv0 : public AliITSU {
public:
typedef enum {
kModelDummy=0,
kModel0=1,
kModel1=2,
kModel21=3,
kModel22=4,
kModel3=5
} AliITSUModel_t;
AliITSUv0();
AliITSUv0(const char *title, Int_t nlay);
virtual ~AliITSUv0() ;
virtual void SetNWrapVolumes(Int_t n);
virtual void AddAlignableVolumes() const;
virtual void CreateGeometry();
virtual void CreateMaterials();
virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
Int_t nmod, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0);
virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
Int_t nmod,Double_t width,Double_t tilt,
Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0);
virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen,
Int_t &nstav, Int_t &nmod,
Double_t &width, Double_t &tilt,
Double_t <hick, Double_t &mthick,
UInt_t &dettype) const;
virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan);
virtual void Init();
virtual Bool_t IsLayerTurbo(Int_t nlay);
virtual Int_t IsVersion() const { return 20;}
virtual void SetDefaults();
virtual void StepManager();
virtual void SetLayerChipTypeID(Int_t lr, UInt_t id);
virtual Int_t GetLayerChipTypeID(Int_t lr);
virtual void SetStaveModel(AliITSUModel_t model) {fStaveModel=model;}
virtual AliITSUModel_t GetStaveModel() const {return fStaveModel;}
private:
AliITSUv0(const AliITSUv0 &source);
AliITSUv0& operator=(const AliITSUv0 &source);
TGeoVolume* CreateWrapperVolume(Int_t nLay);
Int_t fNWrapVol;
Double_t* fWrapRMin;
Double_t* fWrapRMax;
Double_t* fWrapZSpan;
Int_t* fLay2WrapV;
Bool_t *fLayTurbo;
Double_t *fLayPhi0;
Double_t *fLayRadii;
Double_t *fLayZLength;
Int_t *fStavPerLay;
Int_t *fModPerStav;
Double_t *fStaThick;
Double_t *fStaWidth;
Double_t *fStaTilt;
Double_t *fDetThick;
UInt_t *fChipTypeID;
Int_t *fBuildLevel;
AliITSUv0Layer **fUpGeom;
AliITSUModel_t fStaveModel;
ClassDef(AliITSUv0,0)
};
#endif