From e82cae8660ae6c3b9b606785b0bd30777ab293c0 Mon Sep 17 00:00:00 2001 From: Chengdong Fu <fucd@ihep.ac.cn> Date: Mon, 27 Jun 2022 23:15:57 +0800 Subject: [PATCH] fix hit-use flag & add CPU time --- .../FullLDCTracking/FullLDCTrackingAlg.cpp | 47 +++++++++++++++---- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp b/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp index b00f1d05..08e1fb02 100755 --- a/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp +++ b/Reconstruction/Tracking/src/FullLDCTracking/FullLDCTrackingAlg.cpp @@ -53,6 +53,8 @@ #include <vector> #include <bitset> +#include <TStopwatch.h> + typedef std::vector<edm4hep::TrackerHit> TrackerHitVec; using namespace edm4hep ; @@ -143,7 +145,24 @@ StatusCode FullLDCTrackingAlg::initialize() { PI = acos(-1.); PIOVER2 = 0.5*PI; TWOPI = 2*PI; - + + if(m_dumpTime){ + NTuplePtr nt1(ntupleSvc(), "MyTuples/Time"+name()); + if ( !nt1 ) { + m_tuple = ntupleSvc()->book("MyTuples/Time"+name(),CLID_ColumnWiseTuple,"Tracking time"); + if ( 0 != m_tuple ) { + m_tuple->addItem ("timeTotal", m_timeTotal ).ignore(); + m_tuple->addItem ("timeKalman", m_timeKalman ).ignore(); + } + else { + fatal() << "Cannot book MyTuples/Time"+name() <<endmsg; + return StatusCode::FAILURE; + } + } + else{ + m_tuple = nt1; + } + } // set up the geometery needed by KalTest //FIXME: for now do KalTest only - make this a steering parameter to use other fitters auto _trackSystemSvc = service<ITrackSystemSvc>("TrackSystemSvc"); @@ -181,6 +200,8 @@ StatusCode FullLDCTrackingAlg::execute() { // debug() << endmsg; info() << "FullLDCTrackingAlg -> run = " << 0/*evt->getRunNumber()*/ << " event = " << _nEvt << endmsg; + + auto stopwatch = TStopwatch(); // debug() << endmsg; auto outCol = _OutputTrackColHdl.createAndPut(); @@ -222,6 +243,11 @@ StatusCode FullLDCTrackingAlg::execute() { debug() << "Cleanup is done." << endmsg; _nEvt++; // getchar(); + if(m_tuple){ + m_timeTotal = stopwatch.RealTime()*1000; + m_tuple->write(); + } + debug() << "FullLDCTrackingAlg execute() finished" << endmsg; return StatusCode::SUCCESS; @@ -248,6 +274,7 @@ void FullLDCTrackingAlg::AddTrackColToEvt(TrackExtendedVec & trkVec, edm4hep::Tr //SJA:FIXME: So here we are going to do one final refit. This can certainly be optimised, but rather than worry about the mememory management right now lets make it work, and optimise it later ... debug() << "Total " << nTrkCand << " trkCand to deal" << endmsg; + auto stopwatch = TStopwatch(); for (int iTRK=0;iTRK<nTrkCand;++iTRK) { TrackExtended * trkCand = trkVec[iTRK]; @@ -385,9 +412,7 @@ void FullLDCTrackingAlg::AddTrackColToEvt(TrackExtendedVec & trkVec, edm4hep::Tr int error_code = 0; try { - error_code = MarlinTrk::createFinalisedLCIOTrack(marlinTrk, trkHits, &track, fit_backwards, &ts_initial, _bField, _maxChi2PerHit); - } catch (...) { // delete track; @@ -554,7 +579,7 @@ void FullLDCTrackingAlg::AddTrackColToEvt(TrackExtendedVec & trkVec, edm4hep::Tr debug() << " Add Track to final Collection: ID = " << track.id() << " for trkCand "<< trkCand << endmsg; } } - + if(m_tuple) m_timeKalman = stopwatch.RealTime()*1000; // streamlog_out(DEBUG5) << endmsg; debug() << "Number of accepted " << _OutputTrackColHdl.fullKey() << " = " << nTotTracks << endmsg; debug() << "Total 4-momentum of " << _OutputTrackColHdl.fullKey() << " : E = " << eTot @@ -1118,7 +1143,6 @@ void FullLDCTrackingAlg::prepareVectors() { auto Cov = getCovMatrix(tpcTrack); int NC = int(Cov.size()); for (int ic=0;ic<NC;ic++) { - if (ic>=(sizeof(cov)/sizeof(float))) break; cov[ic] = Cov[ic]; } @@ -1183,7 +1207,6 @@ void FullLDCTrackingAlg::prepareVectors() { auto Cov = getCovMatrix(siTrack); int NC = int(Cov.size()); for (int ic=0;ic<NC;ic++) { - if (ic>=(sizeof(cov)/sizeof(float))) break; cov[ic] = Cov[ic]; } trackExt->setCovMatrix(cov); @@ -3413,7 +3436,7 @@ void FullLDCTrackingAlg::AddNotAssignedHits() { nonAssignedTPCHits.push_back(trkHitExt); } } - debug() << "AddNotAssignedHits : Number of Non Assigned TPC hits = " << nonAssignedTPCHits.size() << endmsg; + debug() << "AddNotAssignedHits : Number of Non Assigned TPC hits = " << nonAssignedTPCHits.size() << " distance cut = " << _distCutForTPCHits << endmsg; AssignTPCHitsToTracks(nonAssignedTPCHits, _distCutForTPCHits); } @@ -3856,6 +3879,7 @@ void FullLDCTrackingAlg::AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec, debug() << "AssignTPCHitsToTracks: Starting loop " << nTrk << " tracks and " << nHits << " hits" << endmsg; for (int iT=0;iT<nTrk;++iT) { // loop over all tracks + debug() << " track " << iT << endmsg; TrackExtended * foundTrack = _trkImplVec[iT]; int tanlambdaSign = std::signbit(foundTrack->getTanLambda());//we only care about positive or negative GroupTracks * group = foundTrack->getGroupTracks(); @@ -3874,7 +3898,7 @@ void FullLDCTrackingAlg::AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec, HelixClass helix; helix.Initialize_Canonical(phi0,d0,z0,omega,tanLambda,_bField); float OnePFivehalfPeriodZ = 1.5*fabs(acos(-1.)*tanLambda/omega); - + debug() << " OnePFivehalfPeriodZ = " << OnePFivehalfPeriodZ << endmsg; for (int iH=0;iH<nHits;++iH) { // loop over leftover TPC hits //check if the hit and the track or on the same side @@ -3886,9 +3910,10 @@ void FullLDCTrackingAlg::AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec, bool consider = DeltaStart <= OnePFivehalfPeriodZ; consider = consider || (DeltaEnd <= OnePFivehalfPeriodZ); consider = consider || ( (HitPositions[iH][2]>=startPointZ) && (HitPositions[iH][2]<=endPointZ) ); - + debug() << " hit " << iH << " " << consider << " DeltaStart = " << DeltaStart << " DeltaEnd = " << DeltaEnd << endmsg; if(consider){ float distance = helix.getDistanceToPoint(HitPositions[iH], minDistances[iH]); + debug() << " distance = " << distance << " cut = " << minDistances[iH] << endmsg; if (distance < minDistances[iH]) { minDistances[iH] = distance; tracksToAttach[iH] = foundTrack; @@ -3903,7 +3928,9 @@ void FullLDCTrackingAlg::AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec, if (tracksToAttach[iH]!=NULL) { tracksToAttach[iH]->addTrackerHitExtended(trkHitExt); trkHitExt->setTrackExtended( tracksToAttach[iH] ); - trkHitExt->setUsedInFit( false ); + //by fucd + //trkHitExt->setUsedInFit( false ); + trkHitExt->setUsedInFit( true ); } } -- GitLab