Analysis Software
Documentation for
sPHENIX
simulation software
Home page
Related Pages
Modules
Namespaces
Classes
Files
Examples
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
CylinderSurface.hpp
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file CylinderSurface.hpp
1
// This file is part of the Acts project.
2
//
3
// Copyright (C) 2016-2020 CERN for the benefit of the Acts project
4
//
5
// This Source Code Form is subject to the terms of the Mozilla Public
6
// License, v. 2.0. If a copy of the MPL was not distributed with this
7
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
9
#pragma once
10
11
#include "
Acts/Definitions/Algebra.hpp
"
12
#include "
Acts/Definitions/Alignment.hpp
"
13
#include "
Acts/Definitions/Tolerance.hpp
"
14
#include "
Acts/Definitions/TrackParametrization.hpp
"
15
#include "
Acts/Geometry/GeometryContext.hpp
"
16
#include "
Acts/Geometry/Polyhedron.hpp
"
17
#include "
Acts/Surfaces/BoundaryCheck.hpp
"
18
#include "
Acts/Surfaces/CylinderBounds.hpp
"
19
#include "
Acts/Surfaces/Surface.hpp
"
20
#include "
Acts/Utilities/BinningType.hpp
"
21
#include "
Acts/Utilities/Result.hpp
"
22
#include "
Acts/Utilities/detail/RealQuadraticEquation.hpp
"
23
24
#include <cmath>
25
#include <cstddef>
26
#include <memory>
27
#include <string>
28
29
namespace
Acts {
30
class
DetectorElementBase;
31
42
43
class
CylinderSurface
:
public
Surface
{
44
#ifndef DOXYGEN
45
friend
Surface
;
46
#endif
47
48
protected
:
58
CylinderSurface
(
const
Transform3
&
transform
,
double
radius,
double
halfz,
59
double
halfphi = M_PI,
double
avphi = 0.,
60
double
bevelMinZ = 0.,
double
bevelMaxZ = 0.);
61
67
CylinderSurface
(
const
Transform3
&
transform
,
68
std::shared_ptr<const CylinderBounds> cbounds);
69
74
CylinderSurface
(std::shared_ptr<const CylinderBounds> cbounds,
75
const
DetectorElementBase
& detelement);
76
80
CylinderSurface
(
const
CylinderSurface
& other);
81
87
CylinderSurface
(
const
GeometryContext
&
gctx
,
const
CylinderSurface
& other,
88
const
Transform3
& shift);
89
90
public
:
91
~CylinderSurface
()
override
=
default
;
92
CylinderSurface
() =
delete
;
93
97
CylinderSurface
&
operator=
(
const
CylinderSurface
& other);
98
105
Vector3
binningPosition
(
const
GeometryContext
&
gctx
,
106
BinningValue
bValue)
const
final
;
107
116
RotationMatrix3
referenceFrame
(
const
GeometryContext
&
gctx
,
117
const
Vector3
&
position
,
118
const
Vector3
& direction)
const
final
;
119
121
SurfaceType
type
()
const override
;
122
132
Vector3
normal
(
const
GeometryContext
&
gctx
,
133
const
Vector2
& lposition)
const
final
;
134
144
Vector3
normal
(
const
GeometryContext
&
gctx
,
145
const
Vector3
&
position
)
const
final
;
146
148
using
Surface::normal
;
149
155
virtual
Vector3
rotSymmetryAxis
(
const
GeometryContext
&
gctx
)
const
;
156
158
const
CylinderBounds
&
bounds
() const final;
159
167
Vector3
localToGlobal
(const
GeometryContext
&
gctx
, const
Vector2
& lposition,
168
const
Vector3
& direction) const final;
169
179
Result
<
Vector2
>
globalToLocal
(
180
const
GeometryContext
& gctx, const
Vector3
&
position
,
181
const
Vector3
& direction,
182
double
tolerance
=
s_onSurfaceTolerance
) const final;
183
195
SurfaceMultiIntersection
intersect
(
196
const
GeometryContext
& gctx, const
Vector3
& position,
197
const
Vector3
& direction, const
BoundaryCheck
& bcheck =
false
,
198
ActsScalar
tolerance
=
s_onSurfaceTolerance
) const final;
199
207
double
pathCorrection
(const
GeometryContext
& gctx, const
Vector3
& position,
208
const
Vector3
& direction) const final;
209
211
std::
string
name
() const override;
212
221
Polyhedron
polyhedronRepresentation
(const
GeometryContext
& gctx,
222
size_t
lseg) const override;
223
233
AlignmentToPathMatrix
alignmentToPathDerivative
(
234
const
GeometryContext
& gctx, const
FreeVector
&
parameters
) const final;
235
244
ActsMatrix
<2, 3>
localCartesianToBoundLocalDerivative
(
245
const
GeometryContext
& gctx, const
Vector3
& position) const final;
246
247
protected
:
248
std::
shared_ptr
<const
CylinderBounds
>
m_bounds
;
249
250
private
:
284
detail::
RealQuadraticEquation
intersectionSolver
(
285
const
Transform3
&
transform
, const
Vector3
& position,
286
const
Vector3
& direction) const;
287
};
288
289
}
// namespace Acts
acts
blob
sPHENIX
Core
include
Acts
Surfaces
CylinderSurface.hpp
Built by
Jin Huang
. updated:
Sat Feb 17 2024 22:17:34
using
1.8.2 with
sPHENIX GitHub integration