-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerator.cc
96 lines (73 loc) · 3.14 KB
/
generator.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "generator.hh"
// Primary particle generator constuctor and destructor //
MyPrimaryGenerator::MyPrimaryGenerator()
{
fParticleGun = new G4ParticleGun(1);
G4ParticleTable *particleTable = G4ParticleTable::GetParticleTable();
G4String particleName="geantino";
G4ParticleDefinition *particle = particleTable->FindParticle("geantino"); // Sets prim .particle as GEANTINO ///
G4ThreeVector pos(0.,0.,-5.*cm); // Position for particle gun
G4ThreeVector mom(0.,0.,1.); // Momentum direction vector for prim. particle
fParticleGun->SetParticlePosition(pos); // Particle Position
fParticleGun->SetParticleMomentumDirection(mom); // Particle Momentum Direction
fParticleGun->SetParticleMomentum(0.*keV); // Particle Momentum magnitude
fParticleGun->SetParticleDefinition(particle); // Sets particle as GEANTINO prev. deffined
}
MyPrimaryGenerator::~MyPrimaryGenerator()
{
delete fParticleGun;
}
/// Generate primary particle as a radioactive punctual source ///
/*
void MyPrimaryGenerator::GeneratePrimaries(G4Event *anEvent)
{
G4ParticleDefinition *particle = fParticleGun->GetParticleDefinition();
if(particle == G4Geantino::Geantino())
{
// Cobalt-60 source //
//G4int Z = 27;
//G4int A = 60;
// Sb-117 source //
//G4int Z = 51;
//G4int A = 117;
// Ra-226 source //
G4int Z = 88;
G4int A = 226;
G4double charge = 0.;
G4double energy = 0.;
G4ParticleDefinition *ion = G4IonTable::GetIonTable()->GetIon(Z, A, energy);
fParticleGun->SetParticleDefinition(ion);
fParticleGun->SetParticleCharge(charge);
}
fParticleGun->GeneratePrimaryVertex(anEvent);
}
/// /// /// /// /// /// /// /// /// /// /// ///
*/
/* /// ************* Generation of primary GAMMAS *********** ///
void MyPrimaryGenerator::GeneratePrimaries(G4Event *anEvent)
{
G4ParticleDefinition *particle = fParticleGun->GetParticleDefinition();
if(particle == G4Geantino::Geantino())
{
G4ParticleTable *particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition *gamma = particleTable->FindParticle("gamma");
fParticleGun->SetParticleMomentum(135.*MeV);
fParticleGun->SetParticleDefinition(gamma);
}
fParticleGun->GeneratePrimaryVertex(anEvent);
}
/// ********************************************************* /// */
/// ************* Generation of primary ALPHAS *********** ///
void MyPrimaryGenerator::GeneratePrimaries(G4Event *anEvent)
{
G4ParticleDefinition *particle = fParticleGun->GetParticleDefinition();
if(particle == G4Geantino::Geantino())
{
G4ParticleTable *particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition *alpha = particleTable->FindParticle("isalpha");
fParticleGun->SetParticleMomentum(2.*MeV);
fParticleGun->SetParticleDefinition(alpha);
}
fParticleGun->GeneratePrimaryVertex(anEvent);
}
/// ********************************************************* ///