Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-10 02:21:02

0001 #include "L1Trigger/L1TMuonOverlapPhase2/plugins/L1TMuonOverlapPhase2TrackProducer.h"
0002 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
0003 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0004 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
0005 #include "DataFormats/L1TMuon/interface/RegionalMuonCandFwd.h"
0006 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0007 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0008 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
0009 #include "FWCore/Framework/interface/EDConsumerBase.h"
0010 #include "FWCore/Framework/interface/Event.h"
0011 #include "FWCore/Framework/interface/ProductRegistryHelper.h"
0012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0013 #include "FWCore/PluginManager/interface/PluginFactory.h"
0014 #include "FWCore/Utilities/interface/InputTag.h"
0015 
0016 #include <algorithm>
0017 #include <iostream>
0018 #include <memory>
0019 
0020 L1TMuonOverlapPhase2TrackProducer::L1TMuonOverlapPhase2TrackProducer(const edm::ParameterSet& edmParameterSet)
0021     : muStubsInputTokens(
0022           {consumes<L1MuDTChambPhContainer>(edmParameterSet.getParameter<edm::InputTag>("srcDTPh")),
0023            consumes<L1MuDTChambThContainer>(edmParameterSet.getParameter<edm::InputTag>("srcDTTh")),
0024            consumes<CSCCorrelatedLCTDigiCollection>(edmParameterSet.getParameter<edm::InputTag>("srcCSC")),
0025            consumes<RPCDigiCollection>(edmParameterSet.getParameter<edm::InputTag>("srcRPC"))}),
0026       omtfParamsEsToken(esConsumes<L1TMuonOverlapParams, L1TMuonOverlapParamsRcd, edm::Transition::BeginRun>()),
0027       muonGeometryTokens({esConsumes<RPCGeometry, MuonGeometryRecord, edm::Transition::BeginRun>(),
0028                           esConsumes<CSCGeometry, MuonGeometryRecord, edm::Transition::BeginRun>(),
0029                           esConsumes<DTGeometry, MuonGeometryRecord, edm::Transition::BeginRun>()}),
0030       //needed for pattern generation and RootDataDumper
0031       magneticFieldEsToken(esConsumes<MagneticField, IdealMagneticFieldRecord, edm::Transition::BeginRun>()),
0032       propagatorEsToken(esConsumes<Propagator, TrackingComponentsRecord, edm::Transition::BeginRun>(
0033           edm::ESInputTag("", "SteppingHelixPropagatorAlong"))),
0034       omtfEmulation(edmParameterSet,
0035                     muStubsInputTokens,
0036                     consumes<L1Phase2MuDTPhContainer>(edmParameterSet.getParameter<edm::InputTag>("srcDTPhPhase2"))) {
0037   produces<l1t::RegionalMuonCandBxCollection>("OMTF");
0038 
0039   //it is needed for pattern generation and RootDataDumper
0040   if (edmParameterSet.exists("simTracksTag"))
0041     mayConsume<edm::SimTrackContainer>(edmParameterSet.getParameter<edm::InputTag>("simTracksTag"));
0042   if (edmParameterSet.exists("simVertexesTag"))
0043     mayConsume<edm::SimVertexContainer>(edmParameterSet.getParameter<edm::InputTag>("simVertexesTag"));
0044 }
0045 
0046 /////////////////////////////////////////////////////
0047 /////////////////////////////////////////////////////
0048 void L1TMuonOverlapPhase2TrackProducer::beginJob() { omtfEmulation.beginJob(); }
0049 /////////////////////////////////////////////////////
0050 /////////////////////////////////////////////////////
0051 void L1TMuonOverlapPhase2TrackProducer::endJob() { omtfEmulation.endJob(); }
0052 /////////////////////////////////////////////////////
0053 /////////////////////////////////////////////////////
0054 void L1TMuonOverlapPhase2TrackProducer::beginRun(edm::Run const& run, edm::EventSetup const& iSetup) {
0055   omtfEmulation.beginRun(run, iSetup, omtfParamsEsToken, muonGeometryTokens, magneticFieldEsToken, propagatorEsToken);
0056 }
0057 /////////////////////////////////////////////////////
0058 /////////////////////////////////////////////////////
0059 void L1TMuonOverlapPhase2TrackProducer::produce(edm::Event& iEvent, const edm::EventSetup& evSetup) {
0060   std::ostringstream str;
0061 
0062   std::unique_ptr<l1t::RegionalMuonCandBxCollection> candidates = omtfEmulation.reconstruct(iEvent, evSetup);
0063 
0064   iEvent.put(std::move(candidates), "OMTF");
0065 }
0066 /////////////////////////////////////////////////////
0067 /////////////////////////////////////////////////////
0068 #include "FWCore/Framework/interface/MakerMacros.h"
0069 DEFINE_FWK_MODULE(L1TMuonOverlapPhase2TrackProducer);