Adding more volumes.
[u/mrichter/AliRoot.git] / ITS / AliITSv11.h
1 #ifndef ALIITSV11_H
2 #define ALIITSV11_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /*
7   $Id$
8  */
9
10 /////////////////////////////////////////////////////////////////////////
11 //  Manager and hits classes for set: ITS version 11, 2003 geometry    //
12 /////////////////////////////////////////////////////////////////////////
13  
14 #include "AliITS.h"
15 class TGeoVolume;
16 class TGeoPcon;
17  
18 class AliITSv11 : public AliITS {
19
20  public:
21     AliITSv11();
22     AliITSv11(const char *title);
23     AliITSv11(const AliITSv11 &source); // copy constructor
24     AliITSv11& operator=(const AliITSv11 &source); // assignment operator
25     virtual       ~AliITSv11();
26     virtual void   BuildGeometry();
27     virtual void   CreateGeometry();
28     virtual void   CreateMaterials();
29     virtual Int_t  IsVersion() const {return 11;} // ITS version number
30     virtual void   Init(); 
31     virtual void   SetDefaults();
32     virtual void   DrawModule();
33     virtual void   StepManager();
34     virtual void   SetWriteDet(Bool_t det=kTRUE){ // set .det write
35                                                  fGeomDetOut = det;}
36     virtual void   SetWriteDet(const char *f){ // set write file
37                                  strncpy(fWrite,f,60);fGeomDetOut = kTRUE;}
38     virtual void   SetReadDet(Bool_t det=kTRUE){ //set .det read
39                                                 fGeomDetIn = det;}
40     virtual void   SetReadDet(const char *f){ // set read file
41                                    strncpy(fRead,f,60);fGeomDetIn = kTRUE;}
42     virtual void   SetEUCLID(Bool_t euclid=kTRUE){ // set write Euclid file
43                                                   fEuclidOut = euclid;}
44     virtual void   SetEUCLIDFileName(const char *f){ // set write file
45                              fEuclidGeometry=f;fEuclidOut = kTRUE;}
46     virtual void   SetMinorVersion(Int_t v=00){ // Set minor version
47         fMinorVersion = v;}
48     virtual void   SetThicknessDet1(Float_t v=200.){ 
49          // Set detector thickness in layer 1
50          fDet1 = v;}
51     virtual void   SetThicknessDet2(Float_t v=200.){ 
52          // Set detector thickness in layer 2
53          fDet2 = v;}
54     virtual void   SetThicknessChip1(Float_t v=300.){ 
55          // Set chip thickness in layer 1
56          fChip1 = v;}            
57     virtual void   SetThicknessChip2(Float_t v=200.){ 
58          // Set chip thickness in layer 2
59          fChip2 = v;}
60     virtual void   SetRails(Int_t v=1){ 
61          // Set flag for rails
62          fRails = v;}    
63     virtual void   SetCoolingFluid(Int_t v=1){ 
64          // Set flag for cooling fluid
65          fFluid = v;}            
66     virtual Bool_t GetEUCLID(){return fEuclidOut;}// returns value Euclid flag
67     virtual const char  *GetEULIIDFileName() const{ // return .euc file name
68                                        return fEuclidGeometry.Data();}
69     virtual Bool_t GetWriteDet() { // returns value GeomDetOut flag.
70                                   return fGeomDetOut;}
71     virtual Bool_t GetReadDet() { // returns value GeomDetIn flag.
72                                  return fGeomDetIn;}
73     virtual char  *GetReadDetFileName(){ // return .det read file name
74         if(fRead[0]!='\0') return fRead; else return fEuclidGeomDet;}
75     virtual char  *GetWriteDetFileName(){ // return .det write file name
76         if(fWrite[0]!='\0') return fWrite; else return fEuclidGeomDet;}
77     virtual Int_t GetMajorVersion(){// return Major Version Number
78         return fMajorVersion;}
79     virtual Int_t GetMinorVersion(){// return Major Version Number
80         return fMinorVersion;}
81     virtual Float_t GetThicknessDet1(){ 
82          // Get detector thickness in layer 1
83          return fDet1;}
84     virtual Float_t GetThicknessDet2(){ 
85          // Get detector thickness in layer 2
86          return fDet2;}
87     virtual Float_t GetThicknessChip1(){ 
88          // Get chip thickness in layer 1
89          return fChip1;}                 
90     virtual Float_t GetThicknessChip2(){ 
91          // Get chip thickness in layer 2
92          return fChip2;}
93     virtual Int_t GetRails(){ 
94          // Get flag for rails
95          return fRails;}         
96     virtual Int_t GetCoolingFluid(){ 
97          // Get flag for cooling fluid
98          return fFluid;}                         
99                  
100  private:
101     void InitAliITSgeom();
102     void SPDCone(TGeoVolume *Moth);
103     void SPDThermalSheald(TGeoVolume *Moth);
104     void SDDCone(TGeoVolume *Moth);
105     void SSDCone(TGeoVolume *Moth);
106     Double_t RmaxFrom2Points(TGeoPcon *p,Int_t i1,Int_t i2,Double_t z);
107     Double_t RminFrom2Points(TGeoPcon *p,Int_t i1,Int_t i2,Double_t z);
108     Double_t RFrom2Points(Double_t *p,Double_t *Z,Int_t i1,Int_t i2,Double_t z);
109     Double_t Zfrom2MinPoints(TGeoPcon *p,Int_t i1,Int_t i2,Double_t r);
110     Double_t Zfrom2MaxPoints(TGeoPcon *p,Int_t i1,Int_t i2,Double_t r);
111     Double_t Zfrom2Points(Double_t *Z,Double_t *p,Int_t i1,Int_t i2,Double_t r);
112     Double_t RmaxFromZpCone(TGeoPcon *p,Double_t tc,Double_t z,Double_t th=0.0);
113     Double_t RmaxFromZpCone(Double_t *Rmax,Double_t *Z,Double_t tc,Double_t z,Double_t th=0.0);
114     Double_t RminFromZpCone(TGeoPcon *p,Double_t tc,Double_t z,Double_t th=0.0);
115     Double_t RminFromZpCone(Double_t *Rmin,Double_t *Z,Double_t tc,Double_t z,Double_t th=0.0);
116     Double_t ZFromRmaxpCone(TGeoPcon *p,Double_t tc,Double_t r,Double_t th=0.0);
117     Double_t ZFromRmaxpCone(Double_t *GetRmax,Double_t *GetZ,Double_t tc,Double_t r,Double_t th=0.0);
118     Double_t ZFromRminpCone(TGeoPcon *p,Double_t tc,Double_t r,Double_t th=0.0);
119     void RadiusOfCurvature(Double_t rc,Double_t theta0,Double_t z0,
120                            Double_t r0,Double_t theta1,Double_t &z1,
121                            Double_t &r1);
122
123     // TString fEuclidGeomtery,fEuclidMaterial defined in AliModule.
124     Bool_t fEuclidOut;        // Flag to write geometry in euclid format
125     Bool_t fGeomDetOut;       // Flag to write .det file out
126     Bool_t fGeomDetIn;        // Flag to read .det file or directly from Geat.
127     Int_t  fMajorVersion;     // Major version number == IsVersion
128     Int_t  fMinorVersion;     // Minor version number
129     char   fEuclidGeomDet[60];// file where detector transormation are define.
130     char   fRead[60];         //! file name to read .det file
131     char   fWrite[60];        //! file name to write .det file
132     Float_t  fDet1;           // thickness of detector in SPD layer 1
133     Float_t  fDet2;           // thickness of detector in SPD layer 2
134     Float_t  fChip1;          // thickness of chip in SPD layer 1   
135     Float_t  fChip2;          // thickness of chip in SPD layer 2   
136     Int_t    fRails;          // switch rails on (=1) and off (=0)
137     Int_t    fFluid;          // switch between water(=1) and freon(=0)
138
139     ClassDef(AliITSv11,1)  //Hits manager for set:ITS version 11
140 };
141  
142 #endif