From bcf2f31db4b4785553d79cc495653c50c742f67a Mon Sep 17 00:00:00 2001 From: Matevz Tadel Date: Thu, 7 Oct 2021 10:55:02 -0700 Subject: [PATCH] Add BeamSpot. --- Event.h | 1 + Hit.h | 12 ++++++++++++ mkFit/HitStructures.h | 3 +++ mkFit/MkStdSeqs.cc | 9 +++++---- mkFit/MkStdSeqs.h | 6 +++--- mkFit/buildtestMPlex.cc | 6 +++--- mkFit/mkFit.cc | 2 +- 7 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Event.h b/Event.h index 9ff98291..cab59771 100644 --- a/Event.h +++ b/Event.h @@ -53,6 +53,7 @@ class Event int evtID_; public: + BeamSpot beamSpot_; // XXXX Read/Write of BeamSpot + file-version bump or extra-section to be added. std::vector layerHits_; std::vector > layerHitMasks_;//aligned with layerHits_ MCHitInfoVec simHitsInfo_; diff --git a/Hit.h b/Hit.h index 3033c23f..14a53fa7 100644 --- a/Hit.h +++ b/Hit.h @@ -337,5 +337,17 @@ struct DeadRegion }; typedef std::vector DeadVec; +struct BeamSpot +{ + float x = 0, y = 0, z = 0; + float sigmaZ = 5; + float beamWidthX = 5e-4, beamWidthY = 5e-4; + float dxdz = 0, dydz = 0; + + BeamSpot() = default; + BeamSpot(float ix, float iy, float iz, float is, float ibx, float iby, float idxdz, float idydz) : + x(ix), y(iy), z(iz), sigmaZ(is), beamWidthX(ibx), beamWidthY(iby), dxdz(idxdz), dydz(idydz) + {} +}; } // end namespace mkfit #endif diff --git a/mkFit/HitStructures.h b/mkFit/HitStructures.h index 8a353ca8..58970d11 100644 --- a/mkFit/HitStructures.h +++ b/mkFit/HitStructures.h @@ -282,6 +282,7 @@ class EventOfHits public: std::vector m_layers_of_hits; int m_n_layers; + BeamSpot m_beam_spot; public: EventOfHits(const TrackerInfo &trk_inf); @@ -311,6 +312,8 @@ class EventOfHits m_layers_of_hits[layer].SuckInDeads(deadv); } + void SetBeamSpot(const BeamSpot &bs) { m_beam_spot = bs; } + LayerOfHits& operator[](int i) { return m_layers_of_hits[i]; } const LayerOfHits& operator[](int i) const { return m_layers_of_hits[i]; } }; diff --git a/mkFit/MkStdSeqs.cc b/mkFit/MkStdSeqs.cc index 8884b46f..ef272749 100644 --- a/mkFit/MkStdSeqs.cc +++ b/mkFit/MkStdSeqs.cc @@ -15,7 +15,7 @@ namespace StdSeq { // Hit processing //========================================================================= -void LoadHits(Event &ev, EventOfHits &eoh) +void LoadHitsAndBeamSpot(Event &ev, EventOfHits &eoh) { eoh.Reset(); @@ -28,6 +28,7 @@ void LoadHits(Event &ev, EventOfHits &eoh) eoh.SuckInHits(ilay, ev.layerHits_[ilay]); } }); + eoh.SetBeamSpot(ev.beamSpot_); } void LoadDeads(EventOfHits &eoh, const std::vector& deadvectors) @@ -476,7 +477,7 @@ void quality_filter(TrackVec & tracks, const int nMinHits) }), tracks.end()); } -void quality_filter_layers(TrackVec & tracks) +void quality_filter_layers(TrackVec & tracks, const BeamSpot &bspot) { tracks.erase(std::remove_if(tracks.begin(), tracks.end(), [](auto &trk) { auto layers = trk.nUniqueLayers(); @@ -639,7 +640,7 @@ void find_duplicates_sharedhits_pixelseed(TrackVec &tracks, const float fraction // //========================================================================= -void find_and_remove_duplicates(TrackVec &tracks, const IterationConfig &itconf) +void find_and_remove_duplicates(TrackVec &tracks, const IterationConfig &itconf, const EventOfHits &eoh) { #ifdef DEBUG std::cout<<" find_and_remove_duplicates: input track size " <& deadvectors); @@ -35,7 +35,7 @@ namespace StdSeq void find_duplicates_sharedhits(TrackVec &tracks, const float fraction); void find_duplicates_sharedhits_pixelseed(TrackVec &tracks, const float fraction, const float drth_central, const float drth_obarrel, const float drth_forward); - void quality_filter_layers(TrackVec &tracks); + void quality_filter_layers(TrackVec &tracks, const BeamSpot &bspot); template bool qfilter_n_hits(const TRACK &t, int nMinHits) @@ -52,7 +52,7 @@ namespace StdSeq } - void find_and_remove_duplicates(TrackVec &tracks, const IterationConfig &itconf); + void find_and_remove_duplicates(TrackVec &tracks, const IterationConfig &itconf, const EventOfHits &eoh); } // namespace StdSeq diff --git a/mkFit/buildtestMPlex.cc b/mkFit/buildtestMPlex.cc index c0bf16ee..68152c26 100644 --- a/mkFit/buildtestMPlex.cc +++ b/mkFit/buildtestMPlex.cc @@ -522,7 +522,7 @@ std::vector runBtpCe_MultiIter(Event& ev, const EventOfHits &eoh, MkBuil { builder.export_tracks(tmp_tvec); - StdSeq::find_and_remove_duplicates(tmp_tvec, itconf); + StdSeq::find_and_remove_duplicates(tmp_tvec, itconf, eoh); ev.candidateTracks_.reserve(ev.candidateTracks_.size() + tmp_tvec.size()); for (auto &&t : tmp_tvec) ev.candidateTracks_.emplace_back( std::move(t) ); tmp_tvec.clear(); @@ -557,7 +557,7 @@ std::vector runBtpCe_MultiIter(Event& ev, const EventOfHits &eoh, MkBuil builder.select_best_comb_cands(true); // true -> clear m_tracks as they were already filled once above - StdSeq::find_and_remove_duplicates(builder.ref_tracks_nc(), itconf); + StdSeq::find_and_remove_duplicates(builder.ref_tracks_nc(), itconf, eoh); builder.export_tracks(ev.fitTracks_); } @@ -678,7 +678,7 @@ void run_OneIteration(const TrackerInfo& trackerInfo, const IterationConfig &itc if (do_remove_duplicates) { - StdSeq::find_and_remove_duplicates(out_tracks, itconf); + StdSeq::find_and_remove_duplicates(out_tracks, itconf, eoh); } builder.end_event(); diff --git a/mkFit/mkFit.cc b/mkFit/mkFit.cc index 8945981f..7f84431c 100644 --- a/mkFit/mkFit.cc +++ b/mkFit/mkFit.cc @@ -351,7 +351,7 @@ void test_standard() // plex_tracks.resize(ev.simTracks_.size()); - StdSeq::LoadHits(ev, eoh); + StdSeq::LoadHitsAndBeamSpot(ev, eoh); std::vector deadvectors(ev.layerHits_.size()); #include "deadmodules.h"