Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
B5PrimaryGeneratorAction Class Reference

#include <B5PrimaryGeneratorAction.hh>

Inheritance diagram for B5PrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

Public Member Functions

 B5PrimaryGeneratorAction ()
 
virtual ~B5PrimaryGeneratorAction ()
 
virtual void GeneratePrimaries (G4Event *)
 
void SetMomentum (G4double val)
 
G4double GetMomentum () const
 
void SetSigmaMomentum (G4double val)
 
G4double GetSigmaMomentum () const
 
void SetSigmaAngle (G4double val)
 
G4double GetSigmaAngle () const
 
void SetRandomize (G4bool val)
 
G4bool GetRandomize () const
 
- Public Member Functions inherited from G4VUserPrimaryGeneratorAction
 G4VUserPrimaryGeneratorAction ()
 
virtual ~G4VUserPrimaryGeneratorAction ()
 

Detailed Description

Primary generator

A single particle is generated. User can select

Definition at line 51 of file B5PrimaryGeneratorAction.hh.

Constructor & Destructor Documentation

B5PrimaryGeneratorAction::B5PrimaryGeneratorAction ( )

Definition at line 43 of file B5PrimaryGeneratorAction.cc.

References G4ParticleTable::FindParticle(), G4ParticleTable::GetParticleTable(), python.hepunit::m, G4ParticleGun::SetParticleDefinition(), and G4VPrimaryGenerator::SetParticlePosition().

45  fParticleGun(0), fMessenger(0),
46  fPositron(0), fMuon(0), fPion(0), fKaon(0), fProton(0),
47  fMomentum(1000.*MeV),
48  fSigmaMomentum(50.*MeV),
49  fSigmaAngle(2.*deg),
50  fRandomizePrimary(true)
51 {
52  G4int n_particle = 1;
53  fParticleGun = new G4ParticleGun(n_particle);
54 
56  G4String particleName;
57  fPositron = particleTable->FindParticle(particleName="e+");
58  fMuon = particleTable->FindParticle(particleName="mu+");
59  fPion = particleTable->FindParticle(particleName="pi+");
60  fKaon = particleTable->FindParticle(particleName="kaon+");
61  fProton = particleTable->FindParticle(particleName="proton");
62 
63  // default particle kinematics
64  fParticleGun->SetParticlePosition(G4ThreeVector(0.,0.,-8.*m));
65  fParticleGun->SetParticleDefinition(fPositron);
66 
67  // define commands for this class
68  DefineCommands();
69 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
CLHEP::Hep3Vector G4ThreeVector
int G4int
Definition: G4Types.hh:78
void SetParticlePosition(G4ThreeVector aPosition)
static G4ParticleTable * GetParticleTable()
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)
B5PrimaryGeneratorAction::~B5PrimaryGeneratorAction ( )
virtual

Definition at line 73 of file B5PrimaryGeneratorAction.cc.

74 {
75  delete fParticleGun;
76  delete fMessenger;
77 }

Member Function Documentation

void B5PrimaryGeneratorAction::GeneratePrimaries ( G4Event event)
virtual

Implements G4VUserPrimaryGeneratorAction.

Definition at line 81 of file B5PrimaryGeneratorAction.cc.

References G4UniformRand, G4ParticleGun::GeneratePrimaryVertex(), G4ParticleGun::GetParticleDefinition(), G4ParticleDefinition::GetPDGMass(), int(), G4InuclParticleNames::pp, G4ParticleGun::SetParticleDefinition(), G4ParticleGun::SetParticleEnergy(), and G4ParticleGun::SetParticleMomentumDirection().

82 {
83  G4ParticleDefinition* particle;
84 
85  if (fRandomizePrimary)
86  {
87  G4int i = (int)(5.*G4UniformRand());
88  switch(i)
89  {
90  case 0:
91  particle = fPositron;
92  break;
93  case 1:
94  particle = fMuon;
95  break;
96  case 2:
97  particle = fPion;
98  break;
99  case 3:
100  particle = fKaon;
101  break;
102  default:
103  particle = fProton;
104  break;
105  }
106  fParticleGun->SetParticleDefinition(particle);
107  }
108  else
109  {
110  particle = fParticleGun->GetParticleDefinition();
111  }
112 
113  G4double pp = fMomentum + (G4UniformRand()-0.5)*fSigmaMomentum;
114  G4double mass = particle->GetPDGMass();
115  G4double Ekin = std::sqrt(pp*pp+mass*mass)-mass;
116  fParticleGun->SetParticleEnergy(Ekin);
117 
118  G4double angle = (G4UniformRand()-0.5)*fSigmaAngle;
119  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(std::sin(angle),0.,
120  std::cos(angle)));
121 
122  fParticleGun->GeneratePrimaryVertex(event);
123 }
CLHEP::Hep3Vector G4ThreeVector
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
int G4int
Definition: G4Types.hh:78
virtual void GeneratePrimaryVertex(G4Event *evt)
#define G4UniformRand()
Definition: Randomize.hh:87
void SetParticleEnergy(G4double aKineticEnergy)
G4double GetPDGMass() const
G4ParticleDefinition * GetParticleDefinition() const
double G4double
Definition: G4Types.hh:76
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)
G4double B5PrimaryGeneratorAction::GetMomentum ( ) const
inline

Definition at line 60 of file B5PrimaryGeneratorAction.hh.

60 { return fMomentum; }
G4bool B5PrimaryGeneratorAction::GetRandomize ( ) const
inline

Definition at line 69 of file B5PrimaryGeneratorAction.hh.

69 { return fRandomizePrimary; }
G4double B5PrimaryGeneratorAction::GetSigmaAngle ( ) const
inline

Definition at line 66 of file B5PrimaryGeneratorAction.hh.

66 { return fSigmaAngle; }
G4double B5PrimaryGeneratorAction::GetSigmaMomentum ( ) const
inline

Definition at line 63 of file B5PrimaryGeneratorAction.hh.

63 { return fSigmaMomentum; }
void B5PrimaryGeneratorAction::SetMomentum ( G4double  val)
inline

Definition at line 59 of file B5PrimaryGeneratorAction.hh.

59 { fMomentum = val; }
void B5PrimaryGeneratorAction::SetRandomize ( G4bool  val)
inline

Definition at line 68 of file B5PrimaryGeneratorAction.hh.

68 { fRandomizePrimary = val; }
void B5PrimaryGeneratorAction::SetSigmaAngle ( G4double  val)
inline

Definition at line 65 of file B5PrimaryGeneratorAction.hh.

65 { fSigmaAngle = val; }
void B5PrimaryGeneratorAction::SetSigmaMomentum ( G4double  val)
inline

Definition at line 62 of file B5PrimaryGeneratorAction.hh.

62 { fSigmaMomentum = val; }

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