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 }
0024
0025 class BaseEvtVtxGenerator : public edm::stream::EDProducer<> {
0026 public:
0027
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