File indexing completed on 2025-04-04 01:27:05
0001 #ifndef HECTOR_TRANSPORT
0002 #define HECTOR_TRANSPORT
0003 #include "SimTransport/PPSProtonTransport/interface/BaseProtonTransport.h"
0004 #include "CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h"
0005 #include "CondFormats/DataRecord/interface/SimBeamSpotObjectsRcd.h"
0006 #include "CondFormats/DataRecord/interface/CTPPSBeamParametersRcd.h"
0007 #include "CondFormats/PPSObjects/interface/CTPPSBeamParameters.h"
0008
0009 #include "FWCore/AbstractServices/interface/RandomNumberGenerator.h"
0010 #include "FWCore/Framework/interface/EventSetup.h"
0011 #include "FWCore/Utilities/interface/EDGetToken.h"
0012 #include "FWCore/Framework/interface/ConsumesCollector.h"
0013 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0016
0017 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
0018
0019 #include <cmath>
0020 #include <iomanip>
0021 #include <cstdlib>
0022
0023
0024 #include "HepMC/GenEvent.h"
0025 #include "HepMC/GenVertex.h"
0026 #include "HepMC/GenParticle.h"
0027 #include "HepMC/SimpleVector.h"
0028
0029
0030 #include <string>
0031
0032 namespace CLHEP {
0033 class HepRandomEngine;
0034 }
0035
0036 class H_BeamParticle;
0037 class H_BeamLine;
0038
0039 class HectorTransport : public BaseProtonTransport {
0040 public:
0041 HectorTransport(const edm::ParameterSet& ps, edm::ConsumesCollector iC);
0042 ~HectorTransport() override;
0043
0044 void process(const HepMC::GenEvent* ev, const edm::EventSetup& es, CLHEP::HepRandomEngine* engine) override;
0045
0046 private:
0047 static constexpr double fPPSBeamLineLength_ = 250.;
0048
0049
0050 bool transportProton(const HepMC::GenParticle*);
0051
0052
0053 bool setBeamLine();
0054
0055
0056 std::unique_ptr<H_BeamLine> m_beamline45;
0057 std::unique_ptr<H_BeamLine> m_beamline56;
0058
0059 edm::ESGetToken<CTPPSBeamParameters, CTPPSBeamParametersRcd> beamParametersToken_;
0060 edm::ESGetToken<SimBeamSpotObjects, SimBeamSpotObjectsRcd> beamspotToken_;
0061
0062 const CTPPSBeamParameters* beamParameters_{nullptr};
0063 const SimBeamSpotObjects* beamspot_{nullptr};
0064 };
0065 #endif