59 return StatusCode::SUCCESS;
68 if (not externalCacheRDO) {
81 ATH_CHECK(bsIDCErrContainer.
record( std::make_unique<IDCInDetBSErrContainer>(
m_sctID->wafer_hash_max(), std::numeric_limits<IDCInDetBSErrContainer::ErrorCode>::min() )));
82 ATH_MSG_DEBUG(
"Created IDCInDetBSErrContainer w/o using external cache");
86 ATH_CHECK(bsIDCErrContainer.
record( std::make_unique<IDCInDetBSErrContainer>(cacheHandle.
ptr())) );
87 ATH_MSG_DEBUG(
"Created SCT IDCInDetBSErrContainer using external cache");
91 std::vector<const ROBFragment*> vecROBFrags;
92 std::vector<IdentifierHash> hashIDs;
94 std::vector<uint32_t> rodList;
100 std::vector<uint32_t> listOfROBs;
104 superRoI.
reserve(roiCollection->size());
118 ATH_MSG_DEBUG(
"Number of ROB fragments " << vecROBFrags.size());
126 ATH_CHECK(lvl1Collection.
record(std::make_unique<InDetTimeCollection>()));
127 ATH_CHECK(bcIDCollection.
record(std::make_unique<InDetTimeCollection>()));
129 lvl1Collection->reserve(vecROBFrags.size());
130 bcIDCollection->reserve(vecROBFrags.size());
136 uint32_t robID{(robFrag)->rod_source_id()};
138 unsigned int lvl1ID{(robFrag)->rod_lvl1_id()};
139 lvl1Collection->emplace_back(robID, lvl1ID);
141 unsigned int bcID{(robFrag)->rod_bc_id()};
142 bcIDCollection->emplace_back(robID, bcID);
144 ATH_MSG_DEBUG(
"Stored LVL1ID " << lvl1ID <<
" and BCID " << bcID <<
" in InDetTimeCollections");
148 if ( not hashIDs.empty() ) {
151 if ( not rdoContainer->tryAddFromCache( hash ) ) missingCount++;
152 bsIDCErrContainer->tryAddFromCache( hash );
154 ATH_MSG_DEBUG(
"Out of: " << hashIDs.size() <<
"Hash IDs missing: " << missingCount );
155 if ( missingCount == 0 ) {
156 return StatusCode::SUCCESS;
160 std::unique_ptr<DataPool<SCT3_RawData>> dataItemsPool =
nullptr;
161 if(!externalCacheRDO){
162 dataItemsPool = std::make_unique<DataPool<SCT3_RawData>>(ctx);
163 dataItemsPool->reserve(10000);
165 dataItemsPool = std::make_unique<DataPool<SCT3_RawData>>(ctx);
171 *(rdoContainer.
ptr()),
176 if (statConv.isFailure() && statConv != StatusCode::RECOVERABLE) {
180 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
This is an Identifier helper class for the SCT subdetector.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ServiceHandle< StoreGateSvc > & detStore() const
An algorithm that can be simultaneously executed in multiple threads.
This is a "hash" representation of an Identifier.
void push_back(const IRoiDescriptor *roi)
add a RoiDescriptor
bool manageConstituents() const
always manage constituents ???
void reserve(size_t s)
reserve elements in vector
void setComposite(bool b=true)
ToolHandle< ISCT_CablingTool > m_cabling
Providing mappings of online and offline identifiers and also serial numbers.
SCTRawDataProvider(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
ROB Data Provider for accessing ROB data.
SG::WriteHandleKey< IDCInDetBSErrContainer > m_bsIDCErrContainerKey
Write handle for Inner Detector ByteStream error container.
SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roiCollectionKey
Read handle for Trigger ROI descriptor collection.
virtual StatusCode initialize() override
Initialize.
SG::WriteHandleKey< InDetTimeCollection > m_bcIDCollectionKey
Write handle for BC ID Inner Detector time collection.
BooleanProperty m_roiSeeded
Boolean to determine if SCT Raw Data Provider should be run in RoI seeded mode.
virtual StatusCode execute(const EventContext &ctx) const override
Execute.
const SCT_ID * m_sctID
Identifier helper class for the SCT subdetector that creates compact Identifier objects and Identifie...
ToolHandle< ISCTRawDataProviderTool > m_rawDataTool
Tool to fill Collections of SCT RDO Containers.
SG::UpdateHandleKey< IDCInDetBSErrContainer_Cache > m_bsErrContainerCacheKey
SG::UpdateHandleKey< SCT_RDO_Cache > m_rdoContainerCacheKey
Update handle for SCT RDO and Erorrs Cache.
ToolHandle< IRegSelTool > m_regionSelector
Region Selector tool for Athena.
SG::WriteHandleKey< InDetTimeCollection > m_lvl1CollectionKey
Write handle for LVL 1 Inner Detector time collection.
Gaudi::Property< bool > m_storeInDetTimeColls
SG::WriteHandleKey< SCT_RDO_Container > m_rdoContainerKey
Write handle for SCT RDO container.
Gaudi::Property< bool > m_useDataPoolWithCache
Boolean to Use DataPool with IDC online Cache.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual bool isValid() override final
Can the handle be successfully dereferenced?
pointer_type ptr()
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
nope - should be used for standalone also, perhaps need to protect the class def bits ifndef XAOD_ANA...
eformat::ROBFragment< PointerType > ROBFragment
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())