ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCalib
MuonCalibExtraTree
MuonCalibExtraUtils
src
MuonCalibSimpleHoleSearch.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MuonCalibExtraUtils/MuonCalibSimpleHoleSearch.h
"
6
7
#include <iostream>
8
9
#include "
MuonCalibExtraUtils/MuonCalibSLPropagator.h
"
10
#include "
MuonCalibExtraUtils/MuonFixedIdPrinter.h
"
11
12
namespace
MuonCalib
{
13
14
MuonCalibSimpleGeometry
MuonCalibSimpleHoleSearch::m_geometry
;
15
MuonCalibSLPropagator
MuonCalibSimpleHoleSearch::m_propagator
;
16
MuonFixedIdManipulator
MuonCalibSimpleHoleSearch::m_idManipulator
;
17
MuonCalibSimpleHoleSearch::SurfaceIdVec
MuonCalibSimpleHoleSearch::m_surfaceIdList
;
18
19
void
MuonCalibSimpleHoleSearch::init
() {
20
if
(!
m_surfaceIdList
.empty())
return
;
21
m_surfaceIdList
.push_back(
22
std::make_pair(&
m_geometry
.endcapInnerDiskASide,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::EIA
)));
23
m_surfaceIdList
.push_back(
24
std::make_pair(&
m_geometry
.endcapMiddleDiskASide,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::EMA
)));
25
m_surfaceIdList
.push_back(
26
std::make_pair(&
m_geometry
.endcapOuterDiskASide,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::EOA
)));
27
28
m_surfaceIdList
.push_back(
29
std::make_pair(&
m_geometry
.endcapInnerDiskCSide,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::EIC
)));
30
m_surfaceIdList
.push_back(
31
std::make_pair(&
m_geometry
.endcapMiddleDiskCSide,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::EMC
)));
32
m_surfaceIdList
.push_back(
33
std::make_pair(&
m_geometry
.endcapOuterDiskCSide,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::EOC
)));
34
35
m_surfaceIdList
.push_back(
36
std::make_pair(&
m_geometry
.barrelInnerCylinder,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::BI
)));
37
m_surfaceIdList
.push_back(
38
std::make_pair(&
m_geometry
.barrelMiddleCylinder,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::BM
)));
39
m_surfaceIdList
.push_back(
40
std::make_pair(&
m_geometry
.barrelOuterCylinder,
m_idManipulator
.stationLayerIdentifier(
MuonFixedIdManipulator::BO
)));
41
}
42
43
MuonCalibSimpleHoleSearch::ResultVec
MuonCalibSimpleHoleSearch::intersectsWithGeometry
(
const
Amg::Vector3D
& parPos,
44
const
Amg::Vector3D
& parDir,
double
tolerance
) {
45
ResultVec
intersectedLayers;
46
SurfaceIdIt
it =
m_surfaceIdList
.begin();
47
SurfaceIdIt
it_end =
m_surfaceIdList
.end();
48
for
(; it != it_end; ++it) {
searchForSurfaceIntersect
(parPos, parDir, *it->first, it->second, intersectedLayers,
tolerance
); }
49
50
return
intersectedLayers;
51
}
52
53
void
MuonCalibSimpleHoleSearch::searchForSurfaceIntersect
(
const
Amg::Vector3D
& parPos,
const
Amg::Vector3D
& parDir,
54
const
MuonCalibSurface
& surf,
const
MuonFixedId
& stLayerId,
55
ResultVec
& intersects,
double
tolerance
)
const
{
56
// propagate to layer
57
Amg::Vector3D
pos =
m_propagator
.propagate(parPos, parDir, surf);
58
59
// check if position is within bounds, if so add intersect
60
if
(surf.
inBounds
(pos,
tolerance
)) {
61
bool
add
=
true
;
62
if
(
m_idManipulator
.isEndcap(stLayerId)) {
63
// for the endcap only take intersects on the same side as the track
64
double
sideTrack = parPos.z() < 0. ? -1. : 1.;
65
double
sideInter = pos.z() < 0. ? -1. : 1.;
66
if
(sideTrack != sideInter)
add
=
false
;
67
}
68
if
(
add
) intersects.push_back(
Result
(stLayerId, pos));
69
}
70
}
71
72
}
// namespace MuonCalib
Result
ICscStripFitter::Result Result
Definition
CalibCscStripFitter.cxx:13
MuonCalibSLPropagator.h
MuonCalibSimpleHoleSearch.h
MuonFixedIdPrinter.h
MuonCalib::MuonCalibSLPropagator
straight line propagator
Definition
MuonCalibSLPropagator.h:17
MuonCalib::MuonCalibSimpleGeometry
Definition
MuonCalibSimpleGeometry.h:34
MuonCalib::MuonCalibSimpleHoleSearch::m_geometry
static MuonCalibSimpleGeometry m_geometry
Definition
MuonCalibSimpleHoleSearch.h:43
MuonCalib::MuonCalibSimpleHoleSearch::m_propagator
static MuonCalibSLPropagator m_propagator
Definition
MuonCalibSimpleHoleSearch.h:44
MuonCalib::MuonCalibSimpleHoleSearch::intersectsWithGeometry
ResultVec intersectsWithGeometry(const Amg::Vector3D &parPos, const Amg::Vector3D &parDir, double tolerance=1e9)
Definition
MuonCalibSimpleHoleSearch.cxx:43
MuonCalib::MuonCalibSimpleHoleSearch::searchForSurfaceIntersect
void searchForSurfaceIntersect(const Amg::Vector3D &parPos, const Amg::Vector3D &parDir, const MuonCalibSurface &surf, const MuonFixedId &stLayerId, ResultVec &intersects, double tolerance=1e9) const
search for intersect with the give surface
Definition
MuonCalibSimpleHoleSearch.cxx:53
MuonCalib::MuonCalibSimpleHoleSearch::SurfaceIdIt
SurfaceIdVec::iterator SurfaceIdIt
Definition
MuonCalibSimpleHoleSearch.h:47
MuonCalib::MuonCalibSimpleHoleSearch::ResultVec
std::vector< Result > ResultVec
Definition
MuonCalibSimpleHoleSearch.h:27
MuonCalib::MuonCalibSimpleHoleSearch::SurfaceIdVec
std::vector< std::pair< const MuonCalibSurface *, MuonFixedId > > SurfaceIdVec
Definition
MuonCalibSimpleHoleSearch.h:46
MuonCalib::MuonCalibSimpleHoleSearch::init
void init()
init static members
Definition
MuonCalibSimpleHoleSearch.cxx:19
MuonCalib::MuonCalibSimpleHoleSearch::m_surfaceIdList
static SurfaceIdVec m_surfaceIdList
Definition
MuonCalibSimpleHoleSearch.h:48
MuonCalib::MuonCalibSimpleHoleSearch::m_idManipulator
static MuonFixedIdManipulator m_idManipulator
Definition
MuonCalibSimpleHoleSearch.h:45
MuonCalib::MuonCalibSurface
Definition
MuonCalibSimpleGeometry.h:12
MuonCalib::MuonCalibSurface::inBounds
virtual bool inBounds(const Amg::Vector3D &pos, double tolerance=0.) const =0
MuonCalib::MuonFixedIdManipulator
Definition
MuonFixedIdManipulator.h:14
MuonCalib::MuonFixedIdManipulator::EOA
@ EOA
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::EIA
@ EIA
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::BM
@ BM
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::EIC
@ EIC
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::EMC
@ EMC
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::EMA
@ EMA
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::BO
@ BO
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::BI
@ BI
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedIdManipulator::EOC
@ EOC
Definition
MuonFixedIdManipulator.h:17
MuonCalib::MuonFixedId
Implements fixed identifiers not dependent upon Athena Identifier for internal use in the calibration...
Definition
MuonFixedId.h:50
tolerance
Definition
suep_shower.h:17
add
bool add(const std::string &hname, TKey *tobj)
Definition
fastadd.cxx:55
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition
CscCalcPed.cxx:21
Generated on
for ATLAS Offline Software by
1.17.0