]>
Commit | Line | Data |
---|---|---|
b705c75b | 1 | #ifndef ALIITSUV1_H |
2 | #define ALIITSUV1_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | //======================================================================== | |
7 | // | |
8 | // Geometry for the Upgrade of the Inner Tracking System | |
9 | // | |
10 | // Mario Sitta (sitta@to.infn.it) | |
11 | // | |
12 | //======================================================================== | |
13 | ||
14 | ||
15 | // $Id: AliITSUv1.h | |
16 | ||
17 | #include "AliITSU.h" | |
18 | ||
19 | class AliITSUv1Layer; | |
20 | //class AliITSv11GeomBeamPipe; | |
21 | class TGeoVolume; | |
22 | class TGeoVolumeAssembly; | |
23 | ||
24 | class AliITSUv1 : public AliITSU { | |
25 | ||
26 | public: | |
27 | ||
28 | ||
29 | typedef enum { | |
30 | kIBModelDummy=0, | |
31 | kIBModel0=1, | |
32 | kIBModel1=2, | |
33 | kIBModel21=3, | |
34 | kIBModel22=4, | |
35 | kIBModel3=5, | |
36 | kOBModelDummy=6, | |
37 | kOBModel0=7, | |
38 | kOBModel1=8 | |
39 | } AliITSUModel_t; | |
40 | ||
41 | ||
42 | AliITSUv1(); | |
34e8fe1d | 43 | AliITSUv1(const char *title, Int_t nlay); |
b705c75b | 44 | virtual ~AliITSUv1() ; |
45 | virtual void SetNWrapVolumes(Int_t n); | |
46 | virtual void AddAlignableVolumes() const; | |
c55b10c2 | 47 | void AddAlignableVolumesLayer(int lr, TString& parent,Int_t &lastUID) const; |
48 | void AddAlignableVolumesStave(int lr, int st, TString& parent,Int_t &lastUID) const; | |
49 | void AddAlignableVolumesHalfStave(int lr, int st, int sst, TString& parent,Int_t &lastUID) const; | |
50 | void AddAlignableVolumesModule(int lr, int st, int sst, int md, TString& parent,Int_t &lastUID) const; | |
51 | void AddAlignableVolumesChip(int lr, int st, int sst, int md, int ch, TString& parent,Int_t &lastUID) const; | |
52 | ||
b705c75b | 53 | virtual void CreateGeometry(); |
72953001 | 54 | void CreateSuppCyl(const Bool_t innerBarrel,TGeoVolume *dest,const TGeoManager *mgr=gGeoManager); |
b705c75b | 55 | virtual void CreateMaterials(); |
852af72e | 56 | virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav, |
c55b10c2 | 57 | Int_t nunit, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0, Int_t buildFlag=0); |
852af72e | 58 | virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav, |
c55b10c2 | 59 | Int_t nunit,Double_t width,Double_t tilt, |
b705c75b | 60 | Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0); |
61 | virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen, | |
852af72e | 62 | Int_t &nstav, Int_t &nmod, |
b705c75b | 63 | Double_t &width, Double_t &tilt, |
64 | Double_t <hick, Double_t &mthick, | |
65 | UInt_t &dettype) const; | |
66 | virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan); | |
67 | virtual void Init(); | |
68 | virtual Bool_t IsLayerTurbo(Int_t nlay); | |
69 | virtual Int_t IsVersion() const { return 20;} // vUpgrade ? do we need this | |
70 | virtual void SetDefaults(); | |
71 | virtual void StepManager(); | |
852af72e | 72 | virtual void SetLayerChipTypeID(Int_t lr, UInt_t id); |
73 | virtual Int_t GetLayerChipTypeID(Int_t lr); | |
b705c75b | 74 | virtual void SetStaveModelIB(AliITSUModel_t model) {fStaveModelIB=model;} |
75 | virtual void SetStaveModelOB(AliITSUModel_t model) {fStaveModelOB=model;} | |
76 | virtual AliITSUModel_t GetStaveModelIB() const {return fStaveModelIB;} | |
77 | virtual AliITSUModel_t GetStaveModelOB() const {return fStaveModelOB;} | |
78 | // | |
79 | private: | |
80 | AliITSUv1(const AliITSUv1 &source); // copy constructor | |
81 | AliITSUv1& operator=(const AliITSUv1 &source); // assignment operator | |
82 | ||
34e8fe1d | 83 | TGeoVolume* CreateWrapperVolume(Int_t nLay); |
b705c75b | 84 | |
85 | // | |
86 | Int_t fNWrapVol; // number of wrapper volumes | |
87 | Double_t* fWrapRMin; // min radius of wrapper volume | |
88 | Double_t* fWrapRMax; // max radius of wrapper volume | |
89 | Double_t* fWrapZSpan; // Z span of wrapper volume | |
c55b10c2 | 90 | Int_t* fLay2WrapV; // id of wrapper layer to which layer belongs (-1 if not wrapped) |
b705c75b | 91 | Bool_t *fLayTurbo; // True for "turbo" layers |
852af72e | 92 | Double_t *fLayPhi0; // Vector of layer's 1st stave phi in lab |
b705c75b | 93 | Double_t *fLayRadii; // Vector of layer radii |
94 | Double_t *fLayZLength; // Vector of layer length along Z | |
852af72e | 95 | Int_t *fStavPerLay; // Vector of number of staves per layer |
c55b10c2 | 96 | Int_t *fUnitPerStave; // Vector of number of "units" per stave |
97 | Double_t *fStaveThick; // Vector of stave thicknesses | |
98 | Double_t *fStaveWidth; // Vector of stave width (only used for turbo) | |
99 | Double_t *fStaveTilt; // Vector of stave tilt (only used for turbo) | |
b705c75b | 100 | Double_t *fDetThick; // Vector of detector thicknesses |
c55b10c2 | 101 | UInt_t *fChipTypeID; // Vector of detector type id |
b705c75b | 102 | Int_t *fBuildLevel; // Vector of Material Budget Studies |
103 | // | |
104 | AliITSUv1Layer **fUpGeom; //! Geometry | |
105 | AliITSUModel_t fStaveModelIB; // The stave model for the Inner Barrel | |
106 | AliITSUModel_t fStaveModelOB; // The stave model for the Outer Barrel | |
107 | ||
108 | // Parameters for the Upgrade geometry | |
109 | ||
110 | ClassDef(AliITSUv1,0) | |
111 | }; | |
112 | ||
113 | #endif |