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)
12 //========================================================================
20 //class AliITSv11GeomBeamPipe;
22 class TGeoVolumeAssembly;
24 class AliITSUv1 : public AliITSU {
43 AliITSUv1(const char *title, const Int_t nlay);
44 virtual ~AliITSUv1() ;
45 virtual void SetNWrapVolumes(Int_t n);
46 virtual void AddAlignableVolumes() const;
47 virtual void CreateGeometry();
48 virtual void CreateMaterials();
49 virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
50 Int_t nunit, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0, Int_t buildFlag=0);
51 virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
52 Int_t nunit,Double_t width,Double_t tilt,
53 Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0);
54 virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen,
55 Int_t &nstav, Int_t &nmod,
56 Double_t &width, Double_t &tilt,
57 Double_t <hick, Double_t &mthick,
58 UInt_t &dettype) const;
59 virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan);
61 virtual Bool_t IsLayerTurbo(Int_t nlay);
62 virtual Int_t IsVersion() const { return 20;} // vUpgrade ? do we need this
63 virtual void SetDefaults();
64 virtual void StepManager();
65 virtual void SetLayerChipTypeID(Int_t lr, UInt_t id);
66 virtual Int_t GetLayerChipTypeID(Int_t lr);
67 virtual void SetStaveModelIB(AliITSUModel_t model) {fStaveModelIB=model;}
68 virtual void SetStaveModelOB(AliITSUModel_t model) {fStaveModelOB=model;}
69 virtual AliITSUModel_t GetStaveModelIB() const {return fStaveModelIB;}
70 virtual AliITSUModel_t GetStaveModelOB() const {return fStaveModelOB;}
73 AliITSUv1(const AliITSUv1 &source); // copy constructor
74 AliITSUv1& operator=(const AliITSUv1 &source); // assignment operator
76 TGeoVolume* CreateWrapperVolume(const Int_t nLay);
79 Int_t fNWrapVol; // number of wrapper volumes
80 Double_t* fWrapRMin; // min radius of wrapper volume
81 Double_t* fWrapRMax; // max radius of wrapper volume
82 Double_t* fWrapZSpan; // Z span of wrapper volume
83 Bool_t *fLayTurbo; // True for "turbo" layers
84 Double_t *fLayPhi0; // Vector of layer's 1st stave phi in lab
85 Double_t *fLayRadii; // Vector of layer radii
86 Double_t *fLayZLength; // Vector of layer length along Z
87 Int_t *fStavPerLay; // Vector of number of staves per layer
88 Int_t *fUnitPerStave; // Vector of number of "units" per stave
89 Double_t *fStaveThick; // Vector of stave thicknesses
90 Double_t *fStaveWidth; // Vector of stave width (only used for turbo)
91 Double_t *fStaveTilt; // Vector of stave tilt (only used for turbo)
92 Double_t *fDetThick; // Vector of detector thicknesses
93 UInt_t *fChipTypeID; // Vector of detector type id
94 Int_t *fBuildLevel; // Vector of Material Budget Studies
96 AliITSUv1Layer **fUpGeom; //! Geometry
97 AliITSUModel_t fStaveModelIB; // The stave model for the Inner Barrel
98 AliITSUModel_t fStaveModelOB; // The stave model for the Outer Barrel
100 // Parameters for the Upgrade geometry
102 ClassDef(AliITSUv1,0)