Geant4  10.02.p03
MedicalBeam Class Reference

#include <MedicalBeam.hh>

Inheritance diagram for MedicalBeam:
Collaboration diagram for MedicalBeam:

Public Types

enum  FieldShape {
  SQUARE =0, CIRCLE, kSQUARE =0, kCIRCLE,
  kSQUARE =0, kCIRCLE
}
 
enum  FieldShape {
  SQUARE =0, CIRCLE, kSQUARE =0, kCIRCLE,
  kSQUARE =0, kCIRCLE
}
 
enum  FieldShape {
  SQUARE =0, CIRCLE, kSQUARE =0, kCIRCLE,
  kSQUARE =0, kCIRCLE
}
 

Public Member Functions

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

Protected Member Functions

G4ThreeVector GenerateBeamDirection () const
 

Protected Attributes

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

Private Member Functions

G4ThreeVector GenerateBeamDirection () const
 
G4ThreeVector GenerateBeamDirection () const
 

Private Attributes

G4ParticleDefinitionfparticle
 
G4double fkineticE
 
G4ThreeVector fsourcePosition
 
G4double fSSD
 
FieldShape ffieldShape
 
G4double ffieldXY [2]
 
G4double ffieldR
 

Detailed Description

Member Enumeration Documentation

◆ FieldShape [1/3]

◆ FieldShape [2/3]

◆ FieldShape [3/3]

Constructor & Destructor Documentation

◆ MedicalBeam() [1/3]

MedicalBeam::MedicalBeam ( )

◆ ~MedicalBeam() [1/3]

MedicalBeam::~MedicalBeam ( )

◆ MedicalBeam() [2/3]

MedicalBeam::MedicalBeam ( )

◆ ~MedicalBeam() [2/3]

MedicalBeam::~MedicalBeam ( )

◆ MedicalBeam() [3/3]

MedicalBeam::MedicalBeam ( )

Definition at line 49 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc.

◆ ~MedicalBeam() [3/3]

MedicalBeam::~MedicalBeam ( )

Member Function Documentation

◆ GenerateBeamDirection() [1/3]

G4ThreeVector MedicalBeam::GenerateBeamDirection ( ) const
protected
Here is the caller graph for this function:

◆ GenerateBeamDirection() [2/3]

G4ThreeVector MedicalBeam::GenerateBeamDirection ( ) const
private

◆ GenerateBeamDirection() [3/3]

G4ThreeVector MedicalBeam::GenerateBeamDirection ( ) const
private

Definition at line 70 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc.

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

◆ GeneratePrimaries() [1/3]

virtual void MedicalBeam::GeneratePrimaries ( G4Event anEvent)
virtual

◆ GeneratePrimaries() [2/3]

void MedicalBeam::GeneratePrimaries ( G4Event anEvent)
virtual

Implements G4VUserPrimaryGeneratorAction.

Definition at line 112 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc.

114 {
115  if(particle==0) return;
116 
117  // create a new vertex
119 
120  // momentum
121  G4double mass= particle-> GetPDGMass();
122  G4double p= std::sqrt(sqr(mass+kineticE)-sqr(mass));
125  pmon.x(),
126  pmon.y(),
127  pmon.z());
128  // set primary to vertex
129  vertex-> SetPrimary(primary);
130 
131  // set vertex to event
132  anEvent-> AddPrimaryVertex(vertex);
133 }
G4ThreeVector GenerateBeamDirection() const
double x() const
double y() const
double z() const
T sqr(const T &x)
Definition: templates.hh:145
double G4double
Definition: G4Types.hh:76
#define ns
Definition: xmlparse.cc:614
Here is the call graph for this function:

◆ GeneratePrimaries() [3/3]

virtual void MedicalBeam::GeneratePrimaries ( G4Event anEvent)
virtual

◆ GetFieldR() [1/3]

G4double MedicalBeam::GetFieldR ( ) const

◆ GetFieldR() [2/3]

G4double MedicalBeam::GetFieldR ( ) const

◆ GetFieldR() [3/3]

G4double MedicalBeam::GetFieldR ( ) const
inline

Definition at line 140 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ GetFieldShape() [1/3]

FieldShape MedicalBeam::GetFieldShape ( ) const

◆ GetFieldShape() [2/3]

FieldShape MedicalBeam::GetFieldShape ( ) const

◆ GetFieldShape() [3/3]

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

Definition at line 119 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ GetFieldX() [1/3]

G4double MedicalBeam::GetFieldX ( ) const

◆ GetFieldX() [2/3]

G4double MedicalBeam::GetFieldX ( ) const

◆ GetFieldX() [3/3]

G4double MedicalBeam::GetFieldX ( ) const
inline

Definition at line 131 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ GetFieldY() [1/3]

G4double MedicalBeam::GetFieldY ( ) const

◆ GetFieldY() [2/3]

G4double MedicalBeam::GetFieldY ( ) const

◆ GetFieldY() [3/3]

G4double MedicalBeam::GetFieldY ( ) const
inline

Definition at line 134 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ GetKineticE() [1/3]

G4double MedicalBeam::GetKineticE ( ) const

◆ GetKineticE() [2/3]

G4double MedicalBeam::GetKineticE ( ) const

◆ GetKineticE() [3/3]

G4double MedicalBeam::GetKineticE ( ) const
inline

Definition at line 107 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ GetParticleDefinition() [1/3]

const G4ParticleDefinition* MedicalBeam::GetParticleDefinition ( ) const

◆ GetParticleDefinition() [2/3]

const G4ParticleDefinition* MedicalBeam::GetParticleDefinition ( ) const

◆ GetParticleDefinition() [3/3]

const G4ParticleDefinition * MedicalBeam::GetParticleDefinition ( ) const
inline

◆ GetSourcePosition() [1/3]

G4ThreeVector MedicalBeam::GetSourcePosition ( ) const

◆ GetSourcePosition() [2/3]

G4ThreeVector MedicalBeam::GetSourcePosition ( ) const

◆ GetSourcePosition() [3/3]

G4ThreeVector MedicalBeam::GetSourcePosition ( ) const
inline

Definition at line 113 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ GetSSD() [1/3]

G4double MedicalBeam::GetSSD ( ) const

◆ GetSSD() [2/3]

G4double MedicalBeam::GetSSD ( ) const

◆ GetSSD() [3/3]

G4double MedicalBeam::GetSSD ( ) const
inline

Definition at line 125 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ SetFieldR() [1/3]

void MedicalBeam::SetFieldR ( G4double  r)

◆ SetFieldR() [2/3]

void MedicalBeam::SetFieldR ( G4double  r)

◆ SetFieldR() [3/3]

void MedicalBeam::SetFieldR ( G4double  r)
inline

Definition at line 137 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ SetFieldShape() [1/3]

void MedicalBeam::SetFieldShape ( FieldShape  shape)

◆ SetFieldShape() [2/3]

void MedicalBeam::SetFieldShape ( FieldShape  shape)

◆ SetFieldShape() [3/3]

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

Definition at line 116 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ SetFieldXY() [1/3]

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

◆ SetFieldXY() [2/3]

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

◆ SetFieldXY() [3/3]

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

◆ SetKineticE() [1/3]

void MedicalBeam::SetKineticE ( G4double  e)

◆ SetKineticE() [2/3]

void MedicalBeam::SetKineticE ( G4double  e)

◆ SetKineticE() [3/3]

void MedicalBeam::SetKineticE ( G4double  e)
inline

Definition at line 104 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ SetParticleDefinition() [1/3]

void MedicalBeam::SetParticleDefinition ( G4ParticleDefinition pd)

◆ SetParticleDefinition() [2/3]

void MedicalBeam::SetParticleDefinition ( G4ParticleDefinition pd)

◆ SetParticleDefinition() [3/3]

void MedicalBeam::SetParticleDefinition ( G4ParticleDefinition pd)
inline

◆ SetSourcePosition() [1/3]

void MedicalBeam::SetSourcePosition ( const G4ThreeVector pos)

◆ SetSourcePosition() [2/3]

void MedicalBeam::SetSourcePosition ( const G4ThreeVector pos)

◆ SetSourcePosition() [3/3]

void MedicalBeam::SetSourcePosition ( const G4ThreeVector pos)
inline

Definition at line 110 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

◆ SetSSD() [1/3]

void MedicalBeam::SetSSD ( G4double  ssd)

◆ SetSSD() [2/3]

void MedicalBeam::SetSSD ( G4double  ssd)

◆ SetSSD() [3/3]

void MedicalBeam::SetSSD ( G4double  ssd)
inline

Definition at line 122 of file environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh.

Here is the caller graph for this function:

Member Data Documentation

◆ ffieldR

G4double MedicalBeam::ffieldR
private

◆ ffieldShape

FieldShape MedicalBeam::ffieldShape
private

◆ ffieldXY

G4double MedicalBeam::ffieldXY
private

◆ fieldR

G4double MedicalBeam::fieldR
protected

◆ fieldShape

FieldShape MedicalBeam::fieldShape
protected

◆ fieldXY

G4double MedicalBeam::fieldXY[2]
protected

◆ fkineticE

G4double MedicalBeam::fkineticE
private

◆ fparticle

G4ParticleDefinition * MedicalBeam::fparticle
private

◆ fsourcePosition

G4ThreeVector MedicalBeam::fsourcePosition
private

◆ fSSD

G4double MedicalBeam::fSSD
private

◆ kineticE

G4double MedicalBeam::kineticE
protected

◆ particle

G4ParticleDefinition* MedicalBeam::particle
protected

◆ sourcePosition

G4ThreeVector MedicalBeam::sourcePosition
protected

◆ SSD

G4double MedicalBeam::SSD
protected

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