Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
G4VCrossSectionSource Class Referenceabstract

#include <G4VCrossSectionSource.hh>

Inheritance diagram for G4VCrossSectionSource:
G4CrossSectionComposite G4CrossSectionPatch G4VXResonance G4XAnnihilationChannel G4XAqmElastic G4XAqmTotal G4XMesonBaryonElastic G4XNNElasticLowE G4XNNTotalLowE G4XnpElasticLowE G4XnpTotalLowE G4XPDGElastic G4XPDGTotal G4XpimNTotal G4XpipNTotal

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
G4CrossSectionVector
GetComponents () 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
 
G4ParticleDefinitionFindKeyParticle (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
G4double GetTransversePionMass () const
 
G4double GetMinStringMass () const
 

Detailed Description

Definition at line 38 of file G4VCrossSectionSource.hh.

Constructor & Destructor Documentation

G4VCrossSectionSource::G4VCrossSectionSource ( )

Definition at line 41 of file G4VCrossSectionSource.cc.

42 { }
G4VCrossSectionSource::~G4VCrossSectionSource ( )
virtual

Definition at line 45 of file G4VCrossSectionSource.cc.

46 { }

Member Function Documentation

virtual G4double G4VCrossSectionSource::CrossSection ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
pure virtual
G4double G4VCrossSectionSource::FcrossX ( G4double  e,
G4double  e0,
G4double  sigma,
G4double  eParam,
G4double  power 
) const
protected

Definition at line 174 of file G4VCrossSectionSource.cc.

References G4INCL::Math::max().

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) * std::pow(((e0 + eParam) / e), power);
183  result = std::max(0., value);
184  }
185  return result;
186 }
T max(const T t1, const T t2)
brief Return the largest of the two arguments
const XML_Char int const XML_Char * value
double G4double
Definition: G4Types.hh:76
G4ParticleDefinition * G4VCrossSectionSource::FindKeyParticle ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
protected

Definition at line 50 of file G4VCrossSectionSource.cc.

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

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

51 {
52  G4ParticleDefinition * result;
53 
54  G4ParticleDefinition * p1 = trk1.GetDefinition();
55  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 }
G4ParticleDefinition * GetDefinition() const
static G4Proton * Proton()
Definition: G4Proton.cc:93
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
const G4ParticleDefinition * G4VCrossSectionSource::FindLightParticle ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
protected

Definition at line 158 of file G4VCrossSectionSource.cc.

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

Referenced by G4XMesonBaryonElastic::CrossSection().

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 }
G4ParticleDefinition * GetDefinition() const
G4double GetPDGMass() const
double G4double
Definition: G4Types.hh:76
virtual const G4CrossSectionVector* G4VCrossSectionSource::GetComponents ( ) const
pure virtual
G4double G4VCrossSectionSource::GetMinStringMass ( ) const
protected

Definition at line 196 of file G4VCrossSectionSource.cc.

References python.hepunit::GeV.

197 {
198  // Parameter from UrQMD
199  const G4double minStringMass = 0.52 * GeV;
200  return minStringMass;
201 }
double G4double
Definition: G4Types.hh:76
G4double G4VCrossSectionSource::GetTransversePionMass ( ) const
protected

Definition at line 188 of file G4VCrossSectionSource.cc.

References python.hepunit::GeV.

189 {
190  // Parameter from UrQMD
191  const G4double transversePionMass = 0.3 * GeV;
192  return transversePionMass;
193 }
double G4double
Definition: G4Types.hh:76
G4double G4VCrossSectionSource::HighLimit ( ) const
virtual

Reimplemented in G4XnpElasticLowE, G4XnpTotalLowE, G4XNNElasticLowE, and G4XNNTotalLowE.

Definition at line 146 of file G4VCrossSectionSource.cc.

References DBL_MAX.

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

147 {
148  return DBL_MAX;
149 }
#define DBL_MAX
Definition: templates.hh:83
G4bool G4VCrossSectionSource::InLimits ( G4double  e,
G4double  eLow,
G4double  eHigh 
) const
protected

Definition at line 133 of file G4VCrossSectionSource.cc.

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

134 {
135  G4bool answer = false;
136  if (e >= eLow && e <= eHigh) answer = true;
137  return answer;
138 }
bool G4bool
Definition: G4Types.hh:79
G4bool G4VCrossSectionSource::IsValid ( G4double  e) const
virtual
G4double G4VCrossSectionSource::LowLimit ( ) const
virtual

Reimplemented in G4XPDGElastic, and G4XPDGTotal.

Definition at line 140 of file G4VCrossSectionSource.cc.

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

141 {
142  return 0.;
143 }
virtual G4String G4VCrossSectionSource::Name ( ) const
pure virtual
G4bool G4VCrossSectionSource::operator!= ( const G4VCrossSectionSource right) const

Definition at line 80 of file G4VCrossSectionSource.cc.

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

Definition at line 74 of file G4VCrossSectionSource.cc.

75 {
76  return (this == (G4VCrossSectionSource *) &right);
77 }
void G4VCrossSectionSource::Print ( void  ) const
virtual

Reimplemented in G4XnpElasticLowE, G4XnpTotalLowE, and G4XNNElasticLowE.

Definition at line 86 of file G4VCrossSectionSource.cc.

References G4cout, G4endl, GetComponents(), Name(), nComponents, and Print().

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

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 }
virtual G4String Name() const =0
G4int nComponents
Definition: TRTMaterials.hh:41
int G4int
Definition: G4Types.hh:78
virtual const G4CrossSectionVector * GetComponents() const =0
G4GLOB_DLL std::ostream G4cout
std::vector< G4CrossSectionSourcePtr > G4CrossSectionVector
virtual void Print() const
#define G4endl
Definition: G4ios.hh:61
void G4VCrossSectionSource::PrintAll ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtual

Definition at line 107 of file G4VCrossSectionSource.cc.

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

Referenced by PrintAll().

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 }
virtual G4String Name() const =0
G4int nComponents
Definition: TRTMaterials.hh:41
int G4int
Definition: G4Types.hh:78
virtual const G4CrossSectionVector * GetComponents() const =0
int millibarn
Definition: hepunit.py:40
G4GLOB_DLL std::ostream G4cout
std::vector< G4CrossSectionSourcePtr > G4CrossSectionVector
#define G4endl
Definition: G4ios.hh:61
virtual void PrintAll(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
double G4double
Definition: G4Types.hh:76
const G4LorentzVector & Get4Momentum() const
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0

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