3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 //========================================================================
8 // Geometry for the Upgrade of the Inner Tracking System
10 // Mario Sitta (sitta@to.infn.it)
11 // Chinorat Kobdaj (kobdaj@g.sut.ac.th)
13 //========================================================================
21 //class AliITSv11GeomBeamPipe;
23 class TGeoVolumeAssembly;
25 class AliITSUv0 : public AliITSU {
41 AliITSUv0(const char *title, const Int_t nlay);
42 virtual ~AliITSUv0() ;
43 virtual void SetNWrapVolumes(Int_t n);
44 virtual void AddAlignableVolumes() const;
45 virtual void CreateGeometry();
46 virtual void CreateMaterials();
47 virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nladd,
48 Int_t nmod, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0);
49 virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nladd,
50 Int_t nmod,Double_t width,Double_t tilt,
51 Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0);
52 virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen,
53 Int_t &nladd, Int_t &nmod,
54 Double_t &width, Double_t &tilt,
55 Double_t <hick, Double_t &mthick,
56 UInt_t &dettype) const;
57 virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan);
59 virtual Bool_t IsLayerTurbo(Int_t nlay);
60 virtual Int_t IsVersion() const { return 20;} // vUpgrade ? do we need this
61 virtual void SetDefaults();
62 virtual void StepManager();
63 virtual void SetLayerDetTypeID(Int_t lr, UInt_t id);
64 virtual Int_t GetLayerDetTypeID(Int_t lr);
65 virtual void SetStaveModel(AliITSUModel_t model) {fStaveModel=model;}
66 virtual AliITSUModel_t GetStaveModel() const {return fStaveModel;}
69 AliITSUv0(const AliITSUv0 &source); // copy constructor
70 AliITSUv0& operator=(const AliITSUv0 &source); // assignment operator
72 TGeoVolume* CreateWrapperVolume(const Int_t nLay);
75 Int_t fNWrapVol; // number of wrapper volumes
76 Double_t* fWrapRMin; // min radius of wrapper volume
77 Double_t* fWrapRMax; // max radius of wrapper volume
78 Double_t* fWrapZSpan; // Z span of wrapper volume
79 Bool_t *fLayTurbo; // True for "turbo" layers
80 Double_t *fLayPhi0; // Vector of layer's 1st ladder phi in lab
81 Double_t *fLayRadii; // Vector of layer radii
82 Double_t *fLayZLength; // Vector of layer length along Z
83 Int_t *fLaddPerLay; // Vector of number of ladders per layer
84 Int_t *fModPerLadd; // Vector of number of modules per ladder
85 Double_t *fLadThick; // Vector of ladder thicknesses
86 Double_t *fLadWidth; // Vector of ladder width (only used for turbo)
87 Double_t *fLadTilt; // Vector of ladder tilt (only used for turbo)
88 Double_t *fDetThick; // Vector of detector thicknesses
89 UInt_t *fDetTypeID; // Vector of detector type id
90 Int_t *fBuildLevel; // Vector of Material Budget Studies
92 AliITSUv0Layer **fUpGeom; //! Geometry
93 AliITSUModel_t fStaveModel; // The stave model
95 // Parameters for the Upgrade geometry