Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4eeToPGammaModel Class Reference

#include <G4eeToPGammaModel.hh>

Inheritance diagram for G4eeToPGammaModel:
Collaboration diagram for G4eeToPGammaModel:

Public Member Functions

 G4eeToPGammaModel (G4eeCrossSections *, const G4String &, G4double, G4double)
 
virtual ~G4eeToPGammaModel ()
 
virtual G4double PeakEnergy () const override
 
virtual G4double ComputeCrossSection (G4double) const override
 
virtual void SampleSecondaries (std::vector< G4DynamicParticle * > *, G4double, const G4ThreeVector &) override
 
- Public Member Functions inherited from G4Vee2hadrons
 G4Vee2hadrons (G4eeCrossSections *cr, G4double vlowEnergy, G4double vhighEnergy, G4double vdelta)
 
virtual ~G4Vee2hadrons ()
 
G4PhysicsVectorPhysicsVector () const
 
G4double LowEnergy () const
 
G4double HighEnergy () const
 

Additional Inherited Members

- Protected Attributes inherited from G4Vee2hadrons
G4eeCrossSectionscross
 

Detailed Description

Definition at line 60 of file G4eeToPGammaModel.hh.

Constructor & Destructor Documentation

G4eeToPGammaModel::G4eeToPGammaModel ( G4eeCrossSections cr,
const G4String npart,
G4double  maxkinEnergy,
G4double  binWidth 
)
explicit

Definition at line 65 of file G4eeToPGammaModel.cc.

69 : G4Vee2hadrons(cr,
70  npart=="pi0" ? 782.62*MeV:1019.46*MeV,
71  maxkinEnergy,
72  binWidth)
73 {
74  G4cout << "####G4eeToPGammaModel & particle:" << npart
75  << "####" << G4endl;
76 
77  pi0 = G4PionZero::PionZero();
78  if(npart == "pi0") {
79  massR = 782.62*MeV;
80  particle = pi0;
81  } else {
82  massR = 1019.46*MeV;
83  particle = G4Eta::Eta();
84  }
85  massP = particle->GetPDGMass();
86 
87 }
static G4Eta * Eta()
Definition: G4Eta.cc:109
G4GLOB_DLL std::ostream G4cout
static G4PionZero * PionZero()
Definition: G4PionZero.cc:108
G4Vee2hadrons(G4eeCrossSections *cr, G4double vlowEnergy, G4double vhighEnergy, G4double vdelta)
G4double GetPDGMass() const
#define G4endl
Definition: G4ios.hh:61
static constexpr double MeV
Definition: G4SIunits.hh:214

Here is the call graph for this function:

G4eeToPGammaModel::~G4eeToPGammaModel ( )
virtual

Definition at line 91 of file G4eeToPGammaModel.cc.

92 {}

Member Function Documentation

G4double G4eeToPGammaModel::ComputeCrossSection ( G4double  e) const
overridevirtual

Implements G4Vee2hadrons.

Definition at line 103 of file G4eeToPGammaModel.cc.

104 {
105  G4double xs;
106  if(particle == pi0) xs = cross->CrossSectionPi0G(e);
107  else xs = cross->CrossSectionEtaG(e);
108  return xs;
109 }
G4double CrossSectionEtaG(G4double)
G4double CrossSectionPi0G(G4double)
G4eeCrossSections * cross
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double G4eeToPGammaModel::PeakEnergy ( ) const
overridevirtual

Implements G4Vee2hadrons.

Definition at line 96 of file G4eeToPGammaModel.cc.

97 {
98  return massR;
99 }
void G4eeToPGammaModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  newp,
G4double  e,
const G4ThreeVector direction 
)
overridevirtual

Implements G4Vee2hadrons.

Definition at line 113 of file G4eeToPGammaModel.cc.

115 {
116  G4double egam = 0.5*e*(1.0 - massP*massP/(massR*massR));
117  G4double tkin = e - egam - massP;
118  if(tkin < 0.0) tkin = 0.0;
119  G4double cost;
120  do {
121  cost = 2.0*G4UniformRand() - 1.0;
122  // Loop checking, 07-Aug-2015, Vladimir Ivanchenko
123  } while( 2.0*G4UniformRand() > 1.0 + cost*cost );
124 
125  G4double sint = sqrt(1.0 - cost*cost);
126  G4double phi = twopi * G4UniformRand();
127 
128  G4ThreeVector dir(sint*cos(phi),sint*sin(phi), cost);
129  dir.rotateUz(direction);
130 
131  // create G4DynamicParticle objects
132  G4DynamicParticle* p1 =
133  new G4DynamicParticle(particle,dir,tkin);
134  G4DynamicParticle* p2 =
135  new G4DynamicParticle(G4Gamma::Gamma(),-dir,egam);
136  newp->push_back(p1);
137  newp->push_back(p2);
138 }
static constexpr double twopi
Definition: G4SIunits.hh:76
#define G4UniformRand()
Definition: Randomize.hh:97
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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