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