36 #include "MedicalBeam.hh"
38 using namespace CLHEP;
43 fSSD(1.*
m), ffieldShape(MedicalBeam::kSQUARE), ffieldR(10.*
cm)
46 fparticle = particleTable-> FindParticle(
"proton");
51 ffieldXY[0] = ffieldXY[1] = 5.*
cm;
65 dr = std::sqrt(
sqr(ffieldXY[0]/2.) +
sqr(ffieldXY[1]/2.));
81 xmax = ffieldXY[0]/2./fSSD;
82 ymax = ffieldXY[1]/2./fSSD;
87 while(! (std::abs(x) < xmax && std::abs(y) < ymax) ) {
89 dsin = std::sqrt(1.-
sqr(dcos));
92 x = std::cos(dphi)*dsin*dcos;
93 y = std::sin(dphi)*dsin*dcos;
103 if ( fparticle == NULL )
return;
109 G4double mass = fparticle-> GetPDGMass();
116 vertex-> SetPrimary(primary);
119 anEvent-> AddPrimaryVertex(vertex);
static constexpr double m
virtual void GeneratePrimaries(G4Event *anEvent)
ThreeVector shoot(const G4int Ap, const G4int Af)
static constexpr double cm
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector GenerateBeamDirection() const
static constexpr double twopi
static constexpr double cm
static constexpr double MeV
static G4ParticleTable * GetParticleTable()
static constexpr double MeV