Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-15 23:40:40

0001 //-------------------------------------------------
0002 //
0003 //   Class: L1TMuonBarrelTrackProducer
0004 //
0005 //   L1 BM Track Finder EDProducer
0006 //
0007 //
0008 //
0009 //   Author :
0010 //   J. Troconiz              UAM Madrid
0011 //   Modified :
0012 //   G. Flouris               U Ioannina
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   /// Constructor
0036   L1TMuonBarrelTrackProducer(const edm::ParameterSet& pset);
0037 
0038   /// Produce digis out of raw data
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   //without clearing before the first call things fail
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   ///Muons before muon sorter
0077   auto tra_product = dtbx_.getcache0();
0078 
0079   ///Muons after muon sorter, for uGMT
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   //for (int ibx = BMTracks.getFirstBX(); ibx  <= BMTracks.getLastBX(); ibx++){
0087   //cout << "DEBUG:  BMTF size at bx " << ibx << " " << BMTracks.size(ibx) << "\n";
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);