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

#include <G4XAqmTotal.hh>

Inheritance diagram for G4XAqmTotal:
G4VCrossSectionSource

Public Member Functions

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

Protected Member Functions

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

Private Member Functions

 G4XAqmTotal (const G4XAqmTotal &right)
 
const G4XAqmTotaloperator= (const G4XAqmTotal &right)
 

Static Private Attributes

static const G4double _highLimit = DBL_MAX
 
static const G4double _lowLimit = 0.
 

Detailed Description

Definition at line 37 of file G4XAqmTotal.hh.

Constructor & Destructor Documentation

◆ G4XAqmTotal() [1/2]

G4XAqmTotal::G4XAqmTotal ( )

Definition at line 58 of file G4XAqmTotal.cc.

59{
60 // As a first approximation the model is assumed to be valid over
61 // the entire energy range
62}

◆ ~G4XAqmTotal()

G4XAqmTotal::~G4XAqmTotal ( )
virtual

Definition at line 65 of file G4XAqmTotal.cc.

66{ }

◆ G4XAqmTotal() [2/2]

G4XAqmTotal::G4XAqmTotal ( const G4XAqmTotal right)
private

Member Function Documentation

◆ CrossSection()

G4double G4XAqmTotal::CrossSection ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtual

Implements G4VCrossSectionSource.

Definition at line 81 of file G4XAqmTotal.cc.

82{
83 G4double sigma = 0.;
84
85 // Get strangeness content
86 const G4ParticleDefinition* def1 = trk1.GetDefinition();
87 G4int sTrk1 = def1->GetQuarkContent(3) + def1->GetAntiQuarkContent(3);
88 const G4ParticleDefinition* def2 = trk2.GetDefinition();
89 G4int sTrk2 = def2->GetQuarkContent(3) + def2->GetAntiQuarkContent(3);
90
91 // Get non-strange quark content
92 G4int qTrk1 = def1->GetQuarkContent(1) + def1->GetAntiQuarkContent(1) +
93 def1->GetQuarkContent(2) + def1->GetAntiQuarkContent(2) +
94 def1->GetQuarkContent(4) + def1->GetAntiQuarkContent(4) +
95 def1->GetQuarkContent(5) + def1->GetAntiQuarkContent(5) +
96 def1->GetQuarkContent(6) + def1->GetAntiQuarkContent(6);
97
98 G4int qTrk2 = def2->GetQuarkContent(1) + def2->GetAntiQuarkContent(1) +
99 def2->GetQuarkContent(2) + def2->GetAntiQuarkContent(2) +
100 def2->GetQuarkContent(4) + def2->GetAntiQuarkContent(4) +
101 def2->GetQuarkContent(5) + def2->GetAntiQuarkContent(5) +
102 def2->GetQuarkContent(6) + def2->GetAntiQuarkContent(6);
103
104 G4double sRatio1 = 0.;
105 if (qTrk1 != 0) sRatio1 = sTrk1 / qTrk1;
106
107 G4double sRatio2 = 0.;
108 if (qTrk2 != 0) sRatio2 = sTrk2 / qTrk2;
109
110 // Calculate the number of colliding mesons
111 G4int nMesons = 0;
112 G4int nQ1 = sTrk1 + qTrk1;
113
114 if (nQ1 == 2) nMesons++;
115 G4int nQ2 = sTrk2 + qTrk2;
116 if (nQ2 == 2) nMesons++;
117
118 // Cross-section (units to be checked!)
119 sigma = 40. * G4Pow::GetInstance()->powN((2.0/3.0),nMesons) * (1. - 0.4 * sRatio1) * (1. - 0.4 * sRatio2) * millibarn;
120
121 return sigma;
122}
static constexpr double millibarn
Definition: G4SIunits.hh:86
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4ParticleDefinition * GetDefinition() const
G4int GetQuarkContent(G4int flavor) const
G4int GetAntiQuarkContent(G4int flavor) const
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:166

References G4ParticleDefinition::GetAntiQuarkContent(), G4KineticTrack::GetDefinition(), G4Pow::GetInstance(), G4ParticleDefinition::GetQuarkContent(), millibarn, and G4Pow::powN().

Referenced by G4XAqmElastic::CrossSection().

◆ FcrossX()

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

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}
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4Pow::GetInstance(), G4INCL::Math::max(), and G4Pow::powA().

◆ FindKeyParticle()

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

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}
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
static G4Proton * Proton()
Definition: G4Proton.cc:92

References G4KineticTrack::GetDefinition(), G4Neutron::Neutron(), and G4Proton::Proton().

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

◆ FindLightParticle()

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

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}

References G4KineticTrack::GetDefinition(), and G4ParticleDefinition::GetPDGMass().

Referenced by G4XMesonBaryonElastic::CrossSection().

◆ GetComponents()

virtual const G4CrossSectionVector * G4XAqmTotal::GetComponents ( ) const
inlinevirtual

Implements G4VCrossSectionSource.

Definition at line 51 of file G4XAqmTotal.hh.

51{ return 0; }

◆ HighLimit()

G4double G4VCrossSectionSource::HighLimit ( ) const
virtualinherited

◆ InLimits()

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

Definition at line 133 of file G4VCrossSectionSource.cc.

134{
135 G4bool answer = false;
136 if (e >= eLow && e <= eHigh) answer = true;
137 return answer;
138}
bool G4bool
Definition: G4Types.hh:86

Referenced by G4XAnnihilationChannel::IsValid(), G4XAqmElastic::IsValid(), IsValid(), G4XMesonBaryonElastic::IsValid(), G4XNNElasticLowE::IsValid(), G4XnpElasticLowE::IsValid(), G4XnpTotalLowE::IsValid(), G4XPDGElastic::IsValid(), and G4XPDGTotal::IsValid().

◆ IsValid()

G4bool G4XAqmTotal::IsValid ( G4double  e) const
virtual

Reimplemented from G4VCrossSectionSource.

Definition at line 133 of file G4XAqmTotal.cc.

134{
136
137 return answer;
138}
G4bool InLimits(G4double e, G4double eLow, G4double eHigh) const
static const G4double _lowLimit
Definition: G4XAqmTotal.hh:66
static const G4double _highLimit
Definition: G4XAqmTotal.hh:67

References _highLimit, _lowLimit, and G4VCrossSectionSource::InLimits().

◆ LowLimit()

G4double G4VCrossSectionSource::LowLimit ( ) const
virtualinherited

Reimplemented in G4XPDGElastic, and G4XPDGTotal.

Definition at line 140 of file G4VCrossSectionSource.cc.

141{
142 return 0.;
143}

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

◆ Name()

G4String G4XAqmTotal::Name ( ) const
virtual

Implements G4VCrossSectionSource.

Definition at line 125 of file G4XAqmTotal.cc.

126{
127 G4String name("AqmTotalCrossSection");
128 return name;
129}
const char * name(G4int ptype)

References G4InuclParticleNames::name().

◆ operator!=() [1/2]

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

Definition at line 80 of file G4VCrossSectionSource.cc.

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

◆ operator!=() [2/2]

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

Definition at line 75 of file G4XAqmTotal.cc.

76{
77 return (this != (G4XAqmTotal *) &right);
78}

◆ operator=()

const G4XAqmTotal & G4XAqmTotal::operator= ( const G4XAqmTotal right)
private

◆ operator==() [1/2]

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

Definition at line 74 of file G4VCrossSectionSource.cc.

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

◆ operator==() [2/2]

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

Definition at line 69 of file G4XAqmTotal.cc.

70{
71 return (this == (G4XAqmTotal *) &right);
72}

◆ Print()

void G4VCrossSectionSource::Print ( ) const
virtualinherited

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
#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

References G4cout, G4endl, G4VCrossSectionSource::GetComponents(), G4VCrossSectionSource::Name(), and G4VCrossSectionSource::Print().

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

◆ PrintAll()

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

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}
static constexpr double GeV
Definition: G4SIunits.hh:203
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

References G4VCrossSectionSource::CrossSection(), G4cout, G4endl, G4KineticTrack::Get4Momentum(), G4VCrossSectionSource::GetComponents(), GeV, millibarn, G4VCrossSectionSource::Name(), and G4VCrossSectionSource::PrintAll().

Referenced by G4VCrossSectionSource::PrintAll().

Field Documentation

◆ _highLimit

const G4double G4XAqmTotal::_highLimit = DBL_MAX
staticprivate

Definition at line 67 of file G4XAqmTotal.hh.

Referenced by IsValid().

◆ _lowLimit

const G4double G4XAqmTotal::_lowLimit = 0.
staticprivate

Definition at line 66 of file G4XAqmTotal.hh.

Referenced by IsValid().


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