#include <G4CrossSectionComposite.hh>
Inheritance diagram for G4CrossSectionComposite:
Public Member Functions | |
G4CrossSectionComposite () | |
virtual | ~G4CrossSectionComposite () |
G4bool | operator== (const G4CrossSectionComposite &right) const |
G4bool | operator!= (const G4CrossSectionComposite &right) const |
virtual G4double | CrossSection (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const |
virtual const G4CrossSectionVector * | GetComponents () const =0 |
virtual G4bool | IsValid (G4double e) const |
G4CrossSectionComposite () | |
virtual | ~G4CrossSectionComposite () |
G4bool | operator== (const G4CrossSectionComposite &right) const |
G4bool | operator!= (const G4CrossSectionComposite &right) const |
virtual G4double | CrossSection (const G4KineticTrack &trk1, const G4KineticTrack &trk2) |
virtual void | Add (G4CrossSectionComposite *component) |
virtual void | Remove (G4CrossSectionComposite *component) |
Protected Attributes | |
G4CrossSectionVector * | _components |
Definition at line 50 of file G4CrossSectionComposite.hh.
G4CrossSectionComposite::G4CrossSectionComposite | ( | ) |
G4CrossSectionComposite::~G4CrossSectionComposite | ( | ) | [virtual] |
G4CrossSectionComposite::G4CrossSectionComposite | ( | ) |
virtual G4CrossSectionComposite::~G4CrossSectionComposite | ( | ) | [virtual] |
virtual void G4CrossSectionComposite::Add | ( | G4CrossSectionComposite * | component | ) | [virtual] |
virtual G4double G4CrossSectionComposite::CrossSection | ( | const G4KineticTrack & | trk1, | |
const G4KineticTrack & | trk2 | |||
) | [virtual] |
G4double G4CrossSectionComposite::CrossSection | ( | const G4KineticTrack & | trk1, | |
const G4KineticTrack & | trk2 | |||
) | const [virtual] |
Implements G4VCrossSectionSource.
Definition at line 68 of file G4CrossSectionComposite.cc.
References G4VCrossSectionSource::CrossSection(), G4KineticTrack::Get4Momentum(), GetComponents(), and G4VCrossSectionSource::IsValid().
00070 { 00071 // Cross section of composite is the sum of components cross sections 00072 00073 G4double crossSection = 0.; 00074 G4double ecm = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag(); 00075 00076 const G4CrossSectionVector* components = GetComponents(); 00077 if (components != 0) 00078 { 00079 G4int nComponents = this->GetComponents()->size(); 00080 // G4int nValid = 0; 00081 00082 G4int i; 00083 for (i=0; i<nComponents; i++) 00084 { 00085 G4CrossSectionSourcePtr componentPtr = (*components)[i]; 00086 G4VCrossSectionSource* component = componentPtr(); 00087 if (component->IsValid(ecm)) 00088 { 00089 crossSection += component->CrossSection(trk1,trk2); 00090 } 00091 } 00092 } 00093 00094 return crossSection; 00095 }
virtual const G4CrossSectionVector* G4CrossSectionComposite::GetComponents | ( | ) | const [pure virtual] |
Reimplemented from G4VCrossSectionSource.
Definition at line 98 of file G4CrossSectionComposite.cc.
References GetComponents(), G4VCrossSectionSource::IsValid(), and CLHEP::detail::n.
00099 { 00100 // The composite is valid if any of its components are valid 00101 G4bool answer = false; 00102 const G4CrossSectionVector* components = GetComponents(); 00103 if (components != 0) 00104 { 00105 G4int n = components->size(); 00106 G4int i; 00107 for (i=0; i<n; i++) 00108 { 00109 G4CrossSectionSourcePtr componentPtr = (*components)[i]; 00110 G4VCrossSectionSource* component = componentPtr(); 00111 if (component->IsValid(e)) 00112 { 00113 answer = true; 00114 break; 00115 } 00116 } 00117 } 00118 return answer; 00119 }
G4bool G4CrossSectionComposite::operator!= | ( | const G4CrossSectionComposite & | right | ) | const |
G4bool G4CrossSectionComposite::operator!= | ( | const G4CrossSectionComposite & | right | ) | const |
Definition at line 62 of file G4CrossSectionComposite.cc.
00063 { 00064 return (this != (G4CrossSectionComposite*) &right); 00065 }
G4bool G4CrossSectionComposite::operator== | ( | const G4CrossSectionComposite & | right | ) | const |
G4bool G4CrossSectionComposite::operator== | ( | const G4CrossSectionComposite & | right | ) | const |
Definition at line 56 of file G4CrossSectionComposite.cc.
00057 { 00058 return (this == (G4CrossSectionComposite*) &right); 00059 }
virtual void G4CrossSectionComposite::Remove | ( | G4CrossSectionComposite * | component | ) | [virtual] |
G4CrossSectionVector* G4CrossSectionComposite::_components [protected] |
Definition at line 69 of file G4VCrossSectionComposite.hh.