1 #ifndef ALIITSUV0LAYER_H
2 #define ALIITSUV0LAYER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 //*************************************************************************
8 // This class Defines the Geometry for the ITS Upgrade using TGeo
9 // This is a work class used to study different configurations
10 // during the development of the new ITS structure.
12 // Mario Sitta <sitta@to.infn.it>
13 // Chinorat Kobdaj (kobdaj@g.sut.ac.th)
14 //*************************************************************************
21 #include "AliITSv11Geometry.h"
22 #include "AliITSUv0.h"
23 #include <TGeoManager.h>
24 #include <TGeoCompositeShape.h>
29 class AliITSUv0Layer : public AliITSv11Geometry {
32 AliITSUv0Layer(Int_t debug);
33 AliITSUv0Layer(Int_t lay, Int_t debug);
34 AliITSUv0Layer(Int_t lay, Bool_t turbo, Int_t debug);
35 AliITSUv0Layer(const AliITSUv0Layer &source);
36 AliITSUv0Layer& operator=(const AliITSUv0Layer &source);
37 virtual ~AliITSUv0Layer();
39 Bool_t IsTurbo() const {return fIsTurbo;};
41 Double_t GetLadderThick() const {return fLadderThick;};
42 Double_t GetLadderTilt() const {return fLadderTilt;};
43 Double_t GetLadderWidth() const {return fLadderWidth;};
44 Double_t GetSensorThick() const {return fSensorThick;};
45 Double_t GetNLadders() const {return fNLadders;};
46 Double_t GetNModules() const {return fNModules;};
47 Double_t GetRadius() const {return fLayRadius;};
48 Double_t GetPhi0() const {return fPhi0;};
49 Double_t GetZLength() const {return fZLength;};
50 Int_t GetDetType() const {return fDetTypeID;}
51 AliITSUv0::AliITSUModel_t GetStaveModel() const {return fStaveModel;}
53 void SetLadderThick(Double_t t) {fLadderThick = t;};
54 void SetLadderTilt(Double_t t);
55 void SetLadderWidth(Double_t w);
56 void SetSensorThick(Double_t t) {fSensorThick = t;};
57 void SetNLadders(Int_t n) {fNLadders = n;};
58 void SetNModules(Int_t m) {fNModules = m;};
59 void SetRadius(Double_t r) {fLayRadius = r;};
60 void SetPhi0(Double_t phi) {fPhi0 = phi;}
61 void SetZLength(Double_t z) {fZLength = z;};
62 void SetDetType(Int_t tp) {fDetTypeID = tp;}
63 void SetBuildLevel(Int_t buildLevel){fBuildLevel=buildLevel;}
64 void SetStaveModel(AliITSUv0::AliITSUModel_t model) {fStaveModel=model;}
65 virtual void CreateLayer(TGeoVolume *moth);
68 void CreateLayerTurbo(TGeoVolume *moth);
70 Double_t RadiusOfTurboContainer();
72 TGeoVolume* CreateLadder(const TGeoManager *mgr=gGeoManager);
73 //TGeoVolume* CreateModule(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
74 TGeoVolume* CreateModule(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
77 TGeoVolume* CreateStaveStruct(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
78 TGeoVolume* CreateStaveModelDummy(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager) const;
79 TGeoVolume* CreateStaveModel0(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
80 TGeoVolume* CreateStaveModel1(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
81 TGeoVolume* CreateStaveModel21(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
82 TGeoVolume* CreateStaveModel22(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
83 TGeoVolume* CreateStaveModel3(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
86 Int_t fLayerNumber; // Current layer number
87 Double_t fPhi0; // lab phi of 1st ladder, in degrees!!!
88 Double_t fLayRadius; // Inner radius of this layer
89 Double_t fZLength; // Z length of this layer
90 Double_t fSensorThick; // Sensor thickness
91 Double_t fLadderThick; // Ladder thickness
92 Double_t fLadderWidth; // Ladder width (for turbo layers only)
93 Double_t fLadderTilt; // Ladder tilt angle (for turbo layers only) in degrees
94 Int_t fNLadders; // Number of ladders in this layer
95 Int_t fNModules; // Number of modules per ladder in this layer
96 UInt_t fDetTypeID; // detector type id
97 Bool_t fIsTurbo; // True if this layer is a "turbo" layer
98 Int_t fBuildLevel; // Used for material studies
100 AliITSUv0::AliITSUModel_t fStaveModel; // The stave model
102 // Parameters for the Upgrade geometry
104 static const Double_t fgkDefaultSensorThick; // Default sensor thickness
105 static const Double_t fgkDefaultLadderThick; // Default ladder thickness
107 ClassDef(AliITSUv0Layer,0) // ITS Upgrade v0 geometry