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 }
43
44}
45
46eflowTrackCaloPoints::eflowTrackCaloPoints(const std::map<eflowCalo::LAYER, const Trk::TrackParameters*> & trackParameters,
47 std::map<CaloCell_ID::CaloSample,const Trk::TrackParameters*>& tileTrackParamaters) :
48 m_isEM1Barrel(trackParameters.begin()->first == eflowCalo::EMB1){
49 /* Fill etaPhiPositions map */
50 std::map<eflowCalo::LAYER, const Trk::TrackParameters*>::const_iterator itPars = trackParameters.begin();
51 std::map<eflowCalo::LAYER, const Trk::TrackParameters*>::const_iterator endPars = trackParameters.end();
52 m_isEM2Barrel = false;
53 for (; itPars != endPars; ++itPars) {
54 setEtaPhi(itPars->first, parToPosition(itPars->second));
55 if (itPars->first == eflowCalo::EMB2) m_isEM2Barrel = true;
56 m_positions[itPars->first] = parToPosition(itPars->second);
57 }
58
59 for (auto firstTileParam : tileTrackParamaters) setEtaPhiTile(firstTileParam.first,parToPosition(firstTileParam.second));
60
61 }
62
63eflowTrackCaloPoints::eflowTrackCaloPoints(const std::map<eflowCalo::LAYER, const Acts::BoundTrackParameters*> & trackParameters,
64 const Acts::GeometryContext& gctx) :
65 m_isEM1Barrel(trackParameters.begin()->first == eflowCalo::EMB1){
66 for (auto keyValuePair : trackParameters) {
67 setEtaPhi(keyValuePair.first,parToPosition(keyValuePair.second, gctx));
68 if (keyValuePair.first == eflowCalo::EMB2) m_isEM2Barrel = true;
69 m_positions[keyValuePair.first] = parToPosition(keyValuePair.second, gctx);
70 }
71 }
72
74
79
84
85//only used in eflowTrackExtrapolatorTool
89
90const pair<float, float> eflowTrackCaloPoints::operator[] (eflowCaloENUM layer) const {
91 eflowEtaPhiPosition thisPosition = getEtaPhiPos(layer);
92 return pair<float, float>(thisPosition.getEta(), thisPosition.getPhiD());
93}
95 std::map< eflowCalo::LAYER, eflowEtaPhiPosition>::const_iterator it = m_etaPhiPositions.find(layer);
96 return (it == m_etaPhiPositions.end()) ? m_defaultEtaPhiPosition : it->second;
97}
98
100 std::map< CaloCell_ID::CaloSample , eflowEtaPhiPosition>::const_iterator it = m_tileEtaPhiPositions.find(layer);
101 return (it == m_tileEtaPhiPositions.end()) ? m_defaultEtaPhiPosition : it->second;
102}
103
105 std::map<eflowCalo::LAYER, Amg::Vector3D>::const_iterator it = m_positions.find(layer);
106 return (it == m_positions.end()) ? m_nullVector : it->second;
107}
108
110 return (trackPars != nullptr) ? trackPars->position() : m_nullVector;
111}
112
113Amg::Vector3D eflowTrackCaloPoints::parToPosition(const Acts::BoundTrackParameters* trackPars, const Acts::GeometryContext& gctx) {
114 return trackPars->position(gctx);
115}
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 & 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:89
double getEta() const
Definition eflowUtil.h:87
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
const std::pair< float, float > operator[](eflowCalo::LAYER layer) const
std::map< CaloCell_ID::CaloSample, eflowEtaPhiPosition > m_tileEtaPhiPositions
Eta-Phi positions per tile layer in the 3 tile calorimeters - only used for experimental DNN based e/...
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
Eta-Phi positions per calorimeter layer using simolified particle flow naming scheme.
eflowCalo::LAYER eflowCaloENUM
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersBase< TrackParametersDim, Charged > TrackParameters