CMS 3D CMS Logo

HectorTransport.h
Go to the documentation of this file.
1 #ifndef HECTOR_TRANSPORT
2 #define HECTOR_TRANSPORT
8 
16 
18 
19 #include <cmath>
20 #include <iomanip>
21 #include <cstdlib>
22 
23 // HepMC headers
24 #include "HepMC/GenEvent.h"
25 #include "HepMC/GenVertex.h"
26 #include "HepMC/GenParticle.h"
27 #include "HepMC/SimpleVector.h"
28 
29 // user include files
30 #include <string>
31 
32 namespace CLHEP {
33  class HepRandomEngine;
34 }
35 
36 class H_BeamParticle;
37 class H_BeamLine;
38 
40 public:
42  ~HectorTransport() override;
43 
44  void process(const HepMC::GenEvent* ev, const edm::EventSetup& es, CLHEP::HepRandomEngine* engine) override;
45 
46 private:
47  static constexpr double fPPSBeamLineLength_ = 250.; // default beam line length
48 
51 
52  // function to calculate the LorentzBoost
53  bool setBeamLine();
54 
55  // PPSHector
56  std::unique_ptr<H_BeamLine> m_beamline45;
57  std::unique_ptr<H_BeamLine> m_beamline56;
58 
61 
63  const BeamSpotObjects* beamspot_{nullptr};
64 };
65 #endif
~HectorTransport() override
bool transportProton(const HepMC::GenParticle *)
propagate the particles through a beamline to PPS
edm::ESGetToken< CTPPSBeamParameters, CTPPSBeamParametersRcd > beamParametersToken_
const CTPPSBeamParameters * beamParameters_
const BeamSpotObjects * beamspot_
HectorTransport(const edm::ParameterSet &ps, edm::ConsumesCollector iC)
void process(const HepMC::GenEvent *ev, const edm::EventSetup &es, CLHEP::HepRandomEngine *engine) override
static constexpr double fPPSBeamLineLength_
std::unique_ptr< H_BeamLine > m_beamline56
std::unique_ptr< H_BeamLine > m_beamline45
edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcd > beamspotToken_