Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-20 22:40:10

0001 // system include files
0002 #include <memory>
0003 #include <string>
0004 
0005 // user include files
0006 #include "FWCore/Framework/interface/global/EDProducer.h"
0007 #include "FWCore/Framework/interface/Event.h"
0008 #include "FWCore/Framework/interface/MakerMacros.h"
0009 #include "FWCore/Framework/interface/ESHandle.h"
0010 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0011 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0014 #include "FWCore/Utilities/interface/EDGetToken.h"
0015 
0016 #include "SimDataFormats/Associations/interface/MtdRecoClusterToSimLayerClusterAssociator.h"
0017 
0018 //
0019 // class decleration
0020 //
0021 
0022 class MtdRecoClusterToSimLayerClusterAssociatorEDProducer : public edm::global::EDProducer<> {
0023 public:
0024   explicit MtdRecoClusterToSimLayerClusterAssociatorEDProducer(const edm::ParameterSet &);
0025   ~MtdRecoClusterToSimLayerClusterAssociatorEDProducer() override;
0026 
0027   static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0028 
0029 private:
0030   void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override;
0031 
0032   edm::EDGetTokenT<FTLClusterCollection> btlRecoClustersToken_;
0033   edm::EDGetTokenT<FTLClusterCollection> etlRecoClustersToken_;
0034   edm::EDGetTokenT<MtdSimLayerClusterCollection> simClustersToken_;
0035 
0036   edm::EDGetTokenT<reco::MtdRecoClusterToSimLayerClusterAssociator> associatorToken_;
0037 };
0038 
0039 MtdRecoClusterToSimLayerClusterAssociatorEDProducer::MtdRecoClusterToSimLayerClusterAssociatorEDProducer(
0040     const edm::ParameterSet &pset) {
0041   produces<reco::SimToRecoCollectionMtd>();
0042   produces<reco::RecoToSimCollectionMtd>();
0043 
0044   btlRecoClustersToken_ = consumes<FTLClusterCollection>(pset.getParameter<edm::InputTag>("btlRecoClustersTag"));
0045   etlRecoClustersToken_ = consumes<FTLClusterCollection>(pset.getParameter<edm::InputTag>("etlRecoClustersTag"));
0046   simClustersToken_ = consumes<MtdSimLayerClusterCollection>(pset.getParameter<edm::InputTag>("mtdSimClustersTag"));
0047   associatorToken_ =
0048       consumes<reco::MtdRecoClusterToSimLayerClusterAssociator>(pset.getParameter<edm::InputTag>("associator"));
0049 }
0050 
0051 MtdRecoClusterToSimLayerClusterAssociatorEDProducer::~MtdRecoClusterToSimLayerClusterAssociatorEDProducer() {}
0052 
0053 //
0054 // member functions
0055 //
0056 
0057 // ------------ method called to produce the data  ------------
0058 void MtdRecoClusterToSimLayerClusterAssociatorEDProducer::produce(edm::StreamID,
0059                                                                   edm::Event &iEvent,
0060                                                                   const edm::EventSetup &iSetup) const {
0061   using namespace edm;
0062 
0063   edm::Handle<reco::MtdRecoClusterToSimLayerClusterAssociator> theAssociator;
0064   iEvent.getByToken(associatorToken_, theAssociator);
0065 
0066   edm::Handle<FTLClusterCollection> btlRecoClusters;
0067   iEvent.getByToken(btlRecoClustersToken_, btlRecoClusters);
0068 
0069   edm::Handle<FTLClusterCollection> etlRecoClusters;
0070   iEvent.getByToken(etlRecoClustersToken_, etlRecoClusters);
0071 
0072   edm::Handle<MtdSimLayerClusterCollection> simClusters;
0073   iEvent.getByToken(simClustersToken_, simClusters);
0074 
0075   // associate reco clus to sim layer clus
0076   reco::RecoToSimCollectionMtd recoToSimColl =
0077       theAssociator->associateRecoToSim(btlRecoClusters, etlRecoClusters, simClusters);
0078   reco::SimToRecoCollectionMtd simToRecoColl =
0079       theAssociator->associateSimToReco(btlRecoClusters, etlRecoClusters, simClusters);
0080 
0081   auto r2s = std::make_unique<reco::RecoToSimCollectionMtd>(recoToSimColl);
0082   auto s2r = std::make_unique<reco::SimToRecoCollectionMtd>(simToRecoColl);
0083 
0084   iEvent.put(std::move(r2s));
0085   iEvent.put(std::move(s2r));
0086 }
0087 
0088 void MtdRecoClusterToSimLayerClusterAssociatorEDProducer::fillDescriptions(edm::ConfigurationDescriptions &cfg) {
0089   edm::ParameterSetDescription desc;
0090   desc.add<edm::InputTag>("associator", edm::InputTag("mtdRecoClusterToSimLayerClusterAssociatorByHits"));
0091   desc.add<edm::InputTag>("mtdSimClustersTag", edm::InputTag("mix", "MergedMtdTruthLC"));
0092   desc.add<edm::InputTag>("btlRecoClustersTag", edm::InputTag("mtdClusters", "FTLBarrel"));
0093   desc.add<edm::InputTag>("etlRecoClustersTag", edm::InputTag("mtdClusters", "FTLEndcap"));
0094 
0095   cfg.add("mtdRecoClusterToSimLayerClusterAssociationDefault", desc);
0096 }
0097 
0098 // define this as a plug-in
0099 DEFINE_FWK_MODULE(MtdRecoClusterToSimLayerClusterAssociatorEDProducer);