]>
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, | |
1fc6eff6 | 38 | kOBModel1=8, |
39 | kOBModel2=9 | |
b705c75b | 40 | } AliITSUModel_t; |
41 | ||
42 | ||
43 | AliITSUv1(); | |
34e8fe1d | 44 | AliITSUv1(const char *title, Int_t nlay); |
b705c75b | 45 | virtual ~AliITSUv1() ; |
46 | virtual void SetNWrapVolumes(Int_t n); | |
47 | virtual void AddAlignableVolumes() const; | |
c55b10c2 | 48 | void AddAlignableVolumesLayer(int lr, TString& parent,Int_t &lastUID) const; |
49 | void AddAlignableVolumesStave(int lr, int st, TString& parent,Int_t &lastUID) const; | |
50 | void AddAlignableVolumesHalfStave(int lr, int st, int sst, TString& parent,Int_t &lastUID) const; | |
51 | void AddAlignableVolumesModule(int lr, int st, int sst, int md, TString& parent,Int_t &lastUID) const; | |
52 | void AddAlignableVolumesChip(int lr, int st, int sst, int md, int ch, TString& parent,Int_t &lastUID) const; | |
53 | ||
b705c75b | 54 | virtual void CreateGeometry(); |
72953001 | 55 | void CreateSuppCyl(const Bool_t innerBarrel,TGeoVolume *dest,const TGeoManager *mgr=gGeoManager); |
b705c75b | 56 | virtual void CreateMaterials(); |
852af72e | 57 | virtual void DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav, |
c55b10c2 | 58 | Int_t nunit, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0, Int_t buildFlag=0); |
852af72e | 59 | virtual void DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav, |
c55b10c2 | 60 | Int_t nunit,Double_t width,Double_t tilt, |
b705c75b | 61 | Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0); |
62 | virtual void GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen, | |
852af72e | 63 | Int_t &nstav, Int_t &nmod, |
b705c75b | 64 | Double_t &width, Double_t &tilt, |
65 | Double_t <hick, Double_t &mthick, | |
66 | UInt_t &dettype) const; | |
67 | virtual void DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan); | |
68 | virtual void Init(); | |
69 | virtual Bool_t IsLayerTurbo(Int_t nlay); | |
70 | virtual Int_t IsVersion() const { return 20;} // vUpgrade ? do we need this | |
71 | virtual void SetDefaults(); | |
72 | virtual void StepManager(); | |
852af72e | 73 | virtual void SetLayerChipTypeID(Int_t lr, UInt_t id); |
74 | virtual Int_t GetLayerChipTypeID(Int_t lr); | |
b705c75b | 75 | virtual void SetStaveModelIB(AliITSUModel_t model) {fStaveModelIB=model;} |
76 | virtual void SetStaveModelOB(AliITSUModel_t model) {fStaveModelOB=model;} | |
77 | virtual AliITSUModel_t GetStaveModelIB() const {return fStaveModelIB;} | |
78 | virtual AliITSUModel_t GetStaveModelOB() const {return fStaveModelOB;} | |
79 | // | |
80 | private: | |
81 | AliITSUv1(const AliITSUv1 &source); // copy constructor | |
82 | AliITSUv1& operator=(const AliITSUv1 &source); // assignment operator | |
83 | ||
34e8fe1d | 84 | TGeoVolume* CreateWrapperVolume(Int_t nLay); |
b705c75b | 85 | |
86 | // | |
87 | Int_t fNWrapVol; // number of wrapper volumes | |
88 | Double_t* fWrapRMin; // min radius of wrapper volume | |
89 | Double_t* fWrapRMax; // max radius of wrapper volume | |
90 | Double_t* fWrapZSpan; // Z span of wrapper volume | |
c55b10c2 | 91 | Int_t* fLay2WrapV; // id of wrapper layer to which layer belongs (-1 if not wrapped) |
b705c75b | 92 | Bool_t *fLayTurbo; // True for "turbo" layers |
852af72e | 93 | Double_t *fLayPhi0; // Vector of layer's 1st stave phi in lab |
b705c75b | 94 | Double_t *fLayRadii; // Vector of layer radii |
95 | Double_t *fLayZLength; // Vector of layer length along Z | |
852af72e | 96 | Int_t *fStavPerLay; // Vector of number of staves per layer |
c55b10c2 | 97 | Int_t *fUnitPerStave; // Vector of number of "units" per stave |
1fc6eff6 | 98 | Double_t *fChipThick; // Vector of chip thicknesses |
c55b10c2 | 99 | Double_t *fStaveWidth; // Vector of stave width (only used for turbo) |
100 | Double_t *fStaveTilt; // Vector of stave tilt (only used for turbo) | |
1fc6eff6 | 101 | Double_t *fSensThick; // Vector of sensor thicknesses |
c55b10c2 | 102 | UInt_t *fChipTypeID; // Vector of detector type id |
b705c75b | 103 | Int_t *fBuildLevel; // Vector of Material Budget Studies |
104 | // | |
105 | AliITSUv1Layer **fUpGeom; //! Geometry | |
106 | AliITSUModel_t fStaveModelIB; // The stave model for the Inner Barrel | |
107 | AliITSUModel_t fStaveModelOB; // The stave model for the Outer Barrel | |
108 | ||
109 | // Parameters for the Upgrade geometry | |
110 | ||
1fc6eff6 | 111 | ClassDef(AliITSUv1,0) |
b705c75b | 112 | }; |
113 | ||
114 | #endif |