ATLAS Offline Software
LArRawSCCalibDataReadingAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #include "eformat/Version.h"
13 #include "eformat/index.h"
14 
15 
16 
18 
19 
20  if (m_accDigitKey.key().size()>0) {
22  m_doAccDigits=true;
23  }
24  else {
25  m_doAccDigits=false;
26  }
27 
28  if (m_accCalibDigitKey.key().size()>0) {
30  m_doAccCalibDigits=true;
31  }
32  else {
33  m_doAccCalibDigits=false;
34  }
35 
36  if (m_latomeHeaderCollKey.key().size()>0) {
38  m_doLATOMEHeader=true;
39  }
40  else {
41  m_doLATOMEHeader=false;
42  }
43 
44 
46  ATH_MSG_FATAL("Needs ether Digits or CalibDigits or AccDigits or AccCalibDigit Key");
47  return StatusCode::FAILURE;
48  }
49 
51  ATH_MSG_FATAL("Could not have both CalibDigits, AccCalibDigits Key");
52  return StatusCode::FAILURE;
53  }
54 
58 
59  ATH_CHECK(m_robDataProviderSvc.retrieve());
60  ATH_CHECK(detStore()->retrieve(m_onlineId,"LArOnlineID"));
61 
62  ATH_CHECK(m_latomeDecoder.retrieve());
63 
64 
65  return StatusCode::SUCCESS;
66 }
67 
68 StatusCode LArRawSCCalibDataReadingAlg::execute(const EventContext& ctx) const {
69  LArAccumulatedDigitContainer* accdigits=nullptr;
70  LArAccumulatedCalibDigitContainer* caccdigits=nullptr;
71  LArLATOMEHeaderContainer* latome_header_coll = nullptr;
72 
73 
74  if (m_doAccDigits) {
76  ATH_CHECK(accdigitsHdl.record(std::make_unique<LArAccumulatedDigitContainer>()));
77  accdigits=accdigitsHdl.ptr();
78  accdigits->reserve(35000); //Enough space for the full calo
79  }
80 
81  if (m_doAccCalibDigits) {
83  ATH_CHECK(caccdigitsHdl.record(std::make_unique<LArAccumulatedCalibDigitContainer>()));
84  caccdigits=caccdigitsHdl.ptr();
85  caccdigits->reserve(35000); //Enough space for the full calo
86  }
87 
88  if (m_doLATOMEHeader) {
90  ATH_CHECK(latomeHeaderHdl.record(std::make_unique<LArLATOMEHeaderContainer>()));
91  latome_header_coll = latomeHeaderHdl.ptr();
92  latome_header_coll->reserve(120);
93  }
94 
95  // Get the mapping
97  const LArLATOMEMapping *map=*mapHdl;
98  if(!map) {
99  ATH_MSG_ERROR("Do not have LATOME mapping with the key " << m_mapKey.key());
100  return StatusCode::FAILURE;
101  }
102 
104  const LArOnOffIdMapping *onoffmap = *cablingHdl;
105  if(!onoffmap) {
106  ATH_MSG_ERROR( "Do not have mapping object " << m_cablingKey.key());
107  return StatusCode::FAILURE;
108  }
109 
111  const LArCalibLineMapping *clmap=*clmapHdl;
112  if(!clmap) {
113  ATH_MSG_ERROR("Do not have calib line mapping with the key " << m_calibMapKey.key());
114  return StatusCode::FAILURE;
115  }
116 
117  //Get full events and filter out LAr ROBs
118  const RawEvent* rawEvent=m_robDataProviderSvc->getEvent(ctx);
119 
120  StatusCode sc = m_latomeDecoder->convert(rawEvent, map, onoffmap, clmap,
121  accdigits, caccdigits,
122  latome_header_coll);
123  if (sc != StatusCode::SUCCESS)
124  ATH_MSG_WARNING("ERROR LATOMEDecoder tool returned an error. LAr SC containers might be garbage");
125 
126 
127  return StatusCode::SUCCESS;
128 }
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArRawSCCalibDataReadingAlg::m_onlineId
const LArOnlineID * m_onlineId
Definition: LArRawSCCalibDataReadingAlg.h:55
LArRawSCCalibDataReadingAlg::m_doAccDigits
bool m_doAccDigits
Definition: LArRawSCCalibDataReadingAlg.h:62
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
LArAccumulatedDigitContainer
Container class for LArAccumulatedDigit.
Definition: LArAccumulatedDigitContainer.h:22
LArRawSCCalibDataReadingAlg::m_calibMapKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibMapKey
Definition: LArRawSCCalibDataReadingAlg.h:37
LArAccumulatedDigitContainer.h
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition: RawEvent.h:37
LArLATOMEHeaderContainer.h
LArLATOMEMapping
class to provide SC mapping
Definition: LArLATOMEMapping.h:28
LArLATOMEHeaderContainer
Container class for LArLATOMEHeader.
Definition: LArLATOMEHeaderContainer.h:19
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LArRawSCCalibDataReadingAlg::m_mapKey
SG::ReadCondHandleKey< LArLATOMEMapping > m_mapKey
Definition: LArRawSCCalibDataReadingAlg.h:36
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
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
LArRawSCCalibDataReadingAlg::initialize
StatusCode initialize() override
Definition: LArRawSCCalibDataReadingAlg.cxx:17
LArRawSCCalibDataReadingAlg::m_doAccCalibDigits
bool m_doAccCalibDigits
Definition: LArRawSCCalibDataReadingAlg.h:63
LArRawSCCalibDataReadingAlg::m_accDigitKey
SG::WriteHandleKey< LArAccumulatedDigitContainer > m_accDigitKey
Definition: LArRawSCCalibDataReadingAlg.h:41
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArRawSCCalibDataReadingAlg::m_latomeHeaderCollKey
SG::WriteHandleKey< LArLATOMEHeaderContainer > m_latomeHeaderCollKey
Definition: LArRawSCCalibDataReadingAlg.h:43
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.
LArAccumulatedCalibDigitContainer.h
LArRawSCCalibDataReadingAlg::m_accCalibDigitKey
SG::WriteHandleKey< LArAccumulatedCalibDigitContainer > m_accCalibDigitKey
Definition: LArRawSCCalibDataReadingAlg.h:42
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
LArRawSCCalibDataReadingAlg::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArRawSCCalibDataReadingAlg.h:38
LArRawSCCalibDataReadingAlg::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
Definition: LArRawSCCalibDataReadingAlg.h:46
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArDigitContainer.h
LArRawSCCalibDataReadingAlg::m_latomeDecoder
ToolHandle< LArLATOMEDecoder > m_latomeDecoder
Definition: LArRawSCCalibDataReadingAlg.h:59
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
LArRawSCCalibDataReadingAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition: LArRawSCCalibDataReadingAlg.cxx:68
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArRawSCCalibDataReadingAlg::m_doLATOMEHeader
bool m_doLATOMEHeader
Definition: LArRawSCCalibDataReadingAlg.h:64
LArRawSCCalibDataReadingAlg.h
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition: LArAccumulatedCalibDigitContainer.h:25
IROBDataProviderSvc.h
LArOnlineID.h
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20