ATLAS Offline Software
CSC_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 "CSC_HitsTruthRelink.h"
6 
7 
8 CSC_HitsTruthRelink::CSC_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 CSC_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<CSCSimHitCollection>()));
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 CSCSimHit &hit : *inputCollection) {
51  HepMcParticleLink particleLink = updatedLink(ctx, hit.particleLink(), referenceId);
52  int id = hit.CSCid();
53  double time = hit.globalTime();
54  double energyDeposit = hit.energyDeposit();
55  Amg::Vector3D start = hit.getHitStart();
56  Amg::Vector3D end = hit.getHitEnd();
57  int pdgID = hit.particleID();
58  double kineticEnergy = hit.kineticEnergy();
59 
60  outputCollection->Emplace(id, time, energyDeposit, start, end, pdgID, particleLink, kineticEnergy);
61  }
62 
63  return StatusCode::SUCCESS;
64 }
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
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
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
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
HitsTruthRelinkBase::initialize
virtual StatusCode initialize() override
Definition: HitsTruthRelinkBase.cxx:14
CSCSimHit
Definition: CSCSimHit.h:18
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
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