diff --git a/Digitisers/SimpleDigi/src/PlanarDigiAlg.cpp b/Digitisers/SimpleDigi/src/PlanarDigiAlg.cpp
index 7cb4830dc2d9c6b6665d31416f6ab38a49784c20..113f2d8b30c5a77086bdc19ffedbe7323468c35e 100644
--- a/Digitisers/SimpleDigi/src/PlanarDigiAlg.cpp
+++ b/Digitisers/SimpleDigi/src/PlanarDigiAlg.cpp
@@ -110,7 +110,9 @@ StatusCode PlanarDigiAlg::execute()
   unsigned int thisSeed = _SEEDER->getSeed(this, _nEvt, 0);
   gsl_rng_set( _rng, thisSeed ) ;   
   debug() << "seed set to " << thisSeed << endmsg;
-  
+
+  auto trkhitVec = _outColHdl.createAndPut();
+  auto relCol = _outRelColHdl.createAndPut();
   //auto STHcol = _inColHdl.get();
   //if ( STHcol == nullptr ) {
   //  debug() << "Collection " << _inColHdl.fullKey() << " is unavailable in event " << _nEvt << endmsg;
@@ -133,9 +135,6 @@ StatusCode PlanarDigiAlg::execute()
   unsigned nCreatedHits=0;
   unsigned nDismissedHits=0;
 
-  auto trkhitVec = _outColHdl.createAndPut();
-  auto relCol = _outRelColHdl.createAndPut();
-
   //CellIDEncoder<TrackerHitPlaneImpl> cellid_encoder( lcio::ILDCellID0::encoder_string , trkhitVec ) ;
 
   int nSimHits = STHcol->size()  ;
@@ -205,7 +204,10 @@ StatusCode PlanarDigiAlg::execute()
     //                << endmsg;
     //        continue;
     //      }
-
+    if( (_resU.size() > 1 && layer > _resU.size()-1) || (_resV.size() > 1 && layer > _resV.size()-1) ) {
+      fatal() << "layer exceeds resolution vector, please check input parameters ResolutionU and ResolutionV" << endmsg;
+      return StatusCode::FAILURE;
+    }
 
     float resU = ( _resU.size() > 1 ?   _resU.value().at(  layer )     : _resU.value().at(0)   )  ;
     float resV = ( _resV.size() > 1 ?   _resV.value().at(  layer )     : _resV.value().at(0)   )  ; 
@@ -267,7 +269,7 @@ StatusCode PlanarDigiAlg::execute()
     }
 
     // for 1D strip measurements: set v to 0! Only the measurement in u counts!
-    if( _isStrip ) localPointSmeared[1] = 0. ;
+    if( _isStrip || (resU!=0&&resV==0) ) localPointSmeared[1] = 0. ;
 
     // convert back to global position for TrackerHitPlaneImpl
     CLHEP::Hep3Vector globalPointSmeared = ms->getCoordinateSystem()->getGlobalPoint(localPointSmeared);
@@ -324,7 +326,7 @@ StatusCode PlanarDigiAlg::execute()
     else trkHit->setdV( resV ) ;
     */
     trkHit.setType(8);
-    if( _isStrip ){
+    if( _isStrip || (resU!=0&&resV==0) ){
       trkHit.setType( UTIL::set_bit( trkHit.getType() , UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ) ) ;
     }
 
diff --git a/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp
index 9badc084e5c1e1be9c660286b63329c79689f914..6833e4041883b5bfc42ec21a9ac053bf4b5b8d70 100644
--- a/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp
+++ b/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp
@@ -216,9 +216,10 @@ StatusCode ForwardTrackingAlg::execute(){
   debug() << "\t\t---Reading in Collections---" << endmsg;
   Navigation::Instance()->Initialize();
   std::vector<const edm4hep::TrackerHitCollection*> hitFTDCollections;
-
+  int pixelCollectionID = -1; 
   try {
     auto hitFTDPixelCol = _inFTDPixelColHdl.get();
+    pixelCollectionID = hitFTDPixelCol->getID();
     hitFTDCollections.push_back(hitFTDPixelCol);
     Navigation::Instance()->AddTrackerHitCollection(hitFTDPixelCol);
   }
@@ -262,6 +263,9 @@ StatusCode ForwardTrackingAlg::execute(){
     debug() << "Number of hits in collection " << hitFTDCollections[iCol]->getID() << ": " << nHits << endmsg;
 
     for(auto trackerHit : *hitFTDCollections[iCol]){
+      if(pixelCollectionID==hitFTDCollections[iCol]->getID()){
+	if ( UTIL::BitSet32( trackerHit.getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] ) continue;
+      }
       edm4hep::ConstTrackerHit hit = trackerHit;
       debug() << "hit " << trackerHit.id() << " " << KiTrackMarlin::getCellID0Info( trackerHit.getCellID() ) 
 	      << " " << KiTrackMarlin::getPositionInfo( hit )<< endmsg;
diff --git a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp
index 2e7ae95c7ce6dc0752f646d9feb8b086d839ee4a..9dc2964076fb4020e1a99220e9d16839450b7e11 100644
--- a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp
+++ b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp
@@ -435,7 +435,8 @@ int SiliconTrackingAlg::InitialiseFTD() {
     _nTotalFTDHits = nelem;
     
     //for (int ielem=0; ielem<nelem; ++ielem) {
-    for(auto hit : *hitFTDPixelCol){  
+    for(auto hit : *hitFTDPixelCol){
+      if ( UTIL::BitSet32( hit.getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] ) continue;
       //dm4hep::ConstTrackerHit hit = hitFTDPixelCol->at(ielem);
       TrackerHitExtended * hitExt = new TrackerHitExtended( hit );
       //gear::Vector3D U(1.0,hit->getU()[1],hit->getU()[0],gear::Vector3D::spherical);
diff --git a/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc
index d0c0dad4758955b35b580b8ee21e0d71d77c9fff..b0dba150ab529a554fd6e290e6fe934127924f73 100644
--- a/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc
+++ b/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc
@@ -211,7 +211,7 @@ ILDVTrackHit* ILDDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhi
   
   //edm4hep::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ;
   //edm4hep::TrackerHitPlane* plane_hit = trkhit;
-  if(trkhit.getType()!=8) return NULL;
+  if((trkhit.getType()&8)!=8) return NULL;
   
   //edm4hep::ConstTrackerHit plane_hit = trkhit;
   //if( plane_hit == NULL )  return NULL; // SJA:FIXME: should be replaced with an exception  
diff --git a/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc b/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc
index 38b3b56fb7d640512d5307a54515c2053be6d49c..73d1a503770f2ba2300d62d8ae85cd02c08cdecb 100644
--- a/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc
+++ b/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc
@@ -158,7 +158,7 @@ Bool_t ILDRotatedTrapMeaslayer::IsOnSurface(const TVector3 &xx) const
 ILDVTrackHit* ILDRotatedTrapMeaslayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const {
   
   //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ;
-  if(trkhit.getType()!=8) return NULL;
+  if((trkhit.getType()&8)!=8) return NULL;
   //if( plane_hit == NULL )  return NULL; // SJA:FIXME: should be replaced with an exception  
   const edm4hep::Vector3d& pos=trkhit.getPosition();
   const TVector3 hit(pos.x, pos.y, pos.z);
diff --git a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc
index 9fca07c113ed80140bcca6ed6c29283ba873f3ef..26159b08d0982af98133cb1a5aef23f8b1301d97 100644
--- a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc
+++ b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc
@@ -497,7 +497,7 @@ Bool_t ILDSegmentedDiscMeasLayer::IsOnSurface(const TVector3 &xx) const
 
 ILDVTrackHit* ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const {
   //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ;
-  if(trkhit.getType()!=8) {
+  if((trkhit.getType()&8)!=8) {
   //if( plane_hit == NULL )  { 
     // streamlog_out(ERROR) << "ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit dynamic_cast to TrackerHitPlane failed " << std::endl; 
     return NULL; // SJA:FIXME: should be replaced with an exception  
diff --git a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc
index e547982b16df06eaba009e0b89ff2a9960549f26..1cf7bf454af478d5264cea1be064981bce977e46 100644
--- a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc
+++ b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc
@@ -245,7 +245,7 @@ void ILDSegmentedDiscStripMeasLayer::CalcDhDa(const TVTrackHit &vht,
 ILDVTrackHit* ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const {
   
   //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ;
-  if(trkhit.getType()!=8){
+  if((trkhit.getType()&8)!=8){
   //if( plane_hit == NULL )  { 
     // streamlog_out(ERROR) << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit dynamic_cast to TrackerHitPlane failed " << std::endl; 
     return NULL; // SJA:FIXME: should be replaced with an exception  
@@ -272,20 +272,20 @@ ILDVTrackHit* ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTr
     
   bool hit_on_surface = IsOnSurface(hit);
   
-  // streamlog_out(DEBUG1) << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit ILDPlanarStripHit created" 
-  // << " for CellID " << trkhit.getCellID()
-  // << " Disc Z = " << this->GetXc().Z() 
-  // << " u = "  <<  x[0]
-  // << " du = " << dx[0];
+  //std::cout << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit ILDPlanarStripHit created" 
+  //	    << " for CellID " << trkhit.getCellID()
+  //	    << " Disc Z = " << this->GetXc().Z() 
+  //	    << " u = "  <<  x[0]
+  //	    << " du = " << dx[0];
   
-  // if(ILDPlanarStripHit_DIM == 2)  streamlog_out(DEBUG1) << " v = "  <<  x[1] << " dv = " << dx[1];
+  //if(ILDPlanarStripHit_DIM == 2)  std::cout << " v = "  <<  x[1] << " dv = " << dx[1];
   
-  // streamlog_out(DEBUG1) << " x = " << hit.x()
-  //       		<< " y = " << hit.y()
-  //       		<< " z = " << hit.z()
-  //       		<< " r = " << hit.Perp()
-  //       		<< " onSurface = " << hit_on_surface
-  //       		<< std::endl ;
+  //std::cout << " x = " << hit.x()
+  //	    << " y = " << hit.y()
+  //	    << " z = " << hit.z()
+  //	    << " r = " << hit.Perp()
+  //	    << " onSurface = " << hit_on_surface
+  //	    << std::endl ;
   
   ILDPlanarStripHit hh( *this , x, dx, this->GetBz(),trkhit);