File indexing completed on 2024-05-20 22:40:10
0001
0002 #include <memory>
0003 #include <string>
0004
0005
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
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
0055
0056
0057
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
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
0099 DEFINE_FWK_MODULE(MtdRecoClusterToSimLayerClusterAssociatorEDProducer);