fix bugs add new features
[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);
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 SetDensityServicesByThickness(){// uses services density
57         // calculation based on the thickness of the services.
58         fByThick = kTRUE;}
59     virtual void SetDensityServicesByMass(){// uses services density
60         // calculation based on the Mass of the services.
61         fByThick = kFALSE;}
62
63
64  protected:
65     void SetT2Lmatrix(Int_t uid, Double_t yShift,
66                       Bool_t yFlip, Bool_t yRot180=kFALSE) const; // Set T2L matrix in TGeoPNEntries
67
68  private:
69     AliITSv11(const AliITSv11 &source); // copy constructor
70     AliITSv11& operator=(const AliITSv11 &source); // assignment operator
71
72     Bool_t fByThick;          // Flag to use services materials by thickness
73                               // ture, or mass false.
74     Int_t  fIDMother;         //! ITS Mother Volume id.
75
76     AliITSInitGeometry fInitGeom;   //! Get access to decoding and AliITSgeom init functions
77     AliITSv11GeometrySPD     *fSPDgeom; //! SPD Geometry
78     AliITSv11GeometrySDD     *fSDDgeom; //! SDD Geometry
79     AliITSv11GeometrySSD     *fSSDgeom; //! SSD Geometry
80     AliITSv11GeometrySupport *fSupgeom; //! Support Geometry
81
82     ClassDef(AliITSv11,4)  // ITS version 11 
83 };
84  
85 #endif