Geant4-11
Public Member Functions | Protected Attributes | Private Attributes
G4eeTo3PiModel Class Reference

#include <G4eeTo3PiModel.hh>

Inheritance diagram for G4eeTo3PiModel:
G4Vee2hadrons

Public Member Functions

G4double ComputeCrossSection (G4double) const override
 
 G4eeTo3PiModel (const G4eeTo3PiModel &)=delete
 
 G4eeTo3PiModel (G4eeCrossSections *, G4double, G4double)
 
G4double HighEnergy () const
 
G4double LowEnergy () const
 
G4eeTo3PiModeloperator= (const G4eeTo3PiModel &right)=delete
 
G4double PeakEnergy () const override
 
G4PhysicsVectorPhysicsVector () const
 
void SampleSecondaries (std::vector< G4DynamicParticle * > *, G4double, const G4ThreeVector &) override
 
 ~G4eeTo3PiModel () override
 

Protected Attributes

G4eeCrossSectionscross
 

Private Attributes

G4double delta
 
G4double gmax
 
G4double highEnergy
 
G4double lowEnergy
 
G4double massOm
 
G4double massPhi
 
G4double massPi
 
G4double massPi0
 

Detailed Description

Definition at line 58 of file G4eeTo3PiModel.hh.

Constructor & Destructor Documentation

◆ G4eeTo3PiModel() [1/2]

G4eeTo3PiModel::G4eeTo3PiModel ( G4eeCrossSections cr,
G4double  maxkinEnergy,
G4double  binWidth 
)
explicit

Definition at line 65 of file G4eeTo3PiModel.cc.

68: G4Vee2hadrons(cr,
69 0.41612*GeV, //threshold
70 maxkinEnergy,
71 binWidth)
72{
73 G4cout << "####G4eeTo3PiModel####" << G4endl;
74
77 massOm = 782.62*MeV;
78 massPhi = 1019.46*MeV;
79 gmax = 3.0e-8;
80}
static constexpr double GeV
Definition: G4SIunits.hh:203
static constexpr double MeV
Definition: G4SIunits.hh:200
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
static G4PionZero * PionZero()
Definition: G4PionZero.cc:107
G4Vee2hadrons(G4eeCrossSections *cr, G4double vlowEnergy, G4double vhighEnergy, G4double vdelta)

References G4cout, G4endl, G4ParticleDefinition::GetPDGMass(), gmax, massOm, massPhi, massPi, massPi0, MeV, G4PionPlus::PionPlus(), and G4PionZero::PionZero().

◆ ~G4eeTo3PiModel()

G4eeTo3PiModel::~G4eeTo3PiModel ( )
override

Definition at line 84 of file G4eeTo3PiModel.cc.

85{}

◆ G4eeTo3PiModel() [2/2]

G4eeTo3PiModel::G4eeTo3PiModel ( const G4eeTo3PiModel )
delete

Member Function Documentation

◆ ComputeCrossSection()

G4double G4eeTo3PiModel::ComputeCrossSection ( G4double  e) const
overridevirtual

Implements G4Vee2hadrons.

Definition at line 98 of file G4eeTo3PiModel.cc.

99{
100 return cross->CrossSection3pi(e);
101}
G4eeCrossSections * cross
G4double CrossSection3pi(G4double)

References G4Vee2hadrons::cross, and G4eeCrossSections::CrossSection3pi().

◆ HighEnergy()

G4double G4Vee2hadrons::HighEnergy ( ) const
inlineinherited

◆ LowEnergy()

G4double G4Vee2hadrons::LowEnergy ( ) const
inlineinherited

Definition at line 93 of file G4Vee2hadrons.hh.

93{return lowEnergy;};
G4double lowEnergy

References G4Vee2hadrons::lowEnergy.

Referenced by G4eeToHadronsMultiModel::AddEEModel(), and G4eeToHadronsModel::Initialise().

◆ operator=()

G4eeTo3PiModel & G4eeTo3PiModel::operator= ( const G4eeTo3PiModel right)
delete

◆ PeakEnergy()

G4double G4eeTo3PiModel::PeakEnergy ( ) const
overridevirtual

Implements G4Vee2hadrons.

Definition at line 89 of file G4eeTo3PiModel.cc.

90{
91 G4double e = massOm;
92 if(HighEnergy() > massPhi) { e = massPhi; }
93 return e;
94}
double G4double
Definition: G4Types.hh:83
G4double HighEnergy() const

References G4Vee2hadrons::HighEnergy(), massOm, and massPhi.

◆ PhysicsVector()

G4PhysicsVector * G4Vee2hadrons::PhysicsVector ( ) const
inlineinherited

◆ SampleSecondaries()

void G4eeTo3PiModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  newp,
G4double  e,
const G4ThreeVector direction 
)
overridevirtual

Implements G4Vee2hadrons.

Definition at line 105 of file G4eeTo3PiModel.cc.

107{
108
109 G4double x0 = massPi0/e;
110 G4double x1 = massPi/e;
111
112 G4LorentzVector w0(0.,0.,0.,0.), w1(0.,0.,0.,0.), w2(0.,0.,0.,0.);
113 G4ThreeVector dir0, dir1;
114 G4double e0, p0, e2, p, gg, m01, m02, m12;
115
116 // max pi0 energy
117 G4double edel = 0.5*e*(1.0 + x0*x0 - 4.0*x1*x1) - massPi0;
118
119 const G4int nmax = 200;
120 G4int nn = 0;
121 do {
122 ++nn;
123 // pi0 sample
124 e0 = edel*G4UniformRand() + massPi0;
125 p0 = sqrt(e0*e0 - massPi0*massPi0);
126 dir0 = G4RandomDirection();
127 w0 = G4LorentzVector(p0*dir0.x(),p0*dir0.y(),p0*dir0.z(),e0);
128
129 // pi+pi- pair
130 w1 = G4LorentzVector(-p0*dir0.x(),-p0*dir0.y(),-p0*dir0.z(),e-e0);
131 G4ThreeVector bst = w1.boostVector();
132 e2 = 0.25*w1.m2();
133
134 // pi+
135 p = sqrt(e2 - massPi*massPi);
136 dir1 = G4RandomDirection();
137 w2 = G4LorentzVector(p*dir1.x(),p*dir1.y(),p*dir1.z(),sqrt(e2));
138 // pi-
139 w1.set(-w2.px(), -w2.py(), -w2.pz(), w2.e());
140
141 w1.boost(bst);
142 w2.boost(bst);
143
144 G4double px2 = w2.x();
145 G4double py2 = w2.y();
146 G4double pz2 = w2.z();
147
148 G4double px1 = w1.x();
149 G4double py1 = w1.y();
150 G4double pz1 = w1.z();
151
152 m01 = w0*w1;
153 m02 = w0*w2;
154 m12 = w1*w2;
155
156 G4double px = py1*pz2 - py2*pz1;
157 G4double py = pz1*px2 - pz2*px1;
158 G4double pz = px1*py2 - px2*py1;
159
160 gg = (px*px + py*py + pz*pz)*
161 norm( 1.0/cross->DpRho(m01) + 1.0/cross->DpRho(m02)
162 + 1.0/cross->DpRho(m12) );
163
164 if(gg > gmax) {
165 G4cout << "G4eeTo3PiModel::SampleSecondaries WARNING matrix element g= "
166 << gg << " > " << gmax << " (majoranta)" << G4endl;
167 gmax = gg;
168 }
169 // Loop checking, 07-Aug-2015, Vladimir Ivanchenko
170 } while( gmax*G4UniformRand() > gg || nn < nmax);
171
172 w0.rotateUz(direction);
173 w1.rotateUz(direction);
174 w2.rotateUz(direction);
175
176 // create G4DynamicParticle objects
177 G4DynamicParticle* dp0 =
179 G4DynamicParticle* dp1 =
181 G4DynamicParticle* dp2 =
183 newp->push_back(dp0);
184 newp->push_back(dp1);
185 newp->push_back(dp2);
186}
static const G4double e2[44]
CLHEP::HepLorentzVector G4LorentzVector
G4ThreeVector G4RandomDirection()
#define G4UniformRand()
Definition: Randomize.hh:52
double z() const
double x() const
double y() const
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
std::complex< G4double > DpRho(G4double e)

References CLHEP::HepLorentzVector::boost(), G4Vee2hadrons::cross, G4eeCrossSections::DpRho(), CLHEP::HepLorentzVector::e(), e2, G4cout, G4endl, G4RandomDirection(), G4UniformRand, gmax, massPi, massPi0, G4InuclParticleNames::nn, G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), G4PionZero::PionZero(), CLHEP::HepLorentzVector::px(), CLHEP::HepLorentzVector::py(), CLHEP::HepLorentzVector::pz(), CLHEP::HepLorentzVector::rotateUz(), CLHEP::HepLorentzVector::x(), CLHEP::Hep3Vector::x(), CLHEP::HepLorentzVector::y(), CLHEP::Hep3Vector::y(), CLHEP::HepLorentzVector::z(), and CLHEP::Hep3Vector::z().

Field Documentation

◆ cross

G4eeCrossSections* G4Vee2hadrons::cross
protectedinherited

◆ delta

G4double G4Vee2hadrons::delta
privateinherited

Definition at line 106 of file G4Vee2hadrons.hh.

Referenced by G4Vee2hadrons::G4Vee2hadrons(), and G4Vee2hadrons::PhysicsVector().

◆ gmax

G4double G4eeTo3PiModel::gmax
private

Definition at line 84 of file G4eeTo3PiModel.hh.

Referenced by G4eeTo3PiModel(), and SampleSecondaries().

◆ highEnergy

G4double G4Vee2hadrons::highEnergy
privateinherited

◆ lowEnergy

G4double G4Vee2hadrons::lowEnergy
privateinherited

◆ massOm

G4double G4eeTo3PiModel::massOm
private

Definition at line 82 of file G4eeTo3PiModel.hh.

Referenced by G4eeTo3PiModel(), and PeakEnergy().

◆ massPhi

G4double G4eeTo3PiModel::massPhi
private

Definition at line 83 of file G4eeTo3PiModel.hh.

Referenced by G4eeTo3PiModel(), and PeakEnergy().

◆ massPi

G4double G4eeTo3PiModel::massPi
private

Definition at line 80 of file G4eeTo3PiModel.hh.

Referenced by G4eeTo3PiModel(), and SampleSecondaries().

◆ massPi0

G4double G4eeTo3PiModel::massPi0
private

Definition at line 81 of file G4eeTo3PiModel.hh.

Referenced by G4eeTo3PiModel(), and SampleSecondaries().


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