ATLAS Offline Software
sTGC_HitsTruthRelink.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "sTGC_HitsTruthRelink.h"
6 
7 
8 sTGC_HitsTruthRelink::sTGC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator)
9  : HitsTruthRelinkBase(name, pSvcLocator)
10 {
11 }
12 
13 
15 {
17 
18  // Check and initialize keys
19  ATH_CHECK( m_inputHitsKey.initialize() );
20  ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey);
21  ATH_CHECK( m_outputHitsKey.initialize() );
22  ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey);
23  return StatusCode::SUCCESS;
24 }
25 
26 
27 StatusCode sTGC_HitsTruthRelink::execute(const EventContext &ctx) const
28 {
29  ATH_MSG_DEBUG("Doing truth relinking");
30 
32  if (!inputCollection.isValid()) {
33  ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store());
34  return StatusCode::FAILURE;
35  }
36  ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store());
37 
39  ATH_CHECK(outputCollection.record(std::make_unique<sTGCSimHitCollection>()));
40  if (!outputCollection.isValid()) {
41  ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store());
42  return StatusCode::FAILURE;
43  }
44  ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store());
45 
46  // Do relinking
47  int referenceId{};
48  ATH_CHECK(getReferenceId(ctx, &referenceId));
49 
50  for (const sTGCSimHit &hit : *inputCollection) {
51  HepMcParticleLink particleLink = updatedLink(ctx, hit.particleLink(), referenceId);
52  int id = hit.sTGCId();
53  double time = hit.globalTime();
54  Amg::Vector3D position = hit.globalPosition();
55  int pdgID = hit.particleEncoding();
56  Amg::Vector3D direction = hit.globalDirection();
57  double energyDeposit = hit.depositEnergy();
58  double kineticEnergy = hit.kineticEnergy();
59  Amg::Vector3D preposition = hit.globalPrePosition();
60 
61  outputCollection->Emplace(id, time, position, pdgID, direction, energyDeposit, particleLink, kineticEnergy, preposition);
62  }
63 
64  return StatusCode::SUCCESS;
65 }
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
SG::VarHandleBase::name
const std::string & name() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:75
HitsTruthRelinkBase::getReferenceId
StatusCode getReferenceId(const EventContext &ctx, int *id) const
Definition: HitsTruthRelinkBase.cxx:64
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::energyDeposit
@ energyDeposit
Definition: MeasurementType.h:32
HitsTruthRelinkBase::initialize
virtual StatusCode initialize() override
Definition: HitsTruthRelinkBase.cxx:14
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::VarHandleBase::store
std::string store() const
Return the name of the store holding the object we are proxying.
Definition: StoreGate/src/VarHandleBase.cxx:376
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
HitsTruthRelinkBase::updatedLink
virtual HepMcParticleLink updatedLink(const EventContext &ctx, const HepMcParticleLink &oldLink, int referenceId, int pdgID=0) const
Definition: HitsTruthRelinkBase.cxx:107
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
postInclude.outputCollection
outputCollection
Definition: postInclude.SortInput.py:27
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
sTGCSimHit
Definition: sTGCSimHit.h:15
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
HitsTruthRelinkBase
Definition: HitsTruthRelinkBase.h:15