Correct formula for phi, in case of current local X <0, in GetLocalXat and GetPhiZat
[u/mrichter/AliRoot.git] / ITS / AliITSv11Hybrid.h
CommitLineData
108bd0fe 1#ifndef ALIITSV11HYBRID_H
2#define ALIITSV11HYBRID_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// Geometry of the Inner Tracking System
9//
10// This geometry is a mix between the old geometry (originally coded
11// in AliITSvPPRasymmFMD) and the new TGeo geometry (v11).
12//
13// Ludovic Gaudichet (gaudichet@to.infn.it)
14//
15//========================================================================
8f8273a4 16
17
18// $Id$
19
20// $Log$
a275e8ba 21// Revision 1.7 2007/12/17 14:48:24 masera
22// Thermal shield between SPD and SDD (M. Sitta)
23//
b0c0f648 24// Revision 1.6 2007/10/21 19:22:53 masera
25// Coding conventions
26//
7ab0715c 27// Revision 1.5 2007/08/24 14:32:57 hristov
28// Introduction of SPD half-stave volumes, cleaning and new code (in relation to new SPD geometry) in AliITSv11Hybrid (Ludovic)
29//
8f8273a4 30// Revision 1.4 2007/06/28 10:17:25 masera
31// Introduction of the new SSD geometry in simulation (AliITSv11Hybrid) and suppression of overlaps between old and new parts
32//
33// Revision 1.3 2007/05/08 16:57:42 masera
34// Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes (B.Nilsend and L. Gaudichet
35//
36
108bd0fe 37
38#include "AliITS.h"
012f0f4c 39#include "AliITSInitGeometry.h"
108bd0fe 40
8f8273a4 41class AliITSv11GeometrySPD;
108bd0fe 42class AliITSv11GeometrySDD;
bf210566 43class AliITSv11GeometrySSD;
a275e8ba 44class AliITSv11GeometrySupport;
6aa4b4dc 45class TGeoVolume;
46class TGeoVolumeAssembly;
108bd0fe 47
48class AliITSv11Hybrid : public AliITS {
49
50 public:
51 AliITSv11Hybrid();
8f8273a4 52 AliITSv11Hybrid(const char *title);
108bd0fe 53 AliITSv11Hybrid(const char *name, const char *title);
54 virtual ~AliITSv11Hybrid() ;
108bd0fe 55 virtual void CreateGeometry();
56 virtual void CreateMaterials();
57 virtual Int_t IsVersion() const {// returns the ITS version number
58 return 110;}
59 virtual void Init();
60 virtual void SetDefaults();
61 virtual void DrawModule() const;
62 virtual void StepManager();
63 virtual void AddAlignableVolumes() const;
108bd0fe 64 virtual void SetMinorVersion(Int_t v=2){ // Choose between existing minor versions
65 fMinorVersion = v;}
66 virtual void SetThicknessDet1(Float_t v=200.){
67 // Set detector thickness in layer 1
68 fDet1 = v;}
69 virtual void SetThicknessDet2(Float_t v=200.){
70 // Set detector thickness in layer 2
71 fDet2 = v;}
72 virtual void SetThicknessChip1(Float_t v=150.){
73 // Set chip thickness in layer 1
74 fChip1 = v;}
75 virtual void SetThicknessChip2(Float_t v=150.){
76 // Set chip thickness in layer 2
77 fChip2 = v;}
78 virtual void SetRails(Int_t v=0){
79 // Set flag for rails
80 fRails = v;}
81 virtual void SetCoolingFluid(Int_t v=1){
82 // Set flag for cooling fluid
83 fFluid = v;}
84 virtual void SetDensityServicesByThickness(){// uses services density
85 // calculation based on the thickness of the services.
86 fByThick = kTRUE;}
87 virtual void SetDensityServicesByMass(){// uses services density
88 // calculation based on the Mass of the services.
89 fByThick = kFALSE;}
108bd0fe 90 virtual Int_t GetMajorVersion() const {// return Major Version Number
91 return fMajorVersion;}
92 virtual Int_t GetMinorVersion() const {// return Major Version Number
93 return fMinorVersion;}
94 virtual Float_t GetThicknessDet1() const {
95 // Get detector thickness in layer 1
96 return fDet1;}
97 virtual Float_t GetThicknessDet2() const {
98 // Get detector thickness in layer 2
99 return fDet2;}
100 virtual Float_t GetThicknessChip1() const {
101 // Get chip thickness in layer 1
102 return fChip1;}
103 virtual Float_t GetThicknessChip2()const {
104 // Get chip thickness in layer 2
105 return fChip2;}
106 virtual Int_t GetRails() const {
107 // Get flag for rails
108 return fRails;}
109 virtual Int_t GetCoolingFluid() const{
110 // Get flag for cooling fluid
111 return fFluid;}
112
113 protected:
114 void CreateOldGeometry();
b2e5530c 115 void SetT2Lmatrix(Int_t uid, Double_t yShift,
bf210566 116 Bool_t yFlip, Bool_t yRot180=kFALSE) const; // Set T2L matrix in TGeoPNEntries
b0c0f648 117 void CreateSPDThermalShield(TGeoVolume *moth);
118 TGeoVolumeAssembly *CreateSPDThermalShieldAssembly(const char *name,
119 Double_t innerA, Double_t innerB, Double_t innerRadius,
120 Double_t outerA, Double_t outerB, Double_t outerRadius,
121 Double_t halflength, Double_t thickness,
122 Double_t thicknessOmega, Double_t theta);
123 void SPDThermalShape(Double_t a, Double_t b, Double_t r, Double_t d,
124 Double_t t, Double_t *x, Double_t *y);
125 void SPDOmegaShape(Double_t ina, Double_t inb, Double_t inr,
126 Double_t oua, Double_t oub, Double_t our,
127 Double_t dou, Double_t d , Double_t t ,
128 Double_t *x, Double_t *y);
129 void FillSPDXtruShape(Double_t a, Double_t b, Double_t r,
130 Double_t t, Double_t *x, Double_t *y);
108bd0fe 131
132 private:
133 AliITSv11Hybrid(const AliITSv11Hybrid &source); // copy constructor
134 AliITSv11Hybrid& operator=(const AliITSv11Hybrid &source); // assignment operator
7ab0715c 135 void InitAliITSgeom() const;
108bd0fe 136
108bd0fe 137 Bool_t fByThick; // Flag to use services materials by thickness
138 // ture, or mass false.
139 Int_t fMajorVersion; // Major version number == IsVersion
140 Int_t fMinorVersion; // Minor version number
108bd0fe 141 Float_t fDet1; // thickness of detector in SPD layer 1
142 Float_t fDet2; // thickness of detector in SPD layer 2
143 Float_t fChip1; // thickness of chip in SPD layer 1
144 Float_t fChip2; // thickness of chip in SPD layer 2
145 Int_t fRails; // flag to switch rails on (=1) and off (=0)
146 Int_t fFluid; // flag to switch between water (=1) and freon (=0)
147 Int_t fIDMother; //! ITS Mother Volume id.
148
012f0f4c 149 AliITSInitGeometry fInitGeom; //! Get access to decoding and AliITSgeom init functins
8f8273a4 150 AliITSv11GeometrySPD *fSPDgeom; //! SPD Geometry
012f0f4c 151 AliITSv11GeometrySDD *fSDDgeom; //! SDD Geometry
bf210566 152 AliITSv11GeometrySSD *fSSDgeom; //! SSD Geometry
a275e8ba 153 AliITSv11GeometrySupport *fSupgeom; //! Support Geometry
108bd0fe 154
8f8273a4 155 ClassDef(AliITSv11Hybrid,0)
108bd0fe 156};
157
158#endif