Fixes for wrong use of const causing PW.CAST_TO_QUALIFIED_TYPE defect in Coverity
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv0.h
1 #ifndef ALIITSUV0_H
2 #define ALIITSUV0_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 // Chinorat Kobdaj (kobdaj@g.sut.ac.th)
12 //
13 //========================================================================
14
15
16 // $Id: AliITSUv0.h 
17
18 #include "AliITSU.h"
19
20 class  AliITSUv0Layer;
21 //class  AliITSv11GeomBeamPipe;
22 class  TGeoVolume;
23 class  TGeoVolumeAssembly;
24
25 class AliITSUv0 : public AliITSU {
26
27  public:
28
29
30   typedef enum {
31     kModelDummy=0,
32     kModel0=1,
33     kModel1=2, 
34     kModel21=3,
35     kModel22=4,
36     kModel3=5
37   } AliITSUModel_t;
38   
39
40   AliITSUv0();
41   AliITSUv0(const char *title, Int_t nlay);
42   virtual       ~AliITSUv0() ;
43   virtual void   SetNWrapVolumes(Int_t n);
44   virtual void   AddAlignableVolumes() const;
45   virtual void   CreateGeometry();
46   virtual void   CreateMaterials();
47   virtual void   DefineLayer(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
48                              Int_t nmod, Double_t lthick=0.,Double_t dthick=0.,UInt_t detType=0);
49   virtual void   DefineLayerTurbo(Int_t nlay,Double_t phi0,Double_t r,Double_t zlen,Int_t nstav,
50                                   Int_t nmod,Double_t width,Double_t tilt,
51                                   Double_t lthick = 0.,Double_t dthick = 0.,UInt_t detType=0, Int_t buildFlag=0);
52   virtual void   GetLayerParameters(Int_t nlay, Double_t &phi0,Double_t &r, Double_t &zlen,
53                                     Int_t &nstav, Int_t &nmod,
54                                     Double_t &width, Double_t &tilt,
55                                     Double_t &lthick, Double_t &mthick,
56                                     UInt_t &dettype) const;
57   virtual void   DefineWrapVolume(Int_t id, Double_t rmin,Double_t rmax, Double_t zspan);
58   virtual void   Init(); 
59   virtual Bool_t IsLayerTurbo(Int_t nlay);
60   virtual Int_t  IsVersion()                 const { return 20;}  // vUpgrade ? do we need this
61   virtual void   SetDefaults();
62   virtual void   StepManager();
63   virtual void   SetLayerChipTypeID(Int_t lr, UInt_t id);
64   virtual Int_t  GetLayerChipTypeID(Int_t lr);
65   virtual void   SetStaveModel(AliITSUModel_t model) {fStaveModel=model;}
66   virtual AliITSUModel_t GetStaveModel() const {return fStaveModel;}
67   //
68  private:
69   AliITSUv0(const AliITSUv0 &source); // copy constructor
70   AliITSUv0& operator=(const AliITSUv0 &source); // assignment operator
71
72   TGeoVolume* CreateWrapperVolume(Int_t nLay);
73
74   //
75   Int_t     fNWrapVol;       // number of wrapper volumes
76   Double_t* fWrapRMin;       // min radius of wrapper volume
77   Double_t* fWrapRMax;       // max radius of wrapper volume
78   Double_t* fWrapZSpan;      // Z span of wrapper volume
79   Int_t*    fLay2WrapV;      // id of wrapper layer to which layer belongs (-1 if not wrapped)
80   Bool_t   *fLayTurbo;       // True for "turbo" layers
81   Double_t *fLayPhi0;        // Vector of layer's 1st stave phi in lab
82   Double_t *fLayRadii;       // Vector of layer radii
83   Double_t *fLayZLength;     // Vector of layer length along Z
84   Int_t    *fStavPerLay;     // Vector of number of staves per layer
85   Int_t    *fModPerStav;     // Vector of number of chips per stave
86   Double_t *fStaThick;       // Vector of stave thicknesses
87   Double_t *fStaWidth;       // Vector of stave width (only used for turbo)
88   Double_t *fStaTilt;        // Vector of stave tilt (only used for turbo)
89   Double_t *fDetThick;       // Vector of detector thicknesses
90   UInt_t   *fChipTypeID;      // Vector of detector type id
91   Int_t    *fBuildLevel;     // Vector of Material Budget Studies
92   //  
93   AliITSUv0Layer **fUpGeom; //! Geometry
94   AliITSUModel_t fStaveModel; // The stave model
95   
96   // Parameters for the Upgrade geometry
97   
98   ClassDef(AliITSUv0,0)                          
99 };
100  
101 #endif