ATLAS Offline Software
CopyTRT_DriftCircleContainer.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 
10 CopyTRT_DriftCircleContainer::CopyTRT_DriftCircleContainer(const std::string &name, ISvcLocator *pSvcLocator)
11  : AthReentrantAlgorithm(name, pSvcLocator) { }
12 
14 {
15  ATH_MSG_DEBUG("Initializing...");
16 
17  // Check and initialize keys
19  ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputKey);
21  ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputKey);
22 
23  ATH_CHECK(detStore()->retrieve(m_idHelper,"TRT_ID"));
24 
25  return StatusCode::SUCCESS;
26 }
27 
28 StatusCode CopyTRT_DriftCircleContainer::execute(const EventContext& ctx) const
29 {
30  ATH_MSG_DEBUG("execute() begin");
31  // Reading the input container
32  ATH_MSG_VERBOSE("Retrieving input container");
33 
35  if (!inputContainer.isValid()) {
36  ATH_MSG_ERROR("Could not get pileup TRT_DriftCircleContainer " << inputContainer.name() << " from store " << inputContainer.store());
37  return StatusCode::FAILURE;
38  }
39  ATH_MSG_DEBUG("Found pileup TRT_DriftCircleContainer " << inputContainer.name() << " in store " << inputContainer.store());
40 
41  // Creating output RDO container
43  ATH_CHECK(outputContainer.record(std::make_unique<InDet::TRT_DriftCircleContainer>(m_idHelper->straw_layer_hash_max())));
44  if (!outputContainer.isValid()) {
45  ATH_MSG_ERROR("Could not record output TRT_DriftCircleContainer " << outputContainer.name() << " to store " << outputContainer.store());
46  return StatusCode::FAILURE;
47  }
48  ATH_MSG_DEBUG("Recorded output TRT_DriftCircleContainer container " << outputContainer.name() << " in store " << outputContainer.store());
49 
50  for(const InDet::TRT_DriftCircleCollection* col : *inputContainer){
52  newCol->setIdentifier(col->identify());
53  for(const InDet::TRT_DriftCircle* clus : *col){
54  newCol->push_back(std::make_unique<InDet::TRT_DriftCircle>(*clus));
55  }
56  ATH_CHECK(outputContainer->addCollection(newCol,newCol->identifyHash()));
57  }
58  return StatusCode::SUCCESS;
59 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
CopyTRT_DriftCircleContainer.h
CopyTRT_DriftCircleContainer::initialize
virtual StatusCode initialize() override
Definition: CopyTRT_DriftCircleContainer.cxx:13
SG::VarHandleBase::name
const std::string & name() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:75
CopyTRT_DriftCircleContainer::CopyTRT_DriftCircleContainer
CopyTRT_DriftCircleContainer(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CopyTRT_DriftCircleContainer.cxx:10
TRT_ID::straw_layer_hash_max
size_type straw_layer_hash_max(void) const
Definition: TRT_ID.h:920
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
InDet::TRT_DriftCircle
Definition: TRT_DriftCircle.h:32
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
CopyTRT_DriftCircleContainer::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: CopyTRT_DriftCircleContainer.cxx:28
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CopyTRT_DriftCircleContainer::m_inputKey
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_inputKey
Definition: CopyTRT_DriftCircleContainer.h:23
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
CopyTRT_DriftCircleContainer::m_outputKey
SG::WriteHandleKey< InDet::TRT_DriftCircleContainer > m_outputKey
Definition: CopyTRT_DriftCircleContainer.h:24
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TRT_DriftCircle.h
SG::WriteHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
InDet::TRT_DriftCircleCollection
Trk::PrepRawDataCollection< TRT_DriftCircle > TRT_DriftCircleCollection
Definition: TRT_DriftCircleCollection.h:26
query_example.col
col
Definition: query_example.py:7
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
TRT_DriftCircleCollection.h
CopyTRT_DriftCircleContainer::m_idHelper
const TRT_ID * m_idHelper
Definition: CopyTRT_DriftCircleContainer.h:26