CMS 3D CMS Logo

HectorTransport.h
Go to the documentation of this file.
1 #ifndef HECTOR_TRANSPORT
2 #define HECTOR_TRANSPORT
4 
7 
12 
14 
15 #include <cmath>
16 #include <iomanip>
17 #include <cstdlib>
18 
19 
20 // HepMC headers
21 #include "HepMC/GenEvent.h"
22 #include "HepMC/GenVertex.h"
23 #include "HepMC/GenParticle.h"
24 #include "HepMC/SimpleVector.h"
25 
26 // user include files
27 #include <string>
28 
29 namespace CLHEP
30 {
31  class HepRandomEngine;
32 }
33 
34 class H_BeamParticle;
35 class H_BeamLine;
36 
38  public:
39 
42  ~HectorTransport() override;
43  void process( const HepMC::GenEvent * , const edm::EventSetup & , CLHEP::HepRandomEngine *) override;
44 
45 
46  private:
48  bool transportProton(const HepMC::GenParticle*);
51  void genProtonsLoop( const HepMC::GenEvent * , const edm::EventSetup &);
53 
54  // New function to calculate the LorentzBoost
55  void setBeamEnergy(double e) {fBeamEnergy=e;fBeamMomentum = sqrt(fBeamEnergy*fBeamEnergy - ProtonMassSQ);}
56 
57  double getBeamEnergy() {return fBeamEnergy;}
58 
59  double getBeamMomentum() {return fBeamMomentum;}
60 
61  bool setBeamLine();
62 /*
63  *
64  * ATTENTION: DATA MEMBERS AND FUNCTIONS COMMON TO BOTH METHODS SHOULD BE MOVED TO THE BASE CLASS
65  *
66  */
67  // Defaults
69 
70  double m_fEtacut;
72 
73  double m_lengthctpps ;
74  double m_f_ctpps_f;
75  double m_b_ctpps_b;
76 
77 
78  // PPSHector
79  std::unique_ptr<H_BeamLine> m_beamline45;
80  std::unique_ptr<H_BeamLine> m_beamline56;
81 
84 
85 };
86 #endif
std::string m_beam2filename
double getBeamEnergy()
T sqrt(T t)
Definition: SSEVec.h:18
edm::ESHandle< ParticleDataTable > m_pdt
void setBeamEnergy(double e)
std::string m_beam1filename
std::unique_ptr< H_BeamLine > m_beamline56
std::unique_ptr< H_BeamLine > m_beamline45
double getBeamMomentum()
static const double ProtonMassSQ