Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // Package:    tautrigger/EmbeddingHltPixelVerticesProducer
0004 // Class:      EmbeddingHltPixelVerticesProducer
0005 //
0006 /**\class EmbeddingHltPixelVerticesProducer EmbeddingHltPixelVerticesProducer.cc tautrigger/EmbeddingHltPixelVerticesProducer/plugins/EmbeddingHltPixelVerticesProducer.cc
0007 
0008  Description: [one line class summary]
0009 
0010  Implementation:
0011      [Notes on implementation]
0012 */
0013 //
0014 // Original Author:  Sebastian Brommer
0015 //         Created:  Thu, 02 Aug 2018 12:05:59 GMT
0016 //
0017 //
0018 
0019 // system include files
0020 #include <memory>
0021 
0022 // user include files
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/stream/EDProducer.h"
0025 
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/MakerMacros.h"
0028 
0029 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0030 #include "FWCore/Utilities/interface/StreamID.h"
0031 
0032 #include "DataFormats/Math/interface/Error.h"
0033 #include "DataFormats/Math/interface/Point3D.h"
0034 #include "DataFormats/VertexReco/interface/Vertex.h"
0035 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0036 
0037 #include "DataFormats/TrackReco/interface/Track.h"
0038 #include "DataFormats/TrackReco/interface/TrackBase.h"
0039 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0040 
0041 #include "DataFormats/Common/interface/RefToBase.h"
0042 
0043 class EmbeddingHltPixelVerticesProducer : public edm::stream::EDProducer<> {
0044 public:
0045   explicit EmbeddingHltPixelVerticesProducer(const edm::ParameterSet &);
0046   ~EmbeddingHltPixelVerticesProducer() override;
0047 
0048   static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0049 
0050 private:
0051   void beginStream(edm::StreamID) override;
0052   void produce(edm::Event &, const edm::EventSetup &) override;
0053   void endStream() override;
0054   edm::InputTag vertexPositionLabel;
0055 
0056   // ----------member data ---------------------------
0057 };
0058 
0059 EmbeddingHltPixelVerticesProducer::EmbeddingHltPixelVerticesProducer(const edm::ParameterSet &iConfig) {
0060   vertexPositionLabel = edm::InputTag("externalLHEProducer", "vertexPosition");
0061   consumes<math::XYZTLorentzVectorD>(vertexPositionLabel);
0062   produces<reco::VertexCollection>();
0063 }
0064 
0065 EmbeddingHltPixelVerticesProducer::~EmbeddingHltPixelVerticesProducer() {}
0066 
0067 // ------------ method called to produce the data  ------------
0068 void EmbeddingHltPixelVerticesProducer::produce(edm::Event &iEvent, const edm::EventSetup &iSetup) {
0069   using namespace edm;
0070   std::unique_ptr<reco::VertexCollection> embeddingVertex(new reco::VertexCollection);
0071   Handle<math::XYZTLorentzVectorD> vertex_position;
0072   iEvent.getByLabel(vertexPositionLabel, vertex_position);
0073   math::XYZPoint genVertex =
0074       math::XYZPoint(vertex_position.product()->x(), vertex_position.product()->y(), vertex_position.product()->z());
0075   math::Error<3>::type Error;
0076   // Try to produce an nonfake Vertex
0077   // Need at least 5 ndof so the vertex Quality is considered good
0078   reco::Vertex saveVertex = reco::Vertex(genVertex, Error, 1.0, 6.0, 6);
0079   embeddingVertex->push_back(saveVertex);
0080   iEvent.put(std::move(embeddingVertex));
0081 }
0082 
0083 // ------------ method called once each stream before processing any runs, lumis or events  ------------
0084 void EmbeddingHltPixelVerticesProducer::beginStream(edm::StreamID) {}
0085 
0086 // ------------ method called once each stream after processing all runs, lumis and events  ------------
0087 void EmbeddingHltPixelVerticesProducer::endStream() {}
0088 
0089 void EmbeddingHltPixelVerticesProducer::fillDescriptions(edm::ConfigurationDescriptions &descriptions) {
0090   // The following says we do not know what parameters are allowed so do no validation
0091   //  Please change this to state exactly what you do use, even if it is no parameters
0092   edm::ParameterSetDescription desc;
0093   desc.setUnknown();
0094   descriptions.addDefault(desc);
0095 }
0096 
0097 // define this as a plug-in
0098 DEFINE_FWK_MODULE(EmbeddingHltPixelVerticesProducer);