GEMC  2.3
Geant4 Monte-Carlo Framework
particle.cc
Go to the documentation of this file.
1 // gemc headers
2 #include "particleFactory.h"
3 
4 // geant4 headers
5 #include "G4ParticleTable.hh"
6 #include "Randomize.hh"
7 
8 
9 gparticle::gparticle(G4ThreeVector vrt, G4ThreeVector mom, int id, G4ThreeVector polar)
10 {
11  v = vrt;
12  p = mom;
13  pid = id;
14 
15  G4ParticleTable *particleTable = G4ParticleTable::GetParticleTable();
16  G4ParticleDefinition *pdef = particleTable->FindParticle(id);
17 
18  name = pdef->GetParticleName();
19 
20  // setting polarization
21  double polDeg = polar.x();
22  double polTheta = polar.y();
23  double polPhi = polar.z();
24 
25  double partPol = 0.0;
26  double polCast = 100.0 * G4UniformRand();
27  if( polCast <= polDeg ) partPol = 1;
28  double polX = partPol * sin( polTheta/rad ) * cos( polPhi/rad );
29  double polY = partPol * sin( polTheta/rad ) * sin( polPhi/rad );
30  double polZ = partPol * cos( polTheta/rad );
31  polarization = G4ThreeVector( polX, polY, polZ );
32 
33 }
34 
35 
36 
37 
39 ostream &operator<<(ostream &stream, gparticle p)
40 {
41  cout << " - Particle <" << p.name << "> (id " << p.pid << ")"
42  << " momentum: " << p.p
43  << " vertex: " << p.v
44  << " polarization: " << p.polarization
45  << " start time: " << p.vtime << endl;
46 
47  return stream;
48 }
49 
50 
51 
friend ostream & operator<<(ostream &stream, gparticle)
G4ThreeVector v
Definition: particle.h:26
gparticle(G4ThreeVector vertex, G4ThreeVector mom, int id, G4ThreeVector polar)
Overloaded "<<" for gparticle class. Dumps infos on screen.
Definition: particle.cc:9
int pid
Definition: particle.h:30
G4ThreeVector polarization
Definition: particle.h:28
G4ThreeVector p
Definition: particle.h:27
string name
Definition: particle.h:31
double vtime
Overloaded "<<" for gparticle class. Dumps infos on screen.
Definition: particle.h:35