Geant4-11
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
G4VAnnihilationCollision Class Referenceabstract

#include <G4VAnnihilationCollision.hh>

Inheritance diagram for G4VAnnihilationCollision:
G4VCollision G4ConcreteMesonBaryonToResonance

Public Member Functions

virtual G4double CrossSection (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
void establish_G4MT_TLS_G4VCollision ()
 
virtual G4KineticTrackVectorFinalState (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
 G4VAnnihilationCollision ()
 
virtual const G4VAngularDistributionGetAngularDistribution () const
 
virtual G4String GetName () const =0
 
virtual G4bool IsInCharge (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0
 
G4bool operator!= (const G4VAnnihilationCollision &right) const
 
G4bool operator!= (const G4VCollision &right) const
 
G4bool operator== (const G4VAnnihilationCollision &right) const
 
G4bool operator== (const G4VCollision &right) const
 
virtual void Print () const
 
virtual void Print (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
virtual ~G4VAnnihilationCollision ()
 

Protected Member Functions

virtual const G4CollisionVectorGetComponents () const
 
virtual const G4VCrossSectionSourceGetCrossSectionSource () const =0
 
virtual const std::vector< G4String > & GetListOfColliders (G4int whichOne) const =0
 
G4int GetNumberOfPartons (const G4ParticleDefinition *aP) const
 
virtual const G4ParticleDefinitionGetOutgoingParticle (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0
 

Private Member Functions

double BrWigInt0 (const double x, const double gamma, const double m0) const
 
G4double BrWigInt1 (const G4double x, const G4double gamma, const G4double m0) const
 
double BrWigInv (const double x, const double gamma, const double m0) const
 
double SampleResonanceMass (const double poleMass, const double width, const double minMass, const double maxMass) const
 

Private Attributes

G4VAngularDistributiontheAngularDistribution
 

Detailed Description

Definition at line 55 of file G4VAnnihilationCollision.hh.

Constructor & Destructor Documentation

◆ G4VAnnihilationCollision()

G4VAnnihilationCollision::G4VAnnihilationCollision ( )

Definition at line 43 of file G4VAnnihilationCollision.cc.

44{
46}
G4VAngularDistribution * theAngularDistribution

References theAngularDistribution.

◆ ~G4VAnnihilationCollision()

G4VAnnihilationCollision::~G4VAnnihilationCollision ( )
virtual

Definition at line 49 of file G4VAnnihilationCollision.cc.

50{
54 }
55}

References theAngularDistribution.

Member Function Documentation

◆ BrWigInt0()

double G4VAnnihilationCollision::BrWigInt0 ( const double  x,
const double  gamma,
const double  m0 
) const
inlineprivate

Definition at line 81 of file G4VAnnihilationCollision.hh.

82 { return 2.0*gamma*std::atan( 2.0 * (x-m0)/ gamma ); }

Referenced by BrWigInt1().

◆ BrWigInt1()

G4double G4VAnnihilationCollision::BrWigInt1 ( const G4double  x,
const G4double  gamma,
const G4double  m0 
) const
inlineprivate

Definition at line 84 of file G4VAnnihilationCollision.hh.

85 { return 0.5*gamma*gamma*G4Log( (x-m0)*(x-m0)+gamma*gamma/4.0 ) + m0*BrWigInt0(x,gamma,m0); }
G4double G4Log(G4double x)
Definition: G4Log.hh:226
double BrWigInt0(const double x, const double gamma, const double m0) const

References BrWigInt0(), and G4Log().

◆ BrWigInv()

double G4VAnnihilationCollision::BrWigInv ( const double  x,
const double  gamma,
const double  m0 
) const
inlineprivate

Definition at line 87 of file G4VAnnihilationCollision.hh.

88 { return 0.5*gamma*std::tan( 0.5*x/gamma )+m0; }

◆ CrossSection()

G4double G4VCollision::CrossSection ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtualinherited

Reimplemented in G4CollisionComposite, G4CollisionMesonBaryonToResonance, and G4CollisionNN.

Definition at line 54 of file G4VCollision.cc.

56{
57 G4double sigma = 0.;
58
60
61 if (xSource != 0)
62 {
63 // There is a cross section for this Collision
64 sigma = xSource->CrossSection(aTrk1,aTrk2);
65 }
66 return sigma;
67}
double G4double
Definition: G4Types.hh:83
virtual const G4VCrossSectionSource * GetCrossSectionSource() const =0
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0

References G4VCrossSectionSource::CrossSection(), and G4VCollision::GetCrossSectionSource().

Referenced by G4Scatterer::GetCrossSection(), G4Scatterer::GetTimeToInteraction(), G4VCollision::Print(), and G4Scatterer::Scatter().

◆ establish_G4MT_TLS_G4VCollision()

void G4VCollision::establish_G4MT_TLS_G4VCollision ( )
inherited

◆ FinalState()

G4KineticTrackVector * G4VAnnihilationCollision::FinalState ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtual

Implements G4VCollision.

Definition at line 58 of file G4VAnnihilationCollision.cc.

60{
61 G4LorentzVector p = trk1.Get4Momentum() + trk2.Get4Momentum();
62 G4double sqrtS = p.m();
63// G4double s = sqrtS * sqrtS;
64
65// G4double m1 = trk1.GetActualMass();
66// G4double m2 = trk2.GetActualMass();
67
68
69 // Unit vector of three-momentum
70
71 G4ThreeVector pFinal(0.0, 0.0, 0.0);
72 G4double eFinal = sqrtS;
73
74 G4LorentzVector p4Final(pFinal, eFinal);
75
76 // Lorentz transformation
77 G4LorentzRotation toLabFrame(p.boostVector());
78 p4Final *= toLabFrame;
79
80 const G4ParticleDefinition* OutputDefinition = GetOutgoingParticle(trk1,trk2);
81 G4KineticTrack* final = new G4KineticTrack(OutputDefinition, 0.0, trk1.GetPosition(), p4Final);
82
84
85 finalTracks->push_back(final);
86
87 return finalTracks;
88}
Hep3Vector boostVector() const
const G4ThreeVector & GetPosition() const
const G4LorentzVector & Get4Momentum() const
virtual const G4ParticleDefinition * GetOutgoingParticle(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0

References CLHEP::HepLorentzVector::boostVector(), G4KineticTrack::Get4Momentum(), GetOutgoingParticle(), G4KineticTrack::GetPosition(), and CLHEP::HepLorentzVector::m().

◆ GetAngularDistribution()

virtual const G4VAngularDistribution * G4VAnnihilationCollision::GetAngularDistribution ( ) const
inlinevirtual

Implements G4VCollision.

Definition at line 69 of file G4VAnnihilationCollision.hh.

70 {
72 }

References theAngularDistribution.

◆ GetComponents()

virtual const G4CollisionVector * G4VCollision::GetComponents ( ) const
inlineprotectedvirtualinherited

◆ GetCrossSectionSource()

virtual const G4VCrossSectionSource * G4VCollision::GetCrossSectionSource ( ) const
protectedpure virtualinherited

◆ GetListOfColliders()

virtual const std::vector< G4String > & G4VCollision::GetListOfColliders ( G4int  whichOne) const
protectedpure virtualinherited

◆ GetName()

virtual G4String G4VCollision::GetName ( ) const
pure virtualinherited

◆ GetNumberOfPartons()

G4int G4VCollision::GetNumberOfPartons ( const G4ParticleDefinition aP) const
inlineprotectedinherited

Definition at line 68 of file G4VCollision.hh.

69 {
70 G4int result = 0;
71 for(G4int i=0; i<6; i++)
72 {
73 result += aP->GetQuarkContent(i+1);
74 result += aP->GetAntiQuarkContent(i+1);
75 }
76 return result;
77 }
int G4int
Definition: G4Types.hh:85
G4int GetQuarkContent(G4int flavor) const
G4int GetAntiQuarkContent(G4int flavor) const

References G4ParticleDefinition::GetAntiQuarkContent(), and G4ParticleDefinition::GetQuarkContent().

Referenced by G4CollisionMesonBaryonElastic::IsInCharge().

◆ GetOutgoingParticle()

virtual const G4ParticleDefinition * G4VAnnihilationCollision::GetOutgoingParticle ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
protectedpure virtual

Implemented in G4ConcreteMesonBaryonToResonance.

Referenced by FinalState().

◆ IsInCharge()

virtual G4bool G4VCollision::IsInCharge ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
pure virtualinherited

◆ operator!=() [1/2]

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

◆ operator!=() [2/2]

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

Definition at line 48 of file G4VCollision.cc.

49{
50 return (this != (G4VCollision *) &right);
51}

◆ operator==() [1/2]

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

◆ operator==() [2/2]

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

Definition at line 42 of file G4VCollision.cc.

43{
44 return (this == (G4VCollision *) &right);
45}

◆ Print() [1/2]

void G4VCollision::Print ( ) const
virtualinherited

Definition at line 70 of file G4VCollision.cc.

71{
73
74 G4cout << "---- " << name << "---- Cross section" << G4endl;
75
77 if (xSource) xSource->Print();
78
79 G4int nComponents = 0;
80 const G4CollisionVector* components = GetComponents();
81 if (components)
82 {
83 nComponents = components->size();
84 }
85 G4cout << "---- " << name << "---- has " << nComponents << " components" <<G4endl;
86 G4int i = 0;
87 G4CollisionVector::const_iterator iter;
88 if (components)
89 {
90 for (iter = components->begin(); iter != components->end(); ++iter)
91 {
92 G4cout << "---- " << name << " ---- Component " << i << G4endl;
93 ((*iter))->Print();
94 i++;
95 }
96 }
97
98}
std::vector< G4VCollision * > G4CollisionVector
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
virtual const G4CollisionVector * GetComponents() const
Definition: G4VCollision.hh:79
virtual void Print() const
Definition: G4VCollision.cc:70
virtual G4String GetName() const =0
virtual void Print() const
const char * name(G4int ptype)

References G4cout, G4endl, G4VCollision::GetComponents(), G4VCollision::GetCrossSectionSource(), G4VCollision::GetName(), G4InuclParticleNames::name(), G4VCollision::Print(), and G4VCrossSectionSource::Print().

Referenced by G4VCollision::Print().

◆ Print() [2/2]

void G4VCollision::Print ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtualinherited

Definition at line 101 of file G4VCollision.cc.

103{
105
106 if (IsInCharge(trk1,trk2))
107 {
108 G4cout << "---- " << name << "is in charge ---- " << G4endl;
109 }
110 else
111 {
112 G4cout << "---- " << name << "is not in charge ---- " << G4endl;
113 }
114
115 G4cout << "---- " << name << "---- Cross section" << G4endl;
116
118 if (xSource) xSource->Print();
119 G4cout << "Cross section = " << CrossSection(trk1,trk2) << G4endl;
120
121 G4int nComponents = 0;
122 const G4CollisionVector* components = GetComponents();
123 if (components)
124 {
125 nComponents = components->size();
126 }
127 G4cout << "---- " << name << "has " << nComponents << " components" <<G4endl;
128
129 G4int i = 0;
130 G4CollisionVector::const_iterator iter;
131 if (components)
132 {
133 for (iter = components->begin(); iter != components->end(); ++iter)
134 {
135 G4cout << "Component " << i << G4endl;
136 ((*iter))->Print();
137 i++;
138 }
139 }
140}
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
Definition: G4VCollision.cc:54
virtual G4bool IsInCharge(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0

References G4VCollision::CrossSection(), G4cout, G4endl, G4VCollision::GetComponents(), G4VCollision::GetCrossSectionSource(), G4VCollision::GetName(), G4VCollision::IsInCharge(), G4InuclParticleNames::name(), G4VCollision::Print(), and G4VCrossSectionSource::Print().

◆ SampleResonanceMass()

double G4VAnnihilationCollision::SampleResonanceMass ( const double  poleMass,
const double  width,
const double  minMass,
const double  maxMass 
) const
private

Field Documentation

◆ theAngularDistribution

G4VAngularDistribution* G4VAnnihilationCollision::theAngularDistribution
private

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