G4CrossSectionComposite Class Reference

#include <G4CrossSectionComposite.hh>

Inheritance diagram for G4CrossSectionComposite:

G4VCrossSectionSource

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 G4CrossSectionVectorGetComponents () 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

Detailed Description

Definition at line 50 of file G4CrossSectionComposite.hh.


Constructor & Destructor Documentation

G4CrossSectionComposite::G4CrossSectionComposite (  ) 

Definition at line 48 of file G4CrossSectionComposite.cc.

00049 { }

G4CrossSectionComposite::~G4CrossSectionComposite (  )  [virtual]

Definition at line 52 of file G4CrossSectionComposite.cc.

00053 { }

G4CrossSectionComposite::G4CrossSectionComposite (  ) 

virtual G4CrossSectionComposite::~G4CrossSectionComposite (  )  [virtual]


Member Function Documentation

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]

Implements G4VCrossSectionSource.

Referenced by CrossSection(), and IsValid().

G4bool G4CrossSectionComposite::IsValid ( G4double  e  )  const [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]


Field Documentation

G4CrossSectionVector* G4CrossSectionComposite::_components [protected]

Definition at line 69 of file G4VCrossSectionComposite.hh.


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:43 2013 for Geant4 by  doxygen 1.4.7