Adding some further mother volumes to speed-up the overlap checking and particle...
[u/mrichter/AliRoot.git] / ITS / AliITSvBeamTestITS04.h
1 #ifndef ALIITSVBEAMTESTITS04_H
2 #define ALIITSVBEAMTESTITS04_H
3
4 ////////////////////////////////////////////////
5 // ITS geometry class and step manager for the//
6 //   integrated ITS test beam of Nov. 04      //
7 ////////////////////////////////////////////////
8 #include "AliITSInitGeometry.h"
9 #include "AliITS.h"
10
11 class TGeoVolume;
12
13 class AliITSvBeamTestITS04 : public AliITS {
14  
15  public:
16     AliITSvBeamTestITS04();
17     AliITSvBeamTestITS04(const char* name,const char *title);
18     virtual ~AliITSvBeamTestITS04();
19     virtual void SetNumberOfSPD(Int_t nSPD) {fNspd=nSPD;}
20     virtual void SetNumberOfSDD(Int_t nSDD) {fNsdd=nSDD;}
21     virtual void SetNumberOfSSD(Int_t nSSD) {fNssd=nSSD;}
22     Int_t GetNSPD() const {return fNspd;}
23     Int_t GetNSDD() const {return fNsdd;}
24     Int_t GetNSSD() const {return fNssd;}
25     Int_t GetNumberOfSubDet(const TString& det) const;
26     virtual void CreateGeometry();
27     virtual void CreateMaterials();
28     virtual Int_t IsVersion()const{return (Int_t)kvITS04;}//Return Major Version
29     virtual Int_t MinorVersion()const{return fMinorVersion;}//Return Minor Version
30     //virtual void InitAliITSgeom();
31     virtual void Init();
32     //virtual void SetDefaults();
33     virtual void StepManager();
34     //for writing out geometry set .det write 
35     virtual void   SetWriteDet(Bool_t det=kTRUE){fGeomDetOut = det;}
36     virtual void   SetWriteDet(const char *f){strncpy(fWrite,f,60);
37                              fGeomDetOut = kTRUE;}// set write file 
38     //for reading geometry (JC) set .det read
39     virtual void   SetReadDet(Bool_t det=kTRUE){fGeomDetIn = det;}
40     virtual void   SetReadDet(const char *f){strncpy(fRead,f,60);
41                          fGeomDetIn = kTRUE;} // set read file
42  public:
43     void AddSPDGeometry(TGeoVolume *moth) const;
44     void AddSDDGeometry(TGeoVolume *moth) const;
45     void AddSSDGeometry(TGeoVolume *moth) const;
46  protected:
47            //! ITS mother volume
48     static const Int_t fgkNumberOfSPD;       //number of SPD
49     static const Int_t fgkNumberOfSDD;       //number of SDD
50     static const Int_t fgkNumberOfSSD;       //number of SSD
51     // SPD specific
52     static const char*    fgSPDsensitiveVolName;  //SPD volume name
53     static const Double_t fgkSPDthickness;        //SPD thickness
54     static const Double_t fgkSPDwidth;            //SPD width
55     static const Double_t fgkSPDlength;           //SPD length
56     static const Double_t fgkSPDthickSens;        //SPD sensitive thickness
57     static const Double_t fgkSPDwidthSens;        //SPD sensitive width
58     static const Double_t fgkSPDlengthSens;       //SPD sensitive length
59     static const Double_t fgkSPD0y;               //SPD position
60     static const Double_t fgkSPD1y;               //SPD position
61     // SDD specific
62     static const char*    fgSDDsensitiveVolName;  //SDD volume name
63     static const Double_t fgkSDDthickness;        //SDD thickness
64     static const Double_t fgkSDDwidth;            //SDD width
65     static const Double_t fgkSDDlength;           //SDD length
66     static const Double_t fgkSDDthickSens;        //SDD sensitive thickness
67     static const Double_t fgkSDDwidthSens;        //SDD sensitive width
68     static const Double_t fgkSDDlengthSens;       //SDD sensitive length
69     static const Double_t fgkSDD0y;               //SDD position
70     static const Double_t fgkSDD1y;               //SDD position
71     // SDD specific
72     static const char*    fgSSDsensitiveVolName;   //SSD volume name
73     static const Double_t fgkSSDthickness;         //SSD thickness
74     static const Double_t fgkSSDwidth;             //SSD width
75     static const Double_t fgkSSDlength;            //SSD length
76     static const Double_t fgkSSDthickSens;         //SSD sensitive thickness
77     static const Double_t fgkSSDwidthSens;         //SSD sensitive width
78     static const Double_t fgkSSDlengthSens;        //SSD sensitive length
79     static const Double_t fgkSSD0y;                //SSD position
80     static const Double_t fgkSSD1y;                //SSD position
81     //
82  private:
83     //Int_t GetCurrentLayLaddDet(Int_t &lay,Int_t &ladd, Int_t &det) const;:
84     AliITSvBeamTestITS04(const AliITSvBeamTestITS04 &source);//Copy constructor
85     //=operator
86     AliITSvBeamTestITS04& operator=(const AliITSvBeamTestITS04 &source);
87     //
88     TGeoVolume *fITSmotherVolume;       //Pointer to mother volume 
89     Int_t     fNspd;                    //Number of SPD modules
90     Int_t     fNsdd;                    //Number of SDD modules
91     Int_t     fNssd;                    //Number of SSD modules
92     //for writing out geometry
93     Bool_t fGeomDetOut;       // Flag to write .det file out 
94     Bool_t fGeomDetIn;        // Flag to read geometry file (JC)
95     char   fWrite[60];        //! file name to write .det file 
96     char   fRead[60];         // file name to read .det file (JC)
97     AliITSVersion_t fMajorVersion; // Major Version
98     Int_t           fMinorVersion; // Minor Version
99     AliITSInitGeometry fIgm; //! Init geometry object
100
101     ClassDef(AliITSvBeamTestITS04,3) // Full ITS test beam geometry 2004
102 };
103
104 #endif
105
106