From 39416aec29b2b5f7d9b72d79d323d6000a8fba66 Mon Sep 17 00:00:00 2001 From: Thomas Schuh Date: Thu, 30 Jan 2025 12:59:21 +0000 Subject: [PATCH] makortel 2 --- .../interface/DataFormats.h | 3 +- .../interface/DataFormatsRcd.h | 17 ---- .../interface/HitPatternHelperRcd.h | 3 +- .../interface/TrackFindingProcessor.h | 2 + .../plugins/L1FPGATrackProducer.cc | 4 +- .../plugins/ProducerDR.cc | 38 +++----- .../plugins/ProducerDataFormats.cc | 4 +- .../plugins/ProducerHPH.cc | 2 +- .../plugins/ProducerKF.cc | 28 +++--- .../plugins/ProducerTFP.cc | 30 ++---- .../plugins/ProducerTM.cc | 30 ++---- .../src/ES_DataFormats.cc | 4 +- .../src/TrackFindingProcessor.cc | 54 ++++++----- .../TrackFindingTracklet/test/AnalyzerDR.cc | 4 +- .../test/AnalyzerDemonstrator.cc | 4 +- .../TrackFindingTracklet/test/AnalyzerKF.cc | 4 +- .../test/AnalyzerKFout.cc | 2 - .../TrackFindingTracklet/test/AnalyzerTM.cc | 4 +- .../test/AnalyzerTracklet.cc | 4 +- .../test/L1TrackNtupleMaker.cc | 4 +- .../TrackerDTC/interface/LayerEncoding.h | 3 +- .../TrackerDTC/interface/LayerEncodingRcd.h | 18 ---- L1Trigger/TrackerDTC/plugins/ProducerDTC.cc | 38 +++----- .../plugins/ProducerLayerEncoding.cc | 4 +- L1Trigger/TrackerDTC/src/LayerEncodingRcd.cc | 4 - L1Trigger/TrackerDTC/src/Stub.cc | 9 +- L1Trigger/TrackerDTC/test/AnalyzerDAQ.cc | 17 ++-- .../TrackerTFP/interface/CleanTrackBuilder.h | 14 +++ L1Trigger/TrackerTFP/interface/Demonstrator.h | 3 +- .../TrackerTFP/interface/DemonstratorRcd.h | 17 ---- .../TrackerTFP/interface/LayerEncoding.h | 3 +- .../TrackerTFP/interface/LayerEncodingRcd.h | 18 ---- L1Trigger/TrackerTFP/interface/TrackQuality.h | 3 +- .../TrackerTFP/interface/TrackQualityRcd.h | 17 ---- L1Trigger/TrackerTFP/plugins/ProducerCTB.cc | 42 ++++----- L1Trigger/TrackerTFP/plugins/ProducerDR.cc | 27 +++--- .../plugins/ProducerDemonstrator.cc | 4 +- L1Trigger/TrackerTFP/plugins/ProducerGP.cc | 33 +++---- L1Trigger/TrackerTFP/plugins/ProducerHT.cc | 30 +++--- L1Trigger/TrackerTFP/plugins/ProducerKF.cc | 33 ++++--- .../plugins/ProducerLayerEncoding.cc | 4 +- L1Trigger/TrackerTFP/plugins/ProducerPP.cc | 15 ++- L1Trigger/TrackerTFP/plugins/ProducerTFP.cc | 20 ++-- L1Trigger/TrackerTFP/plugins/ProducerTQ.cc | 24 ++--- .../plugins/ProducerTrackQuality.cc | 4 +- L1Trigger/TrackerTFP/src/CleanTrackBuilder.cc | 92 +++++++++---------- L1Trigger/TrackerTFP/src/DemonstratorRcd.cc | 4 - L1Trigger/TrackerTFP/src/DuplicateRemoval.cc | 2 +- L1Trigger/TrackerTFP/src/ES_TrackQuality.cc | 2 - .../TrackerTFP/src/GeometricProcessor.cc | 10 +- L1Trigger/TrackerTFP/src/HoughTransform.cc | 8 +- L1Trigger/TrackerTFP/src/KalmanFilter.cc | 10 +- L1Trigger/TrackerTFP/src/LayerEncodingRcd.cc | 4 - .../TrackerTFP/test/AnalyzerDemonstrator.cc | 4 +- .../interface/StubAssociation.h | 10 +- .../plugins/StubAssociator.cc | 28 +++--- .../src/StubAssociation.cc | 10 +- 57 files changed, 347 insertions(+), 486 deletions(-) delete mode 100644 L1Trigger/TrackFindingTracklet/interface/DataFormatsRcd.h delete mode 100644 L1Trigger/TrackerDTC/interface/LayerEncodingRcd.h delete mode 100644 L1Trigger/TrackerDTC/src/LayerEncodingRcd.cc delete mode 100644 L1Trigger/TrackerTFP/interface/DemonstratorRcd.h delete mode 100644 L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h delete mode 100644 L1Trigger/TrackerTFP/interface/TrackQualityRcd.h delete mode 100644 L1Trigger/TrackerTFP/src/DemonstratorRcd.cc delete mode 100644 L1Trigger/TrackerTFP/src/LayerEncodingRcd.cc diff --git a/L1Trigger/TrackFindingTracklet/interface/DataFormats.h b/L1Trigger/TrackFindingTracklet/interface/DataFormats.h index ef4b4fb7b02c5..5079aa0383de7 100644 --- a/L1Trigger/TrackFindingTracklet/interface/DataFormats.h +++ b/L1Trigger/TrackFindingTracklet/interface/DataFormats.h @@ -10,7 +10,6 @@ and in undigitized format in an std::tuple. (This saves CPU) ----------------------------------------------------------------------*/ #include "FWCore/Framework/interface/data_default_record_trait.h" -#include "L1Trigger/TrackFindingTracklet/interface/DataFormatsRcd.h" #include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignment.h" #include "L1Trigger/TrackTrigger/interface/Setup.h" #include "DataFormats/L1TrackTrigger/interface/TTBV.h" @@ -485,6 +484,6 @@ namespace trklet { } // namespace trklet -EVENTSETUP_DATA_DEFAULT_RECORD(trklet::DataFormats, trklet::DataFormatsRcd); +EVENTSETUP_DATA_DEFAULT_RECORD(trklet::DataFormats, trklet::ChannelAssignmentRcd); #endif diff --git a/L1Trigger/TrackFindingTracklet/interface/DataFormatsRcd.h b/L1Trigger/TrackFindingTracklet/interface/DataFormatsRcd.h deleted file mode 100644 index 25f45d0cdb4ec..0000000000000 --- a/L1Trigger/TrackFindingTracklet/interface/DataFormatsRcd.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef L1Trigger_TrackFindingTracklet_DataFormatsRcd_h -#define L1Trigger_TrackFindingTracklet_DataFormatsRcd_h - -#include "FWCore/Framework/interface/DependentRecordImplementation.h" -#include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignmentRcd.h" -#include "FWCore/Utilities/interface/mplVector.h" - -namespace trklet { - - typedef edm::mpl::Vector RcdsDataFormats; - - // record of trklet::DataFormats - class DataFormatsRcd : public edm::eventsetup::DependentRecordImplementation {}; - -} // namespace trklet - -#endif \ No newline at end of file diff --git a/L1Trigger/TrackFindingTracklet/interface/HitPatternHelperRcd.h b/L1Trigger/TrackFindingTracklet/interface/HitPatternHelperRcd.h index 0e74761f2ddaa..112a5c619dabe 100644 --- a/L1Trigger/TrackFindingTracklet/interface/HitPatternHelperRcd.h +++ b/L1Trigger/TrackFindingTracklet/interface/HitPatternHelperRcd.h @@ -8,12 +8,11 @@ #include "FWCore/Framework/interface/DependentRecordImplementation.h" #include "L1Trigger/TrackTrigger/interface/SetupRcd.h" #include "L1Trigger/TrackerTFP/interface/DataFormatsRcd.h" -#include "L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h" #include "FWCore/Utilities/interface/mplVector.h" namespace hph { - typedef edm::mpl::Vector Rcds; + typedef edm::mpl::Vector Rcds; // record of hph::SetupRcd class SetupRcd : public edm::eventsetup::DependentRecordImplementation {}; diff --git a/L1Trigger/TrackFindingTracklet/interface/TrackFindingProcessor.h b/L1Trigger/TrackFindingTracklet/interface/TrackFindingProcessor.h index d8a7ad58937e3..d5f24dc86642f 100644 --- a/L1Trigger/TrackFindingTracklet/interface/TrackFindingProcessor.h +++ b/L1Trigger/TrackFindingTracklet/interface/TrackFindingProcessor.h @@ -82,6 +82,8 @@ namespace trklet { const trackerTFP::TrackQuality* trackQuality_; // storage of tracks std::vector tracks_; + // b field + double bfield_; }; } // namespace trklet diff --git a/L1Trigger/TrackFindingTracklet/plugins/L1FPGATrackProducer.cc b/L1Trigger/TrackFindingTracklet/plugins/L1FPGATrackProducer.cc index 1625fa30f70fb..dd9a533f104e6 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/L1FPGATrackProducer.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/L1FPGATrackProducer.cc @@ -215,7 +215,7 @@ class L1FPGATrackProducer : public edm::one::EDProducer { const ESGetToken esGetTokenTTopo_; const ESGetToken esGetTokenSetup_; const ESGetToken esGetTokenChannelAssignment_; - const ESGetToken esGetTokenTrackQuality_; + const ESGetToken esGetTokenTrackQuality_; const ESGetToken esGetTokenHPH_; /// ///////////////// /// @@ -247,7 +247,7 @@ L1FPGATrackProducer::L1FPGATrackProducer(edm::ParameterSet const& iConfig) esGetTokenTTopo_(esConsumes()), esGetTokenSetup_(esConsumes()), esGetTokenChannelAssignment_(esConsumes()), - esGetTokenTrackQuality_(esConsumes()), + esGetTokenTrackQuality_(esConsumes()), esGetTokenHPH_(esConsumes()) { if (readMoreMcTruth_) { getTokenTTClusterMCTruth_ = consumes>(MCTruthClusterInputTag); diff --git a/L1Trigger/TrackFindingTracklet/plugins/ProducerDR.cc b/L1Trigger/TrackFindingTracklet/plugins/ProducerDR.cc index 9670a3dacd470..c30b069f420f7 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/ProducerDR.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/ProducerDR.cc @@ -43,7 +43,6 @@ namespace trklet { ~ProducerDR() override {} private: - void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; // ED input token of Tracks EDGetTokenT edGetTokenTracks_; @@ -56,19 +55,11 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // LayerEncoding token - ESGetToken esGetTokenLayerEncoding_; + ESGetToken esGetTokenLayerEncoding_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // ChannelAssignment token ESGetToken esGetTokenChannelAssignment_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to encode layer - const LayerEncoding* layerEncoding_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // helper class to assign tracks to channel - const ChannelAssignment* channelAssignment_ = nullptr; }; ProducerDR::ProducerDR(const ParameterSet& iConfig) { @@ -82,32 +73,29 @@ namespace trklet { edPutTokenStubs_ = produces(branchStubs); // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenLayerEncoding_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenLayerEncoding_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); esGetTokenChannelAssignment_ = esConsumes(); } - void ProducerDR::beginRun(const Run& iRun, const EventSetup& iSetup) { + void ProducerDR::produce(Event& iEvent, const EventSetup& iSetup) { // helper class to store configurations - setup_ = &iSetup.getData(esGetTokenSetup_); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // helper class to encode layer - layerEncoding_ = &iSetup.getData(esGetTokenLayerEncoding_); + const LayerEncoding* layerEncoding = &iSetup.getData(esGetTokenLayerEncoding_); // helper class to extract structured data from tt::Frames - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); // helper class to assign tracks to channel - channelAssignment_ = &iSetup.getData(esGetTokenChannelAssignment_); - } - - void ProducerDR::produce(Event& iEvent, const EventSetup& iSetup) { + const ChannelAssignment* channelAssignment = &iSetup.getData(esGetTokenChannelAssignment_); // empty DR products - StreamsStub streamsStub(setup_->numRegions() * setup_->numLayers()); - StreamsTrack streamsTrack(setup_->numRegions()); + StreamsStub streamsStub(setup->numRegions() * setup->numLayers()); + StreamsTrack streamsTrack(setup->numRegions()); // read in TBout Product and produce KFin product const StreamsStub& stubs = iEvent.get(edGetTokenStubs_); const StreamsTrack& tracks = iEvent.get(edGetTokenTracks_); - for (int region = 0; region < setup_->numRegions(); region++) { + for (int region = 0; region < setup->numRegions(); region++) { // object to remove duplicated tracks in a processing region - DuplicateRemoval dr(setup_, layerEncoding_, dataFormats_, channelAssignment_, region); + DuplicateRemoval dr(setup, layerEncoding, dataFormats, channelAssignment, region); // read in and organize input tracks and stubs dr.consume(tracks, stubs); // fill output products diff --git a/L1Trigger/TrackFindingTracklet/plugins/ProducerDataFormats.cc b/L1Trigger/TrackFindingTracklet/plugins/ProducerDataFormats.cc index 22cd7e6fcc4ec..14cdb1712905b 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/ProducerDataFormats.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/ProducerDataFormats.cc @@ -24,7 +24,7 @@ namespace trklet { public: ProducerDataFormats(const ParameterSet& iConfig); ~ProducerDataFormats() override {} - unique_ptr produce(const DataFormatsRcd& rcd); + unique_ptr produce(const ChannelAssignmentRcd& rcd); private: ESGetToken esGetToken_; @@ -35,7 +35,7 @@ namespace trklet { esGetToken_ = cc.consumes(); } - unique_ptr ProducerDataFormats::produce(const DataFormatsRcd& rcd) { + unique_ptr ProducerDataFormats::produce(const ChannelAssignmentRcd& rcd) { const ChannelAssignment* ca = &rcd.get(esGetToken_); return make_unique(ca); } diff --git a/L1Trigger/TrackFindingTracklet/plugins/ProducerHPH.cc b/L1Trigger/TrackFindingTracklet/plugins/ProducerHPH.cc index 162e98859159a..acfdfbdeab67c 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/ProducerHPH.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/ProducerHPH.cc @@ -32,7 +32,7 @@ namespace hph { Setup::Config iConfig_; ESGetToken esGetTokenSetup_; ESGetToken esGetTokenDataFormats_; - ESGetToken esGetTokenLayerEncoding_; + ESGetToken esGetTokenLayerEncoding_; }; ProducerHPH::ProducerHPH(const ParameterSet& iConfig) { diff --git a/L1Trigger/TrackFindingTracklet/plugins/ProducerKF.cc b/L1Trigger/TrackFindingTracklet/plugins/ProducerKF.cc index a7baf450c35dd..513ee7cbf710d 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/ProducerKF.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/ProducerKF.cc @@ -57,11 +57,7 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; + ESGetToken esGetTokenDataFormats_; // provides dataformats of Kalman filter internals KalmanFilterFormats kalmanFilterFormats_; // @@ -102,24 +98,28 @@ namespace trklet { edPutTokenNumStatesTruncated_ = produces(branchTruncated); // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); } void ProducerKF::beginRun(const Run& iRun, const EventSetup& iSetup) { // helper class to store configurations - setup_ = &iSetup.getData(esGetTokenSetup_); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + settings_.setMagneticField(setup->bField()); // helper class to extract structured data from tt::Frames - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); // provides dataformats of Kalman filter internals - kalmanFilterFormats_.consume(dataFormats_); - settings_.setMagneticField(setup_->bField()); + kalmanFilterFormats_.consume(dataFormats); } void ProducerKF::produce(Event& iEvent, const EventSetup& iSetup) { + // helper class to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); auto valid = [](int sum, const FrameTrack& f) { return sum += (f.first.isNull() ? 0 : 1); }; // empty KF products - StreamsStub streamsStub(setup_->numRegions() * setup_->numLayers()); - StreamsTrack streamsTrack(setup_->numRegions()); + StreamsStub streamsStub(setup->numRegions() * setup->numLayers()); + StreamsTrack streamsTrack(setup->numRegions()); int numStatesAccepted(0); int numStatesTruncated(0); // read in DR Product and produce KF product @@ -139,9 +139,9 @@ namespace trklet { if (frame.first.isNonnull()) ttTrackRefs.push_back(frame.first); } - for (int region = 0; region < setup_->numRegions(); region++) { + for (int region = 0; region < setup->numRegions(); region++) { // object to fit tracks in a processing region - KalmanFilter kf(setup_, dataFormats_, &kalmanFilterFormats_, &settings_, tmtt_, region, ttTracks); + KalmanFilter kf(setup, dataFormats, &kalmanFilterFormats_, &settings_, tmtt_, region, ttTracks); // read in and organize input tracks and stubs kf.consume(tracks, stubs); // fill output products diff --git a/L1Trigger/TrackFindingTracklet/plugins/ProducerTFP.cc b/L1Trigger/TrackFindingTracklet/plugins/ProducerTFP.cc index af598ee520ace..379309ab99c1a 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/ProducerTFP.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/ProducerTFP.cc @@ -40,7 +40,6 @@ namespace trklet { ~ProducerTFP() override {} private: - void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; // ED input token of stubs and tracks EDGetTokenT edGetTokenTracks_; @@ -52,15 +51,9 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // TrackQuality token - ESGetToken esGetTokenTrackQuality_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // helper class to determine track quality - const TrackQuality* trackQuality_ = nullptr; + ESGetToken esGetTokenTrackQuality_; }; ProducerTFP::ProducerTFP(const ParameterSet& iConfig) { @@ -77,29 +70,26 @@ namespace trklet { edPutTokenTracks_ = produces(branchTracks); // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); - esGetTokenTrackQuality_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); + esGetTokenTrackQuality_ = esConsumes(); } - void ProducerTFP::beginRun(const Run& iRun, const EventSetup& iSetup) { + void ProducerTFP::produce(Event& iEvent, const EventSetup& iSetup) { // helper class to store configurations - setup_ = &iSetup.getData(esGetTokenSetup_); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // helper class to extract structured data from tt::Frames - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); // helper class to determine track quality - trackQuality_ = &iSetup.getData(esGetTokenTrackQuality_); - } - - void ProducerTFP::produce(Event& iEvent, const EventSetup& iSetup) { + const TrackQuality* trackQuality = &iSetup.getData(esGetTokenTrackQuality_); // empty TFP products TTTracks ttTracks; - StreamsTrack streamsTrack(setup_->numRegions() * setup_->tfpNumChannel()); + StreamsTrack streamsTrack(setup->numRegions() * setup->tfpNumChannel()); // read in TQ Products const StreamsTrack& tracks = iEvent.get(edGetTokenTracks_); const Streams& tracksAdd = iEvent.get(edGetTokenTracksAdd_); const StreamsStub& stubs = iEvent.get(edGetTokenStubs_); // produce TTTracks - TrackFindingProcessor tfp(setup_, dataFormats_, trackQuality_); + TrackFindingProcessor tfp(setup, dataFormats, trackQuality); tfp.produce(tracks, tracksAdd, stubs, ttTracks, streamsTrack); // put TTTRacks and produce TTTRackRefs const int nTrks = ttTracks.size(); diff --git a/L1Trigger/TrackFindingTracklet/plugins/ProducerTM.cc b/L1Trigger/TrackFindingTracklet/plugins/ProducerTM.cc index 0aac0129e4e2a..f785917574095 100644 --- a/L1Trigger/TrackFindingTracklet/plugins/ProducerTM.cc +++ b/L1Trigger/TrackFindingTracklet/plugins/ProducerTM.cc @@ -42,7 +42,6 @@ namespace trklet { ~ProducerTM() override {} private: - void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; // ED input token of Tracks @@ -56,15 +55,9 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // ChannelAssignment token ESGetToken esGetTokenChannelAssignment_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // helper class to assign tracks to channel - const ChannelAssignment* channelAssignment_ = nullptr; // helper class to store tracklet configurations Settings settings_; }; @@ -80,29 +73,26 @@ namespace trklet { edPutTokenTracks_ = produces(branchTracks); // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); esGetTokenChannelAssignment_ = esConsumes(); } - void ProducerTM::beginRun(const Run& iRun, const EventSetup& iSetup) { + void ProducerTM::produce(Event& iEvent, const EventSetup& iSetup) { // helper class to store configurations - setup_ = &iSetup.getData(esGetTokenSetup_); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // helper class to extract structured data from tt::Frames - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); // helper class to assign tracks to channel - channelAssignment_ = &iSetup.getData(esGetTokenChannelAssignment_); - } - - void ProducerTM::produce(Event& iEvent, const EventSetup& iSetup) { + const ChannelAssignment* channelAssignment = &iSetup.getData(esGetTokenChannelAssignment_); // empty TM products - StreamsStub streamsStub(setup_->numRegions() * channelAssignment_->tmNumLayers()); - StreamsTrack streamsTrack(setup_->numRegions()); + StreamsStub streamsStub(setup->numRegions() * channelAssignment->tmNumLayers()); + StreamsTrack streamsTrack(setup->numRegions()); // read in TBout Product and produce TM product const StreamsStub& stubs = iEvent.get(edGetTokenStubs_); const StreamsTrack& tracks = iEvent.get(edGetTokenTracks_); - for (int region = 0; region < setup_->numRegions(); region++) { + for (int region = 0; region < setup->numRegions(); region++) { // object to reformat tracks from tracklet fromat to TMTT format in a processing region - TrackMultiplexer tm(setup_, dataFormats_, channelAssignment_, &settings_, region); + TrackMultiplexer tm(setup, dataFormats, channelAssignment, &settings_, region); // read in and organize input tracks and stubs tm.consume(tracks, stubs); // fill output products diff --git a/L1Trigger/TrackFindingTracklet/src/ES_DataFormats.cc b/L1Trigger/TrackFindingTracklet/src/ES_DataFormats.cc index 0ce00e1f23408..2b56c16bdaab7 100644 --- a/L1Trigger/TrackFindingTracklet/src/ES_DataFormats.cc +++ b/L1Trigger/TrackFindingTracklet/src/ES_DataFormats.cc @@ -1,6 +1,4 @@ #include "FWCore/Utilities/interface/typelookup.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" #include "L1Trigger/TrackFindingTracklet/interface/DataFormats.h" -TYPELOOKUP_DATA_REG(trklet::DataFormats); -EVENTSETUP_RECORD_REG(trklet::DataFormatsRcd); \ No newline at end of file +TYPELOOKUP_DATA_REG(trklet::DataFormats); \ No newline at end of file diff --git a/L1Trigger/TrackFindingTracklet/src/TrackFindingProcessor.cc b/L1Trigger/TrackFindingTracklet/src/TrackFindingProcessor.cc index ded3e5e090bbc..f10f664539a80 100644 --- a/L1Trigger/TrackFindingTracklet/src/TrackFindingProcessor.cc +++ b/L1Trigger/TrackFindingTracklet/src/TrackFindingProcessor.cc @@ -17,7 +17,9 @@ namespace trklet { TrackFindingProcessor::TrackFindingProcessor(const Setup* setup, const DataFormats* dataFormats, const TrackQuality* trackQuality) - : setup_(setup), dataFormats_(dataFormats), trackQuality_(trackQuality) {} + : setup_(setup), dataFormats_(dataFormats), trackQuality_(trackQuality) { + bfield_ = setup_->bField(); + } // TrackFindingProcessor::Track::Track(const FrameTrack& frameTrack, @@ -27,6 +29,20 @@ namespace trklet { const TrackQuality* tq) : ttTrackRef_(frameTrack.first), ttStubRefs_(ttStubRefs), valid_(true) { partials_.reserve(partial_in); + const double rangeInvR = -2. * TTTrack_TrackWord::minRinv; + const double rangePhi0 = -2. * TTTrack_TrackWord::minPhi0; + const double rangeCot = -2. * TTTrack_TrackWord::minTanl; + const double rangeZ0 = -2. * TTTrack_TrackWord::minZ0; + const double rangeD0 = -2. * TTTrack_TrackWord::minD0; + const double baseInvR = rangeInvR / pow(2., TTTrack_TrackWord::TrackBitWidths::kRinvSize); + const double basePhi0 = rangePhi0 / pow(2., TTTrack_TrackWord::TrackBitWidths::kPhiSize); + const double baseCot = rangeCot / pow(2., TTTrack_TrackWord::TrackBitWidths::kTanlSize); + const double baseZ0 = rangeZ0 / pow(2., TTTrack_TrackWord::TrackBitWidths::kZ0Size); + const double baseD0 = rangeD0 / pow(2., TTTrack_TrackWord::TrackBitWidths::kD0Size); + const int nLayers = TTTrack_TrackWord::TrackBitWidths::kHitPatternSize; + const TTBV other_MVAs = TTBV(0, 2 * TTTrack_TrackWord::TrackBitWidths::kMVAQualitySize); + const TTBV chi2bend = TTBV(0, TTTrack_TrackWord::TrackBitWidths::kBendChi2Size); + const TTBV valid = TTBV(1, TTTrack_TrackWord::TrackBitWidths::kValidSize); // convert bits into nice formats const Setup* setup = df->setup(); const TrackKF track(frameTrack, df); @@ -64,11 +80,6 @@ namespace trklet { chi2rzBin++; else break; - static const double rangeInvR = -2. * TTTrack_TrackWord::minRinv; - static const double rangePhi0 = -2. * TTTrack_TrackWord::minPhi0; - static const double rangeCot = -2. * TTTrack_TrackWord::minTanl; - static const double rangeZ0 = -2. * TTTrack_TrackWord::minZ0; - static const double rangeD0 = -2. * TTTrack_TrackWord::minD0; if (abs(invR) > rangeInvR / 2.) valid_ = false; if (abs(phi0) > rangePhi0 / 2.) @@ -81,27 +92,18 @@ namespace trklet { valid_ = false; if (!valid_) return; - static const double baseInvR = rangeInvR / pow(2., TTTrack_TrackWord::TrackBitWidths::kRinvSize); - static const double basePhi0 = rangePhi0 / pow(2., TTTrack_TrackWord::TrackBitWidths::kPhiSize); - static const double baseCot = rangeCot / pow(2., TTTrack_TrackWord::TrackBitWidths::kTanlSize); - static const double baseZ0 = rangeZ0 / pow(2., TTTrack_TrackWord::TrackBitWidths::kZ0Size); - static const double baseD0 = rangeD0 / pow(2., TTTrack_TrackWord::TrackBitWidths::kD0Size); - static constexpr int nLayers = TTTrack_TrackWord::TrackBitWidths::kHitPatternSize; - static const TTBV Other_MVAs(0, 2 * TTTrack_TrackWord::TrackBitWidths::kMVAQualitySize); const TTBV MVA_quality(mva_, TTTrack_TrackWord::TrackBitWidths::kMVAQualitySize); const TTBV hit_pattern(hitPattern_.resize(nLayers).val(), nLayers); - static const TTBV chi2bend(0, TTTrack_TrackWord::TrackBitWidths::kBendChi2Size); - static const TTBV D0(d0, baseD0, TTTrack_TrackWord::TrackBitWidths::kD0Size, true); + const TTBV D0(d0, baseD0, TTTrack_TrackWord::TrackBitWidths::kD0Size, true); const TTBV Chi2rz(chi2rzBin, TTTrack_TrackWord::TrackBitWidths::kChi2RZSize); const TTBV Z0(z0, baseZ0, TTTrack_TrackWord::TrackBitWidths::kZ0Size, true); const TTBV tanL(cot_, baseCot, TTTrack_TrackWord::TrackBitWidths::kTanlSize, true); const TTBV Chi2rphi(chi2rphiBin, TTTrack_TrackWord::TrackBitWidths::kChi2RPhiSize); const TTBV Phi0(phi0, basePhi0, TTTrack_TrackWord::TrackBitWidths::kPhiSize, true); const TTBV InvR(invR, baseInvR, TTTrack_TrackWord::TrackBitWidths::kRinvSize, true); - static const TTBV valid(1, TTTrack_TrackWord::TrackBitWidths::kValidSize); partials_.emplace_back((valid + InvR + Phi0 + Chi2rphi).str()); partials_.emplace_back((tanL + Z0 + Chi2rz).str()); - partials_.emplace_back((D0 + chi2bend + hit_pattern + MVA_quality + Other_MVAs).str()); + partials_.emplace_back((D0 + chi2bend + hit_pattern + MVA_quality + other_MVAs).str()); } // fill output products @@ -231,16 +233,26 @@ namespace trklet { static constexpr double trkMVA3 = 0.; const unsigned int aHitpattern = it->hitPattern_.val(); const unsigned int nPar = ttTrackRef->nFitPars(); - static const double Bfield = setup_->bField(); - outputs.emplace_back( - aRinv, aphi, aTanLambda, az0, ad0, aChi2xyfit, aChi2zfit, trkMVA1, trkMVA2, trkMVA3, aHitpattern, nPar, Bfield); + outputs.emplace_back(aRinv, + aphi, + aTanLambda, + az0, + ad0, + aChi2xyfit, + aChi2zfit, + trkMVA1, + trkMVA2, + trkMVA3, + aHitpattern, + nPar, + bfield_); TTTrack& ttTrack = outputs.back(); ttTrack.setPhiSector(region); ttTrack.setEtaSector(ttTrackRef->etaSector()); ttTrack.setTrackSeedType(ttTrackRef->trackSeedType()); ttTrack.setStubRefs(it->ttStubRefs_); ttTrack.setStubPtConsistency(StubPtConsistency::getConsistency( - ttTrack, setup_->trackerGeometry(), setup_->trackerTopology(), Bfield, nPar)); + ttTrack, setup_->trackerGeometry(), setup_->trackerTopology(), bfield_, nPar)); } } diff --git a/L1Trigger/TrackFindingTracklet/test/AnalyzerDR.cc b/L1Trigger/TrackFindingTracklet/test/AnalyzerDR.cc index 7308ade969ea0..15145409bc2e6 100644 --- a/L1Trigger/TrackFindingTracklet/test/AnalyzerDR.cc +++ b/L1Trigger/TrackFindingTracklet/test/AnalyzerDR.cc @@ -72,7 +72,7 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // ChannelAssignment token ESGetToken esGetTokenChannelAssignment_; // stores, calculates and provides run-time constants @@ -113,7 +113,7 @@ namespace trklet { } // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); esGetTokenChannelAssignment_ = esConsumes(); // log config log_.setf(ios::fixed, ios::floatfield); diff --git a/L1Trigger/TrackFindingTracklet/test/AnalyzerDemonstrator.cc b/L1Trigger/TrackFindingTracklet/test/AnalyzerDemonstrator.cc index 98b224b1b0df5..3416d3658642f 100644 --- a/L1Trigger/TrackFindingTracklet/test/AnalyzerDemonstrator.cc +++ b/L1Trigger/TrackFindingTracklet/test/AnalyzerDemonstrator.cc @@ -60,7 +60,7 @@ namespace trklet { // ChannelAssignment token ESGetToken esGetTokenChannelAssignment_; // Demonstrator token - ESGetToken esGetTokenDemonstrator_; + ESGetToken esGetTokenDemonstrator_; // const Setup* setup_ = nullptr; // @@ -91,7 +91,7 @@ namespace trklet { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenChannelAssignment_ = esConsumes(); - esGetTokenDemonstrator_ = esConsumes(); + esGetTokenDemonstrator_ = esConsumes(); // TBin_ = labelIn == "l1tTTTracksFromTrackletEmulation"; TBout_ = labelOut == "l1tTTTracksFromTrackletEmulation"; diff --git a/L1Trigger/TrackFindingTracklet/test/AnalyzerKF.cc b/L1Trigger/TrackFindingTracklet/test/AnalyzerKF.cc index 6eeb2220a6ede..cd9e64d076633 100644 --- a/L1Trigger/TrackFindingTracklet/test/AnalyzerKF.cc +++ b/L1Trigger/TrackFindingTracklet/test/AnalyzerKF.cc @@ -76,7 +76,7 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // stores, calculates and provides run-time constants const Setup* setup_ = nullptr; // @@ -136,7 +136,7 @@ namespace trklet { } // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); // log config log_.setf(ios::fixed, ios::floatfield); log_.precision(4); diff --git a/L1Trigger/TrackFindingTracklet/test/AnalyzerKFout.cc b/L1Trigger/TrackFindingTracklet/test/AnalyzerKFout.cc index b4c625c9d8074..876b6ccff1a14 100644 --- a/L1Trigger/TrackFindingTracklet/test/AnalyzerKFout.cc +++ b/L1Trigger/TrackFindingTracklet/test/AnalyzerKFout.cc @@ -63,8 +63,6 @@ namespace trklet { EDGetTokenT edGetTokenReconstructable_; // Setup token ESGetToken esGetTokenSetup_; - // DataFormats token - ESGetToken esGetTokenDataFormats_; // stores, calculates and provides run-time constants const Setup* setup_ = nullptr; // enables analyze of TPs diff --git a/L1Trigger/TrackFindingTracklet/test/AnalyzerTM.cc b/L1Trigger/TrackFindingTracklet/test/AnalyzerTM.cc index 00931d48591c4..ff7e8a90e8e38 100644 --- a/L1Trigger/TrackFindingTracklet/test/AnalyzerTM.cc +++ b/L1Trigger/TrackFindingTracklet/test/AnalyzerTM.cc @@ -73,7 +73,7 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // ChannelAssignment token ESGetToken esGetTokenChannelAssignment_; // stores, calculates and provides run-time constants @@ -113,7 +113,7 @@ namespace trklet { } // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); esGetTokenChannelAssignment_ = esConsumes(); // log config log_.setf(ios::fixed, ios::floatfield); diff --git a/L1Trigger/TrackFindingTracklet/test/AnalyzerTracklet.cc b/L1Trigger/TrackFindingTracklet/test/AnalyzerTracklet.cc index 897838737b89b..f93b02a8052f5 100644 --- a/L1Trigger/TrackFindingTracklet/test/AnalyzerTracklet.cc +++ b/L1Trigger/TrackFindingTracklet/test/AnalyzerTracklet.cc @@ -66,7 +66,7 @@ namespace trklet { // Setup token ESGetToken esGetTokenSetup_; // DataFormats token - ESGetToken esGetTokenDataFormats_; + ESGetToken esGetTokenDataFormats_; // ChannelAssignment token ESGetToken esGetTokenChannelAssignment_; // stores, calculates and provides run-time constants @@ -109,7 +109,7 @@ namespace trklet { } // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); + esGetTokenDataFormats_ = esConsumes(); esGetTokenChannelAssignment_ = esConsumes(); // log config log_.setf(ios::fixed, ios::floatfield); diff --git a/L1Trigger/TrackFindingTracklet/test/L1TrackNtupleMaker.cc b/L1Trigger/TrackFindingTracklet/test/L1TrackNtupleMaker.cc index 9e037330ff6e9..c8eed2e688c1e 100644 --- a/L1Trigger/TrackFindingTracklet/test/L1TrackNtupleMaker.cc +++ b/L1Trigger/TrackFindingTracklet/test/L1TrackNtupleMaker.cc @@ -149,7 +149,7 @@ class L1TrackNtupleMaker : public one::EDAnalyzer getTokenBField_; edm::ESGetToken getTokenHPHSetup_; edm::ESGetToken getTokenSetup_; - edm::ESGetToken getTokenLayerEncoding_; + edm::ESGetToken getTokenLayerEncoding_; //----------------------------------------------------------------------------------------------- // tree & branches for mini-ntuple @@ -326,7 +326,7 @@ L1TrackNtupleMaker::L1TrackNtupleMaker(edm::ParameterSet const& iConfig) : confi getTokenBField_ = esConsumes(); getTokenHPHSetup_ = esConsumes(); getTokenSetup_ = esConsumes(); - getTokenLayerEncoding_ = esConsumes(); + getTokenLayerEncoding_ = esConsumes(); } ///////////// diff --git a/L1Trigger/TrackerDTC/interface/LayerEncoding.h b/L1Trigger/TrackerDTC/interface/LayerEncoding.h index e1352f27859cc..57316b8e26bc1 100644 --- a/L1Trigger/TrackerDTC/interface/LayerEncoding.h +++ b/L1Trigger/TrackerDTC/interface/LayerEncoding.h @@ -2,7 +2,6 @@ #define L1Trigger_TrackerDTC_LayerEncoding_h #include "FWCore/Framework/interface/data_default_record_trait.h" -#include "L1Trigger/TrackerDTC/interface/LayerEncodingRcd.h" #include "L1Trigger/TrackTrigger/interface/Setup.h" #include "L1Trigger/TrackTrigger/interface/SensorModule.h" @@ -36,6 +35,6 @@ namespace trackerDTC { } // namespace trackerDTC -EVENTSETUP_DATA_DEFAULT_RECORD(trackerDTC::LayerEncoding, trackerDTC::LayerEncodingRcd); +EVENTSETUP_DATA_DEFAULT_RECORD(trackerDTC::LayerEncoding, tt::SetupRcd); #endif diff --git a/L1Trigger/TrackerDTC/interface/LayerEncodingRcd.h b/L1Trigger/TrackerDTC/interface/LayerEncodingRcd.h deleted file mode 100644 index b1b374bebcdcc..0000000000000 --- a/L1Trigger/TrackerDTC/interface/LayerEncodingRcd.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef L1Trigger_TrackerDTC_LayerEncodingRcd_h -#define L1Trigger_TrackerDTC_LayerEncodingRcd_h - -#include "FWCore/Framework/interface/DependentRecordImplementation.h" -#include "L1Trigger/TrackTrigger/interface/SetupRcd.h" -#include "FWCore/Utilities/interface/mplVector.h" - -namespace trackerDTC { - - typedef edm::mpl::Vector RcdsLayerEncoding; - - // record of trackerDTC::LayerEncoding - class LayerEncodingRcd : public edm::eventsetup::DependentRecordImplementation { - }; - -} // namespace trackerDTC - -#endif diff --git a/L1Trigger/TrackerDTC/plugins/ProducerDTC.cc b/L1Trigger/TrackerDTC/plugins/ProducerDTC.cc index c4857036c4e34..46beed801f49a 100644 --- a/L1Trigger/TrackerDTC/plugins/ProducerDTC.cc +++ b/L1Trigger/TrackerDTC/plugins/ProducerDTC.cc @@ -42,14 +42,7 @@ namespace trackerDTC { ~ProducerDTC() override {} private: - void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // class to encode layer ids used between DTC and TFP in Hybrid - const LayerEncoding* layerEncoding_ = nullptr; // ED input token of TTStubs EDGetTokenT edGetToken_; // ED output token for accepted stubs @@ -61,7 +54,7 @@ namespace trackerDTC { // DataFormats token ESGetToken esGetTokenDataFormats_; // LayerEncoding token - ESGetToken esGetTokenLayerEncoding_; + ESGetToken esGetTokenLayerEncoding_; }; ProducerDTC::ProducerDTC(const ParameterSet& iConfig) { @@ -75,30 +68,29 @@ namespace trackerDTC { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenDataFormats_ = esConsumes(); - esGetTokenLayerEncoding_ = esConsumes(); - } - - void ProducerDTC::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - layerEncoding_ = &iSetup.getData(esGetTokenLayerEncoding_); + esGetTokenLayerEncoding_ = esConsumes(); } void ProducerDTC::produce(Event& iEvent, const EventSetup& iSetup) { + // helper class to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + // class to encode layer ids used between DTC and TFP in Hybrid + const LayerEncoding* layerEncoding = &iSetup.getData(esGetTokenLayerEncoding_); // empty DTC products - TTDTC productAccepted = setup_->ttDTC(); - TTDTC productLost = setup_->ttDTC(); + TTDTC productAccepted = setup->ttDTC(); + TTDTC productLost = setup->ttDTC(); // read in stub collection Handle handle; iEvent.getByToken(edGetToken_, handle); // apply cabling map, reorganise stub collections - vector>> stubsDTCs(setup_->numDTCs(), - vector>(setup_->numModulesPerDTC())); + vector>> stubsDTCs(setup->numDTCs(), vector>(setup->numModulesPerDTC())); for (auto module = handle->begin(); module != handle->end(); module++) { // DetSetVec->detId + 1 = tk layout det id - const DetId detId = module->detId() + setup_->offsetDetIdDSV(); + const DetId detId = module->detId() + setup->offsetDetIdDSV(); // corresponding sensor module - SensorModule* sm = setup_->sensorModule(detId); + SensorModule* sm = setup->sensorModule(detId); // empty stub collection vector& stubsModule = stubsDTCs[sm->dtcId()][sm->modId()]; stubsModule.reserve(module->size()); @@ -106,9 +98,9 @@ namespace trackerDTC { stubsModule.emplace_back(makeRefTo(handle, ttStub)); } // board level processing - for (int dtcId = 0; dtcId < setup_->numDTCs(); dtcId++) { + for (int dtcId = 0; dtcId < setup->numDTCs(); dtcId++) { // create single outer tracker DTC board - DTC dtc(setup_, dataFormats_, layerEncoding_, dtcId, stubsDTCs.at(dtcId)); + DTC dtc(setup, dataFormats, layerEncoding, dtcId, stubsDTCs.at(dtcId)); // route stubs and fill products dtc.produce(productAccepted, productLost); } diff --git a/L1Trigger/TrackerDTC/plugins/ProducerLayerEncoding.cc b/L1Trigger/TrackerDTC/plugins/ProducerLayerEncoding.cc index 89dedb601c2c0..e387fb20e1119 100644 --- a/L1Trigger/TrackerDTC/plugins/ProducerLayerEncoding.cc +++ b/L1Trigger/TrackerDTC/plugins/ProducerLayerEncoding.cc @@ -23,7 +23,7 @@ namespace trackerDTC { public: ProducerLayerEncoding(const ParameterSet& iConfig); ~ProducerLayerEncoding() override {} - unique_ptr produce(const LayerEncodingRcd& rcd); + unique_ptr produce(const SetupRcd& rcd); private: ESGetToken esGetToken_; @@ -34,7 +34,7 @@ namespace trackerDTC { esGetToken_ = cc.consumes(); } - unique_ptr ProducerLayerEncoding::produce(const LayerEncodingRcd& rcd) { + unique_ptr ProducerLayerEncoding::produce(const SetupRcd& rcd) { const Setup* setup = &rcd.get(esGetToken_); return make_unique(setup); } diff --git a/L1Trigger/TrackerDTC/src/LayerEncodingRcd.cc b/L1Trigger/TrackerDTC/src/LayerEncodingRcd.cc deleted file mode 100644 index 1f00389ed818c..0000000000000 --- a/L1Trigger/TrackerDTC/src/LayerEncodingRcd.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "L1Trigger/TrackerDTC/interface/LayerEncodingRcd.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" - -EVENTSETUP_RECORD_REG(trackerDTC::LayerEncodingRcd); diff --git a/L1Trigger/TrackerDTC/src/Stub.cc b/L1Trigger/TrackerDTC/src/Stub.cc index e97b5baa1d3f2..21c11c22a602b 100644 --- a/L1Trigger/TrackerDTC/src/Stub.cc +++ b/L1Trigger/TrackerDTC/src/Stub.cc @@ -69,8 +69,7 @@ namespace trackerDTC { const double dInv2R = setup_->bendCut() * inv2ROverBend; inv2R_.first = dfInv2R.digi(inv2R - dInv2R); inv2R_.second = dfInv2R.digi(inv2R + dInv2R); - //static const double maxInv2R = dfInv2R.limit(); - static const double maxInv2R = dfInv2R.range() / 2.; + const double maxInv2R = dfInv2R.range() / 2.; // cut on pt if (inv2R_.first > maxInv2R || inv2R_.second < -maxInv2R) valid_ = false; @@ -170,9 +169,9 @@ namespace trackerDTC { } Frame Stub::formatTMTT(int region) const { - static const DataFormat& dfInv2R = dataFormats_->format(Variable::inv2R, Process::ht); - static const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::gp); - static const DataFormat& dfZT = dataFormats_->format(Variable::zT, Process::gp); + const DataFormat& dfInv2R = dataFormats_->format(Variable::inv2R, Process::ht); + const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::gp); + const DataFormat& dfZT = dataFormats_->format(Variable::zT, Process::gp); const double offset = (region - .5) * dfPhiT.range(); const double r = r_; const double phi = phi_ - offset; diff --git a/L1Trigger/TrackerDTC/test/AnalyzerDAQ.cc b/L1Trigger/TrackerDTC/test/AnalyzerDAQ.cc index 35dc71675e255..3ca4518e6ef2e 100644 --- a/L1Trigger/TrackerDTC/test/AnalyzerDAQ.cc +++ b/L1Trigger/TrackerDTC/test/AnalyzerDAQ.cc @@ -34,7 +34,6 @@ namespace trackerDTC { class AnalyzerDAQ : public one::EDAnalyzer { public: AnalyzerDAQ(const ParameterSet& iConfig); - void beginJob() override {} void beginRun(const Run& iEvent, const EventSetup& iSetup) override; void analyze(const Event& iEvent, const EventSetup& iSetup) override; void endRun(const Run& iEvent, const EventSetup& iSetup) override {} @@ -45,8 +44,6 @@ namespace trackerDTC { EDGetTokenT edGetToken_; // Setup token ESGetToken esGetTokenSetup_; - // stores, calculates and provides run-time constants - const Setup* setup_ = nullptr; // Histograms @@ -68,18 +65,18 @@ namespace trackerDTC { void AnalyzerDAQ::beginRun(const Run& iEvent, const EventSetup& iSetup) { // helper class to store configurations - setup_ = &iSetup.getData(esGetTokenSetup_); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // book histograms Service fs; TFileDirectory dir; dir = fs->mkdir("Modules"); int maxOcc = 150; - int numChannels = setup_->numDTCs() * setup_->numModulesPerDTC(); + int numChannels = setup->numDTCs() * setup->numModulesPerDTC(); hisModules_ = dir.make("His Module Occupancy", ";", maxOcc, -.5, maxOcc - .5); profModules_ = dir.make("Prof Module Occupancy", ";", numChannels, -.5, numChannels - .5); dir = fs->mkdir("DTCs"); maxOcc = 3456; - numChannels = setup_->numDTCs(); + numChannels = setup->numDTCs(); hisDTCs_ = dir.make("His DTC Occupancy", ";", maxOcc / 16, -.5, maxOcc - .5); profDTCs_ = dir.make("Prof DTC Occupancy", ";", numChannels, -.5, numChannels - .5); dir = fs->mkdir("Tracker"); @@ -88,19 +85,19 @@ namespace trackerDTC { } void AnalyzerDAQ::analyze(const Event& iEvent, const EventSetup& iSetup) { + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // read in original TTCluster collection Handle handle; iEvent.getByToken(edGetToken_, handle); // apply cabling map, reorganise cluster collections - vector>> dtcs(setup_->numDTCs(), - vector>(setup_->numModulesPerDTC())); + vector>> dtcs(setup->numDTCs(), vector>(setup->numModulesPerDTC())); for (auto itModule = handle->begin(); itModule != handle->end(); itModule++) { // DetSetVec->detId - 1 or + 0 = tk layout det id depending from which of both sensor planes the cluster has been constructed const DetId& detIdModule = itModule->detId(); - const int offset = setup_->trackerTopology()->isLower(detIdModule) ? 0 : setup_->offsetDetIdTP(); + const int offset = setup->trackerTopology()->isLower(detIdModule) ? 0 : setup->offsetDetIdTP(); const DetId detId = detIdModule + offset; // corresponding sensor module - SensorModule* sm = setup_->sensorModule(detId); + SensorModule* sm = setup->sensorModule(detId); // empty cluster collection deque& module = dtcs[sm->dtcId()][sm->modId()]; for (TTClusterDetSet::const_iterator itCluster = itModule->begin(); itCluster != itModule->end(); itCluster++) diff --git a/L1Trigger/TrackerTFP/interface/CleanTrackBuilder.h b/L1Trigger/TrackerTFP/interface/CleanTrackBuilder.h index ff5235ce081fb..3b91ab747fdc6 100644 --- a/L1Trigger/TrackerTFP/interface/CleanTrackBuilder.h +++ b/L1Trigger/TrackerTFP/interface/CleanTrackBuilder.h @@ -136,6 +136,20 @@ namespace trackerTFP { int numRegions_; // number of kf layers int numLayers_; + int wlayer_; + const DataFormat& r_; + const DataFormat& phi_; + const DataFormat& z_; + const DataFormat& phiT_; + const DataFormat& zT_; + int numBinsInv2R_; + int numBinsPhiT_; + int numBinsCot_; + int numBinsZT_; + double baseInv2R_; + double basePhiT_; + double baseCot_; + double baseZT_; }; } // namespace trackerTFP diff --git a/L1Trigger/TrackerTFP/interface/Demonstrator.h b/L1Trigger/TrackerTFP/interface/Demonstrator.h index 9b7fd193218d4..2be82cb907e10 100644 --- a/L1Trigger/TrackerTFP/interface/Demonstrator.h +++ b/L1Trigger/TrackerTFP/interface/Demonstrator.h @@ -2,7 +2,6 @@ #define L1Trigger_TrackerTFP_Demonstrator_h #include "FWCore/Framework/interface/data_default_record_trait.h" -#include "L1Trigger/TrackerTFP/interface/DemonstratorRcd.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "L1Trigger/TrackTrigger/interface/Setup.h" @@ -76,6 +75,6 @@ namespace trackerTFP { } // namespace trackerTFP -EVENTSETUP_DATA_DEFAULT_RECORD(trackerTFP::Demonstrator, trackerTFP::DemonstratorRcd); +EVENTSETUP_DATA_DEFAULT_RECORD(trackerTFP::Demonstrator, tt::SetupRcd); #endif diff --git a/L1Trigger/TrackerTFP/interface/DemonstratorRcd.h b/L1Trigger/TrackerTFP/interface/DemonstratorRcd.h deleted file mode 100644 index 8be74ebeac572..0000000000000 --- a/L1Trigger/TrackerTFP/interface/DemonstratorRcd.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef L1Trigger_TrackerTFP_DemonstratorRcd_h -#define L1Trigger_TrackerTFP_DemonstratorRcd_h - -#include "FWCore/Framework/interface/DependentRecordImplementation.h" -#include "L1Trigger/TrackTrigger/interface/SetupRcd.h" -#include "FWCore/Utilities/interface/mplVector.h" - -namespace trackerTFP { - - typedef edm::mpl::Vector RcdsDemonstrator; - - // record of trackerTFP::Demonstrator - class DemonstratorRcd : public edm::eventsetup::DependentRecordImplementation {}; - -} // namespace trackerTFP - -#endif diff --git a/L1Trigger/TrackerTFP/interface/LayerEncoding.h b/L1Trigger/TrackerTFP/interface/LayerEncoding.h index ef2642d4d2803..3913b08a5b814 100644 --- a/L1Trigger/TrackerTFP/interface/LayerEncoding.h +++ b/L1Trigger/TrackerTFP/interface/LayerEncoding.h @@ -2,7 +2,6 @@ #define L1Trigger_TrackerTFP_LayerEncoding_h #include "FWCore/Framework/interface/data_default_record_trait.h" -#include "L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h" #include "L1Trigger/TrackerTFP/interface/DataFormats.h" #include "L1Trigger/TrackTrigger/interface/SensorModule.h" @@ -47,6 +46,6 @@ namespace trackerTFP { } // namespace trackerTFP -EVENTSETUP_DATA_DEFAULT_RECORD(trackerTFP::LayerEncoding, trackerTFP::LayerEncodingRcd); +EVENTSETUP_DATA_DEFAULT_RECORD(trackerTFP::LayerEncoding, trackerTFP::DataFormatsRcd); #endif diff --git a/L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h b/L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h deleted file mode 100644 index 84294bcc01e5e..0000000000000 --- a/L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef L1Trigger_TrackerTFP_LayerEncodingRcd_h -#define L1Trigger_TrackerTFP_LayerEncodingRcd_h - -#include "FWCore/Framework/interface/DependentRecordImplementation.h" -#include "L1Trigger/TrackerTFP/interface/DataFormatsRcd.h" -#include "FWCore/Utilities/interface/mplVector.h" - -namespace trackerTFP { - - typedef edm::mpl::Vector RcdsLayerEncoding; - - // record of trackerTFP::LayerEncoding - class LayerEncodingRcd : public edm::eventsetup::DependentRecordImplementation { - }; - -} // namespace trackerTFP - -#endif diff --git a/L1Trigger/TrackerTFP/interface/TrackQuality.h b/L1Trigger/TrackerTFP/interface/TrackQuality.h index 8c0ffb8c437eb..ba30cf1361006 100644 --- a/L1Trigger/TrackerTFP/interface/TrackQuality.h +++ b/L1Trigger/TrackerTFP/interface/TrackQuality.h @@ -10,7 +10,6 @@ C.Brown 28/07/20 #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "DataFormats/L1TrackTrigger/interface/TTTypes.h" #include "L1Trigger/TrackerTFP/interface/DataFormats.h" -#include "L1Trigger/TrackerTFP/interface/TrackQualityRcd.h" #include #include @@ -178,6 +177,6 @@ namespace trackerTFP { } // namespace trackerTFP -EVENTSETUP_DATA_DEFAULT_RECORD(trackerTFP::TrackQuality, trackerTFP::TrackQualityRcd); +EVENTSETUP_DATA_DEFAULT_RECORD(trackerTFP::TrackQuality, trackerTFP::DataFormatsRcd); #endif diff --git a/L1Trigger/TrackerTFP/interface/TrackQualityRcd.h b/L1Trigger/TrackerTFP/interface/TrackQualityRcd.h deleted file mode 100644 index d65bd922c9393..0000000000000 --- a/L1Trigger/TrackerTFP/interface/TrackQualityRcd.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef L1Trigger_TrackerTFP_TrackQualityRcd_h -#define L1Trigger_TrackerTFP_TrackQualityRcd_h - -#include "FWCore/Framework/interface/DependentRecordImplementation.h" -#include "L1Trigger/TrackerTFP/interface/DataFormatsRcd.h" -#include "FWCore/Utilities/interface/mplVector.h" - -namespace trackerTFP { - - typedef edm::mpl::Vector RcdsTrackQuality; - - // record of trackerTFP::TrackQuality - class TrackQualityRcd : public edm::eventsetup::DependentRecordImplementation {}; - -} // namespace trackerTFP - -#endif \ No newline at end of file diff --git a/L1Trigger/TrackerTFP/plugins/ProducerCTB.cc b/L1Trigger/TrackerTFP/plugins/ProducerCTB.cc index 9e3b99a14c2b0..ebc76d710c16f 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerCTB.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerCTB.cc @@ -56,13 +56,7 @@ namespace trackerTFP { // DataFormats token ESGetToken esGetTokenDataFormats_; // LayerEncoding token - ESGetToken esGetTokenLayerEncoding_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // - const LayerEncoding* layerEncoding_ = nullptr; + ESGetToken esGetTokenLayerEncoding_; // DataFormat cot_; // number of inpit channel @@ -87,28 +81,30 @@ namespace trackerTFP { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenDataFormats_ = esConsumes(); - esGetTokenLayerEncoding_ = esConsumes(); + esGetTokenLayerEncoding_ = esConsumes(); } void ProducerCTB::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - layerEncoding_ = &iSetup.getData(esGetTokenLayerEncoding_); - numChannelIn_ = dataFormats_->numChannel(Process::ht); - numChannelOut_ = dataFormats_->numChannel(Process::ctb); - numRegions_ = setup_->numRegions(); - numLayers_ = setup_->numLayers(); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + numChannelIn_ = dataFormats->numChannel(Process::ht); + numChannelOut_ = dataFormats->numChannel(Process::ctb); + numRegions_ = setup->numRegions(); + numLayers_ = setup->numLayers(); // create data format for cot(theta) - const double baseZ = dataFormats_->base(Variable::z, Process::ctb); - const double baseR = dataFormats_->base(Variable::r, Process::ctb); - const double range = dataFormats_->range(Variable::cot, Process::kf); - const int baseShift = ceil(log2(range / baseZ * baseR / setup_->ctbNumBinsCot())); - const int width = ceil(log2(setup_->ctbNumBinsCot())); + const double baseZ = dataFormats->base(Variable::z, Process::ctb); + const double baseR = dataFormats->base(Variable::r, Process::ctb); + const double range = dataFormats->range(Variable::cot, Process::kf); + const int baseShift = ceil(log2(range / baseZ * baseR / setup->ctbNumBinsCot())); + const int width = ceil(log2(setup->ctbNumBinsCot())); const double base = baseZ / baseR * pow(2, baseShift); cot_ = DataFormat(true, width, base, range); } void ProducerCTB::produce(Event& iEvent, const EventSetup& iSetup) { + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + const LayerEncoding* layerEncoding = &iSetup.getData(esGetTokenLayerEncoding_); // empty output products StreamsTrack acceptedTracks(numRegions_ * numChannelOut_); StreamsStub acceptedStubs(numRegions_ * numChannelOut_ * numLayers_); @@ -128,11 +124,11 @@ namespace trackerTFP { // count stubs int nTracksHT(0); for (const StreamStub& stream : streamsStub) { - pair trackId({setup_->htNumBinsPhiT(), setup_->gpNumBinsZT()}); + pair trackId({setup->htNumBinsPhiT(), setup->gpNumBinsZT()}); for (const FrameStub& frame : stream) { if (frame.first.isNull()) continue; - stubsHT.emplace_back(frame, dataFormats_); + stubsHT.emplace_back(frame, dataFormats); StubHT* stub = &stubsHT.back(); if (trackId.first != stub->phiT() || trackId.second != stub->zT()) { nTracksHT++; @@ -145,7 +141,7 @@ namespace trackerTFP { vector tracksCTB; tracksCTB.reserve(nTracksHT); stubsCTB.reserve(nStubsHT); - CleanTrackBuilder ctb(setup_, dataFormats_, layerEncoding_, cot_, stubsCTB, tracksCTB); + CleanTrackBuilder ctb(setup, dataFormats, layerEncoding, cot_, stubsCTB, tracksCTB); int iStub(0); for (int region = 0; region < numRegions_; region++) { const int offsetIn = region * numChannelIn_; diff --git a/L1Trigger/TrackerTFP/plugins/ProducerDR.cc b/L1Trigger/TrackerTFP/plugins/ProducerDR.cc index 3a80e9901ef5a..e4b54245da2e1 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerDR.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerDR.cc @@ -37,7 +37,6 @@ namespace trackerTFP { private: void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; - void endStream() override {} // ED input token of sf stubs and tracks EDGetTokenT edGetTokenStubs_; EDGetTokenT edGetTokenTracks_; @@ -48,10 +47,6 @@ namespace trackerTFP { ESGetToken esGetTokenSetup_; // DataFormats token ESGetToken esGetTokenDataFormats_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; // number of input channel int numChannelIn_; // number of output channel @@ -77,15 +72,19 @@ namespace trackerTFP { } void ProducerDR::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - numChannelIn_ = dataFormats_->numChannel(Process::kf); - numChannelOut_ = dataFormats_->numChannel(Process::dr); - numRegions_ = setup_->numRegions(); - numLayers_ = setup_->numLayers(); + // helper class to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + numRegions_ = setup->numRegions(); + numLayers_ = setup->numLayers(); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + numChannelIn_ = dataFormats->numChannel(Process::kf); + numChannelOut_ = dataFormats->numChannel(Process::dr); } void ProducerDR::produce(Event& iEvent, const EventSetup& iSetup) { + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); // empty DR products StreamsStub acceptedStubs(numRegions_ * numChannelOut_ * numLayers_); StreamsTrack acceptedTracks(numRegions_ * numChannelOut_); @@ -140,7 +139,7 @@ namespace trackerTFP { for (const FrameTrack& frame : streamTrack) { TrackKF* track = nullptr; if (frame.first.isNonnull()) { - tracksKF.emplace_back(frame, dataFormats_); + tracksKF.emplace_back(frame, dataFormats); track = &tracksKF.back(); } tracks.push_back(track); @@ -149,7 +148,7 @@ namespace trackerTFP { for (const FrameStub& frame : allStubs[offsetAll + layer]) { StubKF* stub = nullptr; if (frame.first.isNonnull()) { - stubsKF.emplace_back(frame, dataFormats_); + stubsKF.emplace_back(frame, dataFormats); stub = &stubsKF.back(); } regionStubs[offsetRegion + layer].push_back(stub); @@ -162,7 +161,7 @@ namespace trackerTFP { vector stubsDR; stubsDR.reserve(nStubs); // object to remove duplicates in a processing region - DuplicateRemoval dr(setup_, dataFormats_, tracksDR, stubsDR); + DuplicateRemoval dr(setup, dataFormats, tracksDR, stubsDR); // empty h/w liked organized pointer to output data vector> streamsTrack(numChannelOut_); vector> streamsStub(numChannelOut_ * numLayers_); diff --git a/L1Trigger/TrackerTFP/plugins/ProducerDemonstrator.cc b/L1Trigger/TrackerTFP/plugins/ProducerDemonstrator.cc index 2b3794fb86f7f..61e0755a04c9a 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerDemonstrator.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerDemonstrator.cc @@ -22,7 +22,7 @@ namespace trackerTFP { public: ProducerDemonstrator(const ParameterSet& iConfig); ~ProducerDemonstrator() override {} - unique_ptr produce(const DemonstratorRcd& rcd); + unique_ptr produce(const SetupRcd& rcd); private: Demonstrator::Config iConfig_; @@ -38,7 +38,7 @@ namespace trackerTFP { iConfig_.linkMappingOut_ = iConfig.getParameter>("LinkMappingOut"); } - unique_ptr ProducerDemonstrator::produce(const DemonstratorRcd& rcd) { + unique_ptr ProducerDemonstrator::produce(const SetupRcd& rcd) { const Setup* setup = &rcd.get(esGetToken_); return make_unique(iConfig_, setup); } diff --git a/L1Trigger/TrackerTFP/plugins/ProducerGP.cc b/L1Trigger/TrackerTFP/plugins/ProducerGP.cc index f5282e2411ceb..d9abfb20a448c 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerGP.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerGP.cc @@ -51,13 +51,7 @@ namespace trackerTFP { // DataFormats token ESGetToken esGetTokenDataFormats_; // LayerEncoding token - ESGetToken esGetTokenLayerEncoding_; - // helper classe to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // helper class to encode layer - const LayerEncoding* layerEncoding_ = nullptr; + ESGetToken esGetTokenLayerEncoding_; // number of input channel int numChannelIn_; // number of output channel @@ -75,19 +69,26 @@ namespace trackerTFP { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenDataFormats_ = esConsumes(); - esGetTokenLayerEncoding_ = esConsumes(); + esGetTokenLayerEncoding_ = esConsumes(); } void ProducerGP::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - layerEncoding_ = &iSetup.getData(esGetTokenLayerEncoding_); - numChannelIn_ = dataFormats_->numChannel(Process::pp); - numChannelOut_ = dataFormats_->numChannel(Process::gp); - numRegions_ = setup_->numRegions(); + // helper classe to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + numRegions_ = setup->numRegions(); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + numChannelIn_ = dataFormats->numChannel(Process::pp); + numChannelOut_ = dataFormats->numChannel(Process::gp); } void ProducerGP::produce(Event& iEvent, const EventSetup& iSetup) { + // helper classe to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + // helper class to encode layer + const LayerEncoding* layerEncoding = &iSetup.getData(esGetTokenLayerEncoding_); // empty GP products StreamsStub accepted(numRegions_ * numChannelOut_); // read in DTC Product and produce TFP product @@ -123,7 +124,7 @@ namespace trackerTFP { for (const FrameStub& frame : streamStub) { StubPP* stubPP = nullptr; if (frame.first.isNonnull()) { - stubsPP.emplace_back(frame, dataFormats_); + stubsPP.emplace_back(frame, dataFormats); stubPP = &stubsPP.back(); } stream.push_back(stubPP); @@ -135,7 +136,7 @@ namespace trackerTFP { vector stubsGP; stubsGP.reserve(nStubsGP); // object to route Stubs of one region to one stream per sector - GeometricProcessor gp(setup_, dataFormats_, layerEncoding_, stubsGP); + GeometricProcessor gp(setup, dataFormats, layerEncoding, stubsGP); // empty h/w liked organized pointer to output data vector> streamsOut(numChannelOut_); // fill output data diff --git a/L1Trigger/TrackerTFP/plugins/ProducerHT.cc b/L1Trigger/TrackerTFP/plugins/ProducerHT.cc index 406f80f58ff4a..fad5e3790537e 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerHT.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerHT.cc @@ -51,13 +51,7 @@ namespace trackerTFP { // DataFormats token ESGetToken esGetTokenDataFormats_; // LayerEncoding token - ESGetToken esGetTokenLayerEncoding_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // - const LayerEncoding* layerEncoding_ = nullptr; + ESGetToken esGetTokenLayerEncoding_; // number of input channel int numChannelIn_; // number of output channel @@ -75,19 +69,23 @@ namespace trackerTFP { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenDataFormats_ = esConsumes(); - esGetTokenLayerEncoding_ = esConsumes(); + esGetTokenLayerEncoding_ = esConsumes(); } void ProducerHT::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - layerEncoding_ = &iSetup.getData(esGetTokenLayerEncoding_); - numChannelIn_ = dataFormats_->numChannel(Process::gp); - numChannelOut_ = dataFormats_->numChannel(Process::ht); - numRegions_ = setup_->numRegions(); + // helper class to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + numRegions_ = setup->numRegions(); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + numChannelIn_ = dataFormats->numChannel(Process::gp); + numChannelOut_ = dataFormats->numChannel(Process::ht); } void ProducerHT::produce(Event& iEvent, const EventSetup& iSetup) { + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + const LayerEncoding* layerEncoding = &iSetup.getData(esGetTokenLayerEncoding_); // empty HT products StreamsStub accepted(numRegions_ * numChannelOut_); // read in DTC Product and produce TFP product @@ -120,7 +118,7 @@ namespace trackerTFP { for (const FrameStub& frame : streamStub) { StubGP* stub = nullptr; if (frame.first.isNonnull()) { - stubsGP.emplace_back(frame, dataFormats_); + stubsGP.emplace_back(frame, dataFormats); stub = &stubsGP.back(); } stream.push_back(stub); @@ -129,7 +127,7 @@ namespace trackerTFP { // container for output stubs vector stubsHT; // object to find initial rough candidates in r-phi in a region - HoughTransform ht(setup_, dataFormats_, layerEncoding_, stubsHT); + HoughTransform ht(setup, dataFormats, layerEncoding, stubsHT); // empty h/w liked organized pointer to output data vector> streamsOut(numChannelOut_); // fill output data diff --git a/L1Trigger/TrackerTFP/plugins/ProducerKF.cc b/L1Trigger/TrackerTFP/plugins/ProducerKF.cc index 2712545ea8252..26b0b843fdcfd 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerKF.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerKF.cc @@ -61,13 +61,7 @@ namespace trackerTFP { // DataFormats token ESGetToken esGetTokenDataFormats_; // LayerEncoding token - ESGetToken esGetTokenLayerEncoding_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // helper class to encode layer - const LayerEncoding* layerEncoding_ = nullptr; + ESGetToken esGetTokenLayerEncoding_; // helper class to tune internal kf variables KalmanFilterFormats kalmanFilterFormats_; // print end job internal unused MSB @@ -97,20 +91,25 @@ namespace trackerTFP { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenDataFormats_ = esConsumes(); - esGetTokenLayerEncoding_ = esConsumes(); + esGetTokenLayerEncoding_ = esConsumes(); } void ProducerKF::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - layerEncoding_ = &iSetup.getData(esGetTokenLayerEncoding_); - kalmanFilterFormats_.beginRun(dataFormats_); - numChannel_ = dataFormats_->numChannel(Process::kf); - numRegions_ = setup_->numRegions(); - numLayers_ = setup_->numLayers(); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + numRegions_ = setup->numRegions(); + numLayers_ = setup->numLayers(); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + numChannel_ = dataFormats->numChannel(Process::kf); + kalmanFilterFormats_.beginRun(dataFormats); } void ProducerKF::produce(Event& iEvent, const EventSetup& iSetup) { + // helper class to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + // helper class to extract structured data from tt::Frames + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); + // helper class to encode layer + const LayerEncoding* layerEncoding = &iSetup.getData(esGetTokenLayerEncoding_); // empty KF products StreamsStub acceptedStubs(numRegions_ * numChannel_ * numLayers_); StreamsTrack acceptedTracks(numRegions_ * numChannel_); @@ -167,7 +166,7 @@ namespace trackerTFP { for (const FrameTrack& frame : streamTrack) { TrackCTB* track = nullptr; if (frame.first.isNonnull()) { - tracksCTB.emplace_back(frame, dataFormats_); + tracksCTB.emplace_back(frame, dataFormats); track = &tracksCTB.back(); } tracks.push_back(track); @@ -189,7 +188,7 @@ namespace trackerTFP { vector stubsKF; stubsKF.reserve(nStubs); // object to fit tracks in a processing region - KalmanFilter kf(setup_, dataFormats_, layerEncoding_, &kalmanFilterFormats_, tracksKF, stubsKF); + KalmanFilter kf(setup, dataFormats, layerEncoding, &kalmanFilterFormats_, tracksKF, stubsKF); // empty h/w liked organized pointer to output data vector> streamsTrack(numChannel_); vector>> streamsStub(numChannel_, vector>(numLayers_)); diff --git a/L1Trigger/TrackerTFP/plugins/ProducerLayerEncoding.cc b/L1Trigger/TrackerTFP/plugins/ProducerLayerEncoding.cc index 0b32e7af00181..29e8a9f036528 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerLayerEncoding.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerLayerEncoding.cc @@ -22,7 +22,7 @@ namespace trackerTFP { public: ProducerLayerEncoding(const ParameterSet& iConfig); ~ProducerLayerEncoding() override {} - unique_ptr produce(const LayerEncodingRcd& rcd); + unique_ptr produce(const DataFormatsRcd& rcd); private: ESGetToken esGetToken_; @@ -33,7 +33,7 @@ namespace trackerTFP { esGetToken_ = cc.consumes(); } - unique_ptr ProducerLayerEncoding::produce(const LayerEncodingRcd& rcd) { + unique_ptr ProducerLayerEncoding::produce(const DataFormatsRcd& rcd) { const DataFormats* dataFormats = &rcd.get(esGetToken_); return make_unique(dataFormats); } diff --git a/L1Trigger/TrackerTFP/plugins/ProducerPP.cc b/L1Trigger/TrackerTFP/plugins/ProducerPP.cc index 89cd8926d5184..7b048d2804565 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerPP.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerPP.cc @@ -33,7 +33,6 @@ namespace trackerTFP { ~ProducerPP() override {} private: - void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; // ED input token of DTC stubs EDGetTokenT edGetToken_; @@ -41,8 +40,6 @@ namespace trackerTFP { EDPutTokenT edPutToken_; // Setup token ESGetToken esGetTokenSetup_; - // helper classe to store configurations - const Setup* setup_ = nullptr; }; ProducerPP::ProducerPP(const ParameterSet& iConfig) { @@ -55,16 +52,16 @@ namespace trackerTFP { esGetTokenSetup_ = esConsumes(); } - void ProducerPP::beginRun(const Run& iRun, const EventSetup& iSetup) { setup_ = &iSetup.getData(esGetTokenSetup_); } - void ProducerPP::produce(Event& iEvent, const EventSetup& iSetup) { + // helper classe to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // empty GP products - StreamsStub stubs(setup_->numRegions() * setup_->numDTCsPerTFP()); + StreamsStub stubs(setup->numRegions() * setup->numDTCsPerTFP()); // read in DTC Product and produce TFP product const TTDTC& ttDTC = iEvent.get(edGetToken_); - for (int region = 0; region < setup_->numRegions(); region++) { - const int offset = region * setup_->numDTCsPerTFP(); - for (int channel = 0; channel < setup_->numDTCsPerTFP(); channel++) + for (int region = 0; region < setup->numRegions(); region++) { + const int offset = region * setup->numDTCsPerTFP(); + for (int channel = 0; channel < setup->numDTCsPerTFP(); channel++) stubs[offset + channel] = ttDTC.stream(region, channel); } // store products diff --git a/L1Trigger/TrackerTFP/plugins/ProducerTFP.cc b/L1Trigger/TrackerTFP/plugins/ProducerTFP.cc index 2fa506a458138..545c18fe7606f 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerTFP.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerTFP.cc @@ -39,7 +39,6 @@ namespace trackerTFP { ~ProducerTFP() override {} private: - void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; // ED input token of stubs and tracks EDGetTokenT edGetTokenTracks_; @@ -52,7 +51,7 @@ namespace trackerTFP { // DataFormats token ESGetToken esGetTokenDataFormats_; // TrackQuality token - ESGetToken esGetTokenTrackQuality_; + ESGetToken esGetTokenTrackQuality_; // helper class to store configurations const Setup* setup_ = nullptr; // helper class to extract structured data from tt::Frames @@ -75,27 +74,24 @@ namespace trackerTFP { // book ES products esGetTokenSetup_ = esConsumes(); esGetTokenDataFormats_ = esConsumes(); - esGetTokenTrackQuality_ = esConsumes(); + esGetTokenTrackQuality_ = esConsumes(); } - void ProducerTFP::beginRun(const Run& iRun, const EventSetup& iSetup) { + void ProducerTFP::produce(Event& iEvent, const EventSetup& iSetup) { // helper class to store configurations - setup_ = &iSetup.getData(esGetTokenSetup_); + const Setup* setup = &iSetup.getData(esGetTokenSetup_); // helper class to extract structured data from tt::Frames - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); + const DataFormats* dataFormats = &iSetup.getData(esGetTokenDataFormats_); // helper class to determine track quality - trackQuality_ = &iSetup.getData(esGetTokenTrackQuality_); - } - - void ProducerTFP::produce(Event& iEvent, const EventSetup& iSetup) { + const TrackQuality* trackQuality = &iSetup.getData(esGetTokenTrackQuality_); // empty TFP products TTTracks ttTracks; - StreamsTrack streamsTrack(setup_->numRegions() * setup_->tfpNumChannel()); + StreamsTrack streamsTrack(setup->numRegions() * setup->tfpNumChannel()); // read in TQ Products const StreamsTrack& tracks = iEvent.get(edGetTokenTracks_); const StreamsStub& stubs = iEvent.get(edGetTokenStubs_); // produce TTTracks - TrackFindingProcessor tfp(setup_, dataFormats_, trackQuality_); + TrackFindingProcessor tfp(setup, dataFormats, trackQuality); tfp.produce(tracks, stubs, ttTracks, streamsTrack); // put TTTRacks and produce TTTRackRefs const int nTrks = ttTracks.size(); diff --git a/L1Trigger/TrackerTFP/plugins/ProducerTQ.cc b/L1Trigger/TrackerTFP/plugins/ProducerTQ.cc index 7a667fb1d642c..e373c044874fb 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerTQ.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerTQ.cc @@ -53,13 +53,7 @@ namespace trackerTFP { // DataFormats token ESGetToken esGetTokenDataFormats_; // TrackQuality token - ESGetToken esGetTokenTrackQuality_; - // helper class to store configurations - const Setup* setup_ = nullptr; - // helper class to extract structured data from tt::Frames - const DataFormats* dataFormats_ = nullptr; - // helper class to determine Track Quality - const TrackQuality* trackQuality_ = nullptr; + ESGetToken esGetTokenTrackQuality_; // number of processing regions int numRegions_; // number of kf layers @@ -78,19 +72,19 @@ namespace trackerTFP { edPutTokenStubs_ = produces(branchStubs); // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDataFormats_ = esConsumes(); - esGetTokenTrackQuality_ = esConsumes(); + esGetTokenTrackQuality_ = esConsumes(); } void ProducerTQ::beginRun(const Run& iRun, const EventSetup& iSetup) { - setup_ = &iSetup.getData(esGetTokenSetup_); - dataFormats_ = &iSetup.getData(esGetTokenDataFormats_); - trackQuality_ = &iSetup.getData(esGetTokenTrackQuality_); - numRegions_ = setup_->numRegions(); - numLayers_ = setup_->numLayers(); + // helper class to store configurations + const Setup* setup = &iSetup.getData(esGetTokenSetup_); + numRegions_ = setup->numRegions(); + numLayers_ = setup->numLayers(); } void ProducerTQ::produce(Event& iEvent, const EventSetup& iSetup) { + // helper class to determine Track Quality + const TrackQuality* trackQuality = &iSetup.getData(esGetTokenTrackQuality_); auto valid = [](int sum, const FrameTrack& frame) { return sum += (frame.first.isNull() ? 0 : 1); }; // empty TQ product StreamsTrack outputTracks(numRegions_); @@ -122,7 +116,7 @@ namespace trackerTFP { streamStub.reserve(numLayers_); for (int layer = 0; layer < numLayers_; layer++) streamStub.push_back(streamsStubs[offsetLayer + layer][frame]); - tracks.emplace_back(frameTrack, streamStub, trackQuality_); + tracks.emplace_back(frameTrack, streamStub, trackQuality); stream.push_back(&tracks.back()); } // fill TQ product diff --git a/L1Trigger/TrackerTFP/plugins/ProducerTrackQuality.cc b/L1Trigger/TrackerTFP/plugins/ProducerTrackQuality.cc index 8fd6297f41970..cfa4aa58341dd 100644 --- a/L1Trigger/TrackerTFP/plugins/ProducerTrackQuality.cc +++ b/L1Trigger/TrackerTFP/plugins/ProducerTrackQuality.cc @@ -42,8 +42,8 @@ namespace trackerTFP { iConfig_.baseShiftchi2rz_ = iConfig.getParameter("BaseShiftchi2rz"); } ~ProducerTrackQuality() override {} - unique_ptr produce(const TrackQualityRcd& trackQualityRcd) { - const DataFormats* dataFormats = &trackQualityRcd.get(esGetToken_); + unique_ptr produce(const DataFormatsRcd& rcd) { + const DataFormats* dataFormats = &rcd.get(esGetToken_); return make_unique(iConfig_, dataFormats); } diff --git a/L1Trigger/TrackerTFP/src/CleanTrackBuilder.cc b/L1Trigger/TrackerTFP/src/CleanTrackBuilder.cc index aec296de4e28f..bca15afac15d5 100644 --- a/L1Trigger/TrackerTFP/src/CleanTrackBuilder.cc +++ b/L1Trigger/TrackerTFP/src/CleanTrackBuilder.cc @@ -24,12 +24,26 @@ namespace trackerTFP { layerEncoding_(layerEncoding), cot_(cot), stubsCTB_(stubs), - tracksCTB_(tracks) { + tracksCTB_(tracks), + r_(dataFormats_->format(Variable::r, Process::ctb)), + phi_(dataFormats_->format(Variable::phi, Process::ctb)), + z_(dataFormats_->format(Variable::z, Process::ctb)), + phiT_(dataFormats_->format(Variable::phiT, Process::ctb)), + zT_(dataFormats_->format(Variable::zT, Process::ctb)) { stubs_.reserve(stubs.capacity()); tracks_.reserve(tracks.capacity()); numChannelOut_ = dataFormats_->numChannel(Process::ctb); numChannel_ = dataFormats_->numChannel(Process::ht) / numChannelOut_; numLayers_ = setup_->numLayers(); + wlayer_ = dataFormats_->width(Variable::layer, Process::ctb); + numBinsInv2R_ = setup_->ctbNumBinsInv2R(); + numBinsPhiT_ = setup_->ctbNumBinsPhiT(); + numBinsCot_ = setup_->ctbNumBinsCot(); + numBinsZT_ = setup_->ctbNumBinsZT(); + baseInv2R_ = dataFormats_->base(Variable::inv2R, Process::ctb) / numBinsInv2R_; + basePhiT_ = phiT_.base() / numBinsPhiT_; + baseCot_ = cot_.base(); + baseZT_ = zT_.base() / numBinsZT_; } // fill output products @@ -66,15 +80,15 @@ namespace trackerTFP { deque& tracks, deque& stubs, int channelId) { - static const DataFormat dfInv2R = dataFormats_->format(Variable::inv2R, Process::ht); + const DataFormat& dfInv2R = dataFormats_->format(Variable::inv2R, Process::ht); const double inv2R = dfInv2R.floating(dfInv2R.toSigned(channelId)); const int offset = channelId * setup_->ctbMaxTracks(); int trackId = offset; // identify tracks in input container int id; auto toTrkId = [this](StubHT* stub) { - static const DataFormat& phiT = dataFormats_->format(Variable::phiT, Process::ht); - static const DataFormat& zT = dataFormats_->format(Variable::zT, Process::ht); + const DataFormat& phiT = dataFormats_->format(Variable::phiT, Process::ht); + const DataFormat& zT = dataFormats_->format(Variable::zT, Process::ht); return (phiT.ttBV(stub->phiT()) + zT.ttBV(stub->zT())).val(); }; auto different = [&id, toTrkId](StubHT* stub) { return id != toTrkId(stub); }; @@ -105,20 +119,6 @@ namespace trackerTFP { // run single track through r-phi and r-z hough transform void CleanTrackBuilder::cleanTrack( const vector& track, deque& tracks, deque& stubs, double inv2R, int zT, int trackId) { - static const int wlayer = dataFormats_->width(Variable::layer, Process::ctb); - static const DataFormat& dfR = dataFormats_->format(Variable::r, Process::ctb); - static const DataFormat& dfPhi = dataFormats_->format(Variable::phi, Process::ctb); - static const DataFormat& dfZ = dataFormats_->format(Variable::z, Process::ctb); - static const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::ctb); - static const DataFormat& dfZT = dataFormats_->format(Variable::zT, Process::ctb); - static const int numBinsInv2R = setup_->ctbNumBinsInv2R(); - static const int numBinsPhiT = setup_->ctbNumBinsPhiT(); - static const int numBinsCot = setup_->ctbNumBinsCot(); - static const int numBinsZT = setup_->ctbNumBinsZT(); - static const double baseInv2R = dataFormats_->base(Variable::inv2R, Process::ctb) / numBinsInv2R; - static const double basePhiT = dfPhiT.base() / numBinsPhiT; - static const double baseCot = cot_.base(); - static const double baseZT = dfZT.base() / numBinsZT; const TTBV& maybePattern = layerEncoding_->maybePattern(zT); auto noTrack = [this, &maybePattern](const TTBV& pattern) { // not enough seeding layer @@ -140,7 +140,7 @@ namespace trackerTFP { } return true; }; - auto toLayerId = [](StubHT* stub) { return stub->layer().val(wlayer); }; + auto toLayerId = [this](StubHT* stub) { return stub->layer().val(wlayer_); }; auto toDPhi = [this, inv2R](StubHT* stub) { const bool barrel = stub->layer()[5]; const bool ps = stub->layer()[4]; @@ -150,26 +150,26 @@ namespace trackerTFP { const double pitchColR = barrel ? (tilt ? setup_->tiltUncertaintyR() : 0.0) : pitchCol; const double r = stub->r() + setup_->chosenRofPhi(); const double dPhi = pitchRow / r + (setup_->scattering() + pitchColR) * abs(inv2R); - return dfPhi.digi(dPhi / 2.); + return phi_.digi(dPhi / 2.); }; auto toDZ = [this](StubHT* stub) { - static const double m = setup_->tiltApproxSlope(); - static const double c = setup_->tiltApproxIntercept(); + const double m = setup_->tiltApproxSlope(); + const double c = setup_->tiltApproxIntercept(); const bool barrel = stub->layer()[5]; const bool ps = stub->layer()[4]; const bool tilt = stub->layer()[3]; const double pitchCol = ps ? setup_->pitchColPS() : setup_->pitchCol2S(); - const double zT = dfZT.floating(stub->zT()); + const double zT = zT_.floating(stub->zT()); const double cot = abs(zT) / setup_->chosenRofZ(); const double dZ = (barrel ? (tilt ? m * cot + c : 1.) : cot) * pitchCol; - return dfZ.digi(dZ / 2.); + return z_.digi(dZ / 2.); }; vector tStubs; tStubs.reserve(track.size()); - vector hitPatternPhi(numBinsInv2R * numBinsPhiT, TTBV(0, numLayers_)); - vector hitPatternZ(numBinsCot * numBinsZT, TTBV(0, numLayers_)); - TTBV tracksPhi(0, numBinsInv2R * numBinsPhiT); - TTBV tracksZ(0, numBinsCot * numBinsZT); + vector hitPatternPhi(numBinsInv2R_ * numBinsPhiT_, TTBV(0, numLayers_)); + vector hitPatternZ(numBinsCot_ * numBinsZT_, TTBV(0, numLayers_)); + TTBV tracksPhi(0, numBinsInv2R_ * numBinsPhiT_); + TTBV tracksZ(0, numBinsCot_ * numBinsZT_); // identify finer tracks each stub is consistent with for (StubHT* stub : track) { const int layerId = toLayerId(stub); @@ -177,15 +177,15 @@ namespace trackerTFP { const double dZ = toDZ(stub); // r - phi HT auto phiT = [stub](double inv2R, double dPhi) { return inv2R * stub->r() + stub->phi() + dPhi; }; - TTBV hitsPhi(0, numBinsInv2R * numBinsPhiT); - for (int binInv2R = 0; binInv2R < numBinsInv2R; binInv2R++) { - const int offset = binInv2R * numBinsPhiT; - const double inv2RMin = (binInv2R - numBinsInv2R / 2.) * baseInv2R; - const double inv2RMax = inv2RMin + baseInv2R; + TTBV hitsPhi(0, numBinsInv2R_ * numBinsPhiT_); + for (int binInv2R = 0; binInv2R < numBinsInv2R_; binInv2R++) { + const int offset = binInv2R * numBinsPhiT_; + const double inv2RMin = (binInv2R - numBinsInv2R_ / 2.) * baseInv2R_; + const double inv2RMax = inv2RMin + baseInv2R_; const auto phiTs = {phiT(inv2RMin, -dPhi), phiT(inv2RMax, -dPhi), phiT(inv2RMin, dPhi), phiT(inv2RMax, dPhi)}; - const int binPhiTMin = floor(*min_element(phiTs.begin(), phiTs.end()) / basePhiT + 1.e-11) + numBinsPhiT / 2; - const int binPhiTMax = floor(*max_element(phiTs.begin(), phiTs.end()) / basePhiT + 1.e-11) + numBinsPhiT / 2; - for (int binPhiT = 0; binPhiT < numBinsPhiT; binPhiT++) + const int binPhiTMin = floor(*min_element(phiTs.begin(), phiTs.end()) / basePhiT_ + 1.e-11) + numBinsPhiT_ / 2; + const int binPhiTMax = floor(*max_element(phiTs.begin(), phiTs.end()) / basePhiT_ + 1.e-11) + numBinsPhiT_ / 2; + for (int binPhiT = 0; binPhiT < numBinsPhiT_; binPhiT++) if (binPhiT >= binPhiTMin && binPhiT <= binPhiTMax) hitsPhi.set(offset + binPhiT); } @@ -197,18 +197,18 @@ namespace trackerTFP { } // r - z HT auto zT = [this, stub](double cot, double dZ) { - const double r = dfR.digi(stub->r() + dfR.digi(setup_->chosenRofPhi() - setup_->chosenRofZ())); + const double r = r_.digi(stub->r() + r_.digi(setup_->chosenRofPhi() - setup_->chosenRofZ())); return cot * r + stub->z() + dZ; }; - TTBV hitsZ(0, numBinsCot * numBinsZT); - for (int binCot = 0; binCot < numBinsCot; binCot++) { - const int offset = binCot * numBinsZT; - const double cotMin = (binCot - numBinsCot / 2.) * baseCot; - const double cotMax = cotMin + baseCot; + TTBV hitsZ(0, numBinsCot_ * numBinsZT_); + for (int binCot = 0; binCot < numBinsCot_; binCot++) { + const int offset = binCot * numBinsZT_; + const double cotMin = (binCot - numBinsCot_ / 2.) * baseCot_; + const double cotMax = cotMin + baseCot_; const auto zTs = {zT(cotMin, -dZ), zT(cotMax, -dZ), zT(cotMin, dZ), zT(cotMax, dZ)}; - const int binZTMin = floor(*min_element(zTs.begin(), zTs.end()) / baseZT + 1.e-11) + numBinsZT / 2; - const int binZTMax = floor(*max_element(zTs.begin(), zTs.end()) / baseZT + 1.e-11) + numBinsZT / 2; - for (int binZT = 0; binZT < numBinsZT; binZT++) + const int binZTMin = floor(*min_element(zTs.begin(), zTs.end()) / baseZT_ + 1.e-11) + numBinsZT_ / 2; + const int binZTMax = floor(*max_element(zTs.begin(), zTs.end()) / baseZT_ + 1.e-11) + numBinsZT_ / 2; + for (int binZT = 0; binZT < numBinsZT_; binZT++) if (binZT >= binZTMin && binZT <= binZTMax) hitsZ.set(offset + binZT); } @@ -446,7 +446,7 @@ namespace trackerTFP { const vector>& stubs, int region, TTTracks& ttTracks) const { - static const double dPhi = dataFormats_->format(Variable::phiT, Process::ctb).range(); + const double dPhi = dataFormats_->format(Variable::phiT, Process::ctb).range(); const double invR = -track->inv2R() * 2.; const double phi0 = deltaPhi(track->phiT() - track->inv2R() * setup_->chosenRofPhi() + region * dPhi); const double zT = track->zT(); diff --git a/L1Trigger/TrackerTFP/src/DemonstratorRcd.cc b/L1Trigger/TrackerTFP/src/DemonstratorRcd.cc deleted file mode 100644 index bcc4f439bb8d9..0000000000000 --- a/L1Trigger/TrackerTFP/src/DemonstratorRcd.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "L1Trigger/TrackerTFP/interface/DemonstratorRcd.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" - -EVENTSETUP_RECORD_REG(trackerTFP::DemonstratorRcd); diff --git a/L1Trigger/TrackerTFP/src/DuplicateRemoval.cc b/L1Trigger/TrackerTFP/src/DuplicateRemoval.cc index 373f39c4b49cd..da9b9a7cba921 100644 --- a/L1Trigger/TrackerTFP/src/DuplicateRemoval.cc +++ b/L1Trigger/TrackerTFP/src/DuplicateRemoval.cc @@ -108,7 +108,7 @@ namespace trackerTFP { layer.push_back(nullptr); continue; } - static const DataFormat& gp = dataFormats_->format(Variable::zT, Process::gp); + const DataFormat& gp = dataFormats_->format(Variable::zT, Process::gp); TrackKF* trackKF = track->track_; const double inv2R = trackKF->inv2R(); const double phiT = trackKF->phiT(); diff --git a/L1Trigger/TrackerTFP/src/ES_TrackQuality.cc b/L1Trigger/TrackerTFP/src/ES_TrackQuality.cc index 6657f66b3ee99..b591c74b34749 100644 --- a/L1Trigger/TrackerTFP/src/ES_TrackQuality.cc +++ b/L1Trigger/TrackerTFP/src/ES_TrackQuality.cc @@ -1,6 +1,4 @@ #include "FWCore/Utilities/interface/typelookup.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" #include "L1Trigger/TrackerTFP/interface/TrackQuality.h" TYPELOOKUP_DATA_REG(trackerTFP::TrackQuality); -EVENTSETUP_RECORD_REG(trackerTFP::TrackQualityRcd); diff --git a/L1Trigger/TrackerTFP/src/GeometricProcessor.cc b/L1Trigger/TrackerTFP/src/GeometricProcessor.cc index ffd43532cd9a9..fb80bfd111abb 100644 --- a/L1Trigger/TrackerTFP/src/GeometricProcessor.cc +++ b/L1Trigger/TrackerTFP/src/GeometricProcessor.cc @@ -82,11 +82,11 @@ namespace trackerTFP { // convert stub StubGP* GeometricProcessor::produce(const StubPP& stub, int phiT, int zT) { - static const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::gp); - static const DataFormat& dfZT = dataFormats_->format(Variable::zT, Process::gp); - static const DataFormat& dfCot = dataFormats_->format(Variable::cot, Process::gp); - static const DataFormat& dfR = dataFormats_->format(Variable::r, Process::gp); - static const DataFormat& dfL = dataFormats_->format(Variable::layer, Process::gp); + const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::gp); + const DataFormat& dfZT = dataFormats_->format(Variable::zT, Process::gp); + const DataFormat& dfCot = dataFormats_->format(Variable::cot, Process::gp); + const DataFormat& dfR = dataFormats_->format(Variable::r, Process::gp); + const DataFormat& dfL = dataFormats_->format(Variable::layer, Process::gp); const double cot = dfCot.digi(dfZT.floating(zT) / setup_->chosenRofZ()); // determine kf layer id const vector& le = layerEncoding_->layerEncoding(zT); diff --git a/L1Trigger/TrackerTFP/src/HoughTransform.cc b/L1Trigger/TrackerTFP/src/HoughTransform.cc index b4a3a8854a160..050eec741faa3 100644 --- a/L1Trigger/TrackerTFP/src/HoughTransform.cc +++ b/L1Trigger/TrackerTFP/src/HoughTransform.cc @@ -69,7 +69,7 @@ namespace trackerTFP { // associate stubs with phiT bins in this inv2R column void HoughTransform::fillIn(int inv2R, int sector, const vector& input, vector& output) { - static const DataFormat& gp = dataFormats_->format(Variable::phiT, Process::gp); + const DataFormat& gp = dataFormats_->format(Variable::phiT, Process::gp); auto inv2RrangeCheck = [inv2R](StubGP* stub) { return (stub && stub->inv2RMin() <= inv2R && stub->inv2RMax() >= inv2R) ? stub : nullptr; }; @@ -78,7 +78,7 @@ namespace trackerTFP { const double inv2Rf = inv2R_->floating(inv2R); const double zTf = zT_->floating(zT); const double cotf = zTf / setup_->chosenRofZ(); - auto convert = [this, inv2Rf, gpPhiT, zT](StubGP* stub, int phiTht, double phi, double z) { + auto convert = [this, inv2Rf, gpPhiT, zT, gp](StubGP* stub, int phiTht, double phi, double z) { const double phiTf = phiT_->floating(phiTht); const int phiT = phiT_->integer(gp.floating(gpPhiT) + phiTf); const double htPhi = phi - (inv2Rf * stub->r() + phiTf); @@ -146,13 +146,13 @@ namespace trackerTFP { // identify tracks void HoughTransform::readOut(const vector& input, deque& output) const { auto toBinPhiT = [this](StubHT* stub) { - static const DataFormat& gp = dataFormats_->format(Variable::phiT, Process::gp); + const DataFormat& gp = dataFormats_->format(Variable::phiT, Process::gp); const double phiT = phiT_->floating(stub->phiT()); const double local = phiT - gp.digi(phiT); return phiT_->integer(local) + setup_->htNumBinsPhiT() / 2; }; auto toLayerId = [this](StubHT* stub) { - static const DataFormat& layer = dataFormats_->format(Variable::layer, Process::ctb); + const DataFormat& layer = dataFormats_->format(Variable::layer, Process::ctb); return stub->layer().val(layer.width()); }; // used to recognise in which order tracks are found diff --git a/L1Trigger/TrackerTFP/src/KalmanFilter.cc b/L1Trigger/TrackerTFP/src/KalmanFilter.cc index ccb690422f487..6a3ac13e38c18 100644 --- a/L1Trigger/TrackerTFP/src/KalmanFilter.cc +++ b/L1Trigger/TrackerTFP/src/KalmanFilter.cc @@ -84,7 +84,7 @@ namespace trackerTFP { const std::vector>& stubsIn, int channel, deque& stream) { - static const int numLayers = setup_->numLayers(); + const int numLayers = setup_->numLayers(); const int offsetL = channel * numLayers; const vector& tracksChannel = tracksIn[channel]; int trackId(0); @@ -165,8 +165,8 @@ namespace trackerTFP { const double C11 = digi(VariableKF::C11, (H12v0 + H02v1) * invdH2); const double C33 = digi(VariableKF::C33, (H32v2 + H22v3) * invdH2); // create updated state - static const double chi20 = digi(VariableKF::chi20, 0.); - static const double chi21 = digi(VariableKF::chi21, 0.); + const double chi20 = digi(VariableKF::chi20, 0.); + const double chi21 = digi(VariableKF::chi21, 0.); states_.emplace_back(State(s1, {x0, x1, x2, x3, chi20, chi21, C00, C11, C22, C33, C01, C23})); state = &states_.back(); updateRangeActual(VariableKF::x0, x0); @@ -262,8 +262,8 @@ namespace trackerTFP { // Transform States into Tracks void KalmanFilter::conv(const vector& best, vector& tracks, vector>& stubs) { - static const DataFormat& dfInv2R = dataFormats_->format(Variable::inv2R, Process::ht); - static const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::ht); + const DataFormat& dfInv2R = dataFormats_->format(Variable::inv2R, Process::ht); + const DataFormat& dfPhiT = dataFormats_->format(Variable::phiT, Process::ht); tracks.reserve(best.size()); for (vector& layer : stubs) layer.reserve(best.size()); diff --git a/L1Trigger/TrackerTFP/src/LayerEncodingRcd.cc b/L1Trigger/TrackerTFP/src/LayerEncodingRcd.cc deleted file mode 100644 index 785cc2f0af36f..0000000000000 --- a/L1Trigger/TrackerTFP/src/LayerEncodingRcd.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "L1Trigger/TrackerTFP/interface/LayerEncodingRcd.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" - -EVENTSETUP_RECORD_REG(trackerTFP::LayerEncodingRcd); diff --git a/L1Trigger/TrackerTFP/test/AnalyzerDemonstrator.cc b/L1Trigger/TrackerTFP/test/AnalyzerDemonstrator.cc index c2c5761252607..cf52e2847cd4f 100644 --- a/L1Trigger/TrackerTFP/test/AnalyzerDemonstrator.cc +++ b/L1Trigger/TrackerTFP/test/AnalyzerDemonstrator.cc @@ -53,7 +53,7 @@ namespace trackerTFP { // Setup token ESGetToken esGetTokenSetup_; // Demonstrator token - ESGetToken esGetTokenDemonstrator_; + ESGetToken esGetTokenDemonstrator_; // const Setup* setup_ = nullptr; // @@ -75,7 +75,7 @@ namespace trackerTFP { edGetTokenTracksOut_ = consumes(InputTag(labelOut, branchTracks)); // book ES products esGetTokenSetup_ = esConsumes(); - esGetTokenDemonstrator_ = esConsumes(); + esGetTokenDemonstrator_ = esConsumes(); } void AnalyzerDemonstrator::beginRun(const Run& iEvent, const EventSetup& iSetup) { diff --git a/SimTracker/TrackTriggerAssociation/interface/StubAssociation.h b/SimTracker/TrackTriggerAssociation/interface/StubAssociation.h index 1b29b3a946a10..4ea2d8ba5b13f 100644 --- a/SimTracker/TrackTriggerAssociation/interface/StubAssociation.h +++ b/SimTracker/TrackTriggerAssociation/interface/StubAssociation.h @@ -1,7 +1,6 @@ #ifndef SimTracker_TrackTriggerAssociation_StubAssociation_h #define SimTracker_TrackTriggerAssociation_StubAssociation_h -#include "FWCore/ParameterSet/interface/ParameterSet.h" #include "DataFormats/Common/interface/Ptr.h" #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h" #include "L1Trigger/TrackTrigger/interface/Setup.h" @@ -22,8 +21,15 @@ namespace tt { */ class StubAssociation { public: + // configuration + struct Config { + int minLayersGood_; + int minLayersGoodPS_; + int maxLayersBad_; + int maxLayersBadPS_; + }; StubAssociation() { setup_ = nullptr; } - StubAssociation(const edm::ParameterSet& pSet, const Setup* setup); + StubAssociation(const Config& iConfig, const Setup* setup); ~StubAssociation() {} // insert a TPPtr and its associated collection of TTstubRefs into the underlayering maps void insert(const TPPtr& tpPtr, const std::vector& ttSTubRefs); diff --git a/SimTracker/TrackTriggerAssociation/plugins/StubAssociator.cc b/SimTracker/TrackTriggerAssociation/plugins/StubAssociator.cc index dcde5b9877cff..9263adaf56875 100644 --- a/SimTracker/TrackTriggerAssociation/plugins/StubAssociator.cc +++ b/SimTracker/TrackTriggerAssociation/plugins/StubAssociator.cc @@ -41,7 +41,6 @@ namespace tt { private: void beginRun(const Run&, const EventSetup&) override; void produce(Event&, const EventSetup&) override; - void endJob() {} // helper classe to store configurations const Setup* setup_; // ED input token of TTStubs @@ -55,7 +54,7 @@ namespace tt { // Setup token ESGetToken esGetTokenSetup_; // - ParameterSet pSet_; + StubAssociation::Config iConfig_; // required number of associated stub layers to a TP to consider it reconstruct-able int minLayers_; // required number of associated ps stub layers to a TP to consider it reconstruct-able @@ -79,8 +78,7 @@ namespace tt { }; StubAssociator::StubAssociator(const ParameterSet& iConfig) - : pSet_(iConfig), - minLayers_(iConfig.getParameter("MinLayers")), + : minLayers_(iConfig.getParameter("MinLayers")), minLayersPS_(iConfig.getParameter("MinLayersPS")), minPt_(iConfig.getParameter("MinPt")), maxEta0_(iConfig.getParameter("MaxEta0")), @@ -88,6 +86,10 @@ namespace tt { maxD0_(iConfig.getParameter("MaxD0")), maxVertR_(iConfig.getParameter("MaxVertR")), maxVertZ_(iConfig.getParameter("MaxVertZ")) { + iConfig_.minLayersGood_ = iConfig.getParameter("minLayersGood"); + iConfig_.minLayersGoodPS_ = iConfig.getParameter("minLayersGoodPS"); + iConfig_.maxLayersBad_ = iConfig.getParameter("maxLayersBad"); + iConfig_.maxLayersBadPS_ = iConfig.getParameter("maxLayersBadPS"); // book in- and output ed products getTokenTTStubDetSetVec_ = consumes(iConfig.getParameter("InputTagTTStubDetSetVec")); getTokenTTClusterAssMap_ = consumes(iConfig.getParameter("InputTagTTClusterAssMap")); @@ -101,13 +103,13 @@ namespace tt { setup_ = &iSetup.getData(esGetTokenSetup_); maxZT_ = sinh(maxEta0_) * setup_->chosenRofZ(); // configure TrackingParticleSelector - static constexpr double ptMax = 9.e9; - static constexpr int minHit = 0; - static constexpr bool signalOnly = true; - static constexpr bool intimeOnly = true; - static constexpr bool chargedOnly = true; - static constexpr bool stableOnly = false; - static const double maxEta = asinh((maxZT_ + maxZ0_) / setup_->chosenRofZ()); + constexpr double ptMax = 9.e9; + constexpr int minHit = 0; + constexpr bool signalOnly = true; + constexpr bool intimeOnly = true; + constexpr bool chargedOnly = true; + constexpr bool stableOnly = false; + const double maxEta = asinh((maxZT_ + maxZ0_) / setup_->chosenRofZ()); tpSelector_ = TrackingParticleSelector( minPt_, ptMax, -maxEta, maxEta, maxVertR_, maxVertZ_, minHit, signalOnly, intimeOnly, chargedOnly, stableOnly); } @@ -136,8 +138,8 @@ namespace tt { } } // associate reconstructable TrackingParticles with TTStubs - StubAssociation reconstructable(pSet_, setup_); - StubAssociation selection(pSet_, setup_); + StubAssociation reconstructable(iConfig_, setup_); + StubAssociation selection(iConfig_, setup_); for (const auto& p : mapTPPtrsTTStubRefs) { // require min layers set hitPattern, hitPatternPS; diff --git a/SimTracker/TrackTriggerAssociation/src/StubAssociation.cc b/SimTracker/TrackTriggerAssociation/src/StubAssociation.cc index d8ccdf762211a..02751d70e7157 100644 --- a/SimTracker/TrackTriggerAssociation/src/StubAssociation.cc +++ b/SimTracker/TrackTriggerAssociation/src/StubAssociation.cc @@ -10,12 +10,12 @@ using namespace edm; namespace tt { - StubAssociation::StubAssociation(const edm::ParameterSet& pSet, const Setup* setup) + StubAssociation::StubAssociation(const Config& iConfig, const Setup* setup) : setup_(setup), - minLayersGood_(pSet.getParameter("MinLayersGood")), - minLayersGoodPS_(pSet.getParameter("MinLayersGoodPS")), - maxLayersBad_(pSet.getParameter("MaxLayersBad")), - maxLayersBadPS_(pSet.getParameter("MaxLayersBadPS")) {} + minLayersGood_(iConfig.minLayersGood_), + minLayersGoodPS_(iConfig.minLayersGoodPS_), + maxLayersBad_(iConfig.maxLayersBad_), + maxLayersBadPS_(iConfig.maxLayersBadPS_) {} // insert a TPPtr and its associated collection of TTstubRefs into the underlayering maps void StubAssociation::insert(const TPPtr& tpPtr, const vector& ttSTubRefs) {