ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
Muon::CSC_RawDataProviderTool Class Reference

This class is only used in a single-thread mode. More...

#include <CSC_RawDataProviderTool.h>

Inheritance diagram for Muon::CSC_RawDataProviderTool:
Collaboration diagram for Muon::CSC_RawDataProviderTool:

Public Member Functions

 CSC_RawDataProviderTool (const std::string &t, const std::string &n, const IInterface *p)
 
virtual ~CSC_RawDataProviderTool ()
 default destructor More...
 
virtual StatusCode initialize () override
 standard Athena-Algorithm method More...
 
virtual StatusCode convert (const ROBFragmentList &vecRobs, const std::vector< IdentifierHash > &) const override
 
virtual StatusCode convert (const ROBFragmentList &vecRobs) const override
 
virtual StatusCode convert (const std::vector< IdentifierHash > &collections) const override
 
virtual StatusCode convert () const override
 
virtual StatusCode convert (const std::vector< uint32_t > &) const override
 
virtual StatusCode convert (const ROBFragmentList &vecRobs, const EventContext &ctx) const override
 
virtual StatusCode convert (const EventContext &ctx) const override
 
virtual StatusCode convert (const std::vector< IdentifierHash > &, const EventContext &) const override
 
virtual StatusCode convert (const std::vector< uint32_t > &, const EventContext &) const override
 
virtual StatusCode convert (const ROBFragmentList &, const std::vector< IdentifierHash > &, const EventContext &) const override
 

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 

Detailed Description

This class is only used in a single-thread mode.

Definition at line 22 of file CSC_RawDataProviderTool.h.

Constructor & Destructor Documentation

◆ CSC_RawDataProviderTool()

Muon::CSC_RawDataProviderTool::CSC_RawDataProviderTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 25 of file CSC_RawDataProviderTool.cxx.

25  :
26  base_class(t, n, p) {}

◆ ~CSC_RawDataProviderTool()

Muon::CSC_RawDataProviderTool::~CSC_RawDataProviderTool ( )
virtualdefault

default destructor

Member Function Documentation

◆ convert() [1/10]

virtual StatusCode Muon::CSC_RawDataProviderTool::convert ( ) const
inlineoverridevirtual

Definition at line 39 of file CSC_RawDataProviderTool.h.

39 { return this->convert(Gaudi::Hive::currentContext()); }

◆ convert() [2/10]

StatusCode Muon::CSC_RawDataProviderTool::convert ( const EventContext &  ctx) const
overridevirtual

Definition at line 62 of file CSC_RawDataProviderTool.cxx.

62  {
63  std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf;
64  const std::vector<uint32_t>& robIds = m_hid2re.allRobIds();
65  ATH_MSG_VERBOSE("Number of ROB ids " << robIds.size());
66  // ask ROBDataProviderSvc for the vector of ROBFragment for all MDT ROBIDs
67  m_robDataProvider->getROBData(robIds, vecOfRobf);
68  ATH_MSG_VERBOSE("Number of ROB fragments " << vecOfRobf.size());
69 
70  return convert(vecOfRobf, ctx);
71 }

◆ convert() [3/10]

virtual StatusCode Muon::CSC_RawDataProviderTool::convert ( const ROBFragmentList &  ,
const std::vector< IdentifierHash > &  ,
const EventContext &   
) const
inlineoverridevirtual

Definition at line 48 of file CSC_RawDataProviderTool.h.

48  {
49  return StatusCode::FAILURE;
50  }

◆ convert() [4/10]

virtual StatusCode Muon::CSC_RawDataProviderTool::convert ( const ROBFragmentList &  vecRobs) const
inlineoverridevirtual

Definition at line 34 of file CSC_RawDataProviderTool.h.

34  {
35  return this->convert(vecRobs, Gaudi::Hive::currentContext());
36  }

◆ convert() [5/10]

StatusCode Muon::CSC_RawDataProviderTool::convert ( const ROBFragmentList &  vecRobs,
const EventContext &  ctx 
) const
overridevirtual

Definition at line 78 of file CSC_RawDataProviderTool.cxx.

78  {
79  // logic for run-2 (not thread safe mode)
80  if (ctx.slot() > 1) {
82  "CSC_RawDataProviderTool is not thread safe, but you are trying to run with > 1 thread. You must switch to 1 thread or use "
83  "CSC_RawDataProviderToolMT");
84  return StatusCode::FAILURE;
85  }
86 
87  CscRawDataContainer* container = nullptr;
88 
89  SG::WriteHandle<CscRawDataContainer> rdoContainerHandle(m_containerKey, ctx);
90  // here we have to check if the container is already present and if it is we retrieve from SG and then add to it
91  if (rdoContainerHandle.isPresent()) {
92  const CscRawDataContainer* rdoContainer_c = nullptr;
93  ATH_CHECK(evtStore()->retrieve(rdoContainer_c, m_containerKey.key()));
94  container = const_cast<CscRawDataContainer*>(rdoContainer_c);
95 
96  } else {
97  ATH_CHECK(rdoContainerHandle.record(std::make_unique<CscRawDataContainer>(m_idHelperSvc->cscIdHelper().module_hash_max())));
98  ATH_MSG_DEBUG("Created CSCRawDataContainer");
99  container = rdoContainerHandle.ptr();
100  }
101 
102  if (!container) {
103  ATH_MSG_ERROR("CSC RDO container pointer is null, cannot decode data");
104  return StatusCode::FAILURE;
105  }
106 
107  // call conversion function from the base class
108  ATH_CHECK(convertIntoContainer(vecRobs, ctx, *container));
109 
110  return StatusCode::SUCCESS;
111 }

◆ convert() [6/10]

StatusCode Muon::CSC_RawDataProviderTool::convert ( const ROBFragmentList &  vecRobs,
const std::vector< IdentifierHash > &   
) const
overridevirtual

Definition at line 73 of file CSC_RawDataProviderTool.cxx.

74  {
75  return this->convert(vecRobs, Gaudi::Hive::currentContext());
76 }

◆ convert() [7/10]

virtual StatusCode Muon::CSC_RawDataProviderTool::convert ( const std::vector< IdentifierHash > &  ,
const EventContext &   
) const
inlineoverridevirtual

Definition at line 46 of file CSC_RawDataProviderTool.h.

46 { return StatusCode::FAILURE; }

◆ convert() [8/10]

StatusCode Muon::CSC_RawDataProviderTool::convert ( const std::vector< IdentifierHash > &  collections) const
overridevirtual

Definition at line 46 of file CSC_RawDataProviderTool.cxx.

46  {
47  IdContext cscContext = m_idHelperSvc->cscIdHelper().module_context();
48 
49  std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf;
50  std::vector<uint32_t> robIds;
51 
52  for (unsigned int i = 0; i < rdoIdhVect.size(); ++i) {
53  uint32_t rob_id = 0xffff;
54  m_cabling->hash2RobFull(rdoIdhVect[i], rob_id);
55  robIds.push_back(rob_id);
56  }
57  m_robDataProvider->getROBData(robIds, vecOfRobf);
58  ATH_MSG_VERBOSE("Number of ROB fragments " << vecOfRobf.size());
59  return convert(vecOfRobf, rdoIdhVect);
60 }

◆ convert() [9/10]

virtual StatusCode Muon::CSC_RawDataProviderTool::convert ( const std::vector< uint32_t > &  ) const
inlineoverridevirtual

Definition at line 40 of file CSC_RawDataProviderTool.h.

40 { return StatusCode::FAILURE; }

◆ convert() [10/10]

virtual StatusCode Muon::CSC_RawDataProviderTool::convert ( const std::vector< uint32_t > &  ,
const EventContext &   
) const
inlineoverridevirtual

Definition at line 47 of file CSC_RawDataProviderTool.h.

47 { return StatusCode::FAILURE; }

◆ initialize()

StatusCode Muon::CSC_RawDataProviderTool::initialize ( )
overridevirtual

standard Athena-Algorithm method

Definition at line 34 of file CSC_RawDataProviderTool.cxx.

34  {
35  // call initialize from base class
37 
38  ATH_CHECK(m_idHelperSvc.retrieve());
39 
40  return StatusCode::SUCCESS;
41 }

Member Data Documentation

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::CSC_RawDataProviderTool::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 53 of file CSC_RawDataProviderTool.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Muon::CSC_RawDataProviderTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: CSC_RawDataProviderTool.h:53
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
Muon::CSC_RawDataProviderToolCore::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: CSC_RawDataProviderToolCore.cxx:25
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::CSC_RawDataProviderTool::convert
virtual StatusCode convert() const override
Definition: CSC_RawDataProviderTool.h:39
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
CscRawDataContainer
This container provides access to collections of CSC RDOs and a mechanism for recording them.
Definition: CscRawDataContainer.h:23
IdContext
class IdContext
Definition: IdContext.h:34