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