ROOT
git-r3/HEAD
Reference Guide
Loading...
Searching...
No Matches
TGTRA.cxx
Go to the documentation of this file.
1
// @(#)root/g3d:$Id$
2
// Author: Nenad Buncic 19/09/95
3
4
/*************************************************************************
5
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6
* All rights reserved. *
7
* *
8
* For the licensing terms see $ROOTSYS/LICENSE. *
9
* For the list of contributors see $ROOTSYS/README/CREDITS. *
10
*************************************************************************/
11
12
#include "
TGTRA.h
"
13
#include "
TNode.h
"
14
#include "
TMath.h
"
15
16
17
/** \class TGTRA
18
\ingroup g3d
19
A general twisted trapezoid.
20
21
\image html g3d_gtra.png
22
23
The faces perpendicular to z are trapezia
24
and their centres are not necessarily on a line parallel to the z axis as the
25
TRAP; additionally, the faces may be twisted so that none of their edges are
26
parallel. It is a TRAP shape, except that it is twisted in the x-y plane as a
27
function of z. The parallel sides perpendicular to the z axis are rotated with
28
respect to the x axis by an angle TWIST, which is one of the parameters. The
29
shape is defined by the eight corners and is assumed to be constructed of
30
straight lines joining points on the boundary of the trapezoidal face at z=-DZ
31
to the corresponding points on the face at z=DZ. Divisions are not allowed.
32
It has 15 parameters:
33
34
- name: name of the shape
35
- title: shape's title
36
- material: (see TMaterial)
37
- dZ: half-length along the z axis
38
- theta: polar angle of the line joining the centre of the face
39
at -DZ to the centre of the one at +DZ
40
- phi: azimuthal angle of the line joining the centre of
41
the face at -DZ to the centre of the one at +DZ
42
- twist: twist angle of the faces parallel to the x-y plane
43
at z = +/- DZ around an axis parallel to z passing
44
through their centre
45
- h1: half-length along y of the face at -DZ
46
- bl1: half-length along x of the side at -H1 in y of
47
the face at -DZ in z
48
- tl1: half-length along x of the side at +H1 in y of the face
49
at -DZ in z
50
- alpha1: angle with respect to the y axis from the centre of
51
the side at -H1 in y to the centre of the side at
52
+H1 in y of the face at -DZ in z
53
- h2: half-length along y of the face at +DZ
54
- bL2: half-length along x of the side at -H2 in y of the face at
55
+DZ in z
56
- tl2: half-length along x of the side at +H2 in y of the face
57
at +DZ in z
58
- alpha2: angle with respect to the y axis from the centre of the side
59
at -H2 in y to the centre of the side at +H2 in y of the
60
face at +DZ in z
61
*/
62
63
////////////////////////////////////////////////////////////////////////////////
64
/// GTRA shape default constructor.
65
66
TGTRA::TGTRA
()
67
{
68
fTwist
= 0.;
69
fH1
= 0.;
70
fBl1
= 0.;
71
fTl1
= 0.;
72
fAlpha1
= 0.;
73
fH2
= 0.;
74
fBl2
= 0.;
75
fTl2
= 0.;
76
fAlpha2
= 0.;
77
}
78
79
////////////////////////////////////////////////////////////////////////////////
80
/// GTRA shape normal constructor
81
82
TGTRA::TGTRA
(
const
char
*
name
,
const
char
*title,
const
char
*material,
Float_t
dz,
Float_t
theta,
83
Float_t
phi,
Float_t
twist,
Float_t
h1
,
Float_t
bl1,
Float_t
tl1,
Float_t
alpha1,
84
Float_t
h2,
Float_t
bl2,
Float_t
tl2,
Float_t
alpha2)
85
:
TBRIK
(
name
, title, material, theta, phi, dz)
86
{
87
fTwist
= twist;
88
fH1
=
h1
;
89
fBl1
= bl1;
90
fTl1
= tl1;
91
fAlpha1
= alpha1;
92
fH2
= h2;
93
fBl2
= bl2;
94
fTl2
= tl2;
95
fAlpha2
= alpha2;
96
}
97
98
////////////////////////////////////////////////////////////////////////////////
99
/// GTRA shape default destructor
100
101
TGTRA::~TGTRA
()
102
{
103
}
104
105
////////////////////////////////////////////////////////////////////////////////
106
/// Create GTRA points
107
108
void
TGTRA::SetPoints
(
Double_t
*
points
)
const
109
{
110
Double_t
x
,
y
, dx, dy, dx1, dx2, dz, theta, phi, alpha1, alpha2, twist;
111
const
Float_t
pi =
Float_t
(
TMath::Pi
());
112
113
alpha1 =
fAlpha1
* pi/180.0;
114
alpha2 =
fAlpha2
* pi/180.0;
115
theta =
TBRIK::fDx
* pi/180.0;
116
phi =
TBRIK::fDy
* pi/180.0;
117
twist =
fTwist
* pi/180.0;
118
119
dx = 2*
fDz
*
TMath::Sin
(theta)*
TMath::Cos
(phi);
120
dy = 2*
fDz
*
TMath::Sin
(theta)*
TMath::Sin
(phi);
121
dz =
TBRIK::fDz
;
122
123
dx1 = 2*
fH1
*
TMath::Tan
(alpha1);
124
dx2 = 2*
fH2
*
TMath::Tan
(alpha2);
125
126
if
(
points
) {
127
points
[ 0] = -
fBl1
;
points
[ 1] = -
fH1
;
points
[ 2] = -dz;
128
points
[ 9] =
fBl1
;
points
[10] = -
fH1
;
points
[11] = -dz;
129
points
[ 6] =
fTl1
+dx1;
points
[ 7] =
fH1
;
points
[ 8] = -dz;
130
points
[ 3] = -
fTl1
+dx1;
points
[4] =
fH1
;
points
[5] = -dz;
131
points
[12] = -
fBl2
+dx;
points
[13] = -
fH2
+dy;
points
[14] = dz;
132
points
[21] =
fBl2
+dx;
points
[22] = -
fH2
+dy;
points
[23] = dz;
133
points
[18] =
fTl2
+dx+dx2;
points
[19] =
fH2
+dy;
points
[20] = dz;
134
points
[15] = -
fTl2
+dx+dx2;
points
[16] =
fH2
+dy;
points
[17] = dz;
135
for
(
Int_t
i = 12; i < 24; i+=3) {
136
x
=
points
[i];
137
y
=
points
[i+1];
138
points
[i] =
x
*
TMath::Cos
(twist) +
y
*
TMath::Sin
(twist);
139
points
[i+1] = -
x
*
TMath::Sin
(twist) +
y
*
TMath::Cos
(twist);
140
}
141
}
142
}
Int_t
int Int_t
Signed integer 4 bytes (int).
Definition
RtypesCore.h:59
Double_t
double Double_t
Double 8 bytes.
Definition
RtypesCore.h:73
Float_t
float Float_t
Float 4 bytes (float).
Definition
RtypesCore.h:71
TGTRA.h
name
char name[80]
Definition
TGX11.cxx:148
TMath.h
TNode.h
points
point * points
Definition
X3DBuffer.c:22
TBRIK::fDz
Float_t fDz
Definition
TBRIK.h:31
TBRIK::fDy
Float_t fDy
Definition
TBRIK.h:30
TBRIK::fDx
Float_t fDx
Definition
TBRIK.h:29
TBRIK::TBRIK
TBRIK()
BRIK shape default constructor.
Definition
TBRIK.cxx:37
TGTRA::fH1
Float_t fH1
Definition
TGTRA.h:31
TGTRA::~TGTRA
~TGTRA() override
GTRA shape default destructor.
Definition
TGTRA.cxx:101
TGTRA::fBl1
Float_t fBl1
Definition
TGTRA.h:32
TGTRA::fTwist
Float_t fTwist
Definition
TGTRA.h:30
TGTRA::fAlpha2
Float_t fAlpha2
Definition
TGTRA.h:38
TGTRA::fAlpha1
Float_t fAlpha1
Definition
TGTRA.h:34
TGTRA::fBl2
Float_t fBl2
Definition
TGTRA.h:36
TGTRA::fH2
Float_t fH2
Definition
TGTRA.h:35
TGTRA::TGTRA
TGTRA()
GTRA shape default constructor.
Definition
TGTRA.cxx:66
TGTRA::SetPoints
void SetPoints(Double_t *points) const override
Create GTRA points.
Definition
TGTRA.cxx:108
TGTRA::fTl1
Float_t fTl1
Definition
TGTRA.h:33
TGTRA::fTl2
Float_t fTl2
Definition
TGTRA.h:37
y
Double_t y[n]
Definition
legend1.C:17
x
Double_t x[n]
Definition
legend1.C:17
h1
TH1F * h1
Definition
legend1.C:5
TMath::Cos
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Definition
TMath.h:605
TMath::Pi
constexpr Double_t Pi()
Definition
TMath.h:40
TMath::Sin
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
Definition
TMath.h:599
TMath::Tan
Double_t Tan(Double_t)
Returns the tangent of an angle of x radians.
Definition
TMath.h:611
graf3d
g3d
src
TGTRA.cxx
ROOTgit-r3/HEAD - Reference Guide Generated on
(GVA Time) using Doxygen 1.16.1