diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Electron.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Electron.cxx
index 171d3cabd4cbaa2cfd7a4d0534b8ea3376165e23..d0b95ecbb073a69132f6a76f0dcf53961f226f9d 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Electron.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Electron.cxx
@@ -222,7 +222,11 @@ bool IParticleCollHandle_Electron::load()
       messageDebug("WARNING: Ignoring Electron which claims to be neutral (charge()==0.0).");
       continue;
     }
-    addHandle(new IParticleHandle_Electron(this,*it));
+    IParticleHandle_Electron* elH = new IParticleHandle_Electron(this,*it); 
+    std::cout << "elHandle ---> " << elH->electron().eta() << ", " 
+              <<  elH->electron().nTrackParticles() << ", " 
+              << elH->electron().trackParticle(0) << std::endl; 
+    addHandle(elH);
   }
 
   return true;
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.cxx
index d5f14306542727a26c770c56603d61ec79245d5c..853c6b8ea182f2ed13638e43b0b5dff27a370ac9 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.cxx
@@ -65,6 +65,7 @@ public:
   MuonCollectionSettingsButton* collSettingsButton;
 
   unsigned int last_minimumQuality;
+  bool hasPrimaryTrackParticleInfo;
 
   void possiblyUpdateGUI() {//Fixme: to IParticleCollHandleBase
     if (!((updateGUICounter++)%50)) {
@@ -80,8 +81,9 @@ IParticleCollHandle_Muon::IParticleCollHandle_Muon(AODSysCommonData * cd,
 {
   m_d->theclass = this;
   m_d->updateGUICounter = 0;
-  m_d->collSettingsButton=0;
-  m_d->last_minimumQuality=0;
+  m_d->collSettingsButton = 0;
+  m_d->last_minimumQuality = 0;
+  m_d->hasPrimaryTrackParticleInfo = false;  
 
   //The object names should not contain all sorts of funky chars (mat button style sheets wont work for instance):
   QString safetext(text());
@@ -121,7 +123,7 @@ void IParticleCollHandle_Muon::init(VP1MaterialButtonBase*)
   // Connections back to system
   connect(this,SIGNAL(shownAssociatedObjectsChanged(const QList<const xAOD::TrackParticle*>&)),systemBase(),SLOT(updateAssociatedObjects(const QList<const xAOD::TrackParticle*>&))) ;
 
-  // std::cout<<"IParticleCollHandle_Muon::init 2"<<std::endl;
+  // std::cout<<"IParticleCollHandle_Muon::init 2"<<std::endl; // debug
   // std::cout<<"swi: "<<collSwitch()<<std::endl;
   // std::cout<<"sep: "<<collSep()<<std::endl;
   // std::cout<<"mat: "<<material()<<std::endl;
@@ -182,7 +184,6 @@ bool IParticleCollHandle_Muon::load()
   const xAOD::MuonContainer * coll(nullptr);
 
   #if defined BUILDVP1LIGHT
-
     // Retrieve objects from the event
     if( !(systemBase()->getEvent())->retrieve( coll, name().toStdString()).isSuccess() ) {
       message("Error: Could not retrieve collection with key="+name());
@@ -224,14 +225,36 @@ bool IParticleCollHandle_Muon::load()
     // }
     IParticleHandle_Muon* muonH = new IParticleHandle_Muon(this,*it);
     addHandle(muonH );
-    listOfTrackParticles<<muonH->muon().primaryTrackParticle();
-    
+    //std::cout << "muons ---> " << muonH->muon().eta() // debug
+    //          << ", " << muonH->muon().primaryTrackParticle() << std::endl;    
+    if( muonH->muon().primaryTrackParticle() ) {
+        m_d->hasPrimaryTrackParticleInfo = true;
+        listOfTrackParticles << muonH->muon().primaryTrackParticle();
+    } else {
+        m_d->hasPrimaryTrackParticleInfo = false;
+        printMsgNoTrackParticle();
+    }
+  }
+  if(listOfTrackParticles.size()>0) {
+    emit shownAssociatedObjectsChanged(listOfTrackParticles);
   }
-  emit shownAssociatedObjectsChanged(listOfTrackParticles);
-
   return true;
 }
 
+
+//____________________________________________________________________
+void IParticleCollHandle_Muon::printMsgNoTrackParticle() 
+{
+    QString msg = "SEVERE WARNING! No 'primaryTrackParticle' information found within the Muons collection of the input file! As a consequence, several quantities cannot be calculated. Also, expect crashes... Please, check the data contained in your input data file.";
+    VP1Msg::messageWarningAllRed(msg);
+    systemBase()->message(msg);
+    return;
+}
+bool IParticleCollHandle_Muon::hasPrimaryTrackParticleInfo()
+{
+    return m_d->hasPrimaryTrackParticleInfo;
+}
+
 //____________________________________________________________________
 bool IParticleCollHandle_Muon::cut(AODHandleBase* handle)
 {
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.h b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.h
index 783f6a68d8a2ff638f09ce96b5dc9d78cac3d62a..f37673f0eb5fbf7db02b363d0034528cfea202d4 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.h
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleCollHandle_Muon.h
@@ -37,6 +37,9 @@ public:
   const QString& name, xAOD::Type::ObjectType type );
   virtual ~IParticleCollHandle_Muon();
 
+  void printMsgNoTrackParticle();
+  bool hasPrimaryTrackParticleInfo();
+
   virtual void init(VP1MaterialButtonBase* matBut=0);//reimplementations must start with a call to this.
   virtual void setupSettingsFromControllerSpecific(AODSystemController*);
 
@@ -56,7 +59,6 @@ private slots:
   void updateShownAssociatedObjects(); // Will get settings from the button.
   void resetCachedValuesCuts();
 
-
 private:
 
   class Imp;
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.cxx
index 13b6ffa31cb116e006c9dce103aa6d58b0f6635a..23d2987c95ce06bb0fc2161069a6a2c5c1f68755 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.cxx
@@ -72,6 +72,10 @@ IParticleHandle_Electron::~IParticleHandle_Electron()
   delete m_d;
 }
 
+const xAOD::Electron& IParticleHandle_Electron::electron() const {
+    return *(m_d->electron);
+}
+
 bool IParticleHandle_Electron::has3DObjects(){
   return 0!=m_d->sep;
 }
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.h b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.h
index 3f5e9db95cdccd3e444d73e81b916acc8b1d7885..6b0e06b5d480c15247b94656f1001d74c8e46ea8 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.h
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Electron.h
@@ -52,7 +52,8 @@ public:
   virtual Amg::Vector3D position() const;
   const xAOD::IParticle& iParticle() const;
   virtual double charge() const ;//!< Returns unknown() in case of trouble.
-	
+
+  const xAOD::Electron& electron() const;
   virtual unsigned summaryValue(xAOD::SummaryType type) const;
   virtual unsigned getNPixelHits()   const;
   virtual unsigned getNSCTHits()     const;
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Muon.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Muon.cxx
index 802b9d0263acce06d08129460dd8d9198c61c3e2..ee9d81a1fe08aa14a3ac9affc9ae494f0fc9e285 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Muon.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_Muon.cxx
@@ -368,6 +368,10 @@ QStringList IParticleHandle_Muon::clicked() const
 #if defined BUILDVP1LIGHT
   Amg::Vector3D IParticleHandle_Muon::momentum() const
   {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return Amg::Vector3D();
+    }
     double phi = m_d->muon->primaryTrackParticle()->phi0();
     double theta = m_d->muon->primaryTrackParticle()->theta();
 
@@ -398,6 +402,11 @@ QStringList IParticleHandle_Muon::clicked() const
 #else
   Amg::Vector3D IParticleHandle_Muon::momentum() const
   {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return Amg::Vector3D();
+    }
+    //return Amg::Vector3D(); // RMB test 
     const Trk::Perigee& p = m_d->muon->primaryTrackParticle()->perigeeParameters();
     return p.momentum();
   }
@@ -408,6 +417,10 @@ QStringList IParticleHandle_Muon::clicked() const
 #if defined BUILDVP1LIGHT
   Amg::Vector3D IParticleHandle_Muon::position() const
   {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return Amg::Vector3D();
+    }
     double d0 = m_d->muon->primaryTrackParticle()->d0();
     double z0 = m_d->muon->primaryTrackParticle()->z0();
     double phi = m_d->muon->primaryTrackParticle()->phi0();
@@ -424,6 +437,10 @@ QStringList IParticleHandle_Muon::clicked() const
 #else
     Amg::Vector3D IParticleHandle_Muon::position() const
   {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return Amg::Vector3D();
+    }
     const Trk::Perigee& p = m_d->muon->primaryTrackParticle()->perigeeParameters();
     return p.position(); // TODO: check what this returns
   }
@@ -432,18 +449,29 @@ QStringList IParticleHandle_Muon::clicked() const
 //____________________________________________________________________
 const xAOD::IParticle& IParticleHandle_Muon::iParticle() const
 {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+    }
   return *(m_d->muon->primaryTrackParticle());
 }
 
 //____________________________________________________________________
 double IParticleHandle_Muon::charge() const
 {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return 0.0;
+    }
   return m_d->muon->primaryTrackParticle()->charge();
 }
 
 //____________________________________________________________________
 unsigned int IParticleHandle_Muon::quality() const
 {
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return 0;
+    }
   return static_cast<unsigned int>(m_d->muon->quality());
 }
 
@@ -499,8 +527,12 @@ QString IParticleHandle_Muon::qualityString() const{
 
 QString IParticleHandle_Muon::shortInfo() const
 {
-  QString l("|P|="+VP1Msg::str(momentum().mag()/SYSTEM_OF_UNITS::GeV)+" [GeV], " +muonTypeString() + ", "+qualityString()  );
   
+  QString l("");
+  l+= "|P|=";
+  l+= VP1Msg::str(momentum().mag()/SYSTEM_OF_UNITS::GeV)+" [GeV], ";
+  l+= muonTypeString() + ", ";
+  l+= qualityString();
   return l;
 }
 
@@ -508,8 +540,14 @@ void IParticleHandle_Muon::fillObjectBrowser( QList<QTreeWidgetItem *>& listOfIt
 {
   IParticleHandleBase::fillObjectBrowser(listOfItems); // Obligatory!
 
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return;
+    }
+  
+
   QTreeWidgetItem* TSOSitem = new QTreeWidgetItem(browserTreeItem());
-  TSOSitem->setText(0, QString("Def. Parameters " ) );
+  TSOSitem->setText(0, QString("Def. Parameters [d0,z0,phi0,theta,qOverP]" ) );
   QString dParameters("(");
   dParameters+=QString::number(m_d->muon->primaryTrackParticle()->d0());
   dParameters+=", ";
@@ -567,9 +605,14 @@ const QList<std::pair<xAOD::ParameterPosition, Amg::Vector3D> >& IParticleHandle
     return m_d->parametersAndPositions;
   
   typedef std::pair<xAOD::ParameterPosition, Amg::Vector3D> paramAndPos;
+  
   #if defined BUILDVP1LIGHT
     m_d->parametersAndPositions.append(paramAndPos(xAOD::BeamLine, position() ) );
   #else
+    if( !(m_d->collHandle->hasPrimaryTrackParticleInfo()) ) {
+        m_d->collHandle->printMsgNoTrackParticle();
+        return m_d->parametersAndPositions;
+    }
     const Trk::Perigee& peri = m_d->muon->primaryTrackParticle()->perigeeParameters (); // FIXME - I'd quite like not to use anything which requires Athena ...
     m_d->parametersAndPositions.append(paramAndPos(xAOD::BeamLine, Amg::Vector3D(peri.position().x(),peri.position().y(),peri.position().z()) ) );
   #endif // BUILDVP1LIGHT
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_TrackParticle.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_TrackParticle.cxx
index 36fd22b1b228cb9bc00b8c0c22c1b9c093215efe..4eff6cd4c8972aa8e8086c5ffa410c29545eda60 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_TrackParticle.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/IParticleHandle_TrackParticle.cxx
@@ -453,7 +453,7 @@ double IParticleHandle_TrackParticle::charge() const
 
 //____________________________________________________________________
 unsigned IParticleHandle_TrackParticle::summaryValue(xAOD::SummaryType type) const
-{ 
+{
   uint8_t num = 0;
   if (m_d->trackparticle->summaryValue(num,type)){
     return num;
@@ -493,8 +493,8 @@ unsigned IParticleHandle_TrackParticle::getNMuonPrecisionHoleLayers() const
 unsigned IParticleHandle_TrackParticle::getNMuonPhiLayers() const
 { 
   return summaryValue(xAOD::numberOfPhiLayers);
-
-}//____________________________________________________________________
+}
+//____________________________________________________________________
 unsigned IParticleHandle_TrackParticle::getNMuonPhiHoleLayers() const
 { 
   return summaryValue(xAOD::numberOfPhiHoleLayers);
@@ -502,9 +502,13 @@ unsigned IParticleHandle_TrackParticle::getNMuonPhiHoleLayers() const
 
 QString IParticleHandle_TrackParticle::shortInfo() const
 {
-  QString l("|P|="+VP1Msg::str(momentum().mag()/SYSTEM_OF_UNITS::GeV)+" [GeV], ");
-  l+= "Pix["+QString::number(getNPixelHits())+"], SCT["+QString::number(getNSCTHits())+"], TRT["+QString::number(getNTRTHits())
-   +"], Muon prec. layers/holes ["+QString::number(getNMuonPrecisionLayers())+"/"+QString::number(getNMuonPrecisionHoleLayers())+"]";
+  QString l("");
+  //l+= "|P|="+VP1Msg::str(momentum().mag()/SYSTEM_OF_UNITS::GeV)+" [GeV], ";
+  l+= "Pix["+QString::number(getNPixelHits())+"], ";
+  l+= "SCT["+QString::number(getNSCTHits())+"], " ;
+  l+= "TRT["+QString::number(getNTRTHits())+"], ";
+  l+= "Muon prec. layers/holes [";
+  l+= QString::number(getNMuonPrecisionLayers())+"/"+QString::number(getNMuonPrecisionHoleLayers())+"]";
   return l;
 }
 
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/VertexCollHandle.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/VertexCollHandle.cxx
index 4e0768c7feb99956d326a095e84779fdb544ff72..3580acf264de69d7ff06b42fca8b67035d4b1881 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/VertexCollHandle.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/VertexCollHandle.cxx
@@ -292,7 +292,7 @@ bool VertexCollHandle::cut(AODHandleBase* ah)
 
 
 
-  if (!m_cut_r_allowall || !m_cut_y_allowall || !m_cut_z_allowall)
+  if ( !(m_cut_r_allowall) || !(m_cut_y_allowall) || !(m_cut_z_allowall) )
   {
     messageVerbose("evaluating cuts...");
     
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx
index 6cfdf1a2cf24e1fb781b846cb016600fd29bb8c3..bdf93b9c661d15428eb0ec1f205b5ddccfcc46cb 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx
@@ -727,8 +727,8 @@ void AscObj_TSOS::addRIO_OnTrackInfoToShapes( SoSeparator*&shape_simple,
     Amg::Vector2D  localPos;
     /*
      * see:
-     * https://svnweb.cern.ch/trac/atlasoff/browser/Tracking/TrkEvent/TrkEventPrimitives/trunk/TrkEventPrimitives/LocalParameters.h
-     * https://svnweb.cern.ch/trac/atlasoff/browser/Tracking/TrkEvent/TrkEventPrimitives/trunk/src/LocalParameters.cxx
+     * Tracking/TrkEvent/TrkEventPrimitives/trunk/TrkEventPrimitives/LocalParameters.h
+     * Tracking/TrkEvent/TrkEventPrimitives/trunk/src/LocalParameters.cxx
      */
     if (locParams.contains(Trk::loc1)) {
     	localPos( locParams.get(Trk::loc1), locParams.contains(Trk::loc2) ? locParams.get(Trk::loc2) : 0 );
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx
index f6c008a56d15486cf8093164ec29b10f1f336d4d..176dccd938248e10a17ce801fe74f25d7367f421 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx
@@ -315,7 +315,8 @@ bool TrackCollHandleBase::cut(TrackHandleBase* handle)
 
   messageVerbose("TrackCollHandleBase::cut - checking hit cuts.");
   if (mightHaveSubSystemHitInfo()&&!m_cut_requiredNHits.isEmpty()&&handle->hasSubSystemHitInfo()) {
-    assert(m_cut_requiredNHits.count()==4);
+    //assert(m_cut_requiredNHits.count()==4); // for old code
+    assert(m_cut_requiredNHits.count()==5);
     // Only apply ID cuts to tracks which have ID hits (so ID only and combined muons)
     if (handle->isIDTrack()){
       if (handle->getNPixelHits()<m_cut_requiredNHits[0]) return false;
@@ -725,7 +726,7 @@ TrackHandleBase* TrackCollHandleBase::getNextTrackHandle() {
 
 
 void TrackCollHandleBase::setUseDefaultCuts(bool useDefaults){
-  if (m_d->last_useDefaultCuts==useDefaults) return;
+  if ( (m_d->last_useDefaultCuts) == useDefaults) return;
   messageVerbose("setUseDefaultCuts changed to "+str(useDefaults)+"- rechecking all handles");
   // recheckCutStatusOfAllHandles();
   
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrkObjToString.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrkObjToString.cxx
index 5ee4d0ad1b6396cf1460bfb2c87fbbd79569e4f7..109cdc316ad3c9db9cb52e9a01018edcfdf3b0ce 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrkObjToString.cxx
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrkObjToString.cxx
@@ -381,13 +381,19 @@ TrkObjToString::fullInfo(const Trk::MeasurementBase& meas)
 
   QStringList info ("Local");
 
-  QString posInfo = QString("(") + QString::number(meas.localParameters ()[Trk::loc1])  ;
-  if (meas.localParameters ().dimension()==2 ) {
-    posInfo.append(", ");
-    posInfo.append( QString::number(meas.localParameters ()[Trk::loc2] ) );
+  QString posInfo("");
+  if (meas.localParameters().contains(Trk::loc1)) {
+      posInfo = QString("(") + QString::number(meas.localParameters()[Trk::loc1])  ;
+
+      if (meas.localParameters ().dimension()==2 ) {
+          posInfo.append(", ");
+          posInfo.append( QString::number(meas.localParameters ()[Trk::loc2] ) );
+      }
+      posInfo.append(") [CLHEP::mm]");
+      info+= posInfo;
+  } else {
+      info+= QString("[no 'Local' parameters available]");
   }
-  posInfo.append(") [CLHEP::mm]");
-  info+= posInfo;
 
   const Amg::MatrixX& err = meas.localCovariance();
   info+="Error";