From 64b15dd30653605024a0652a4abdb778e42263e0 Mon Sep 17 00:00:00 2001 From: Markus Frank <Markus.Frank@cern.ch> Date: Thu, 5 Apr 2018 18:46:46 +0200 Subject: [PATCH] Fix bug in DeVelo detector element. --- .../src/Detector/DeVeloConditionCalls.cpp | 29 ++++++++++++------- .../DDDB/src/plugins/DeVeloServiceTest.cpp | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/examples/DDDB/src/Detector/DeVeloConditionCalls.cpp b/examples/DDDB/src/Detector/DeVeloConditionCalls.cpp index c6c1d58e4..398546201 100644 --- a/examples/DDDB/src/Detector/DeVeloConditionCalls.cpp +++ b/examples/DDDB/src/Detector/DeVeloConditionCalls.cpp @@ -155,9 +155,11 @@ namespace { void add_sensors( vector<DeVeloSensor>& cont, const vector<DeVeloSensorStatic>& src, map<DeVeloSensorStatic,DeVeloSensor>& mapping) { - cont.reserve(src.size()); - for (DeVeloSensorStatic i : src) - cont.push_back(mapping[i]); + if ( !src.empty() ) { + cont.reserve(src.size()); + for (DeVeloSensorStatic i : src) + cont.push_back(mapping[i]); + } } /// Resolve generic parent-sensor dependencies @@ -166,13 +168,15 @@ namespace { map<DeVeloSensorStatic,DeVeloSensor>& mapping, dd4hep::cond::ConditionUpdateContext& context) { - gen->sensors.reserve(src->sensors.size()); - for (DeVeloSensorStatic i : src->sensors) { - DeVeloSensor sens = mapping[i]; - if ( !sens.isValid() ) { - except("DeVelo","Problem: Invalid sensor refernce encountered."); + if ( !gen->sensors.empty() ) { + gen->sensors.reserve(src->sensors.size()); + for (DeVeloSensorStatic i : src->sensors) { + DeVeloSensor sens = mapping[i]; + if ( !sens.isValid() ) { + except("DeVelo","Problem: Invalid sensor refernce encountered."); + } + gen->sensors.push_back(sens); } - gen->sensors.push_back(sens); } for (detail::DeVeloGenericStaticObject* i : src->children) { dd4hep::ConditionKey::KeyMaker key(i->detector.key(), Keys::deKey); @@ -205,7 +209,12 @@ void DeVeloConditionCall::resolve(Condition cond, Context& context) { } } - for(size_t iside = 0; iside<3; ++iside) { + for(size_t iside = 0; iside<2; ++iside) { + vp->sensors[iside].clear(); + vp->rSensors[iside].clear(); + vp->phiSensors[iside].clear(); + vp->rphiSensors[iside].clear(); + vp->puSensors[iside].clear(); add_sensors(vp->sensors[iside], s->sensors[iside], sensorMapping); add_sensors(vp->rSensors[iside], s->rSensors[iside], sensorMapping); add_sensors(vp->phiSensors[iside], s->phiSensors[iside], sensorMapping); diff --git a/examples/DDDB/src/plugins/DeVeloServiceTest.cpp b/examples/DDDB/src/plugins/DeVeloServiceTest.cpp index e39c34608..f261814d5 100644 --- a/examples/DDDB/src/plugins/DeVeloServiceTest.cpp +++ b/examples/DDDB/src/plugins/DeVeloServiceTest.cpp @@ -216,7 +216,7 @@ namespace { for(int i=0; i<argc; ++i) { if ( ::strcmp(argv[i],"-print")==0 ) { s_PrintLevel = dd4hep::printLevel(argv[++i]); - printout(INFO,"DDDB","Setting print level for %s to %s [%d]",__FILE__,argv[i-1],s_PrintLevel); + printout(INFO,"ServiceTest","Setting print level for %s to %s [%d]",__FILE__,argv[i-1],s_PrintLevel); } else if ( ::strcmp(argv[i],"--help")==0 ) { printout(INFO,"Plugin-Help","Usage: DDDB_DeVeloServiceTest --opt [--opt] "); -- GitLab