diff --git a/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py b/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py index a778d2eddf7a5759c578bbb1e74600e0aaab48e6..744aafa0b05213073086939fbf2d75138479b6a6 100755 --- a/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py +++ b/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py @@ -210,7 +210,7 @@ if not args.isOverlay: # Tracker clusters from TrackerPrepRawDataFormation.TrackerPrepRawDataFormationConfig import FaserSCT_ClusterizationCfg # acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="Pos_SCT_RDOs")) -acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="SCT_RDOs")) +acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="SCT_RDOs", checkBadChannels=True)) # # SpacePoints diff --git a/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx b/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx index de22698589abfbbbfc2ea9aa6d54feacd4661610..1322903932ee6ffdc8d41f31e3a850d680f1c391 100644 --- a/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx +++ b/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx @@ -55,6 +55,10 @@ LHCDataAlg::execute(const EventContext& ctx) const { lhcDataHandle->set_numBunchBeam2(m_lhcTool->getBeam2Bunches(ctx)); lhcDataHandle->set_numBunchColliding(m_lhcTool->getCollidingBunches(ctx)); + ATH_MSG_DEBUG("FaserLHCData B1: " << m_lhcTool->getBeam1Bunches(ctx) + << " B2: " << m_lhcTool->getBeam2Bunches(ctx) + << " Coll: " << m_lhcTool->getCollidingBunches(ctx)); + // Fill BCID information // Get the BCID mask @@ -64,37 +68,68 @@ LHCDataAlg::execute(const EventContext& ctx) const { SG::ReadHandle<xAOD::EventInfo> xevt(m_eventInfo, ctx); unsigned int bcid = xevt->bcid(); - int nearest = findNearest(bcid, bcid_mask, 3); // Colliding beams + int nearest; + if (m_lhcTool->getCollidingBunches(ctx) == 0) { + ATH_MSG_INFO("No colliding bunches, can't set nearest"); + nearest = -3564; + } else { + nearest = findNearest(bcid, bcid_mask, 3); // Colliding beams + } lhcDataHandle->set_distanceToCollidingBCID(nearest); ATH_MSG_DEBUG("Found distance of " << nearest << " from BCID " << bcid << " to the nearest colliding BCID "); - nearest = findNearest(bcid, bcid_mask, 1); // Beam1 unpaired + if (m_lhcTool->getBeam1Bunches(ctx) == 0) { + ATH_MSG_INFO("No beam 1 bunches, can't set nearest"); + nearest = -3564; + } else { + nearest = findNearest(bcid, bcid_mask, 1); // Beam1 unpaired + } lhcDataHandle->set_distanceToUnpairedB1(nearest); ATH_MSG_DEBUG("Found distance of " << nearest << " from BCID " << bcid << " to the nearest unpaired B1 "); - nearest = findNearest(bcid, bcid_mask, 2); // Beam2 unpaired + if (m_lhcTool->getBeam2Bunches(ctx) == 0) { + ATH_MSG_INFO("No beam 2 bunches, can't set nearest"); + nearest = -3564; + } else { + nearest = findNearest(bcid, bcid_mask, 2); // Beam2 unpaired + } lhcDataHandle->set_distanceToUnpairedB2(nearest); ATH_MSG_DEBUG("Found distance of " << nearest << " from BCID " << bcid << " to the nearest unpaired B2 "); // Add 127 to current BCID to check if inbound B1 is nearby FASER - int offset_bcid = (bcid + 127) % 3564; - nearest = findNearest(offset_bcid, bcid_mask, 1); // Inbound B1 - int nearest2 = findNearest(offset_bcid, bcid_mask, 3); // Inbound B1 - if (abs(nearest2) < abs(nearest)) nearest = nearest2; + if (m_lhcTool->getBeam1Bunches(ctx) == 0) { + ATH_MSG_INFO("No beam 1 bunches, can't set nearest"); + nearest = -3564; + } else { + int offset_bcid = (bcid + 127) % 3564; + nearest = findNearest(offset_bcid, bcid_mask, 1); // Inbound B1 + int nearest2 = findNearest(offset_bcid, bcid_mask, 3); // Inbound B1 + if (abs(nearest2) < abs(nearest)) nearest = nearest2; + } lhcDataHandle->set_distanceToInboundB1(nearest); ATH_MSG_DEBUG("Found distance of " << nearest << " from BCID " << bcid << " to the nearest inbound B1 "); unsigned int previous; - previous = previousColliding(bcid, bcid_mask); + if (m_lhcTool->getCollidingBunches(ctx) == 0) { + ATH_MSG_INFO("No colliding bunches, can't set nearest"); + previous = 9999; + } else { + previous = previousColliding(bcid, bcid_mask); + } lhcDataHandle->set_distanceToPreviousColliding(previous); ATH_MSG_DEBUG("Found distance of " << previous << " from BCID " << bcid << " to the previous colliding bunch "); - previous = previousTrain(bcid, bcid_mask); + if (m_lhcTool->getCollidingBunches(ctx) == 0) { + ATH_MSG_INFO("No colliding bunches, can't set nearest"); + previous = 9999; + } else { + previous = previousTrain(bcid, bcid_mask); + } lhcDataHandle->set_distanceToTrainStart(previous); ATH_MSG_DEBUG("Found distance of " << previous << " from BCID " << bcid << " to the start of the previous train "); @@ -142,8 +177,20 @@ LHCDataAlg::findNearest(unsigned int bcid, const std::vector<unsigned char>& bci // If we got to here, there was no match // Does the BCID make sense? - ATH_MSG_WARNING("Couldn't find distance from BCID " << bcid << " and pattern " << mask << "!"); - ATH_MSG_WARNING(bcid_mask); + ATH_MSG_WARNING("Couldn't find distance from BCID " << bcid << " and pattern " << int(mask) << "!"); + int b1=0; + int b2=0; + int col = 0; + for (int i=0; i<3564; i++) { + if (mask & 0x01) b1++; + if (mask & 0x02) b2++; + if (mask & 0x03) col++; + + ATH_MSG_WARNING("BCID " << i << " - " << int(bcid_mask[i])); + } + + //ATH_MSG_WARNING(bcid_mask); + ATH_MSG_WARNING("Found B1: " << b1 << " B2: " << b2 << " Coll: " << col); return -3565; }