Import Geant4 9.6.0 source tree
This commit is contained in:
@@ -24,8 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4AnnihiToMuPair.cc,v 1.6 2009-11-09 18:24:07 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// ------------ G4AnnihiToMuPair physics process ------
|
||||
// by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002
|
||||
@@ -43,6 +42,8 @@
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BetheBlochNoDeltaModel.cc,v 1.4 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BraggNoDeltaModel.cc,v 1.4 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,8 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4GammaConversionToMuons.cc,v 1.8 2010-10-26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// ------------ G4GammaConversionToMuons physics process ------
|
||||
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
|
||||
@@ -36,6 +35,8 @@
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#include "G4GammaConversionToMuons.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ICRU73NoDeltaModel.cc,v 1.1 2010-06-04 10:23:31 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ee2KChargedModel.cc,v 1.2 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,6 +48,8 @@
|
||||
|
||||
#include "G4ee2KChargedModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ee2KNeutralModel.cc,v 1.2 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,6 +48,8 @@
|
||||
|
||||
#include "G4ee2KNeutralModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4KaonZeroLong.hh"
|
||||
#include "G4KaonZeroShort.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeCrossSections.cc,v 1.7 2008-07-10 18:06:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -48,6 +47,8 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4eeCrossSections.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4PionZero.hh"
|
||||
@@ -195,17 +196,17 @@ G4double G4eeCrossSections::CrossSection2pi(G4double e)
|
||||
complex<G4double> xo(cos(PhOm2Pi),sin(PhOm2Pi));
|
||||
complex<G4double> xf(cos(PhPhi2Pi),sin(PhPhi2Pi));
|
||||
|
||||
G4double s = e*e;
|
||||
G4double s_inv = e*e;
|
||||
complex<G4double> drho = DpRho(e);
|
||||
complex<G4double> dom = DpOm(e);
|
||||
complex<G4double> dphi = DpPhi(e);
|
||||
|
||||
complex<G4double> amp =
|
||||
sqrt(Width2p(s,MsRho,GRho,1.0,MsPi)*MsRho3*BrRhoEe*GRho)*xr/drho
|
||||
+ sqrt(Width2p(s,MsOm,GOm,BrOm2Pi,MsPi)*MsOm3*BrOmEe*GOm)*xo/dom
|
||||
+ sqrt(Width2p(s,MsPhi,GPhi,BrPhi2Pi,MsPi)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
sqrt(Width2p(s_inv,MsRho,GRho,1.0,MsPi)*MsRho3*BrRhoEe*GRho)*xr/drho
|
||||
+ sqrt(Width2p(s_inv,MsOm,GOm,BrOm2Pi,MsPi)*MsOm3*BrOmEe*GOm)*xo/dom
|
||||
+ sqrt(Width2p(s_inv,MsPhi,GPhi,BrPhi2Pi,MsPi)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s);
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s_inv);
|
||||
|
||||
return cross;
|
||||
}
|
||||
@@ -216,15 +217,15 @@ G4double G4eeCrossSections::CrossSection3pi(G4double e)
|
||||
{
|
||||
complex<G4double> xf(cos(PhPhi2Pi),sin(PhPhi));
|
||||
|
||||
G4double s = e*e;
|
||||
G4double s_inv = e*e;
|
||||
complex<G4double> dom = DpOm(e);
|
||||
complex<G4double> dphi = DpPhi(e);
|
||||
|
||||
complex<G4double> amp =
|
||||
sqrt(Width3p(s,MsOm,GOm,BrOm3Pi)*MsOm3*BrOmEe*GOm)/dom
|
||||
+ sqrt(Width3p(s,MsPhi,GPhi,BrPhi3Pi)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
sqrt(Width3p(s_inv,MsOm,GOm,BrOm3Pi)*MsOm3*BrOmEe*GOm)/dom
|
||||
+ sqrt(Width3p(s_inv,MsPhi,GPhi,BrPhi3Pi)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s);
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s_inv);
|
||||
|
||||
return cross;
|
||||
}
|
||||
@@ -235,17 +236,17 @@ G4double G4eeCrossSections::CrossSectionPi0G(G4double e)
|
||||
{
|
||||
complex<G4double> xf(cos(PhPhi),sin(PhPhi));
|
||||
|
||||
G4double s = e*e;
|
||||
G4double s_inv = e*e;
|
||||
complex<G4double> drho = DpRho(e);
|
||||
complex<G4double> dom = DpOm(e);
|
||||
complex<G4double> dphi = DpPhi(e);
|
||||
|
||||
complex<G4double> amp =
|
||||
sqrt(WidthPg(s,MsRho,GRho,BrRhoPi0G,MsPi0)*MsRho3*BrRhoEe*GRho)/drho
|
||||
+ sqrt(WidthPg(s,MsOm,GOm,BrOmPi0G,MsPi0)*MsOm3*BrOmEe*GOm)/dom
|
||||
+ sqrt(WidthPg(s,MsPhi,GPhi,BrPhiPi0G,MsPi0)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
sqrt(WidthPg(s_inv,MsRho,GRho,BrRhoPi0G,MsPi0)*MsRho3*BrRhoEe*GRho)/drho
|
||||
+ sqrt(WidthPg(s_inv,MsOm,GOm,BrOmPi0G,MsPi0)*MsOm3*BrOmEe*GOm)/dom
|
||||
+ sqrt(WidthPg(s_inv,MsPhi,GPhi,BrPhiPi0G,MsPi0)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s);
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s_inv);
|
||||
|
||||
return cross;
|
||||
}
|
||||
@@ -256,17 +257,17 @@ G4double G4eeCrossSections::CrossSectionEtaG(G4double e)
|
||||
{
|
||||
complex<G4double> xf(cos(PhPhi),sin(PhPhi));
|
||||
|
||||
G4double s = e*e;
|
||||
G4double s_inv = e*e;
|
||||
complex<G4double> drho = DpRho(e);
|
||||
complex<G4double> dom = DpOm(e);
|
||||
complex<G4double> dphi = DpPhi(e);
|
||||
|
||||
complex<G4double> amp =
|
||||
sqrt(WidthPg(s,MsRho,GRho,BrRhoEtaG,MsEta)*MsRho3*BrRhoEe*GRho)/drho
|
||||
+ sqrt(WidthPg(s,MsOm,GOm,BrOmEtaG,MsEta)*MsOm3*BrOmEe*GOm)/dom
|
||||
+ sqrt(WidthPg(s,MsPhi,GPhi,BrPhiEtaG,MsEta)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
sqrt(WidthPg(s_inv,MsRho,GRho,BrRhoEtaG,MsEta)*MsRho3*BrRhoEe*GRho)/drho
|
||||
+ sqrt(WidthPg(s_inv,MsOm,GOm,BrOmEtaG,MsEta)*MsOm3*BrOmEe*GOm)/dom
|
||||
+ sqrt(WidthPg(s_inv,MsPhi,GPhi,BrPhiEtaG,MsEta)*MsPhi3*BrPhiEe*GPhi)*xf/dphi;
|
||||
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s);
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s_inv);
|
||||
|
||||
return cross;
|
||||
}
|
||||
@@ -275,13 +276,13 @@ G4double G4eeCrossSections::CrossSectionEtaG(G4double e)
|
||||
|
||||
G4double G4eeCrossSections::CrossSection2Kcharged(G4double e)
|
||||
{
|
||||
G4double s = e*e;
|
||||
G4double s_inv = e*e;
|
||||
complex<G4double> dphi = DpPhi(e);
|
||||
|
||||
complex<G4double> amp =
|
||||
sqrt(Width2p(s,MsPhi,GPhi,BrPhi2Kc,MsKc)*MsPhi3*BrPhiEe*GPhi)/dphi;
|
||||
sqrt(Width2p(s_inv,MsPhi,GPhi,BrPhi2Kc,MsKc)*MsPhi3*BrPhiEe*GPhi)/dphi;
|
||||
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s);
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s_inv);
|
||||
|
||||
return cross;
|
||||
}
|
||||
@@ -290,37 +291,37 @@ G4double G4eeCrossSections::CrossSection2Kcharged(G4double e)
|
||||
|
||||
G4double G4eeCrossSections::CrossSection2Kneutral(G4double e)
|
||||
{
|
||||
G4double s = e*e;
|
||||
G4double s_inv = e*e;
|
||||
complex<G4double> dphi = DpPhi(e);
|
||||
|
||||
complex<G4double> amp =
|
||||
sqrt(Width2p(s,MsPhi,GPhi,BrPhiKsKl,MsKs)*MsPhi3*BrPhiEe*GPhi)/dphi;
|
||||
sqrt(Width2p(s_inv,MsPhi,GPhi,BrPhiKsKl,MsKs)*MsPhi3*BrPhiEe*GPhi)/dphi;
|
||||
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s);
|
||||
G4double cross = 12.0*pi*MeVnb*norm(amp)/(e*s_inv);
|
||||
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4eeCrossSections::Width2p(G4double s, G4double mres,
|
||||
G4double g, G4double br, G4double m)
|
||||
G4double G4eeCrossSections::Width2p(G4double s_inv, G4double mres,
|
||||
G4double gconst, G4double br, G4double mp)
|
||||
{
|
||||
G4double m2 = 4.0*m*m;
|
||||
G4double mp2 = 4.0*mp*mp;
|
||||
G4double s0 = mres*mres;
|
||||
G4double f = (s - m2)/(s0 - m2);
|
||||
G4double f = (s_inv - mp2)/(s0 - mp2);
|
||||
if(f < 0.0) f = 0.0;
|
||||
return g*br*sqrt(f)*f*s0/s;
|
||||
return gconst*br*sqrt(f)*f*s0/s_inv;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4eeCrossSections::Width3p(G4double s, G4double mres,
|
||||
G4double g, G4double br)
|
||||
G4double G4eeCrossSections::Width3p(G4double s_inv, G4double mres,
|
||||
G4double gconst, G4double br)
|
||||
{
|
||||
G4double w = PhaseSpace3p(sqrt(s));
|
||||
G4double w = PhaseSpace3p(sqrt(s_inv));
|
||||
G4double w0= PhaseSpace3p(mres);
|
||||
G4double x = g*br*w/w0;
|
||||
G4double x = gconst*br*w/w0;
|
||||
return x;
|
||||
}
|
||||
|
||||
@@ -343,14 +344,14 @@ G4double G4eeCrossSections::PhaseSpace3p(G4double e)
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4eeCrossSections::WidthPg(G4double s, G4double mres,
|
||||
G4double g, G4double br, G4double m)
|
||||
G4double G4eeCrossSections::WidthPg(G4double s_inv, G4double mres,
|
||||
G4double gconst, G4double br, G4double mp)
|
||||
{
|
||||
G4double m2 = m*m;
|
||||
G4double mp2 = mp*mp;
|
||||
G4double s0 = mres*mres;
|
||||
G4double f = (s - m2)*mres/((s0 - m2)*sqrt(s));
|
||||
G4double f = (s_inv - mp2)*mres/((s0 - mp2)*sqrt(s_inv));
|
||||
if(f < 0.0) f = 0.0;
|
||||
return g*br*f*f*f;
|
||||
return gconst*br*f*f*f;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -365,11 +366,11 @@ G4double G4eeCrossSections::WidthRho(G4double e)
|
||||
|
||||
G4double G4eeCrossSections::WidthOm(G4double e)
|
||||
{
|
||||
G4double s = e*e;
|
||||
G4double w = (Width3p(s, MsOm, GOm, BrOm3Pi) +
|
||||
WidthPg(s, MsOm, GOm, BrOmPi0G, MsPi0) +
|
||||
WidthPg(s, MsOm, GOm, BrOmEtaG, MsEta) +
|
||||
Width2p(s, MsOm, GOm, BrOm2Pi, MsPi)) /
|
||||
G4double s_inv = e*e;
|
||||
G4double w = (Width3p(s_inv, MsOm, GOm, BrOm3Pi) +
|
||||
WidthPg(s_inv, MsOm, GOm, BrOmPi0G, MsPi0) +
|
||||
WidthPg(s_inv, MsOm, GOm, BrOmEtaG, MsEta) +
|
||||
Width2p(s_inv, MsOm, GOm, BrOm2Pi, MsPi)) /
|
||||
(BrOm3Pi+BrOmPi0G+BrOmEtaG+BrOm2Pi);
|
||||
return w;
|
||||
}
|
||||
@@ -378,12 +379,12 @@ G4double G4eeCrossSections::WidthOm(G4double e)
|
||||
|
||||
G4double G4eeCrossSections::WidthPhi(G4double e)
|
||||
{
|
||||
G4double s = e*e;
|
||||
G4double w = (Width3p(s, MsPhi, GPhi, BrPhi3Pi) +
|
||||
WidthPg(s, MsPhi, GPhi, BrPhiPi0G, MsPi0) +
|
||||
WidthPg(s, MsPhi, GPhi, BrPhiEtaG, MsEta) +
|
||||
Width2p(s, MsPhi, GPhi, BrPhi2Kc, MsKc) +
|
||||
Width2p(s, MsPhi, GPhi, BrPhiKsKl, MsKs)) /
|
||||
G4double s_inv = e*e;
|
||||
G4double w = (Width3p(s_inv, MsPhi, GPhi, BrPhi3Pi) +
|
||||
WidthPg(s_inv, MsPhi, GPhi, BrPhiPi0G, MsPi0) +
|
||||
WidthPg(s_inv, MsPhi, GPhi, BrPhiEtaG, MsEta) +
|
||||
Width2p(s_inv, MsPhi, GPhi, BrPhi2Kc, MsKc) +
|
||||
Width2p(s_inv, MsPhi, GPhi, BrPhiKsKl, MsKs)) /
|
||||
(BrPhi3Pi+BrPhiPi0G+BrPhiEtaG+BrPhi2Kc+BrPhiKsKl);
|
||||
return w;
|
||||
}
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeTo3PiModel.cc,v 1.3 2009-11-11 17:13:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,6 +48,7 @@
|
||||
|
||||
#include "G4eeTo3PiModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4PionZero.hh"
|
||||
@@ -131,7 +131,7 @@ void G4eeTo3PiModel::SampleSecondaries(std::vector<G4DynamicParticle*>* newp,
|
||||
|
||||
G4LorentzVector w0, w1, w2;
|
||||
G4ThreeVector dir0, dir1;
|
||||
G4double e0, p0, e2, p, g, m01, m02, m12;
|
||||
G4double e0, p0, e2, p, gg, m01, m02, m12;
|
||||
|
||||
// max pi0 energy
|
||||
G4double edel = 0.5*e*(1.0 + x0*x0 - 4.0*x1*x1) - massPi0;
|
||||
@@ -171,16 +171,16 @@ void G4eeTo3PiModel::SampleSecondaries(std::vector<G4DynamicParticle*>* newp,
|
||||
G4double py = pz1*px2 - pz2*px1;
|
||||
G4double pz = px1*py2 - px2*py1;
|
||||
|
||||
g = (px*px + py*py + pz*pz)*
|
||||
gg = (px*px + py*py + pz*pz)*
|
||||
norm( 1.0/cross->DpRho(m01) + 1.0/cross->DpRho(m02)
|
||||
+ 1.0/cross->DpRho(m12) );
|
||||
if(g > gmax) {
|
||||
if(gg > gmax) {
|
||||
G4cout << "G4eeTo3PiModel::SampleSecondaries WARNING matrix element g= "
|
||||
<< g << " > " << gmax << " (majoranta)" << G4endl;
|
||||
<< gg << " > " << gmax << " (majoranta)" << G4endl;
|
||||
}
|
||||
if(g > gcash) gcash = g;
|
||||
if(gg > gcash) gcash = gg;
|
||||
|
||||
} while( gmax*G4UniformRand() > g );
|
||||
} while( gmax*G4UniformRand() > gg );
|
||||
|
||||
w0.rotateUz(direction);
|
||||
w1.rotateUz(direction);
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToHadrons.cc,v 1.9 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -50,6 +49,7 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4eeToHadrons.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4MaterialCutsCouple.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToHadronsModel.cc,v 1.10 2010-10-26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -51,6 +50,8 @@
|
||||
|
||||
#include "G4eeToHadronsModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Positron.hh"
|
||||
@@ -64,10 +65,10 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
G4eeToHadronsModel::G4eeToHadronsModel(G4Vee2hadrons* m, G4int ver,
|
||||
G4eeToHadronsModel::G4eeToHadronsModel(G4Vee2hadrons* mod, G4int ver,
|
||||
const G4String& nam)
|
||||
: G4VEmModel(nam),
|
||||
model(m),
|
||||
model(mod),
|
||||
crossPerElectron(0),
|
||||
crossBornPerElectron(0),
|
||||
isInitialised(false),
|
||||
@@ -236,10 +237,10 @@ void G4eeToHadronsModel::SampleSecondaries(std::vector<G4DynamicParticle*>* newp
|
||||
G4LorentzVector gLv = gamma->Get4Momentum();
|
||||
G4LorentzVector lv(0.0,0.0,0.0,e);
|
||||
lv -= gLv;
|
||||
G4double m = lv.m();
|
||||
G4double mass = lv.m();
|
||||
G4ThreeVector boost = lv.boostVector();
|
||||
const G4ThreeVector dir = gamma->GetMomentumDirection();
|
||||
model->SampleSecondaries(newp, m, dir);
|
||||
model->SampleSecondaries(newp, mass, dir);
|
||||
G4int np = newp->size();
|
||||
for(G4int j=0; j<np; j++) {
|
||||
G4DynamicParticle* dp = (*newp)[j];
|
||||
@@ -277,12 +278,13 @@ void G4eeToHadronsModel::ComputeCMCrossSectionPerElectron()
|
||||
G4double x2 = x1;
|
||||
G4double s2 = crossBornPerElectron->GetValue(e2, b);
|
||||
G4double w2 = bt*(del*pow(x2,btm1) - 1.0 + 0.5*x2);
|
||||
|
||||
G4double w1;
|
||||
|
||||
for(G4int j=i-2; j>=0; j--) {
|
||||
e1 = crossPerElectron->GetLowEdgeEnergy(j);
|
||||
x1 = 1. - e1/e;
|
||||
G4double s1 = crossBornPerElectron->GetValue(e1, b);
|
||||
G4double w1 = bt*(del*pow(x1,btm1) - 1.0 + 0.5*x1);
|
||||
s1 = crossBornPerElectron->GetValue(e1, b);
|
||||
w1 = bt*(del*pow(x1,btm1) - 1.0 + 0.5*x1);
|
||||
cs += 0.5*(x1 - x2)*(w2*s2 + w1*s1);
|
||||
e2 = e1;
|
||||
x2 = x1;
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToHadronsMultiModel.cc,v 1.9 2010-10-26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,6 +48,8 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4eeToHadronsMultiModel.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4eeToTwoPiModel.hh"
|
||||
#include "G4eeTo3PiModel.hh"
|
||||
#include "G4eeToPGammaModel.hh"
|
||||
@@ -61,8 +62,8 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
G4eeToHadronsMultiModel::G4eeToHadronsMultiModel(G4int ver, const G4String& name)
|
||||
: G4VEmModel(name),
|
||||
G4eeToHadronsMultiModel::G4eeToHadronsMultiModel(G4int ver, const G4String& mname)
|
||||
: G4VEmModel(mname),
|
||||
csFactor(1.0),
|
||||
nModels(0),
|
||||
verbose(ver),
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToPGammaModel.cc,v 1.2 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,6 +48,8 @@
|
||||
|
||||
#include "G4eeToPGammaModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4PionZero.hh"
|
||||
#include "G4Eta.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToTwoPiModel.cc,v 1.7 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,6 +48,8 @@
|
||||
|
||||
#include "G4eeToTwoPiModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hBremsstrahlung.cc,v 1.4 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -46,6 +45,7 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4hBremsstrahlungModel.hh"
|
||||
#include "G4UniversalFluctuation.hh"
|
||||
@@ -62,6 +62,8 @@ G4hBremsstrahlung::G4hBremsstrahlung(const G4String& name)
|
||||
isInitialised(false)
|
||||
{
|
||||
SetProcessSubType(fBremsstrahlung);
|
||||
SetSecondaryParticle(G4Gamma::Gamma());
|
||||
SetIonisation(false);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -96,8 +98,6 @@ void G4hBremsstrahlung::InitialiseEnergyLossProcess(
|
||||
isInitialised = true;
|
||||
|
||||
theParticle = part;
|
||||
SetSecondaryParticle(G4Gamma::Gamma());
|
||||
SetIonisation(false);
|
||||
|
||||
if (!EmModel()) { SetEmModel(new G4hBremsstrahlungModel()); }
|
||||
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hBremsstrahlungModel.cc,v 1.3 2008-07-22 16:15:16 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -50,6 +49,8 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4hBremsstrahlungModel.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hPairProduction.cc,v 1.4 2009-02-20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -46,6 +45,7 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4hPairProduction.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4hPairProductionModel.hh"
|
||||
@@ -63,6 +63,8 @@ G4hPairProduction::G4hPairProduction(const G4String& name)
|
||||
isInitialised(false)
|
||||
{
|
||||
SetProcessSubType(fPairProdByCharged);
|
||||
SetSecondaryParticle(G4Positron::Positron());
|
||||
SetIonisation(false);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -96,9 +98,6 @@ void G4hPairProduction::InitialiseEnergyLossProcess(
|
||||
isInitialised = true;
|
||||
|
||||
theParticle = part;
|
||||
SetSecondaryParticle(G4Positron::Positron());
|
||||
SetIonisation(false);
|
||||
|
||||
if (!EmModel()) { SetEmModel(new G4hPairProductionModel()); }
|
||||
|
||||
G4VEmFluctuationModel* fm = 0;
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hPairProductionModel.cc,v 1.1 2008-03-06 11:47:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -50,6 +49,7 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4hPairProductionModel.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hhIonisation.cc,v 1.11 2010-10-26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -48,13 +47,17 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4hhIonisation.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4BraggNoDeltaModel.hh"
|
||||
#include "G4BetheBlochNoDeltaModel.hh"
|
||||
#include "G4ICRU73NoDeltaModel.hh"
|
||||
#include "G4UniversalFluctuation.hh"
|
||||
#include "G4BohrFluctuations.hh"
|
||||
#include "G4IonFluctuations.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -93,8 +96,8 @@ G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
|
||||
{
|
||||
G4double x = 0.5*cut/electron_mass_c2;
|
||||
G4double y = electron_mass_c2/mass;
|
||||
G4double g = x*y + std::sqrt((1. + x)*(1. + x*y*y));
|
||||
return mass*(g - 1.0);
|
||||
G4double gam = x*y + std::sqrt((1. + x)*(1. + x*y*y));
|
||||
return mass*(gam - 1.0);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -112,36 +115,34 @@ void G4hhIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* par
|
||||
}
|
||||
SetBaseParticle(0);
|
||||
SetSecondaryParticle(G4Electron::Electron());
|
||||
//G4double q = theParticle->GetPDGCharge();
|
||||
mass = theParticle->GetPDGMass();
|
||||
ratio = electron_mass_c2/mass;
|
||||
G4double eth = 2*MeV*mass/proton_mass_c2;
|
||||
flucModel = new G4BohrFluctuations();
|
||||
flucModel = new G4IonFluctuations();
|
||||
|
||||
G4int nm = 1;
|
||||
G4double emin = std::min(MinKinEnergy(), 0.1*eth);
|
||||
G4double emax = std::max(MaxKinEnergy(), 100*eth);
|
||||
|
||||
G4double minKinEnergy = MinKinEnergy();
|
||||
SetMinKinEnergy(emin);
|
||||
SetMaxKinEnergy(emax);
|
||||
G4int bin = G4lrint(G4LossTableManager::Instance()->GetNumberOfBinsPerDecade()
|
||||
*std::log10(emax/emin));
|
||||
SetDEDXBinning(bin);
|
||||
|
||||
if(eth > minKinEnergy) {
|
||||
G4VEmModel* em;
|
||||
em = new G4BraggNoDeltaModel();
|
||||
//if(q > 0.0) { em = new G4BraggNoDeltaModel(); }
|
||||
//else { em = new G4ICRU73NoDeltaModel(); }
|
||||
em->SetLowEnergyLimit(minKinEnergy);
|
||||
em->SetHighEnergyLimit(eth);
|
||||
AddEmModel(nm, em, flucModel);
|
||||
++nm;
|
||||
}
|
||||
G4VEmModel* em = 0;
|
||||
if(part->GetPDGCharge() > 0.0) { em = new G4BraggNoDeltaModel(); }
|
||||
else { em = new G4ICRU73NoDeltaModel(); }
|
||||
em->SetLowEnergyLimit(emin);
|
||||
em->SetHighEnergyLimit(eth);
|
||||
AddEmModel(1, em, flucModel);
|
||||
|
||||
if(eth < MaxKinEnergy()) {
|
||||
G4VEmModel* em1 = new G4BetheBlochNoDeltaModel();
|
||||
em1->SetLowEnergyLimit(std::max(eth,minKinEnergy));
|
||||
em1->SetHighEnergyLimit(MaxKinEnergy());
|
||||
AddEmModel(nm, em1, flucModel);
|
||||
}
|
||||
em = new G4BetheBlochNoDeltaModel();
|
||||
em->SetLowEnergyLimit(eth);
|
||||
em->SetHighEnergyLimit(emax);
|
||||
AddEmModel(1, em, flucModel);
|
||||
|
||||
if(verboseLevel>1) {
|
||||
G4cout << "G4hhIonisation is initialised: Nmodels= " << nm << G4endl;
|
||||
G4cout << "G4hhIonisation is initialised" << G4endl;
|
||||
}
|
||||
isInitialised = true;
|
||||
}
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisation.cc,v 1.11 2010-10-26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -46,10 +45,12 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4mplIonisation.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4mplIonisationModel.hh"
|
||||
#include "G4mplIonisationWithDeltaModel.hh"
|
||||
#include "G4BohrFluctuations.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -61,11 +62,12 @@ G4mplIonisation::G4mplIonisation(G4double mCharge, const G4String& name)
|
||||
isInitialised(false)
|
||||
{
|
||||
// By default classical magnetic charge is used
|
||||
if(magneticCharge == 0.0) magneticCharge = eplus*0.5/fine_structure_const;
|
||||
if(magneticCharge == 0.0) { magneticCharge = eplus*0.5/fine_structure_const; }
|
||||
|
||||
SetVerboseLevel(0);
|
||||
SetProcessSubType(fIonisation);
|
||||
SetStepFunction(0.2, 1*mm);
|
||||
SetSecondaryParticle(G4Electron::Electron());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -82,19 +84,30 @@ G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition&)
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void G4mplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition*,
|
||||
void G4mplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* p,
|
||||
const G4ParticleDefinition*)
|
||||
{
|
||||
if(isInitialised) { return; }
|
||||
|
||||
SetBaseParticle(0);
|
||||
SetSecondaryParticle(G4Electron::Electron());
|
||||
|
||||
G4mplIonisationWithDeltaModel* ion =
|
||||
// monopole model is responsible both for energy loss and fluctuations
|
||||
G4mplIonisationWithDeltaModel* ion =
|
||||
new G4mplIonisationWithDeltaModel(magneticCharge,"PAI");
|
||||
ion->SetLowEnergyLimit(MinKinEnergy());
|
||||
ion->SetHighEnergyLimit(MaxKinEnergy());
|
||||
AddEmModel(0,ion,ion);
|
||||
ion->SetParticle(p);
|
||||
|
||||
// define size of dedx and range tables
|
||||
G4double emin = std::min(MinKinEnergy(),ion->LowEnergyLimit());
|
||||
G4double emax = std::max(MaxKinEnergy(),ion->HighEnergyLimit());
|
||||
G4int bin = G4lrint(G4LossTableManager::Instance()->GetNumberOfBinsPerDecade()
|
||||
*std::log10(emax/emin));
|
||||
ion->SetLowEnergyLimit(emin);
|
||||
ion->SetHighEnergyLimit(emax);
|
||||
SetMinKinEnergy(emin);
|
||||
SetMaxKinEnergy(emax);
|
||||
SetDEDXBinning(bin);
|
||||
|
||||
AddEmModel(1,ion,ion);
|
||||
|
||||
isInitialised = true;
|
||||
}
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisationModel.cc,v 1.8 2010-10-26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -56,6 +55,8 @@
|
||||
|
||||
#include "G4mplIonisationModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
|
||||
@@ -79,8 +80,8 @@ G4mplIonisationModel::G4mplIonisationModel(G4double mCharge, const G4String& nam
|
||||
chargeSquare = magCharge * magCharge;
|
||||
dedxlim = 45.*nmpl*nmpl*GeV*cm2/g;
|
||||
fParticleChange = 0;
|
||||
mass = 0.0;
|
||||
monopole = 0;
|
||||
mass = 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -90,21 +91,35 @@ G4mplIonisationModel::~G4mplIonisationModel()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void G4mplIonisationModel::Initialise(const G4ParticleDefinition* p,
|
||||
const G4DataVector&)
|
||||
void G4mplIonisationModel::SetParticle(const G4ParticleDefinition* p)
|
||||
{
|
||||
monopole = p;
|
||||
mass = monopole->GetPDGMass();
|
||||
G4double emin =
|
||||
std::min(LowEnergyLimit(),0.1*mass*(1/sqrt(1 - betalow*betalow) - 1));
|
||||
G4double emax =
|
||||
std::max(HighEnergyLimit(),10*mass*(1/sqrt(1 - beta2lim) - 1));
|
||||
SetLowEnergyLimit(emin);
|
||||
SetHighEnergyLimit(emax);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void G4mplIonisationModel::Initialise(const G4ParticleDefinition* p,
|
||||
const G4DataVector&)
|
||||
{
|
||||
if(!monopole) { SetParticle(p); }
|
||||
if(!fParticleChange) { fParticleChange = GetParticleChangeForLoss(); }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4mplIonisationModel::ComputeDEDXPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition*,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double kineticEnergy,
|
||||
G4double)
|
||||
{
|
||||
if(!monopole) { SetParticle(p); }
|
||||
G4double tau = kineticEnergy / mass;
|
||||
G4double gam = tau + 1.0;
|
||||
G4double bg2 = tau * (tau + 2.0);
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisationWithDeltaModel.cc,v 1.1 2010-10-26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -56,6 +55,8 @@
|
||||
|
||||
#include "G4mplIonisationWithDeltaModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
#include "G4Electron.hh"
|
||||
@@ -65,7 +66,8 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
G4mplIonisationWithDeltaModel::G4mplIonisationWithDeltaModel(G4double mCharge, const G4String& nam)
|
||||
G4mplIonisationWithDeltaModel::G4mplIonisationWithDeltaModel(G4double mCharge,
|
||||
const G4String& nam)
|
||||
: G4VEmModel(nam),G4VEmFluctuationModel(nam),
|
||||
magCharge(mCharge),
|
||||
twoln10(log(100.0)),
|
||||
@@ -84,8 +86,8 @@ G4mplIonisationWithDeltaModel::G4mplIonisationWithDeltaModel(G4double mCharge, c
|
||||
theElectron = G4Electron::Electron();
|
||||
G4cout << "### Monopole ionisation model with d-electron production, Gmag= "
|
||||
<< magCharge/eplus << G4endl;
|
||||
mass = 0.0;
|
||||
monopole = 0;
|
||||
mass = 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -95,12 +97,25 @@ G4mplIonisationWithDeltaModel::~G4mplIonisationWithDeltaModel()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void G4mplIonisationWithDeltaModel::SetParticle(const G4ParticleDefinition* p)
|
||||
{
|
||||
monopole = p;
|
||||
mass = monopole->GetPDGMass();
|
||||
G4double emin =
|
||||
std::min(LowEnergyLimit(),0.1*mass*(1/sqrt(1 - betalow*betalow) - 1));
|
||||
G4double emax =
|
||||
std::max(HighEnergyLimit(),10*mass*(1/sqrt(1 - beta2lim) - 1));
|
||||
SetLowEnergyLimit(emin);
|
||||
SetHighEnergyLimit(emax);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void
|
||||
G4mplIonisationWithDeltaModel::Initialise(const G4ParticleDefinition* p,
|
||||
const G4DataVector&)
|
||||
{
|
||||
monopole = p;
|
||||
mass = monopole->GetPDGMass();
|
||||
if(!monopole) { SetParticle(p); }
|
||||
if(!fParticleChange) { fParticleChange = GetParticleChangeForLoss(); }
|
||||
}
|
||||
|
||||
@@ -112,6 +127,7 @@ G4mplIonisationWithDeltaModel::ComputeDEDXPerVolume(const G4Material* material,
|
||||
G4double kineticEnergy,
|
||||
G4double maxEnergy)
|
||||
{
|
||||
if(!monopole) { SetParticle(p); }
|
||||
G4double tmax = MaxSecondaryEnergy(p,kineticEnergy);
|
||||
G4double cutEnergy = std::min(tmax, maxEnergy);
|
||||
G4double tau = kineticEnergy / mass;
|
||||
@@ -187,6 +203,7 @@ G4mplIonisationWithDeltaModel::ComputeCrossSectionPerElectron(
|
||||
G4double cutEnergy,
|
||||
G4double maxKinEnergy)
|
||||
{
|
||||
if(!monopole) { SetParticle(p); }
|
||||
G4double cross = 0.0;
|
||||
G4double tmax = MaxSecondaryEnergy(p, kineticEnergy);
|
||||
G4double maxEnergy = min(tmax,maxKinEnergy);
|
||||
|
||||
Reference in New Issue
Block a user