Correct treatment of tracks with pT<pTmin
[u/mrichter/AliRoot.git] / ITS / AliITSInitGeometry.h
1 #ifndef ALIITSINITGEOMETRY_H
2 #define ALIITSINITGEOMETRY_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 // Class to inilize AliITSgeom and the like for both simulation
12 //  and reconstruction.
13 /////////////////////////////////////////////////////////////////////
14
15 #include <TObject.h>
16 #include <TString.h>
17
18 class AliITSgeom;
19
20 typedef enum {
21   kvDefault=0,kv11=11
22 } AliITSVersion_t;
23
24 class TArrayD;
25 class TGeoHMatrix;
26 class TDatime;
27
28 class AliITSInitGeometry : public TObject{
29  public:
30
31     AliITSInitGeometry();//Default Constructor
32     AliITSInitGeometry(AliITSVersion_t version);//Standard Constructor
33     //virtual ~AliITSInitGeometry(); // Destructor
34     //
35     // Create and initialize geometry from TGeo
36     AliITSgeom* CreateAliITSgeom();
37     AliITSgeom* CreateAliITSgeom(Int_t major); 
38     Bool_t InitAliITSgeom(AliITSgeom *geom);//Initilize geometry from gGeoManager
39     // Getters and Setters
40     // Getters and Setters
41     void    SetVersion(AliITSVersion_t maj) {// Set version
42         fMajorVersion=maj;}
43     TString GetGeometryName()const {return fName;}// Return geometry name
44     void    SetGeometryName(const Char_t *name){fName = name;}// Set Geometry name
45     Int_t   GetMajorVersion()const {return (Int_t)fMajorVersion;} // Return geometry major version
46     Bool_t  GetTiming()const{return fTiming;} // return routine timing flag
47     void    SetTiming(Bool_t time=kTRUE){fTiming=time;}// Set routine timing (on)
48     Bool_t  GetSegGeom()const{return fSegGeom;} // return flag indecating the use of AliITSsegmentation or AliITSgeomS?D class in fShape.
49     void    SetSegGeom(Bool_t seg=kTRUE){fSegGeom = seg;}// Set the use of AliITSsegmentation class' instead of AliITSgeomS?D class in fShape
50     Bool_t  GetDecoding()const{return fDecode;}// Return flag indecating wether to use new/old decoding
51     void    SetDecoding(Bool_t newdec=kFALSE){fDecode = newdec;}// Set flag to use new/old decoding
52      // Set debug level. debug=0 no debug info outputted.
53     void    SetDebug(Int_t debug=0){fDebug=debug;};
54     // Retrun debug value
55     Int_t   GetDebug()const{return fDebug;};
56     // Decode module number into old layer, ladder, and detector numbers
57     void DecodeDetectorLayers(Int_t mod,Int_t &lay,Int_t &lad,Int_t &det);
58     // find module number by layer, and copy numbers
59     void DecodeDetector(Int_t &mod,Int_t lay,Int_t cpn0,
60                         Int_t cpn1,Int_t cpn2) const;
61     // Given module number, find copy numbers.
62     void RecodeDetector(Int_t mod,Int_t &cpn0,Int_t &cpn1,Int_t &cpn2);
63    // fills the string str with the version number
64     Bool_t WriteVersionString(Char_t *str,Int_t length,
65                               AliITSVersion_t maj)const;
66
67  private:
68     // decodes the string str with the version number
69     Bool_t ReadVersionString(const Char_t *str,AliITSVersion_t &maj)const;
70
71     // Decode module number into old layer, ladder, and detector numbers
72     void DecodeDetectorLayersv11(Int_t mod,Int_t &lay,
73                                  Int_t &lad,Int_t &det);
74     // find module number by layer, and copy numbers
75     void DecodeDetectorv11(Int_t &mod,Int_t lay,Int_t cpn0,Int_t cpn1,
76                            Int_t cpn2)const;
77     // Given module number, find copy numbers.
78     void RecodeDetectorv11(Int_t mod,Int_t &cpn0,Int_t &cpn1,
79                            Int_t &cpn2);                   
80     // Virtual MC code 
81     Bool_t InitAliITSgeomV11(AliITSgeom *geom);
82     Bool_t GetTransformation(const TString &volumePath,TGeoHMatrix &mat);
83     Bool_t GetShape(const TString &volumePath,TString &shapeType,TArrayD &par);
84     void TransposeTGeoHMatrix(TGeoHMatrix *m) const;
85
86     TString         fName;         // Geometry name
87     AliITSVersion_t fMajorVersion; // Geometry swich value
88     Bool_t          fTiming;       // Flag to start inilization timing
89     Bool_t          fSegGeom;      // Flag to switch between the old use of
90                                    // AliITSgeomS?D class, or AliITSsegmentation
91                                    // class in fShape of AliITSgeom class.
92     Bool_t          fDecode;       // Flag for new/old decoding
93     Int_t           fDebug;        // Debug flag
94
95
96     ClassDef(AliITSInitGeometry,0) // create/Init AliITSgeom
97     // 0 in ClassDef indicates that this class will not be "saved" in a file.
98 };
99
100 #endif
101