Skip to content
Snippets Groups Projects
Commit 56c34000 authored by Vincent Pascuzzi's avatar Vincent Pascuzzi
Browse files

Use auto-declaring property ctor for BCM RDOs ReadHandleKey

Fatras does not simulate the BCM, and therefore when
RawInfoSummaryForTagWriter attempts to retrieve BCM
RDOs, dereferencing the associated VarHandle fails
and leads to a crash.

Instead of introducing a new property explicitly, this
commit uses the auto-declaring property constructor
for the associated ReadHandleKey;
to disable the reading of BCM RDOs, this key can be made
empty in job configuration, which will record zero BCM hits
in the RISFTobject.
parent 34ac053d
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,6 @@ RawInfoSummaryForTagWriter::RawInfoSummaryForTagWriter(const std::string& name, ...@@ -32,7 +32,6 @@ RawInfoSummaryForTagWriter::RawInfoSummaryForTagWriter(const std::string& name,
declareProperty("TRT_DriftCircleContainerName", m_TRT_DriftCircleName="TRT_DriftCircles"); declareProperty("TRT_DriftCircleContainerName", m_TRT_DriftCircleName="TRT_DriftCircles");
declareProperty("SCT_SpacePointName",m_sctSpacePointName="SCT_SpacePoints"); declareProperty("SCT_SpacePointName",m_sctSpacePointName="SCT_SpacePoints");
declareProperty("Pixel_SpacePointName",m_pixSpacePointName="PixelSpacePoints"); declareProperty("Pixel_SpacePointName",m_pixSpacePointName="PixelSpacePoints");
declareProperty("BCM_RDOName", m_bcmRDOName="BCM_RDOs");
declareProperty("TRT_PhaseName", m_trtPhaseName="");//"TRT_Phase"); declareProperty("TRT_PhaseName", m_trtPhaseName="");//"TRT_Phase");
declareProperty("MBTSName",m_mbtsName="MBTSContainer"); declareProperty("MBTSName",m_mbtsName="MBTSContainer");
declareProperty("MBTSCollTimeKey",m_MBTSCollTimeKey="MBTSCollisionTime"); declareProperty("MBTSCollTimeKey",m_MBTSCollTimeKey="MBTSCollisionTime");
...@@ -72,12 +71,12 @@ StatusCode RawInfoSummaryForTagWriter::initialize() ...@@ -72,12 +71,12 @@ StatusCode RawInfoSummaryForTagWriter::initialize()
ATH_CHECK(m_MBTSCollTimeKey.initialize()); ATH_CHECK(m_MBTSCollTimeKey.initialize());
ATH_CHECK(m_sctSpacePointName.initialize()); ATH_CHECK(m_sctSpacePointName.initialize());
ATH_CHECK(m_pixSpacePointName.initialize()); ATH_CHECK(m_pixSpacePointName.initialize());
ATH_CHECK(m_bcmRDOName.initialize());
ATH_CHECK(m_mbtsName.initialize()); ATH_CHECK(m_mbtsName.initialize());
ATH_CHECK(m_larCollTimeName.initialize()); ATH_CHECK(m_larCollTimeName.initialize());
if (!m_trtPhaseName.key().empty()) { if (!m_trtPhaseName.key().empty()) {
ATH_CHECK(m_trtPhaseName.initialize()); ATH_CHECK(m_trtPhaseName.initialize());
} }
ATH_CHECK(m_bcmRDOName.initialize(!m_bcmRDOName.key().empty()));
ATH_CHECK(m_RISFTKey.initialize()); ATH_CHECK(m_RISFTKey.initialize());
ATH_CHECK( m_fieldCacheCondObjInputKey.initialize() ); ATH_CHECK( m_fieldCacheCondObjInputKey.initialize() );
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
...@@ -345,26 +344,28 @@ StatusCode RawInfoSummaryForTagWriter::execute() ...@@ -345,26 +344,28 @@ StatusCode RawInfoSummaryForTagWriter::execute()
// BCM tag bit // BCM tag bit
unsigned int bcmHit=0; unsigned int bcmHit=0;
if (!m_bcmRDOName.key().empty()) {
SG::ReadHandle<BCM_RDO_Container> bcmRDO(m_bcmRDOName);
int num_collect = bcmRDO->size();
if ( num_collect != 16 ){
ATH_MSG_WARNING (" Number of collections: " << num_collect);
}
SG::ReadHandle<BCM_RDO_Container> bcmRDO(m_bcmRDOName); BCM_RDO_Container::const_iterator chan_itr = bcmRDO->begin();
int num_collect = bcmRDO->size(); BCM_RDO_Container::const_iterator chan_itr_end = bcmRDO->end();
if ( num_collect != 16 ){ for (; chan_itr != chan_itr_end; chan_itr++) {
ATH_MSG_WARNING (" Number of collections: " << num_collect); // Loop over all BCM hits in this collection
BCM_RDO_Collection::const_iterator bcm_itr = (*chan_itr)->begin();
BCM_RDO_Collection::const_iterator bcm_itr_end = (*chan_itr)->end();
for (; bcm_itr != bcm_itr_end; bcm_itr++) {
if ((*bcm_itr)->getPulse1Width() != 0 || (*bcm_itr)->getPulse2Width() != 0) {
bcmHit++;
}
} // end of loop over raw data
} // end of loop over collections
} }
BCM_RDO_Container::const_iterator chan_itr = bcmRDO->begin();
BCM_RDO_Container::const_iterator chan_itr_end = bcmRDO->end();
for (; chan_itr != chan_itr_end; chan_itr++) {
// Loop over all BCM hits in this collection
BCM_RDO_Collection::const_iterator bcm_itr = (*chan_itr)->begin();
BCM_RDO_Collection::const_iterator bcm_itr_end = (*chan_itr)->end();
for (; bcm_itr != bcm_itr_end; bcm_itr++) {
if ((*bcm_itr)->getPulse1Width() != 0 || (*bcm_itr)->getPulse2Width() != 0) {
bcmHit++;
}
} // end of loop over raw data
} // end of loop over collections
RISFTobject->setBCMHit(bcmHit); RISFTobject->setBCMHit(bcmHit);
......
...@@ -67,13 +67,13 @@ class RawInfoSummaryForTagWriter : public AthAlgorithm ...@@ -67,13 +67,13 @@ class RawInfoSummaryForTagWriter : public AthAlgorithm
SG::ReadHandleKey<MBTSCollisionTime> m_MBTSCollTimeKey; SG::ReadHandleKey<MBTSCollisionTime> m_MBTSCollTimeKey;
SG::ReadHandleKey<SpacePointContainer> m_sctSpacePointName; SG::ReadHandleKey<SpacePointContainer> m_sctSpacePointName;
SG::ReadHandleKey<SpacePointContainer> m_pixSpacePointName; SG::ReadHandleKey<SpacePointContainer> m_pixSpacePointName;
SG::ReadHandleKey<BCM_RDO_Container> m_bcmRDOName;
SG::ReadHandleKey<TileCellContainer> m_mbtsName; SG::ReadHandleKey<TileCellContainer> m_mbtsName;
SG::ReadHandleKey<LArCollisionTime> m_larCollTimeName; SG::ReadHandleKey<LArCollisionTime> m_larCollTimeName;
SG::ReadHandleKey<ComTime> m_trtPhaseName; SG::ReadHandleKey<ComTime> m_trtPhaseName;
SG::ReadHandleKey<BCM_RDO_Container> m_bcmRDOName{
this, "BCM_RDOKey", "BCM_RDOs", "SG key for BCM RDOs"};
SG::WriteHandleKey<RawInfoSummaryForTag> m_RISFTKey; SG::WriteHandleKey<RawInfoSummaryForTag> m_RISFTKey;
bool m_doClusterSums;//!< turn on/off the cluster sum in the tag (as it crashes if Tile is off) bool m_doClusterSums;//!< turn on/off the cluster sum in the tag (as it crashes if Tile is off)
std::string m_mbtsContainerName; std::string m_mbtsContainerName;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment