ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
FPTracker
src
FPTracker/src/Collimator.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
FPTracker/Collimator.h
"
6
#include "
FPTracker/IParticle.h
"
7
#include "
FPTracker/TransversePoint.h
"
8
#include "
FPTracker/beamlineXPosition.h
"
9
#include "
FPTracker/FPTrackerConstants.h
"
10
#include <cmath>
11
#include <sstream>
12
#include <iostream>
13
#include <limits>
14
//#include <cassert>
15
16
namespace
FPTracker
{
17
18
const
std::string
Collimator::s_label
=
"Collimator"
;
19
20
Collimator::Collimator
(
double
zpos,
double
xaperture,
Side
side
):
21
m_position
(
22
beamlineXPosition
(zpos).
x
(),
23
beamlineXPosition
(zpos).
y
(),
24
zpos
25
),
26
m_xaperture
(xaperture),
27
m_xouter
(
std
::numeric_limits<double>::
max
() ),
28
m_xinner
( -1*
std
::numeric_limits<double>::
max
() ),
29
m_side
(
side
)
30
{
31
}
32
33
IBeamElement::ConstPtr_t
Collimator::clone
()
const
{
34
IBeamElement::ConstPtr_t
pbe(
new
Collimator
(*
this
));
35
return
pbe;
36
}
37
38
double
Collimator::frontFace
()
const
{
return
m_position
.z(); }
39
double
Collimator::rearFace
()
const
{
return
m_position
.z(); }
40
double
Collimator::zabspos
()
const
{
return
std::fabs(
m_position
.z()); }
41
double
Collimator::zsignedpos
()
const
{
return
m_position
.z(); }
42
Point
Collimator::position
()
const
{
return
m_position
; }
43
Side
Collimator::side
()
const
{
return
m_side
; }
44
std::string
Collimator::label
()
const
{
return
s_label
; }
45
46
std::string
Collimator::str
()
const
{
47
std::stringstream ost;
48
ost <<
"-- Collimator --"
<<
'\n'
49
<<
"postion "
<<
m_position
<<
'\n'
50
<<
"xouter "
<<
m_xouter
<<
'\n'
51
<<
"xinner "
<<
m_xinner
<<
'\n'
52
<<
"xaperture "
<<
m_xaperture
<<
'\n'
53
<<
"side "
<<
m_side
<<
'\n'
;
54
return
ost.str();
55
}
56
57
bool
Collimator::isEndElement
()
const
{
return
false
; }
58
59
bool
Collimator::isOutOfAperture
(
const
TransversePoint
& point)
const
{
60
double
xp = point.
x
();
61
return
(xp>
m_xouter
or xp<
m_xinner
);
62
}
63
64
void
Collimator::track
(
IParticle
& particle)
const
65
{
66
67
particle.setBeamCoordinateShift(
this
);
68
69
if
(particle.isOutOfAperture()){
return
;}
70
71
if
(
isOutOfAperture
( particle.transversePosition() ) )
72
{
73
particle.setOutOfAperture(
true
);
74
}
75
76
}
77
78
void
Collimator::calibrate
(
IParticle
& particle)
79
{
80
// the collimator jaws start wide open.
81
this->
track
(particle);
82
double
partX =particle.position().x();
83
m_xouter
= partX+
m_xaperture
;
84
m_xinner
= partX-
m_xaperture
;
85
86
}
87
88
std::ostream&
operator<<
(std::ostream& os,
const
Collimator
& coll){
89
os<<coll.
str
();
90
return
os;
91
}
92
93
94
}
FPTrackerConstants.h
Collimator.h
TransversePoint.h
IParticle.h
y
#define y
x
#define x
beamlineXPosition.h
max
#define max(a, b)
Definition
cfImp.cxx:41
FPTracker::Collimator
Definition
FPTracker/FPTracker/Collimator.h:20
FPTracker::Collimator::zabspos
double zabspos() const
Definition
FPTracker/src/Collimator.cxx:40
FPTracker::Collimator::m_position
Point m_position
Definition
FPTracker/FPTracker/Collimator.h:46
FPTracker::Collimator::side
Side side() const
Definition
FPTracker/src/Collimator.cxx:43
FPTracker::Collimator::m_xinner
double m_xinner
Definition
FPTracker/FPTracker/Collimator.h:49
FPTracker::Collimator::frontFace
double frontFace() const
Definition
FPTracker/src/Collimator.cxx:38
FPTracker::Collimator::rearFace
double rearFace() const
Definition
FPTracker/src/Collimator.cxx:39
FPTracker::Collimator::zsignedpos
double zsignedpos() const
Definition
FPTracker/src/Collimator.cxx:41
FPTracker::Collimator::isOutOfAperture
bool isOutOfAperture(const TransversePoint &) const
Definition
FPTracker/src/Collimator.cxx:59
FPTracker::Collimator::calibrate
void calibrate(IParticle &)
Definition
FPTracker/src/Collimator.cxx:78
FPTracker::Collimator::m_side
Side m_side
Definition
FPTracker/FPTracker/Collimator.h:50
FPTracker::Collimator::label
std::string label() const
Definition
FPTracker/src/Collimator.cxx:44
FPTracker::Collimator::position
Point position() const
Definition
FPTracker/src/Collimator.cxx:42
FPTracker::Collimator::isEndElement
bool isEndElement() const
Definition
FPTracker/src/Collimator.cxx:57
FPTracker::Collimator::clone
IBeamElement::ConstPtr_t clone() const
Definition
FPTracker/src/Collimator.cxx:33
FPTracker::Collimator::str
std::string str() const
Definition
FPTracker/src/Collimator.cxx:46
FPTracker::Collimator::track
void track(IParticle &) const
Definition
FPTracker/src/Collimator.cxx:64
FPTracker::Collimator::Collimator
Collimator(double, double, Side)
Definition
FPTracker/src/Collimator.cxx:20
FPTracker::Collimator::s_label
static const std::string s_label
Definition
FPTracker/FPTracker/Collimator.h:45
FPTracker::Collimator::m_xaperture
double m_xaperture
Definition
FPTracker/FPTracker/Collimator.h:47
FPTracker::Collimator::m_xouter
double m_xouter
Definition
FPTracker/FPTracker/Collimator.h:48
FPTracker::IBeamElement::ConstPtr_t
std::shared_ptr< const IBeamElement > ConstPtr_t
Definition
FPTracker/FPTracker/IBeamElement.h:40
FPTracker::IParticle
Definition
ForwardDetectors/FPTracker/FPTracker/IParticle.h:17
FPTracker::Point
Definition
FPTracker/FPTracker/Point.h:14
FPTracker::TransversePoint
Definition
FPTracker/FPTracker/TransversePoint.h:12
FPTracker::TransversePoint::x
double x() const
Definition
FPTracker/src/TransversePoint.cxx:16
FPTracker
Definition
FPTracker/FPTracker/Beamline.h:12
FPTracker::operator<<
std::ostream & operator<<(std::ostream &os, const Beamline &bl)
Definition
FPTracker/src/Beamline.cxx:163
FPTracker::beamlineXPosition
TransversePoint beamlineXPosition(double z)
Definition
beamlineXPosition.cxx:11
FPTracker::Side
Side
Definition
FPTrackerConstants.h:12
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0