Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-10 02:31:53

0001 #ifndef IOMC_BaseEvtVtxGenerator_H
0002 #define IOMC_BaseEvtVtxGenerator_H
0003 /*
0004 */
0005 
0006 #include "FWCore/Framework/interface/stream/EDProducer.h"
0007 #include "FWCore/Utilities/interface/EDGetToken.h"
0008 
0009 #include "Math/Vector4D.h"
0010 #include "TMatrixD.h"
0011 
0012 namespace HepMC {
0013   class FourVector;
0014 }
0015 
0016 namespace CLHEP {
0017   class HepRandomEngine;
0018 }
0019 
0020 namespace edm {
0021   class HepMCProduct;
0022   class HepMC3Product;
0023 }  // namespace edm
0024 
0025 class BaseEvtVtxGenerator : public edm::stream::EDProducer<> {
0026 public:
0027   // ctor & dtor
0028   explicit BaseEvtVtxGenerator(const edm::ParameterSet&);
0029   ~BaseEvtVtxGenerator() override;
0030 
0031   void produce(edm::Event&, const edm::EventSetup&) override;
0032 
0033   virtual ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const = 0;
0034 
0035   virtual TMatrixD const* GetInvLorentzBoost() const = 0;
0036 
0037 private:
0038   edm::EDGetTokenT<edm::HepMCProduct> sourceToken;
0039   edm::EDGetTokenT<edm::HepMC3Product> sourceToken3;
0040 };
0041 
0042 #endif