Geant4-11
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
MedicalBeam Class Reference

#include <MedicalBeam.hh>

Inheritance diagram for MedicalBeam:
G4VUserPrimaryGeneratorAction

Public Types

enum  FieldShape { SQUARE =0 , CIRCLE }
 

Public Member Functions

virtual void GeneratePrimaries (G4Event *anEvent)
 
G4double GetFieldR () const
 
FieldShape GetFieldShape () const
 
G4double GetFieldX () const
 
G4double GetFieldY () const
 
G4double GetKineticE () const
 
const G4ParticleDefinitionGetParticleDefinition () const
 
G4ThreeVector GetSourcePosition () const
 
G4double GetSSD () const
 
 MedicalBeam ()
 
void SetFieldR (G4double r)
 
void SetFieldShape (FieldShape shape)
 
void SetFieldXY (G4double fx, G4double fy)
 
void SetKineticE (G4double e)
 
void SetParticleDefinition (G4ParticleDefinition *pd)
 
void SetSourcePosition (const G4ThreeVector &pos)
 
void SetSSD (G4double ssd)
 
 ~MedicalBeam ()
 

Protected Member Functions

G4ThreeVector GenerateBeamDirection () const
 

Protected Attributes

G4double fieldR
 
FieldShape fieldShape
 
G4double fieldXY [2]
 
G4double kineticE
 
G4ParticleDefinitionparticle
 
G4ThreeVector sourcePosition
 
G4double SSD
 

Detailed Description

Definition at line 45 of file MedicalBeam.hh.

Member Enumeration Documentation

◆ FieldShape

Enumerator
SQUARE 
CIRCLE 

Definition at line 47 of file MedicalBeam.hh.

Constructor & Destructor Documentation

◆ MedicalBeam()

MedicalBeam::MedicalBeam ( )

Definition at line 48 of file MedicalBeam.cc.

49 : particle(0),
50 kineticE(1.*MeV),
52 SSD(1.*m),
54 fieldR(10.*cm)
56{
57 fieldXY[0]= fieldXY[1]= 10.*cm;
58}
static constexpr double m
Definition: G4SIunits.hh:109
static constexpr double MeV
Definition: G4SIunits.hh:200
static constexpr double cm
Definition: G4SIunits.hh:99
CLHEP::Hep3Vector G4ThreeVector
G4double kineticE
Definition: MedicalBeam.hh:51
G4double fieldXY[2]
Definition: MedicalBeam.hh:56
G4double SSD
Definition: MedicalBeam.hh:54
G4ThreeVector sourcePosition
Definition: MedicalBeam.hh:52
G4ParticleDefinition * particle
Definition: MedicalBeam.hh:50
G4double fieldR
Definition: MedicalBeam.hh:57
FieldShape fieldShape
Definition: MedicalBeam.hh:55

References cm, and fieldXY.

◆ ~MedicalBeam()

MedicalBeam::~MedicalBeam ( )

Definition at line 62 of file MedicalBeam.cc.

64{
65}

Member Function Documentation

◆ GenerateBeamDirection()

G4ThreeVector MedicalBeam::GenerateBeamDirection ( ) const
protected

Definition at line 69 of file MedicalBeam.cc.

71{
72 // uniform distribution in a limitted solid angle
73 G4double dr;
75 dr= std::sqrt(sqr(fieldXY[0]/2.)+sqr(fieldXY[1]/2.));
76 } else {
77 dr= fieldR;
78 }
79
80 G4double sin0= dr/SSD;
81 G4double cos0= std::sqrt(1.-sqr(sin0));
82
85
86 G4double xmax, ymax;
88 xmax= fieldXY[0]/2./SSD;
89 ymax= fieldXY[1]/2./SSD;
90 } else {
91 xmax= ymax= DBL_MAX-1.;
92 }
93
94 G4double dcos{0.0};
95 G4double dsin{0.0};
96 G4double dphi{0.0};
97
98 while(! (std::abs(x)< xmax && std::abs(y)< ymax) ) {
99 dcos= RandFlat::shoot(cos0, 1.);
100 dsin= std::sqrt(1.-sqr(dcos));
101 dphi= RandFlat::shoot(0., twopi);
102
103 x= std::cos(dphi)*dsin*dcos;
104 y= std::sin(dphi)*dsin*dcos;
105 }
106
107 G4double z= dcos;
108
109 return G4ThreeVector(x,y,z);
110}
static constexpr double twopi
Definition: G4SIunits.hh:56
double G4double
Definition: G4Types.hh:83
ThreeVector shoot(const G4int Ap, const G4int Af)
T sqr(const T &x)
Definition: templates.hh:128
#define DBL_MAX
Definition: templates.hh:62

References DBL_MAX, G4INCL::DeJongSpin::shoot(), sqr(), SQUARE, and twopi.

◆ GeneratePrimaries()

void MedicalBeam::GeneratePrimaries ( G4Event anEvent)
virtual

Implements G4VUserPrimaryGeneratorAction.

Definition at line 114 of file MedicalBeam.cc.

116{
117 if(particle==0) return;
118
119 // create a new vertex
121
122 // momentum
123 G4double mass= particle-> GetPDGMass();
124 G4double p= std::sqrt(sqr(mass+kineticE)-sqr(mass));
127 pmon.x(),
128 pmon.y(),
129 pmon.z());
130 // set primary to vertex
131 vertex-> SetPrimary(primary);
132
133 // set vertex to event
134 anEvent-> AddPrimaryVertex(vertex);
135}
double z() const
double x() const
double y() const
G4ThreeVector GenerateBeamDirection() const
Definition: MedicalBeam.cc:69
#define ns
Definition: xmlparse.cc:614

References ns, sqr(), CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

◆ GetFieldR()

G4double MedicalBeam::GetFieldR ( ) const
inline

Definition at line 139 of file MedicalBeam.hh.

140{ return fieldR; }

References fieldR.

Referenced by BOOST_PYTHON_MODULE().

◆ GetFieldShape()

MedicalBeam::FieldShape MedicalBeam::GetFieldShape ( ) const
inline

Definition at line 118 of file MedicalBeam.hh.

119{ return fieldShape; }

References fieldShape.

Referenced by BOOST_PYTHON_MODULE().

◆ GetFieldX()

G4double MedicalBeam::GetFieldX ( ) const
inline

Definition at line 130 of file MedicalBeam.hh.

131{ return fieldXY[0]; }

References fieldXY.

Referenced by BOOST_PYTHON_MODULE().

◆ GetFieldY()

G4double MedicalBeam::GetFieldY ( ) const
inline

Definition at line 133 of file MedicalBeam.hh.

134{ return fieldXY[1]; }

References fieldXY.

Referenced by BOOST_PYTHON_MODULE().

◆ GetKineticE()

G4double MedicalBeam::GetKineticE ( ) const
inline

Definition at line 106 of file MedicalBeam.hh.

107{ return kineticE; }

References kineticE.

Referenced by BOOST_PYTHON_MODULE().

◆ GetParticleDefinition()

const G4ParticleDefinition * MedicalBeam::GetParticleDefinition ( ) const
inline

Definition at line 100 of file MedicalBeam.hh.

101{ return particle; }

References particle.

◆ GetSourcePosition()

G4ThreeVector MedicalBeam::GetSourcePosition ( ) const
inline

Definition at line 112 of file MedicalBeam.hh.

113{ return sourcePosition; }

References sourcePosition.

Referenced by BOOST_PYTHON_MODULE().

◆ GetSSD()

G4double MedicalBeam::GetSSD ( ) const
inline

Definition at line 124 of file MedicalBeam.hh.

125{ return SSD; }

References SSD.

Referenced by BOOST_PYTHON_MODULE().

◆ SetFieldR()

void MedicalBeam::SetFieldR ( G4double  r)
inline

Definition at line 136 of file MedicalBeam.hh.

137{ fieldR= r; }

References fieldR.

Referenced by BOOST_PYTHON_MODULE().

◆ SetFieldShape()

void MedicalBeam::SetFieldShape ( MedicalBeam::FieldShape  shape)
inline

Definition at line 115 of file MedicalBeam.hh.

116{ fieldShape= shape; }

References fieldShape.

Referenced by BOOST_PYTHON_MODULE().

◆ SetFieldXY()

void MedicalBeam::SetFieldXY ( G4double  fx,
G4double  fy 
)
inline

Definition at line 127 of file MedicalBeam.hh.

128{ fieldXY[0]= fx; fieldXY[1]= fy; }

References fieldXY.

◆ SetKineticE()

void MedicalBeam::SetKineticE ( G4double  e)
inline

Definition at line 103 of file MedicalBeam.hh.

104{ kineticE= e; }

References kineticE.

Referenced by BOOST_PYTHON_MODULE().

◆ SetParticleDefinition()

void MedicalBeam::SetParticleDefinition ( G4ParticleDefinition pd)
inline

Definition at line 97 of file MedicalBeam.hh.

98{ particle= pd; }

References particle.

◆ SetSourcePosition()

void MedicalBeam::SetSourcePosition ( const G4ThreeVector pos)
inline

Definition at line 109 of file MedicalBeam.hh.

static const G4double pos

References pos, and sourcePosition.

Referenced by BOOST_PYTHON_MODULE().

◆ SetSSD()

void MedicalBeam::SetSSD ( G4double  ssd)
inline

Definition at line 121 of file MedicalBeam.hh.

122{ SSD= ssd; }

References SSD.

Referenced by BOOST_PYTHON_MODULE().

Field Documentation

◆ fieldR

G4double MedicalBeam::fieldR
protected

Definition at line 57 of file MedicalBeam.hh.

Referenced by GetFieldR(), and SetFieldR().

◆ fieldShape

FieldShape MedicalBeam::fieldShape
protected

Definition at line 55 of file MedicalBeam.hh.

Referenced by GetFieldShape(), and SetFieldShape().

◆ fieldXY

G4double MedicalBeam::fieldXY[2]
protected

Definition at line 56 of file MedicalBeam.hh.

Referenced by GetFieldX(), GetFieldY(), MedicalBeam(), and SetFieldXY().

◆ kineticE

G4double MedicalBeam::kineticE
protected

Definition at line 51 of file MedicalBeam.hh.

Referenced by GetKineticE(), mcscore.MCParticle::printout(), and SetKineticE().

◆ particle

G4ParticleDefinition* MedicalBeam::particle
protected

◆ sourcePosition

G4ThreeVector MedicalBeam::sourcePosition
protected

Definition at line 52 of file MedicalBeam.hh.

Referenced by GetSourcePosition(), and SetSourcePosition().

◆ SSD

G4double MedicalBeam::SSD
protected

Definition at line 54 of file MedicalBeam.hh.

Referenced by GetSSD(), and SetSSD().


The documentation for this class was generated from the following files: