EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
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/Geometry/GeometryContext.hpp
"
12
#include "
Acts/Geometry/GeometryStatics.hpp
"
13
#include "
Acts/Geometry/Polyhedron.hpp
"
14
#include "
Acts/Surfaces/CylinderBounds.hpp
"
15
#include "
Acts/Surfaces/Surface.hpp
"
16
#include "
Acts/Utilities/Definitions.hpp
"
17
#include "
Acts/Utilities/detail/RealQuadraticEquation.hpp
"
18
19
#include <cmath>
20
21
namespace
Acts {
22
33
34
class
CylinderSurface
:
public
Surface
{
35
friend
Surface
;
36
37
protected
:
42
CylinderSurface
(std::shared_ptr<const CylinderBounds> cbounds,
43
const
DetectorElementBase
& detelement);
44
52
CylinderSurface
(
const
Transform3D
&
transform
,
double
radius
,
double
halfz,
53
double
halfphi =
M_PI
,
double
avphi = 0.);
54
60
CylinderSurface
(
const
Transform3D
&
transform
,
61
const
std::shared_ptr<const CylinderBounds>& cbounds);
62
66
CylinderSurface
(
const
CylinderSurface
& other);
67
73
CylinderSurface
(
const
GeometryContext
&
gctx
,
const
CylinderSurface
& other,
74
const
Transform3D
& shift);
75
76
public
:
77
~CylinderSurface
()
override
=
default
;
78
CylinderSurface
() =
delete
;
79
83
CylinderSurface
&
operator=
(
const
CylinderSurface
& other);
84
91
Vector3D
binningPosition
(
const
GeometryContext
&
gctx
,
92
BinningValue
bValue)
const
final
;
93
102
RotationMatrix3D
referenceFrame
(
const
GeometryContext
&
gctx
,
103
const
Vector3D
&
position
,
104
const
Vector3D
&
momentum
)
const
final
;
105
107
SurfaceType
type
()
const override
;
108
118
Vector3D
normal
(
const
GeometryContext
&
gctx
,
119
const
Vector2D
& lposition)
const
final
;
120
130
Vector3D
normal
(
const
GeometryContext
&
gctx
,
131
const
Vector3D
&
position
)
const
final
;
132
134
using
Surface::normal
;
135
141
virtual
Vector3D
rotSymmetryAxis
(
const
GeometryContext
&
gctx
)
const
;
142
144
const
CylinderBounds
&
bounds
() const final;
145
153
Vector3D
localToGlobal
(const
GeometryContext
&
gctx
, const
Vector2D
& lposition,
154
const
Vector3D
&
momentum
) const final;
155
163
Result
<
Vector2D
>
globalToLocal
(const
GeometryContext
& gctx,
164
const
Vector3D
&
position
,
165
const
Vector3D
&
momentum
) const final;
166
177
SurfaceIntersection
intersect
(const
GeometryContext
& gctx,
178
const
Vector3D
& position,
179
const
Vector3D
& direction,
180
const
BoundaryCheck
& bcheck) const final;
181
189
double
pathCorrection
(const
GeometryContext
& gctx, const
Vector3D
& position,
190
const
Vector3D
& direction) const final;
191
193
std::
string
name
() const override;
194
203
Polyhedron
polyhedronRepresentation
(const
GeometryContext
& gctx,
204
size_t
lseg) const override;
205
214
LocalCartesianToBoundLocalMatrix
localCartesianToBoundLocalDerivative
(
215
const
GeometryContext
& gctx, const
Vector3D
& position) const final;
216
217
protected:
218
std::
shared_ptr
<const
CylinderBounds
>
m_bounds
;
219
220
private:
254
detail::
RealQuadraticEquation
intersectionSolver
(
255
const
Transform3D
&
transform
, const
Vector3D
& position,
256
const
Vector3D
& direction) const;
257
};
258
259
#include "Acts/Surfaces/detail/CylinderSurface.ipp"
260
261
}
// namespace Acts
acts
blob
sPHENIX
Core
include
Acts
Surfaces
CylinderSurface.hpp
Built by
Jin Huang
. updated:
Mon Jan 22 2024 12:43:23
using
1.8.2 with
EIC GitHub integration