Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VCrossSectionSource Class Referenceabstract

#include <G4VCrossSectionSource.hh>

+ Inheritance diagram for G4VCrossSectionSource:

Public Member Functions

 G4VCrossSectionSource ()
 
virtual ~G4VCrossSectionSource ()
 
G4bool operator== (const G4VCrossSectionSource &right) const
 
G4bool operator!= (const G4VCrossSectionSource &right) const
 
virtual G4double CrossSection (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0
 
virtual const G4CrossSectionVectorGetComponents () const =0
 
virtual G4String Name () const =0
 
virtual void Print () const
 
virtual void PrintAll (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
virtual G4bool IsValid (G4double e) const
 
virtual G4double HighLimit () const
 
virtual G4double LowLimit () const
 

Protected Member Functions

G4bool InLimits (G4double e, G4double eLow, G4double eHigh) const
 
const G4ParticleDefinitionFindLightParticle (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
G4double FcrossX (G4double e, G4double e0, G4double sigma, G4double eParam, G4double power) const
 
const G4ParticleDefinitionFindKeyParticle (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 

Detailed Description

Definition at line 38 of file G4VCrossSectionSource.hh.

Constructor & Destructor Documentation

◆ G4VCrossSectionSource()

G4VCrossSectionSource::G4VCrossSectionSource ( )

Definition at line 41 of file G4VCrossSectionSource.cc.

42{ }

◆ ~G4VCrossSectionSource()

G4VCrossSectionSource::~G4VCrossSectionSource ( )
virtual

Definition at line 45 of file G4VCrossSectionSource.cc.

46{ }

Member Function Documentation

◆ CrossSection()

◆ FcrossX()

G4double G4VCrossSectionSource::FcrossX ( G4double  e,
G4double  e0,
G4double  sigma,
G4double  eParam,
G4double  power 
) const
protected

Definition at line 174 of file G4VCrossSectionSource.cc.

176{
177 G4double result = 0.;
178
179 G4double denom = eParam*eParam + (e-e0)*(e-e0);
180 if (denom > 0.)
181 {
182 G4double value = (2.* eParam * sigma * (e-e0) / denom) * G4Pow::GetInstance()->powA(((e0 + eParam) / e), power);
183 result = std::max(0., value);
184 }
185 return result;
186}
double G4double
Definition: G4Types.hh:83
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230

◆ FindKeyParticle()

const G4ParticleDefinition * G4VCrossSectionSource::FindKeyParticle ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
protected

Definition at line 49 of file G4VCrossSectionSource.cc.

51{
52 const G4ParticleDefinition * result;
53
54 const G4ParticleDefinition * p1 = trk1.GetDefinition();
55 const G4ParticleDefinition * p2 = trk2.GetDefinition();
56
57 if( (p1==G4Proton::Proton() && p2==G4Proton::Proton() ) ||
58 (p1==G4Neutron::Neutron() && p2==G4Neutron::Neutron()) )
59 {
60 result = G4Proton::Proton();
61 }
62 else if( (p1==G4Neutron::Neutron() && p2==G4Proton::Proton()) ||
63 (p2==G4Neutron::Neutron() && p1==G4Proton::Proton()) )
64 {
65 result = G4Neutron::Neutron();
66 }
67 else
68 {
69 throw G4HadronicException(__FILE__, __LINE__, "G4VCrossSectionSource: unklnown particles in FindKeyParticle");
70 }
71 return result;
72}
const G4ParticleDefinition * GetDefinition() const
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
static G4Proton * Proton()
Definition: G4Proton.cc:92

Referenced by G4XNNElasticLowE::CrossSection(), and G4XNNTotalLowE::CrossSection().

◆ FindLightParticle()

const G4ParticleDefinition * G4VCrossSectionSource::FindLightParticle ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
protected

Definition at line 158 of file G4VCrossSectionSource.cc.

160{
161 G4double mass1 = trk1.GetDefinition()->GetPDGMass();
162 G4double mass2 = trk2.GetDefinition()->GetPDGMass();
163 if (mass1 < mass2)
164 {
165 return trk1.GetDefinition();
166 }
167 else
168 {
169 return trk2.GetDefinition();
170 }
171}

Referenced by G4XMesonBaryonElastic::CrossSection().

◆ GetComponents()

◆ HighLimit()

G4double G4VCrossSectionSource::HighLimit ( ) const
virtual

Reimplemented in G4XNNElasticLowE, G4XNNTotalLowE, G4XnpElasticLowE, and G4XnpTotalLowE.

Definition at line 146 of file G4VCrossSectionSource.cc.

147{
148 return DBL_MAX;
149}
#define DBL_MAX
Definition: templates.hh:62

Referenced by G4CrossSectionPatch::CrossSection(), IsValid(), and G4CrossSectionPatch::Transition().

◆ InLimits()

G4bool G4VCrossSectionSource::InLimits ( G4double  e,
G4double  eLow,
G4double  eHigh 
) const
protected

◆ IsValid()

◆ LowLimit()

G4double G4VCrossSectionSource::LowLimit ( ) const
virtual

Reimplemented in G4XPDGElastic, and G4XPDGTotal.

Definition at line 140 of file G4VCrossSectionSource.cc.

141{
142 return 0.;
143}

Referenced by G4CrossSectionPatch::CrossSection(), IsValid(), and G4CrossSectionPatch::Transition().

◆ Name()

◆ operator!=()

G4bool G4VCrossSectionSource::operator!= ( const G4VCrossSectionSource right) const

Definition at line 80 of file G4VCrossSectionSource.cc.

81{
82 return (this != (G4VCrossSectionSource *) &right);
83}

◆ operator==()

G4bool G4VCrossSectionSource::operator== ( const G4VCrossSectionSource right) const

Definition at line 74 of file G4VCrossSectionSource.cc.

75{
76 return (this == (G4VCrossSectionSource *) &right);
77}

◆ Print()

void G4VCrossSectionSource::Print ( ) const
virtual

Reimplemented in G4XNNElasticLowE, G4XnpElasticLowE, and G4XnpTotalLowE.

Definition at line 86 of file G4VCrossSectionSource.cc.

87{
88 G4int nComponents = 0;
89 const G4CrossSectionVector* components = GetComponents();
90 if (components)
91 {
92 nComponents = components->size();
93 }
94 G4cout << "---- " << this->Name() << " ---- has " << nComponents << " components" <<G4endl;
95 G4int i;
96 for (i=0; i<nComponents; i++)
97 {
98 G4cout << "-" << this->Name() << " - Component " << i << ": " <<G4endl;
99
100 G4CrossSectionSourcePtr componentPtr = (*components)[i];
101 G4VCrossSectionSource* component = componentPtr();
102 component->Print();
103 }
104}
std::vector< G4CrossSectionSourcePtr > G4CrossSectionVector
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
virtual const G4CrossSectionVector * GetComponents() const =0
virtual void Print() const
virtual G4String Name() const =0

Referenced by G4VCollision::Print(), Print(), G4XNNElasticLowE::Print(), G4XnpElasticLowE::Print(), and G4XnpTotalLowE::Print().

◆ PrintAll()

void G4VCrossSectionSource::PrintAll ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtual

Definition at line 107 of file G4VCrossSectionSource.cc.

108{
109 G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
110 G4double sigma = CrossSection(trk1,trk2) / millibarn;
111 G4cout << "---- " << Name() << ": "
112 << "Ecm = " << sqrtS / GeV << " GeV - "
113 << " Cross section = " << sigma << " mb "
114 << G4endl;
115
116 G4int nComponents = 0;
117 const G4CrossSectionVector* components = GetComponents();
118 if (components != 0)
119 {
120 nComponents = components->size();
121 }
122 G4int i;
123 for (i=0; i<nComponents; i++)
124 {
125 G4cout << "* Component " << i << ": ";
126 G4CrossSectionSourcePtr componentPtr = (*components)[i];
127 G4VCrossSectionSource* component = componentPtr();
128 component->PrintAll(trk1,trk2);
129 }
130}
const G4LorentzVector & Get4Momentum() const
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0
virtual void PrintAll(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const

Referenced by PrintAll().


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