From 8472f6569f312816cb1f456fc8e69d7dd004c018 Mon Sep 17 00:00:00 2001 From: Chengdong Fu <fucd@ihep.ac.cn> Date: Mon, 14 Sep 2020 18:33:08 +0800 Subject: [PATCH] alway create null collection to avoid crash --- .../SiliconTracking/src/ForwardTrackingAlg.cpp | 14 +++++++++++--- .../SiliconTracking/src/SiliconTrackingAlg.cpp | 3 ++- .../SiliconTracking/src/SpacePointBuilderAlg.cpp | 15 +++++++++------ .../SiliconTracking/src/TrackSubsetAlg.cpp | 7 +++++-- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp index 57868b94..3f9c425f 100644 --- a/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp +++ b/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp @@ -180,7 +180,8 @@ StatusCode ForwardTrackingAlg::initialize(){ StatusCode ForwardTrackingAlg::execute(){ debug() << " processing event number " << _nEvt << endmsg; - + + auto trkCol = _outColHdl.createAndPut(); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // ForwardTracking // @@ -626,7 +627,7 @@ StatusCode ForwardTrackingAlg::execute(){ /**********************************************************************************************/ debug() << "\t\t---Save Tracks---" << endmsg ; - auto trkCol = _outColHdl.createAndPut(); + //auto trkCol = _outColHdl.createAndPut(); for (unsigned int i=0; i < tracks.size(); i++){ FTDTrack* myTrack = dynamic_cast< FTDTrack* >( tracks[i] ); @@ -906,7 +907,14 @@ void ForwardTrackingAlg::finaliseTrack( edm4hep::Track* trackImpl ){ Fitter fitter( trackImpl , _trkSystem ); //trackImpl->trackStates().clear(); - debug() << "Track has " << trackImpl->trackStates_size() << " TrackState now, should be cleared but not supported by EDM4hep" << endmsg; + int nState = trackImpl->trackStates_size(); + if(nState>0){ + debug() << "Track has " << nState << " TrackState now, should be cleared but not supported by EDM4hep" << endmsg; + for(int i=0;i<nState;i++){ + debug() << trackImpl->getTrackStates(i).location << " "; + } + debug() << endmsg; + } edm4hep::TrackState trkStateIP( *fitter.getTrackState( 1/*lcio::TrackState::AtIP*/ ) ) ; trkStateIP.location = 1; diff --git a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp index 256f8fb6..54b2720e 100644 --- a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp +++ b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp @@ -159,6 +159,7 @@ StatusCode SiliconTrackingAlg::execute(){ Navigation::Instance()->Initialize(); //_current_event = evt; //_allHits.reserve(1000); + auto trkCol = _outColHdl.createAndPut(); _output_track_col_quality = _output_track_col_quality_GOOD; @@ -238,7 +239,7 @@ StatusCode SiliconTrackingAlg::execute(){ //edm4hep::TrackCollection* trkCol = nullptr; //edm4hep::LCRelationCollection* relCol = nullptr; - auto trkCol = _outColHdl.createAndPut(); + //auto trkCol = _outColHdl.createAndPut(); //auto relCol = _outRelColHdl.createAndPut(); /* LCCollectionVec * trkCol = new LCCollectionVec(LCIO::TRACK); diff --git a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp index d2a9b87c..bae1388b 100644 --- a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp +++ b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp @@ -69,6 +69,9 @@ StatusCode SpacePointBuilderAlg::initialize() { StatusCode SpacePointBuilderAlg::execute(){ StatusCode sc; + auto spCol = _outSPColHdl.createAndPut(); + auto relCol = _outSPAssColHdl.createAndPut(); + const edm4hep::TrackerHitCollection* hitCol = nullptr; try { hitCol = _inHitColHdl.get(); @@ -95,8 +98,8 @@ StatusCode SpacePointBuilderAlg::execute(){ _nStripsTooParallel = 0; _nPlanesNotParallel = 0; - edm4hep::TrackerHitCollection* spCol = new edm4hep::TrackerHitCollection(); // output spacepoint collection - edm4hep::MCRecoTrackerAssociationCollection* relCol = new edm4hep::MCRecoTrackerAssociationCollection(); // output relation collection + //edm4hep::TrackerHitCollection* spCol = new edm4hep::TrackerHitCollection(); // output spacepoint collection + //edm4hep::MCRecoTrackerAssociationCollection* relCol = new edm4hep::MCRecoTrackerAssociationCollection(); // output relation collection // to store the weights //LCFlagImpl lcFlag(0) ; @@ -235,10 +238,10 @@ StatusCode SpacePointBuilderAlg::execute(){ } } - if(spCol->size()!=0) _outSPColHdl.put(spCol); - else delete spCol; - if(relCol->size()!=0) _outSPAssColHdl.put(relCol); - else delete relCol; + //if(spCol->size()!=0) _outSPColHdl.put(spCol); + //else delete spCol; + //if(relCol->size()!=0) _outSPAssColHdl.put(relCol); + //else delete relCol; debug() << "\nCreated " << createdSpacePoints << " space points ( raw strip hits: " << rawStripHits << ")\n" << " There were " << rawStripHits << " strip hits available, giving " diff --git a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp index 8961484d..541c5b16 100644 --- a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp +++ b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp @@ -97,7 +97,8 @@ StatusCode TrackSubsetAlg::finalize(){ StatusCode TrackSubsetAlg::execute(){ std::vector<edm4hep::Track> tracks; - + + auto trkCol = _outColHdl.createAndPut(); /**********************************************************************************************/ /* Read in the collections */ /**********************************************************************************************/ @@ -197,7 +198,7 @@ StatusCode TrackSubsetAlg::execute(){ /**********************************************************************************************/ debug() << "Fitting and saving of the tracks" << endmsg; - auto trkCol = _outColHdl.createAndPut(); + //auto trkCol = _outColHdl.createAndPut(); for( unsigned i=0; i < accepted.size(); i++ ){ edm4hep::Track trackImpl; @@ -326,6 +327,8 @@ StatusCode TrackSubsetAlg::execute(){ } debug() << "Saving " << trkCol->size() << " tracks" << endmsg; + + Navigation::Instance()->Initialize(); _nEvt ++ ; return StatusCode::SUCCESS; -- GitLab