ATLAS Offline Software
ClusterPositionInCaloFillerTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // $Id$
15 #include "CaloEvent/CaloCluster.h"
17 
18 
19 namespace D3PD {
20 
21 
29  (const std::string& type,
30  const std::string& name,
31  const IInterface* parent)
32  : Base (type, name, parent)
33 {
34  declareProperty("FillSeedCoordinates", m_FillSeedCoordinates=false);
35 
36  book().ignore(); // Avoid coverity warnings.
37 }
38 
40 {
42  return StatusCode::SUCCESS;
43 }
44 
45 
46 
51 {
52 
54  CHECK( addVariable ("eta0Calo", m_eta0Calo,
55  "Cluster seed eta position in local calorimeter coordinates") );
56  CHECK( addVariable ("phi0Calo", m_phi0Calo,
57  "Cluster seed phi position in local calorimeter coordinates") );
58  }
59  else{
60  CHECK( addVariable ("etaCalo", m_etaCalo,
61  "Cluster eta position in local calorimeter coordinates") );
62  CHECK( addVariable ("phiCalo", m_phiCalo,
63  "Cluster phi position in local calorimeter coordinates") );
64  }
65 
66  return StatusCode::SUCCESS;
67 }
68 
69 
79 {
80  CHECK( fillT (p) );
81  return StatusCode::SUCCESS;
82 }
83 
84 
94 {
95  CHECK( fillT (p) );
96  return StatusCode::SUCCESS;
97 }
98 
99 
106 template <class T>
108 {
109 
112  if (p.inBarrel() && !p.inEndcap())
113  sam = CaloCell_ID::EMB2;
114  else if (!p.inBarrel() && p.inEndcap())
115  sam = CaloCell_ID::EME2;
116  else {
117  if (p.eSample(CaloSampling::EMB2) > p.eSample(CaloSampling::EME2)) sam=CaloCell_ID::EMB2;
118  else sam = CaloCell_ID::EME2;
119  }
120 
121  if (m_FillSeedCoordinates) {
122  CaloCellDetPos::getDetPosition(**caloDetDescrMgrHandle,
123  sam,
124  p.eta0(),
125  p.phi0(),
126  *m_eta0Calo,
127  *m_phi0Calo);
128  } else {
130  **caloDetDescrMgrHandle, sam, p.eta(), p.phi(), *m_etaCalo, *m_phiCalo);
131  }
132 
133  return StatusCode::SUCCESS;
134 }
135 
136 
137 } // namespace D3PD
D3PD::ClusterPositionInCaloFillerTool::m_etaCalo
double * m_etaCalo
Variable: eta position in calo frame.
Definition: ClusterPositionInCaloFillerTool.h:86
D3PD::ClusterPositionInCaloFillerTool::m_FillSeedCoordinates
bool m_FillSeedCoordinates
Variable: whether to dump the seed coordinates.
Definition: ClusterPositionInCaloFillerTool.h:98
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
D3PD::ClusterPositionInCaloFillerTool::ClusterPositionInCaloFillerTool
ClusterPositionInCaloFillerTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard Gaudi tool constructor.
Definition: ClusterPositionInCaloFillerTool.cxx:29
D3PD::ClusterPositionInCaloFillerTool::m_phi0Calo
double * m_phi0Calo
Variable: seed phi position in calo frame.
Definition: ClusterPositionInCaloFillerTool.h:95
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
D3PD::AddVariable::addVariable
virtual StatusCode addVariable(const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)
Add a variable to the tuple.
Definition: AddVariable.cxx:85
D3PD::ClusterPositionInCaloFillerTool::fill
virtual StatusCode fill(const CaloCluster &p) override
Fill one block — type-safe version.
Definition: ClusterPositionInCaloFillerTool.cxx:78
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
D3PD
Block filler tool for noisy FEB information.
Definition: InnerDetector/InDetMonitoring/InDetGlobalMonitoring/macros/EnhancedPrimaryVertexMonitoring/TrigD3PD/ChainGroup.h:21
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCluster
Principal data class for CaloCell clusters.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:79
D3PD::BlockFillerTool< Types< CaloCluster, xAOD::CaloCluster > >
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
D3PD::ClusterPositionInCaloFillerTool::book
virtual StatusCode book() final
Book variables for this block.
Definition: ClusterPositionInCaloFillerTool.cxx:50
CaloCellDetPos::getDetPosition
static bool getDetPosition(const CaloDetDescrManager &mgr, CaloCell_ID::CaloSample sam, double etaAtlas, double phiAtlas, double &etaDet, double &phiDet)
get Detector level eta-phi position from Atlas level (aligned) position
Definition: CaloCellDetPos.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
errorcheck.h
Helpers for checking error return status codes and reporting errors.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
D3PD::ClusterPositionInCaloFillerTool::initialize
virtual StatusCode initialize() override
Definition: ClusterPositionInCaloFillerTool.cxx:39
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
D3PD::ClusterPositionInCaloFillerTool::m_eta0Calo
double * m_eta0Calo
Variable: seed eta position in calo frame.
Definition: ClusterPositionInCaloFillerTool.h:92
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
ClusterPositionInCaloFillerTool.h
Block filler tool for eta/phi positions in calo coordinates from a CaloCluster.
D3PD::ClusterPositionInCaloFillerTool::m_phiCalo
double * m_phiCalo
Variable: phi position in calo frame.
Definition: ClusterPositionInCaloFillerTool.h:89
D3PD::ClusterPositionInCaloFillerTool::fillT
StatusCode fillT(const T &p)
Fill one block.
Definition: ClusterPositionInCaloFillerTool.cxx:107
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
D3PD::ClusterPositionInCaloFillerTool::m_caloDetDescrMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
Definition: ClusterPositionInCaloFillerTool.h:100