ATLAS Offline Software
Loading...
Searching...
No Matches
eflowTrackCaloPoints.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
6/********************************************************************
7
8NAME: eflowTrackCaloPoints.cxx
9PACKAGE: offline/Reconstruction/eflowRec
10
11AUTHORS: R. Duxfield
12CREATED: 4th January, 2006
13
14********************************************************************/
15
16#include <utility>
17#include <iostream>
18#include <cmath>
19
21
22using std::pair;
23
24const pair<float, float> eflowTrackCaloPoints::m_defaultEtaPhiPair = pair<float, float>(-999.0, -999.0);
27
30
31eflowTrackCaloPoints::eflowTrackCaloPoints(const std::map<eflowCalo::LAYER, const Trk::TrackParameters*> & trackParameters):
32 m_isEM1Barrel(trackParameters.begin()->first == eflowCalo::EMB1) {
33
34 /* Fill etaPhiPositions map */
35 std::map<eflowCalo::LAYER, const Trk::TrackParameters*>::const_iterator itPars = trackParameters.begin();
36 std::map<eflowCalo::LAYER, const Trk::TrackParameters*>::const_iterator endPars = trackParameters.end();
37 m_isEM2Barrel = false;
38 for (; itPars != endPars; ++itPars) {
39 setEtaPhi(itPars->first, parToPosition(itPars->second));
40 if (itPars->first == eflowCalo::EMB2) m_isEM2Barrel = true;
41 m_positions[itPars->first] = parToPosition(itPars->second);
42 m_directions[itPars->first] = parToDirection(itPars->second);
43 }
44
45}
46
47eflowTrackCaloPoints::eflowTrackCaloPoints(const std::map<eflowCalo::LAYER, const Trk::TrackParameters*> & trackParameters,
48 std::map<CaloCell_ID::CaloSample,const Trk::TrackParameters*>& tileTrackParamaters) :
49 m_isEM1Barrel(trackParameters.begin()->first == eflowCalo::EMB1){
50 /* Fill etaPhiPositions map */
51 std::map<eflowCalo::LAYER, const Trk::TrackParameters*>::const_iterator itPars = trackParameters.begin();
52 std::map<eflowCalo::LAYER, const Trk::TrackParameters*>::const_iterator endPars = trackParameters.end();
53 m_isEM2Barrel = false;
54 for (; itPars != endPars; ++itPars) {
55 setEtaPhi(itPars->first, parToPosition(itPars->second));
56 if (itPars->first == eflowCalo::EMB2) m_isEM2Barrel = true;
57 m_positions[itPars->first] = parToPosition(itPars->second);
58 m_directions[itPars->first] = parToDirection(itPars->second);
59 }
60
61 for (auto firstTileParam : tileTrackParamaters) setEtaPhiTile(firstTileParam.first,parToPosition(firstTileParam.second));
62
63 }
64
66
71
76
77//only used in eflowTrackExtrapolatorTool
81
82const pair<float, float> eflowTrackCaloPoints::operator[] (eflowCaloENUM layer) const {
83 eflowEtaPhiPosition thisPosition = getEtaPhiPos(layer);
84 return pair<float, float>(thisPosition.getEta(), thisPosition.getPhiD());
85}
87 std::map< eflowCalo::LAYER, eflowEtaPhiPosition>::const_iterator it = m_etaPhiPositions.find(layer);
88 return (it == m_etaPhiPositions.end()) ? m_defaultEtaPhiPosition : it->second;
89}
90
92 std::map< CaloCell_ID::CaloSample , eflowEtaPhiPosition>::const_iterator it = m_tileEtaPhiPositions.find(layer);
93 return (it == m_tileEtaPhiPositions.end()) ? m_defaultEtaPhiPosition : it->second;
94}
95
96
98 std::map<eflowCalo::LAYER, Amg::Vector3D>::const_iterator it = m_positions.find(layer);
99 return (it == m_positions.end()) ? m_nullVector : it->second;
100}
101
103 std::map<eflowCalo::LAYER, Amg::Vector3D>::const_iterator it = m_directions.find(layer);
104 return (it == m_directions.end()) ? m_nullVector : it->second;
105}
106
108 return (trackPars != nullptr) ? trackPars->position() : m_nullVector;
109}
110
112 return (trackPars != nullptr) ? trackPars->momentum() : m_nullVector;
113}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
std::vector< size_t > vec
CaloSampling::CaloSample CaloSample
Definition CaloCell_ID.h:53
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.
This defines the eflowCalo enum, which is used to label calorimeter layers in a simplified scheme whi...
double getPhiD() const
Definition eflowUtil.h:92
double getEta() const
Definition eflowUtil.h:90
static Amg::Vector3D parToDirection(const Trk::TrackParameters *extrapolatedParameters)
static Amg::Vector3D parToPosition(const Trk::TrackParameters *extrapolatedParameters)
static const Amg::Vector3D m_nullVector
static const std::pair< float, float > m_defaultEtaPhiPair
Amg::Vector3D getPosition(eflowCalo::LAYER layer)
const eflowEtaPhiPosition & getEtaPhiPos(eflowCalo::LAYER layer) const
void setEtaPhi(eflowCaloENUM secondLayer, double eta, double phi)
const eflowEtaPhiPosition & getTileEtaPhiPos(CaloCell_ID::CaloSample layer) const
std::map< eflowCalo::LAYER, Amg::Vector3D > m_directions
const std::pair< float, float > operator[](eflowCalo::LAYER layer) const
std::map< CaloCell_ID::CaloSample, eflowEtaPhiPosition > m_tileEtaPhiPositions
Amg::Vector3D getDirection(eflowCalo::LAYER layer)
static const eflowEtaPhiPosition m_defaultEtaPhiPosition
void setEtaPhiTile(CaloCell_ID::CaloSample secondLayer, const Amg::Vector3D &vec)
std::map< eflowCalo::LAYER, Amg::Vector3D > m_positions
std::map< eflowCalo::LAYER, eflowEtaPhiPosition > m_etaPhiPositions
eflowCalo::LAYER eflowCaloENUM
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersBase< TrackParametersDim, Charged > TrackParameters