]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/AliITSvUpgrade.h
Eliminated hardwired names. The layed detector type ID is stored in TGeo and can
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSvUpgrade.h
1 #ifndef ALIITSVUPGRADE_H
2 #define ALIITSVUPGRADE_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: AliITSvUpgrade.h 
16
17 #include "AliITSUpg.h"
18 #include "AliITSInitGeometryUpg.h"
19
20 class  AliITSv11GeometryUpgrade;
21 class  AliITSv11GeomBeamPipe;
22 class  TGeoVolume;
23 class  TGeoVolumeAssembly;
24
25 class AliITSvUpgrade : public AliITSUpg {
26
27  public:
28     AliITSvUpgrade();
29     AliITSvUpgrade(const char *title);
30     AliITSvUpgrade(const char *name, const char *title, const Int_t nlay);
31     virtual       ~AliITSvUpgrade() ;
32
33     virtual void   AddAlignableVolumes() const;
34     virtual void   AddBeamPipe(const Double_t rmin, const Double_t rmax,
35                                const Double_t halfzlen=0.);
36     virtual void   CreateGeometry();
37     virtual void   CreateMaterials();
38     virtual void   DefineLayer(const Int_t nlay, const Double_t r,
39                                const Double_t zlen, const Int_t nladd,
40                                const Int_t nmod, const Double_t lthick = 0.,
41                                const Double_t dthick = 0.,
42                                const UInt_t detType=0);
43     virtual void   DefineLayerTurbo(const Int_t nlay, const Double_t r,
44                                     const Double_t zlen, const Int_t nladd,
45                                     const Int_t nmod, const Double_t width,
46                                     const Double_t tilt,
47                                     const Double_t lthick = 0.,
48                                     const Double_t dthick = 0.,
49                                     const UInt_t detType=0);
50     virtual void   GetBeamPipeParameters(Double_t &rmin, Double_t &rmax,
51                                          Double_t &hzlen);
52     virtual void   GetLayerParameters(const Int_t nlay,
53                                       Double_t &r, Double_t &zlen,
54                                       Int_t &nladd, Int_t &nmod,
55                                       Double_t &width, Double_t &tilt,
56                                       Double_t &lthick, Double_t &mthick);
57     virtual Int_t  GetMajorVersion() const {return fMajorVersion;}
58     virtual Int_t  GetMinorVersion() const {return fMinorVersion;}
59     virtual Int_t  GetNumberOfLayers() const {return fNumberOfLayers;}
60     virtual Bool_t HasBeamPipe() const {return fBeamPipe;}
61     virtual void   Init(); 
62     virtual Bool_t IsLayerTurbo(const Int_t nlay);
63     virtual Int_t  IsVersion() const {// returns the ITS version number 
64                                       return 20;}  // vUpgrade
65     virtual void   SetDefaults();
66     virtual void   SetMinorVersion(Int_t v=2) {fMinorVersion = v;}
67     virtual void   SetNumberOfLayers(Int_t n) {fNumberOfLayers = n;}
68     virtual void   StepManager();
69     virtual void   SetLayerDetTypeID(Int_t lr, UInt_t id);
70     virtual Int_t  GetLayerDetTypeID(Int_t lr);
71     //
72  protected:
73     void SetT2Lmatrix(Int_t uid, Double_t yShift,Bool_t yFlip, Bool_t yRot180=kFALSE) const; // Set T2L matrix in TGeoPNEntries
74
75  private:
76     AliITSvUpgrade(const AliITSvUpgrade &source); // copy constructor
77     AliITSvUpgrade& operator=(const AliITSvUpgrade &source); // assignment operator
78
79     Int_t   fMajorVersion;     // Major version number == IsVersion
80     Int_t   fMinorVersion;     // Minor version number
81
82     Int_t   fNumberOfLayers;   // Number of layers
83     Bool_t   *fLayTurbo;       // True for "turbo" layers
84     Double_t *fLayRadii;       // Vector of layer radii
85     Double_t *fLayZLength;     // Vector of layer length along Z
86     Int_t    *fLaddPerLay;     // Vector of number of ladders per layer
87     Int_t    *fModPerLadd;     // Vector of number of modules per ladder
88     Double_t *fLadThick;       // Vector of ladder thicknesses
89     Double_t *fLadWidth;       // Vector of ladder width (only used for turbo)
90     Double_t *fLadTilt;        // Vector of ladder tilt (only used for turbo)
91     Double_t *fDetThick;       // Vector of detector thicknesses
92     UInt_t   *fDetTypeID;      // Vector of detector type id
93     Bool_t    fBeamPipe;       // True for creating the beam pipe
94     Double_t  fBeamPipeRmin;   // Rmin of beam pipe
95     Double_t  fBeamPipeRmax;   // Rmax of beam pipe
96     Double_t  fBeamPipeZlen;   // Half Z length of beam pipe
97
98     AliITSInitGeometryUpg fInitGeom;   //! Get access to decoding and AliITSgeom init functins
99
100     AliITSv11GeometryUpgrade **fUpGeom; //! Geometry
101     AliITSv11GeomBeamPipe     *fBPGeom; //! Beam Pipe Geometry
102
103   // Parameters for the Upgrade geometry
104
105     static const Double_t fgkBeamPipeHalfZLen;  // Default value for beampipe Z
106
107     ClassDef(AliITSvUpgrade,0)                          
108 };
109  
110 #endif