ATLAS Offline Software
RpcMeasViewAlg.cxx
Go to the documentation of this file.
1 
2 /*
3  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4 */
5 
6 
7 #include "RpcMeasViewAlg.h"
8 
9 #include <StoreGate/ReadHandle.h>
10 #include <StoreGate/WriteHandle.h>
12 namespace MuonR4{
13  RpcMeasViewAlg::RpcMeasViewAlg(const std::string& name, ISvcLocator* pSvcLocator):
14  AthReentrantAlgorithm{name, pSvcLocator} {}
15 
17  ATH_CHECK(m_readKey1D.initialize());
18  ATH_CHECK(m_readKeyBI.initialize());
19  ATH_CHECK(m_writeKey.initialize());
20  return StatusCode::SUCCESS;
21  }
22  template <class ContainerType>
25  const ContainerType*& contToPush) const {
26  contToPush = nullptr;
27  if (key.empty()) {
28  ATH_MSG_VERBOSE("No key has been parsed for object " << typeid(ContainerType).name());
29  return StatusCode::SUCCESS;
30  }
31  SG::ReadHandle<ContainerType> readHandle{key, ctx};
32  ATH_CHECK(readHandle.isPresent());
33  contToPush = readHandle.cptr();
34  return StatusCode::SUCCESS;
35  }
36 
37 
38  StatusCode RpcMeasViewAlg::execute(const EventContext& ctx) const {
39  const xAOD::RpcStripContainer* legacyStrips{nullptr};
40  const xAOD::RpcStrip2DContainer* bilStrips{nullptr};
41  ATH_CHECK(retrieveContainer(ctx, m_readKey1D, legacyStrips));
42  ATH_CHECK(retrieveContainer(ctx, m_readKeyBI, bilStrips));
43 
45  if (legacyStrips) {
46  outContainer.insert(outContainer.end(), legacyStrips->begin(), legacyStrips->end());
47  }
48  if (bilStrips) {
49  outContainer.insert(outContainer.end(), bilStrips->begin(), bilStrips->end());
50  }
51  std::sort(outContainer.begin(), outContainer.end(),
52  [](const xAOD::RpcMeasurement* a, const xAOD::RpcMeasurement* b){
53  return a->identifier() < b->identifier();
54  });
55 
57  ATH_CHECK(writeHandle.record(std::make_unique<xAOD::RpcMeasurementContainer>(*outContainer.asDataVector())));
58  return StatusCode::SUCCESS;
59  }
60 }
xAOD::RpcMeasurement_v1
RpcMeasurement_v1: Class storing the geneic.
Definition: RpcMeasurement_v1.h:18
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
MuonR4::RpcMeasViewAlg::m_readKeyBI
SG::ReadHandleKey< xAOD::RpcStrip2DContainer > m_readKeyBI
Definition: RpcMeasViewAlg.h:44
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonR4::RpcMeasViewAlg::RpcMeasViewAlg
RpcMeasViewAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: RpcMeasViewAlg.cxx:13
SG::ReadHandleKey< ContainerType >
MuonR4::RpcMeasViewAlg::retrieveContainer
StatusCode retrieveContainer(const EventContext &ctx, const SG::ReadHandleKey< ContainerType > &key, const ContainerType *&contToPush) const
Helper method to fetch data from StoreGate.
Definition: RpcMeasViewAlg.cxx:23
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
WriteHandle.h
Handle class for recording to StoreGate.
RpcMeasViewAlg.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonR4::RpcMeasViewAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition: RpcMeasViewAlg.cxx:38
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
MuonR4::RpcMeasViewAlg::initialize
StatusCode initialize() override
Definition: RpcMeasViewAlg.cxx:16
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
MuonR4
The CsvMuonSimHitDumper reads a Simulation Hit container for muons and dumps information to csv files...
Definition: MuonSpacePoint.h:11
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
a
TList * a
Definition: liststreamerinfos.cxx:10
MuonR4::RpcMeasViewAlg::m_writeKey
SG::WriteHandleKey< xAOD::RpcMeasurementContainer > m_writeKey
Definition: RpcMeasViewAlg.h:47
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
MuonR4::RpcMeasViewAlg::m_readKey1D
SG::ReadHandleKey< xAOD::RpcStripContainer > m_readKey1D
Definition: RpcMeasViewAlg.h:41
ReadHandle.h
Handle class for reading from StoreGate.
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37