]>
Commit | Line | Data |
---|---|---|
aa9bc63b | 1 | #ifndef ALIITSGEOMETRYSSDCONE_H |
2 | #define ALIITSGEOMETRYSSDCONE_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 | ITS SSD Cone Geometry. Version 11 | |
12 | */ | |
13 | #include "AliITSBaseGeometry.h" | |
14 | class TVector3; | |
162acd47 | 15 | class AliITS; |
16 | ||
aa9bc63b | 17 | class AliITSGeometrySSDCone : public AliITSBaseGeometry { |
18 | public: | |
19 | AliITSGeometrySSDCone(); | |
162acd47 | 20 | AliITSGeometrySSDCone(AliITS *its,TVector3 &tran,const char *moth, |
21 | Int_t mat0); | |
22 | virtual ~AliITSGeometrySSDCone(){}; | |
23 | void CreateG3Geometry(const char *moth,TVector3 &trans); | |
24 | void PositionG3Geometry(AliITSBaseVolParams &moth,Int_t cn, | |
25 | TVector3 &t,Int_t irot); | |
aa9bc63b | 26 | void CreateG3Materials(); |
27 | void BuildDisplayGeometry(); | |
162acd47 | 28 | void Print(ostream *os); // Prints out the contenes of this class |
29 | void Read(istream *is); // Reads in the contenst of this class | |
30 | // mother volume. | |
31 | private: // functions Require at parts of Volume A to be already defined. | |
32 | // Retruns the value of Rmax corresponding to point z alone the line | |
33 | // defined by the two points p.Rmax(i1),p.ZAt(i1) and p.Rmax(i2), | |
34 | // p.ZAt(i2). | |
35 | Double_t RmaxFrom2Points(AliITSPConeData &p,Int_t i1,Int_t i2,Double_t z) | |
36 | {return p.Rmax(i2)+(p.Rmax(i1)-p.Rmax(i2))*(z-p.ZAt(i2))/ | |
37 | (p.ZAt(i1)-p.ZAt(i2));} | |
38 | // Retruns the value of Rmin corresponding to point z alone the line | |
39 | // defined by the two points p.Rmin(i1),p.ZAt(i1) and p.Rmin(i2), | |
40 | // p.ZAt(i2). | |
41 | Double_t RminFrom2Points(AliITSPConeData &p,Int_t i1,Int_t i2,Double_t z) | |
42 | {return p.Rmin(i2)+(p.Rmin(i1)-p.Rmin(i2))*(z-p.ZAt(i2))/ | |
43 | ||
44 | (p.ZAt(i1)-p.ZAt(i2));} | |
45 | // Retruns the value of Z corresponding to point R alone the line | |
46 | // defined by the two points p.Rmin(i1),p.ZAt(i1) and p.Rmin(i2),p.ZAt(i2) | |
47 | Double_t Zfrom2MinPoints(AliITSPConeData &p,Int_t i1,Int_t i2,Double_t r) | |
48 | {return p.ZAt(i2)+(p.ZAt(i1)-p.ZAt(i2))*(r-p.Rmin(i2))/ | |
49 | (p.Rmin(i1)-p.Rmin(i2));} | |
50 | // Retruns the value of Z corresponding to point R alone the line | |
51 | // defined by the two points p.Rmax(i1),p.ZAt(i1) and p.Rmax(i2),p.ZAt(i2) | |
52 | Double_t Zfrom2MaxPoints(AliITSPConeData &p,Int_t i1,Int_t i2,Double_t r) | |
53 | {return p.ZAt(i2)+(p.ZAt(i1)-p.ZAt(i2))*(r-p.Rmax(i2))/ | |
54 | (p.Rmax(i1)-p.Rmax(i2));} | |
55 | // General SSD Outer Cone surface equation Rmax. | |
56 | Double_t RmaxFromZpCone(AliITSPConeData &p,Double_t z,Double_t th=0.0) | |
57 | {return -fTantc*(z-p.ZAt(4))+p.Rmax(4)+th/fCostc;} | |
58 | // General SSD Inner Cone surface equation Rmin. | |
59 | Double_t RminFromZpCone(AliITSPConeData &p,Double_t z,Double_t th=0.0) | |
60 | {return -fTantc*(z-p.ZAt(3))+p.Rmin(3)+th/fCostc;} | |
61 | // Outer SSD cone surface | |
62 | Double_t RmaxFromZSSDcone(Double_t z,Double_t th=0.0) | |
63 | {return RmaxFromZpCone(fA,z,th);} | |
64 | // Inner SSD cone surface | |
65 | Double_t RminFromZSSDcone(Double_t z,Double_t th=0.0) | |
66 | {return RminFromZpCone(fA,z,th);} | |
67 | // General SSD Outer cone Surface equation for z. | |
68 | Double_t ZFromRmaxpCone(AliITSPConeData &p,Double_t r,Double_t th=0.0) | |
69 | {return p.ZAt(4)+(p.Rmax(4)+th/fCostc-r)/fTantc;} | |
70 | // General SSD Inner cone Surface equation for z. | |
71 | Double_t ZFromRminpCone(AliITSPConeData &p,Double_t r,Double_t th=0.0) | |
887366e2 | 72 | {return p.ZAt(3)+(p.Rmin(3)+th/fCostc-r)/fTantc;} |
162acd47 | 73 | Double_t ZFromRmaxSSDcone(Double_t r,Double_t th=0.0) |
74 | {return ZFromRmaxpCone(fA,r,th);} | |
75 | Double_t ZFromRminSSDcone(Double_t r,Double_t th=0.0) | |
76 | {return ZFromRminpCone(fA,r,th);} | |
77 | // Given a initial point z0,r0, the initial angle theta0, and the radius | |
78 | // of curvature, returns the point z1, r1 at the angle theta1. Theta | |
79 | // measured from the r axis in the clock wise direction [degrees]. | |
80 | void RadiusOfCurvature(Double_t rc,Double_t theta0,Double_t z0, | |
81 | Double_t r0,Double_t theta1,Double_t &z1, | |
82 | Double_t &r1) | |
83 | {z1=rc*(Sind(theta1)-Sind(theta0))+z0; | |
84 | r1=rc*(Cosd(theta1)-Cosd(theta0))+r0; return;} | |
aa9bc63b | 85 | private: |
162acd47 | 86 | Double_t fThickness; //mm, Thickness of Rohacell+carbon fiber |
87 | Double_t fCthick; //mm, Carbon finber thickness | |
88 | Double_t fRcurv; // mm, Radius of curvature. | |
89 | Double_t fTc; // angle of SSD cone [degrees]. | |
90 | Double_t fSintc,fCostc,fTantc; | |
91 | Double_t fZ0,fZouterMilled,fZcylinder,fZposts; | |
92 | Double_t fRoutMax,fRoutHole,fRoutMin; | |
93 | Double_t fRholeMax,fRholeMin; | |
94 | Double_t fRpostMin,fdRpost,fZpostMax,fPhi0Post; | |
95 | Double_t fRinMax,fRinCylinder,fRinHole,fRinMin,fdZin; | |
96 | // Screws mounting SSD-SDD thermal/machanical cylinder | |
97 | Double_t fPhi0Screws,fRcylinderScrews,fDscrewHead; | |
98 | Double_t fDscrewShaft,fThScrewHeadHole; | |
99 | // The SDD mounting bracket SSD part of it. | |
100 | Int_t fNssdSupports; | |
101 | Double_t fPhi0SDDsupports; | |
102 | Double_t fRsddSupportPlate,fThSDDsupportPlate,fWsddSupportPlate; | |
103 | Int_t fNspoaks,fNinScrews,fNposts,fNmounts; | |
104 | Int_t fSSDcf; // SSD support cone Carbon Fiber materal number. | |
105 | Int_t fSSDfs; // SSD support cone inserto stesalite 4411w. | |
106 | Int_t fSSDfo; // SSD support cone foam, Rohacell 50A. | |
107 | Int_t fSSDsw; // SSD support cone screw material,Stainless steal | |
108 | Int_t fNcD; // number of screw ends (copy number) Volume D | |
109 | Int_t fNcE; // number of pin end (copy number) Volume E | |
110 | AliITSPConeData fA;//Poly-cone Volume A. Top part of SSD cone Carbon Fiber | |
111 | AliITSPConeData fB; // Poly-cone Volume B. Stesalite inside volume A. | |
112 | AliITSPConeData fC; // Poly-cone Volume C. Foam inside volume A. | |
113 | AliITSTubeData fD; // Bolt holes willed with bolt | |
114 | AliITSTubeData fE; // Pin holes willed with pin. | |
115 | AliITSPConeData fF;//Poly-cone Volume F. Foam in spoak reagion, inside A. | |
116 | // SSD support cone Spoaks. | |
117 | AliITSPConeData fG; // Poly-cone Volume G. | |
118 | AliITSPConeData fH; // Poly-cone Volume H. | |
119 | AliITSPConeData fI; // Poly-cone Volume I. | |
120 | AliITSPConeData fJ; // Poly-cone Volume J. | |
121 | AliITSPConeData fK; // Poly-cone Volume K. | |
122 | AliITSPConeData fL; // Poly-cone Volume L. | |
123 | AliITSPConeData fM; // Poly-cone Volume M. | |
124 | AliITSPConeData fN; // Poly-cone Volume N. | |
125 | AliITSPConeData fO; // Poly-cone Volume O. | |
126 | AliITSPConeData fP; // Poly-cone Volume P. | |
127 | AliITSPConeData fQ; // Poly-cone Volume Q. | |
128 | AliITSTubeData fR; // Bolt holes willed with bolt | |
129 | AliITSTubeData fS; // Pin holes willed with pin. | |
130 | AliITSPConeData fT; // Poly-cone Volume T. | |
131 | AliITSPConeData fU; // Poly-cone Volume U. | |
aa9bc63b | 132 | |
162acd47 | 133 | ClassDef(AliITSGeometrySSDCone,1) // ITS SSD support cone geometry |
134 | // version 11 | |
aa9bc63b | 135 | }; |
162acd47 | 136 | // Input and Output functions for standard C++ input/output/ |
137 | ostream &operator<<(ostream &os,AliITSGeometrySSDCone &source); | |
138 | istream &operator>>(istream &is,AliITSGeometrySSDCone &source); | |
139 | ||
aa9bc63b | 140 | #endif |
162acd47 | 141 |