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);