Fix for ITS dictionaries
[u/mrichter/AliRoot.git] / ITS / UPGRADE / ITSUpgradeSim / AliITSUv0Layer.h
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                               */
5
6
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.
11 //
12 //  Mario Sitta <sitta@to.infn.it>
13 // Chinorat Kobdaj (kobdaj@g.sut.ac.th)
14 //*************************************************************************
15
16
17 /*
18   $Id: AliITSUv0Layer.h
19  */
20
21 #include "AliITSv11Geometry.h"
22 #include "AliITSUv0.h"
23 #include <TGeoManager.h>
24 #include <TGeoCompositeShape.h>
25 #include <TGeoXtru.h>
26
27 class TGeoVolume;
28
29 class AliITSUv0Layer : public AliITSv11Geometry {
30   public:
31     AliITSUv0Layer();
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();
38     //
39     Bool_t    IsTurbo() const {return fIsTurbo;};
40
41     Double_t  GetStaveThick() const {return fStaveThick;};
42     Double_t  GetStaveTilt()  const {return fStaveTilt;};
43     Double_t  GetStaveWidth() const {return fStaveWidth;};
44     Double_t  GetSensorThick() const {return fSensorThick;};
45     Double_t  GetNStaves()    const {return fNStaves;};
46     Double_t  GetNChips()    const {return fNChips;};
47     Double_t  GetRadius()      const {return fLayRadius;};
48     Double_t  GetPhi0()        const {return fPhi0;};
49     Double_t  GetZLength()     const {return fZLength;};
50     Int_t     GetChipType()     const {return fChipTypeID;}
51     AliITSUv0::AliITSUModel_t GetStaveModel() const {return fStaveModel;}
52     //
53     void      SetStaveThick(Double_t t)    {fStaveThick = t;};
54     void      SetStaveTilt(Double_t t);
55     void      SetStaveWidth(Double_t w);
56     void      SetSensorThick(Double_t t)    {fSensorThick = t;};
57     void      SetNStaves(Int_t n)          {fNStaves = n;};
58     void      SetNChips(Int_t m)          {fNChips = 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      SetChipType(Int_t tp)          {fChipTypeID = tp;}
63     void      SetBuildLevel(Int_t buildLevel){fBuildLevel=buildLevel;}
64     void      SetStaveModel(AliITSUv0::AliITSUModel_t model) {fStaveModel=model;}
65     virtual void CreateLayer(TGeoVolume *moth);
66
67   private:
68     void CreateLayerTurbo(TGeoVolume *moth);
69
70     Double_t RadiusOfTurboContainer();
71
72     TGeoVolume* CreateStave(const TGeoManager *mgr=gGeoManager);
73     //TGeoVolume* CreateChip(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
74     TGeoVolume* CreateChip(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
75
76
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);
84
85
86     Int_t     fLayerNumber; // Current layer number
87     Double_t  fPhi0;        // lab phi of 1st stave, 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  fStaveThick; // Stave thickness
92     Double_t  fStaveWidth; // Stave width (for turbo layers only)
93     Double_t  fStaveTilt;  // Stave tilt angle (for turbo layers only) in degrees
94     Int_t     fNStaves;    // Number of staves in this layer
95     Int_t     fNChips;    // Number of chips per stave in this layer
96     UInt_t    fChipTypeID;   // detector type id
97     Bool_t    fIsTurbo;     // True if this layer is a "turbo" layer
98     Int_t     fBuildLevel;  // Used for material studies
99
100     AliITSUv0::AliITSUModel_t fStaveModel; // The stave model
101
102     // Parameters for the Upgrade geometry
103
104     static const Double_t fgkDefaultSensorThick; // Default sensor thickness
105     static const Double_t fgkDefaultStaveThick; // Default stave thickness
106
107   ClassDef(AliITSUv0Layer,0) // ITS Upgrade v0 geometry
108 };
109
110 #endif