ab334b0dab14eb0dd694cb1bf1f3e255e62a603b
[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 //
8 //                 Inner Traking System geometry v11
9 //
10 //  Based on ROOT geometrical modeler
11 //
12 // B. Nilsen, L. Gaudichet, M. Sitta
13 //
14 //========================================================================
15
16
17 // $Id: 
18
19 // $Log$
20 // Revision 1.1  2011/06/10 14:48:24  masera
21 // First version from v11Hybrid to v11 (M. Sitta)
22 //
23  
24 #include "AliITS.h"
25 #include "AliITSInitGeometry.h"
26
27 class  AliITSv11GeometrySPD;
28 class  AliITSv11GeometrySDD;
29 class  AliITSv11GeometrySSD;
30 class  AliITSv11GeometrySupport;
31 class  TGeoVolume;
32 class  TGeoVolumeAssembly;
33
34 class AliITSv11 : public AliITS {
35
36  public:
37     AliITSv11();
38     AliITSv11(const char *title);
39     AliITSv11(const char *name, const char *title, const Float_t rho=1.0);
40     virtual       ~AliITSv11() ;
41
42     virtual void   AddAlignableVolumes() const;
43     virtual void   CreateGeometry();
44     virtual void   CreateMaterials();
45
46     virtual AliITSv11GeometrySPD*     GetSPDGeometry(){return fSPDgeom;}
47     virtual AliITSv11GeometrySDD*     GetSDDGeometry(){return fSDDgeom;}
48     virtual AliITSv11GeometrySSD*     GetSSDGeometry(){return fSSDgeom;}
49     virtual AliITSv11GeometrySupport* GetSupGeometry(){return fSupgeom;}
50
51     virtual Int_t  IsVersion() const {// returns the ITS version number 
52                                       return 11;} 
53     virtual void   Init(); 
54     virtual void   SetDefaults();
55     virtual void   StepManager();
56     virtual void   SetMinorVersion(Int_t v=2){ // Choose between existing minor versions
57         fMinorVersion = v;}
58     virtual void SetDensityServicesByThickness(){// uses services density
59         // calculation based on the thickness of the services.
60         fByThick = kTRUE;}
61     virtual void SetDensityServicesByMass(){// uses services density
62         // calculation based on the Mass of the services.
63         fByThick = kFALSE;}
64     virtual Int_t GetMajorVersion() const {// return Major Version Number
65         return fMajorVersion;}
66     virtual Int_t GetMinorVersion() const {// return Major Version Number
67         return fMinorVersion;}
68
69  protected:
70     void SetT2Lmatrix(Int_t uid, Double_t yShift,
71                       Bool_t yFlip, Bool_t yRot180=kFALSE) const; // Set T2L matrix in TGeoPNEntries
72
73  private:
74     AliITSv11(const AliITSv11 &source); // copy constructor
75     AliITSv11& operator=(const AliITSv11 &source); // assignment operator
76
77     Bool_t fByThick;          // Flag to use services materials by thickness
78                               // ture, or mass false.
79     Int_t  fMajorVersion;     // Major version number == IsVersion
80     Int_t  fMinorVersion;     // Minor version number
81     Int_t  fIDMother;         //! ITS Mother Volume id.
82
83     Float_t fRhoIncrMatBud;      //  Density increase factor (for material budget studies)
84
85     AliITSInitGeometry fInitGeom;   //! Get access to decoding and AliITSgeom init functions
86     AliITSv11GeometrySPD     *fSPDgeom; //! SPD Geometry
87     AliITSv11GeometrySDD     *fSDDgeom; //! SDD Geometry
88     AliITSv11GeometrySSD     *fSSDgeom; //! SSD Geometry
89     AliITSv11GeometrySupport *fSupgeom; //! Support Geometry
90
91     ClassDef(AliITSv11,2)  // ITS version 11 
92 };
93  
94 #endif