File indexing completed on 2024-11-15 23:40:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include "DataFormats/Common/interface/Handle.h"
0016 #include "FWCore/Framework/interface/Event.h"
0017 #include "FWCore/Framework/interface/stream/EDProducer.h"
0018 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0019
0020 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0021 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
0022 #include "FWCore/Utilities/interface/EDGetToken.h"
0023 #include "FWCore/Utilities/interface/InputTag.h"
0024 #include "DataFormats/L1CSCTrackFinder/interface/TrackStub.h"
0025 #include "FWCore/Framework/interface/ConsumesCollector.h"
0026
0027 #include "L1Trigger/L1TMuonBarrel/interface/L1MuBMTFConfig.h"
0028 #include "L1Trigger/L1TMuonBarrel/interface/L1MuBMTrackFinder.h"
0029
0030 #include <iostream>
0031 #include <iomanip>
0032
0033 class L1TMuonBarrelTrackProducer : public edm::stream::EDProducer<> {
0034 public:
0035
0036 L1TMuonBarrelTrackProducer(const edm::ParameterSet& pset);
0037
0038
0039 void produce(edm::Event& e, const edm::EventSetup& c) override;
0040
0041 private:
0042 L1MuBMTrackFinder dtbx_;
0043
0044 edm::EDPutTokenT<l1t::RegionalMuonCandBxCollection> regionToken_;
0045 edm::EDPutTokenT<l1t::RegionalMuonCandBxCollection> unsortRegionToken_;
0046 edm::EDPutTokenT<vector<L1MuBMTrack>> trackToken_;
0047 edm::EDPutTokenT<vector<L1MuBMTrackSegPhi>> segPhiToken_;
0048 edm::EDPutTokenT<vector<L1MuBMTrackSegEta>> segEtaToken_;
0049 };
0050
0051 using namespace std;
0052
0053 L1TMuonBarrelTrackProducer::L1TMuonBarrelTrackProducer(const edm::ParameterSet& pset)
0054 : dtbx_(pset, consumesCollector()) {
0055 regionToken_ = produces<l1t::RegionalMuonCandBxCollection>("BMTF");
0056 unsortRegionToken_ = produces<l1t::RegionalMuonCandBxCollection>("UnsortedBMTF");
0057 trackToken_ = produces<vector<L1MuBMTrack>>("BMTF");
0058 segPhiToken_ = produces<vector<L1MuBMTrackSegPhi>>("BMTF");
0059 segEtaToken_ = produces<vector<L1MuBMTrackSegEta>>("BMTF");
0060
0061 dtbx_.clear();
0062 }
0063
0064 void L1TMuonBarrelTrackProducer::produce(edm::Event& e, const edm::EventSetup& c) {
0065 if (dtbx_.config().Debug(1))
0066 cout << endl;
0067 if (dtbx_.config().Debug(1))
0068 cout << "**** L1MuonBMTFTrigger processing event ****" << endl;
0069
0070 dtbx_.run(e, c);
0071
0072 int ndt = dtbx_.numberOfTracks();
0073 if (dtbx_.config().Debug(1))
0074 cout << "Number of muons found by the L1 BBMX TRIGGER : " << ndt << endl;
0075
0076
0077 auto tra_product = dtbx_.getcache0();
0078
0079
0080 auto vec_product = dtbx_.getcache();
0081
0082 auto vec_L1MuBMTrack = dtbx_.getcache1();
0083 auto vec_L1MuBMTrackSegPhi = dtbx_.getcache2();
0084 auto vec_L1MuBMTrackSegEta = dtbx_.getcache3();
0085
0086
0087
0088
0089 e.emplace(unsortRegionToken_, std::move(tra_product));
0090 e.emplace(regionToken_, std::move(vec_product));
0091 e.emplace(trackToken_, std::move(vec_L1MuBMTrack));
0092 e.emplace(segPhiToken_, std::move(vec_L1MuBMTrackSegPhi));
0093 e.emplace(segEtaToken_, std::move(vec_L1MuBMTrackSegEta));
0094
0095 dtbx_.clear();
0096 }
0097
0098 #include "FWCore/Framework/interface/MakerMacros.h"
0099 DEFINE_FWK_MODULE(L1TMuonBarrelTrackProducer);