ATLAS Offline Software
TGC_RawDataProviderToolMT.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 
9 //================ Constructor =================================================
10 
12  const std::string& t,
13  const std::string& n,
14  const IInterface* p) :
15  base_class(t, n, p)
16 {
17  declareProperty("TgcContainerCacheKey", m_rdoContainerCacheKey, "Optional external cache for the TGC container");
18 }
19 
20 //================ Initialisation =================================================
21 
23 {
24  // call base class initialise
26 
27  // Initialise the container cache if available
28  ATH_CHECK( m_rdoContainerCacheKey.initialize( !m_rdoContainerCacheKey.key().empty() ) );
29 
30  ATH_MSG_INFO( "initialize() successful in " << name() );
31  return StatusCode::SUCCESS;
32 }
33 
34 //============================================================================================
35 
36 StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs) const {
37  return this->convert( vecRobs, Gaudi::Hive::currentContext() );
38 }
39 
40 StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const EventContext& ctx) const
41 {
42 
43  SG::WriteHandle<TgcRdoContainer> rdoContainerHandle(m_rdoContainerKey, ctx);
44 
45  // Split the methods to have one where we use the cache and one where we just setup the container
46  const bool externalCacheRDO = !m_rdoContainerCacheKey.key().empty();
47  if(!externalCacheRDO){
48  ATH_CHECK( rdoContainerHandle.record( std::make_unique<TgcRdoContainer> (m_maxhashtoUse) ) );
49  ATH_MSG_DEBUG( "Created TGC container" );
50  }
51  else{
52  SG::UpdateHandle<TgcRdo_Cache> update(m_rdoContainerCacheKey, ctx);
53  ATH_CHECK(update.isValid());
54  ATH_CHECK(rdoContainerHandle.record (std::make_unique<TgcRdoContainer>( update.ptr() )));
55  ATH_MSG_DEBUG("Created container using cache for " << m_rdoContainerCacheKey.key());
56  }
57 
58  TgcRdoContainer* rdoContainer = rdoContainerHandle.ptr();
59 
60  // this should never happen, but since we dereference the pointer, we should check
61  if(!rdoContainer) {
62  ATH_MSG_ERROR("TGC RDO Container is null, cannot decode TGC data");
63  return StatusCode::FAILURE;
64  }
65 
66  return convertIntoContainer(vecRobs, *rdoContainer);
67 }
68 
69 StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>&) const {
70  // This function does not use the IdentifierHash so we pass to the EventContext function which also does not use it
71  return this->convert( vecRobs, Gaudi::Hive::currentContext() );
72 }
73 
74 StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& /*ids*/, const EventContext& ctx) const
75 {
76  return convert(vecRobs, ctx);
77 }
78 
80  return this->convert( Gaudi::Hive::currentContext() );
81 }
82 
84 {
85  std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf;
86  const std::vector<uint32_t>& robIds = m_hid2re.allRobIds();
87 
88  m_robDataProvider->getROBData(ctx, robIds, vecOfRobf);
89 
90  return convert(vecOfRobf, ctx);
91 }
92 
93 StatusCode Muon::TGC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect) const {
94  return this->convert( rdoIdhVect, Gaudi::Hive::currentContext() );
95 }
96 
97 StatusCode Muon::TGC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect, const EventContext& ctx) const
98 {
99  std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf = getROBData(rdoIdhVect, ctx);
100 
101  return convert(vecOfRobf, rdoIdhVect, ctx);
102 }
103 
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Muon::TGC_RawDataProviderToolMT::m_rdoContainerCacheKey
SG::UpdateHandleKey< TgcRdo_Cache > m_rdoContainerCacheKey
Definition: TGC_RawDataProviderToolMT.h:55
Muon::TGC_RawDataProviderToolMT::convert
virtual StatusCode convert() const override
New decoding methods which do not use IROBDataProviderSvc in TgcRdoToPrepDataTool.
Definition: TGC_RawDataProviderToolMT.cxx:79
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TgcRdoContainer
Definition: TgcRdoContainer.h:25
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TgcRdoContainer.h
Muon::TGC_RawDataProviderToolCore::initialize
virtual StatusCode initialize()
Standard AlgTool method.
Definition: TGC_RawDataProviderToolCore.cxx:23
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
SG::UpdateHandle
Definition: UpdateHandle.h:94
TMVAToMVAUtils::convert
std::unique_ptr< MVAUtils::BDT > convert(TMVA::MethodBDT *bdt, bool isRegression=true, bool useYesNoLeaf=false)
Definition: TMVAToMVAUtils.h:114
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
Muon::TGC_RawDataProviderToolMT::initialize
virtual StatusCode initialize() override
Standard AlgTool method.
Definition: TGC_RawDataProviderToolMT.cxx:22
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
TGC_RawDataProviderToolMT.h
WriteBchToCool.update
update
Definition: WriteBchToCool.py:67
Muon::TGC_RawDataProviderToolMT::TGC_RawDataProviderToolMT
TGC_RawDataProviderToolMT(const std::string &t, const std::string &n, const IInterface *p)
Default constructor.
Definition: TGC_RawDataProviderToolMT.cxx:11