From f1e6da1b330b991668ce1e5adba86703844c6fa7 Mon Sep 17 00:00:00 2001 From: Gianantonio Pezzullo Date: Tue, 30 Nov 2021 03:45:26 -0600 Subject: [PATCH 1/2] fixed indentation --- CosmicReco/src/CosmicTrackFinder_module.cc | 416 ++++++++++----------- 1 file changed, 208 insertions(+), 208 deletions(-) diff --git a/CosmicReco/src/CosmicTrackFinder_module.cc b/CosmicReco/src/CosmicTrackFinder_module.cc index 0bee35bdd5..29f7651751 100644 --- a/CosmicReco/src/CosmicTrackFinder_module.cc +++ b/CosmicReco/src/CosmicTrackFinder_module.cc @@ -66,235 +66,235 @@ using CLHEP::Hep3Vector; using CLHEP::HepVector; namespace{ - struct ycomp_iter : public std::binary_function::const_iterator, std::vector::const_iterator, bool> { - bool operator()(std::vector::const_iterator p1, std::vector::const_iterator p2) { return p1->_pos.y() > p2->_pos.y(); } - }; + struct ycomp_iter : public std::binary_function::const_iterator, std::vector::const_iterator, bool> { + bool operator()(std::vector::const_iterator p1, std::vector::const_iterator p2) { return p1->_pos.y() > p2->_pos.y(); } + }; } namespace mu2e { -class CosmicTrackFinder : public art::EDProducer { -public: - struct Config { - using Name=fhicl::Name; - using Comment=fhicl::Comment; - fhicl::Atom debug{Name("debugLevel"), Comment("set to 1 for debug prints"),0}; - fhicl::Atom minnsh {Name("minNStrawHits"), Comment("minimum number of straw hits ")}; - fhicl::Atom minnch {Name("minNComboHits"), Comment("number of combohits allowed")}; - fhicl::Atom saveflag {Name("SaveTrackFlag"),Comment("if set to OK then save the track"),TrkFitFlag::helixOK}; - fhicl::Atom minNHitsTimeCluster{Name("minNHitsTimeCluster"),Comment("minium allowed time cluster")}; - fhicl::Atom chToken{Name("ComboHitCollection"),Comment("tag for combo hit collection")}; - fhicl::Atom tcToken{Name("TimeClusterCollection"),Comment("tag for time cluster collection")}; - fhicl::Atom UseLineFinder{Name("UseLineFinder"),Comment("use line finder for seeding drift fit")}; - fhicl::Atom UseChiFit{Name("UseChiFit"),Comment("use chi fit to improve seed")}; - fhicl::Atom lfToken{Name("LineFinderTag"),Comment("tag for line finder seed")}; - fhicl::Atom DoDrift{Name("DoDrift"),Comment("turn on for drift fit")}; - fhicl::Atom UseTime{Name("UseTime"),Comment("use time for drift fit")}; - fhicl::Atom mnTolerance{Name("MinuitTolerance"),Comment("Tolerance for minuit convergence")}; - fhicl::Atom mnPrecision{Name("MinuitPrecision"),Comment("Effective precision for likelihood function")}; - fhicl::Table tfit{Name("CosmicTrackFit"), Comment("fit")}; - }; - typedef art::EDProducer::Table Parameters; - - explicit CosmicTrackFinder(const Parameters& conf); - virtual ~CosmicTrackFinder(); - - virtual void beginJob() override; - virtual void beginRun(art::Run& run) override; - virtual void produce(art::Event& event ) override; - - private: - - Config _conf; - - int _debug; - int _minnsh; // minimum # of strawHits in CH - int _minnch; // minimum # of ComboHits for viable fit - TrkFitFlag _saveflag;//write tracks that satisfy these flags - int _minNHitsTimeCluster; //min number of hits in a time cluster - //float _max_seed_chi2; ///maximum chi2 allowed for seed - - art::InputTag _chToken; - art::InputTag _tcToken; - - bool _UseLineFinder; - bool _UseChiFit; - art::InputTag _lfToken; - - bool _DoDrift; - bool _UseTime; - double _mnTolerance; - double _mnPrecision; - - CosmicTrackFit _tfit; - - ProditionsHandle _strawResponse_h; - ProditionsHandle _alignedTracker_h; - - void OrderHitsY(ComboHitCollection const&chcol, std::vector const&inputIdx, std::vector &outputIdxs); - int goodHitsTimeCluster(const TimeCluster &TCluster, ComboHitCollection const& chcol); - -}; - CosmicTrackFinder::CosmicTrackFinder(const Parameters& conf) : - art::EDProducer(conf), - _debug (conf().debug()), - _minnsh (conf().minnsh()), - _minnch (conf().minnch()), - _saveflag (conf().saveflag()), - _minNHitsTimeCluster(conf().minNHitsTimeCluster()), - _chToken (conf().chToken()), - _tcToken (conf().tcToken()), - _UseLineFinder (conf().UseLineFinder()), - _UseChiFit (conf().UseChiFit()), - _lfToken (conf().lfToken()), - _DoDrift (conf().DoDrift()), - _UseTime (conf().UseTime()), - _mnTolerance (conf().mnTolerance()), - _mnPrecision (conf().mnPrecision()), - _tfit (conf().tfit()) - { - consumes(_chToken); - consumes(_tcToken); - mayConsume(_lfToken); - produces(); + class CosmicTrackFinder : public art::EDProducer { + public: + struct Config { + using Name=fhicl::Name; + using Comment=fhicl::Comment; + fhicl::Atom debug{Name("debugLevel"), Comment("set to 1 for debug prints"),0}; + fhicl::Atom minnsh {Name("minNStrawHits"), Comment("minimum number of straw hits ")}; + fhicl::Atom minnch {Name("minNComboHits"), Comment("number of combohits allowed")}; + fhicl::Atom saveflag {Name("SaveTrackFlag"),Comment("if set to OK then save the track"),TrkFitFlag::helixOK}; + fhicl::Atom minNHitsTimeCluster{Name("minNHitsTimeCluster"),Comment("minium allowed time cluster")}; + fhicl::Atom chToken{Name("ComboHitCollection"),Comment("tag for combo hit collection")}; + fhicl::Atom tcToken{Name("TimeClusterCollection"),Comment("tag for time cluster collection")}; + fhicl::Atom UseLineFinder{Name("UseLineFinder"),Comment("use line finder for seeding drift fit")}; + fhicl::Atom UseChiFit{Name("UseChiFit"),Comment("use chi fit to improve seed")}; + fhicl::Atom lfToken{Name("LineFinderTag"),Comment("tag for line finder seed")}; + fhicl::Atom DoDrift{Name("DoDrift"),Comment("turn on for drift fit")}; + fhicl::Atom UseTime{Name("UseTime"),Comment("use time for drift fit")}; + fhicl::Atom mnTolerance{Name("MinuitTolerance"),Comment("Tolerance for minuit convergence")}; + fhicl::Atom mnPrecision{Name("MinuitPrecision"),Comment("Effective precision for likelihood function")}; + fhicl::Table tfit{Name("CosmicTrackFit"), Comment("fit")}; + }; + typedef art::EDProducer::Table Parameters; + + explicit CosmicTrackFinder(const Parameters& conf); + virtual ~CosmicTrackFinder(); + + virtual void beginJob() override; + virtual void beginRun(art::Run& run) override; + virtual void produce(art::Event& event ) override; + + private: + + Config _conf; + + int _debug; + int _minnsh; // minimum # of strawHits in CH + int _minnch; // minimum # of ComboHits for viable fit + TrkFitFlag _saveflag;//write tracks that satisfy these flags + int _minNHitsTimeCluster; //min number of hits in a time cluster + //float _max_seed_chi2; ///maximum chi2 allowed for seed + + art::InputTag _chToken; + art::InputTag _tcToken; + + bool _UseLineFinder; + bool _UseChiFit; + art::InputTag _lfToken; + + bool _DoDrift; + bool _UseTime; + double _mnTolerance; + double _mnPrecision; + + CosmicTrackFit _tfit; + + ProditionsHandle _strawResponse_h; + ProditionsHandle _alignedTracker_h; + + void OrderHitsY(ComboHitCollection const&chcol, std::vector const&inputIdx, std::vector &outputIdxs); + int goodHitsTimeCluster(const TimeCluster &TCluster, ComboHitCollection const& chcol); + + }; + CosmicTrackFinder::CosmicTrackFinder(const Parameters& conf) : + art::EDProducer(conf), + _debug (conf().debug()), + _minnsh (conf().minnsh()), + _minnch (conf().minnch()), + _saveflag (conf().saveflag()), + _minNHitsTimeCluster(conf().minNHitsTimeCluster()), + _chToken (conf().chToken()), + _tcToken (conf().tcToken()), + _UseLineFinder (conf().UseLineFinder()), + _UseChiFit (conf().UseChiFit()), + _lfToken (conf().lfToken()), + _DoDrift (conf().DoDrift()), + _UseTime (conf().UseTime()), + _mnTolerance (conf().mnTolerance()), + _mnPrecision (conf().mnPrecision()), + _tfit (conf().tfit()) + { + consumes(_chToken); + consumes(_tcToken); + mayConsume(_lfToken); + produces(); - } + } + + CosmicTrackFinder::~CosmicTrackFinder(){} - CosmicTrackFinder::~CosmicTrackFinder(){} + void CosmicTrackFinder::beginJob() { + art::ServiceHandle tfs; + } - void CosmicTrackFinder::beginJob() { - art::ServiceHandle tfs; + void CosmicTrackFinder::beginRun(art::Run& run) { + } + + void CosmicTrackFinder::produce(art::Event& event ) { + Tracker const& tracker = _alignedTracker_h.get(event.id()); + _tfit.setTracker(&tracker); + StrawResponse const& srep = _strawResponse_h.get(event.id()); + + if (_debug != 0) { + std::cout << "CosmicTrackFinder: Producing Cosmic Track ..."< seed_col = make_unique(); + + int _iev = event.id().event(); + + if (_debug > 0){ + std::cout << "CosmicTrackFinder: ST Finder Event #" << _iev << std::endl; } - void CosmicTrackFinder::produce(art::Event& event ) { - Tracker const& tracker = _alignedTracker_h.get(event.id()); - _tfit.setTracker(&tracker); - StrawResponse const& srep = _strawResponse_h.get(event.id()); + auto const& chH = event.getValidHandle(_chToken); + const ComboHitCollection& chcol(*chH); + auto const& tcH = event.getValidHandle(_tcToken); + const TimeClusterCollection& tccol(*tcH); - if (_debug != 0) { - std::cout << "CosmicTrackFinder: Producing Cosmic Track ..."< 0){ + std::cout<<"CosmicTrackFinder: time clusters " << _iev << std::endl; } - unique_ptr seed_col = make_unique(); + std::vector panelHitIdxs; + OrderHitsY(chcol,tclust.hits(),panelHitIdxs); - int _iev = event.id().event(); + int nFiltComboHits = 0; + int nFiltStrawHits = 0; + for (size_t i=0;i 0){ - std::cout << "CosmicTrackFinder: ST Finder Event #" << _iev << std::endl; + if (_debug != 0){ + std::cout<<"CosmicTrackFinder: #filtered SHits"<(_lfToken); + const CosmicTrackSeedCollection& lfcol(*lfH); + if (lfcol.size() == 0) { + continue; + } + + tseed = lfcol[0]; + double _interror = 40; + double _direrror = 2.5; + double _t0error = 1; + + tseed._track.FitParams.Covarience.sigA0 = _interror; + tseed._track.FitParams.Covarience.sigA1 = _direrror; + tseed._track.FitParams.Covarience.sigB0 = _interror; + tseed._track.FitParams.Covarience.sigB1 = _direrror; + tseed._t0._t0err = _t0error; + + } else{ + tseed._t0 = tclust._t0; + tseed._timeCluster = art::Ptr(tcH,index); + tseed._status.merge(TrkFitFlag::Straight); + tseed._status.merge(TrkFitFlag::hitsOK); } - auto const& chH = event.getValidHandle(_chToken); - const ComboHitCollection& chcol(*chH); - auto const& tcH = event.getValidHandle(_tcToken); - const TimeClusterCollection& tccol(*tcH); - - for (size_t index=0;index< tccol.size();++index) { - int nGoodTClusterHits(0); - const auto& tclust = tccol[index]; - nGoodTClusterHits = goodHitsTimeCluster(tclust,chcol); - - if ( nGoodTClusterHits < _minNHitsTimeCluster) { continue; } - if (_debug > 0){ - std::cout<<"CosmicTrackFinder: time clusters " << _iev << std::endl; - } - - std::vector panelHitIdxs; - OrderHitsY(chcol,tclust.hits(),panelHitIdxs); - - int nFiltComboHits = 0; - int nFiltStrawHits = 0; - for (size_t i=0;i(_lfToken); - const CosmicTrackSeedCollection& lfcol(*lfH); - if (lfcol.size() == 0) { - continue; - } - - tseed = lfcol[0]; - double _interror = 40; - double _direrror = 2.5; - double _t0error = 1; - - tseed._track.FitParams.Covarience.sigA0 = _interror; - tseed._track.FitParams.Covarience.sigA1 = _direrror; - tseed._track.FitParams.Covarience.sigB0 = _interror; - tseed._track.FitParams.Covarience.sigB1 = _direrror; - tseed._t0._t0err = _t0error; - - } else{ - tseed._t0 = tclust._t0; - tseed._timeCluster = art::Ptr(tcH,index); - tseed._status.merge(TrkFitFlag::Straight); - tseed._status.merge(TrkFitFlag::hitsOK); - } - - if (_UseChiFit){ - _tfit.BeginFit(title.str().c_str(), tseed, event, chcol, panelHitIdxs); - - if( _tfit.goodTrack(tseed._track) == false){ - tseed._status.clear(TrkFitFlag::helixConverged); - tseed._status.clear(TrkFitFlag::helixOK); - } - } - - if (tseed._status.hasAnyProperty(TrkFitFlag::helixOK) && tseed._status.hasAnyProperty(TrkFitFlag::helixConverged) && tseed._track.converged == true ) { - - if (tseed.status().hasAnyProperty(_saveflag)){ - - if(_DoDrift) { - if (_UseTime) { - MinuitDriftFitter::DoDriftTimeFit(_debug,tseed, srep, &tracker, _mnTolerance, _mnPrecision ); - } else { - _tfit.DriftFit(tseed, srep); - } - - if( !tseed._track.minuit_converged ){ - continue; - } - // TODO: do we keep or remove this? - // // remove all outliers from ComboHitCollection - // ComboHitCollection tmpHits; - // for(auto const &chit : tseed._straw_chits){ - // if(!chit._flag.hasAnyProperty(StrawHitFlag::outlier)){ - // tmpHits.push_back(chit); - // } - // } - // tseed._straw_chits = tmpHits; - // if (tmpHits.size() == 0) - // continue; - } - - CosmicTrackSeedCollection* col = seed_col.get(); - col->emplace_back(tseed); - } - } + if (_UseChiFit){ + _tfit.BeginFit(title.str().c_str(), tseed, event, chcol, panelHitIdxs); + + if( _tfit.goodTrack(tseed._track) == false){ + tseed._status.clear(TrkFitFlag::helixConverged); + tseed._status.clear(TrkFitFlag::helixOK); + } } - event.put(std::move(seed_col)); + if (tseed._status.hasAnyProperty(TrkFitFlag::helixOK) && tseed._status.hasAnyProperty(TrkFitFlag::helixConverged) && tseed._track.converged == true ) { + + if (tseed.status().hasAnyProperty(_saveflag)){ + + if(_DoDrift) { + if (_UseTime) { + MinuitDriftFitter::DoDriftTimeFit(_debug,tseed, srep, &tracker, _mnTolerance, _mnPrecision ); + } else { + _tfit.DriftFit(tseed, srep); + } + + if( !tseed._track.minuit_converged ){ + continue; + } + // TODO: do we keep or remove this? + // // remove all outliers from ComboHitCollection + // ComboHitCollection tmpHits; + // for(auto const &chit : tseed._straw_chits){ + // if(!chit._flag.hasAnyProperty(StrawHitFlag::outlier)){ + // tmpHits.push_back(chit); + // } + // } + // tseed._straw_chits = tmpHits; + // if (tmpHits.size() == 0) + // continue; + } + + CosmicTrackSeedCollection* col = seed_col.get(); + col->emplace_back(tseed); + } + } } + event.put(std::move(seed_col)); + } + void CosmicTrackFinder::OrderHitsY(ComboHitCollection const& chcol, std::vector const& inputIdxs, std::vector &outputIdxs){ if (_debug != 0){ std::cout<<"Ordering Hits..."< Date: Tue, 30 Nov 2021 03:45:40 -0600 Subject: [PATCH 2/2] fixed cstSeed sequence definition --- CosmicReco/fcl/prolog_trigger.fcl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CosmicReco/fcl/prolog_trigger.fcl b/CosmicReco/fcl/prolog_trigger.fcl index 3b7f80a2d0..ac47b5f444 100644 --- a/CosmicReco/fcl/prolog_trigger.fcl +++ b/CosmicReco/fcl/prolog_trigger.fcl @@ -23,19 +23,24 @@ CstSimpleTimeCluster : { TestFlag : false } +CstLineFinder : { + @table::CosmicTracking.producers.LineFinder + ComboHitCollection : "TTmakePH" + TimeClusterCollection : "CstSimpleTimeCluster" +} CstTrigger : { producers : { CstTimeClusterFinder : @local::CstTimeClusterFinder CstSimpleTimeCluster : @local::CstSimpleTimeCluster + CstLineFinder : @local::CstLineFinder CstCosmicTrackFinder :{ @table::CosmicTracking.producers.CosmicTrackFinderTimeFit ComboHitCollection : "TTmakePH" TimeClusterCollection : "CstSimpleTimeCluster" - - } - + LineFinderTag : "CstLineFinder" + } } filters : { @@ -105,6 +110,7 @@ CstTrigger : { @sequence::TrkHitRecoTrigger.sequences.TTmakefastHits, cstSeedSDCountFilter, CstSimpleTimeCluster, cstSeedTCFilter, + CstLineFinder, CstCosmicTrackFinder, cstSeedTSFilter ]