Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4XAnnihilationChannel Class Reference

#include <G4XAnnihilationChannel.hh>

Inheritance diagram for G4XAnnihilationChannel:

Public Member Functions

 G4XAnnihilationChannel ()
 G4XAnnihilationChannel (const G4ParticleDefinition *resDefinition, const G4ResonanceWidth &resWidths, const G4ResonancePartialWidth &resPartWidths, const G4String &partWidthLabel)
virtual ~G4XAnnihilationChannel ()
G4bool operator== (const G4XAnnihilationChannel &right) const
G4bool operator!= (const G4XAnnihilationChannel &right) const
virtual G4double CrossSection (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
virtual const G4CrossSectionVectorGetComponents () const
virtual G4bool IsValid (G4double e) const
virtual G4String Name () const
Public Member Functions inherited from G4VCrossSectionSource
 G4VCrossSectionSource ()
virtual ~G4VCrossSectionSource ()
G4bool operator== (const G4VCrossSectionSource &right) const
G4bool operator!= (const G4VCrossSectionSource &right) const
virtual void Print () const
virtual void PrintAll (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
virtual G4double HighLimit () const
virtual G4double LowLimit () const

Additional Inherited Members

Protected Member Functions inherited from G4VCrossSectionSource
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
const G4ParticleDefinitionFindKeyParticle (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const

Detailed Description

Definition at line 46 of file G4XAnnihilationChannel.hh.

Constructor & Destructor Documentation

◆ G4XAnnihilationChannel() [1/2]

G4XAnnihilationChannel::G4XAnnihilationChannel ( )

Definition at line 37 of file G4XAnnihilationChannel.cc.

37 : resonance(0)
38{
39 // As a first approximation the model is assumed to be valid over
40 // the entire energy range
41 lowLimit = 0.;
42 highLimit = DBL_MAX;
43 widthTable = 0;
44 partWidthTable = 0;
45}
#define DBL_MAX
Definition templates.hh:62

Referenced by operator!=(), and operator==().

◆ G4XAnnihilationChannel() [2/2]

G4XAnnihilationChannel::G4XAnnihilationChannel ( const G4ParticleDefinition * resDefinition,
const G4ResonanceWidth & resWidths,
const G4ResonancePartialWidth & resPartWidths,
const G4String & partWidthLabel )

Definition at line 47 of file G4XAnnihilationChannel.cc.

51 : resonance(resDefinition)
52{
53 // Get the tabulated mass-dependent widths for the resonance
54 G4String resName = resonance->GetParticleName();
55 // cout << "HPW "<<resName<<endl;
56 G4String shortName = theNames.ShortName(resName);
57 // cout << "HPW "<<shortName<<endl;
58 // cout << "HPW "<<partWidthLabel<<endl;
59
60 widthTable = resWidths.MassDependentWidth(shortName);
61 partWidthTable = resPartWidths.MassDependentWidth(partWidthLabel);
62
63 // As a first approximation the model is assumed to be valid over
64 // the entire energy range
65 lowLimit = 0.;
66 highLimit = DBL_MAX;
67}
virtual G4PhysicsVector * MassDependentWidth(const G4String &name) const =0
virtual G4PhysicsVector * MassDependentWidth(const G4String &name) const =0

◆ ~G4XAnnihilationChannel()

G4XAnnihilationChannel::~G4XAnnihilationChannel ( )
virtual

Definition at line 70 of file G4XAnnihilationChannel.cc.

71{
72 if (widthTable) delete widthTable;
73 widthTable = 0;
74 if (partWidthTable) delete partWidthTable;
75 partWidthTable = 0;
76 }

Member Function Documentation

◆ CrossSection()

G4double G4XAnnihilationChannel::CrossSection ( const G4KineticTrack & trk1,
const G4KineticTrack & trk2 ) const
virtual

Implements G4VCrossSectionSource.

Definition at line 91 of file G4XAnnihilationChannel.cc.

93{
94 G4double sigma = 0.;
95 G4double eCM = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
96
97 const G4ParticleDefinition* def1 = trk1.GetDefinition();
98 const G4ParticleDefinition* def2 = trk2.GetDefinition();
99
100 G4int J1 = def1->GetPDGiSpin();
101 G4int J2 = def2->GetPDGiSpin();
102 G4double m_1 = def1->GetPDGMass();
103 G4double m_2 = def2->GetPDGMass();
104
105 G4int JRes = resonance->GetPDGiSpin();
106 G4double mRes = resonance->GetPDGMass();
107
108 G4double branch = Branch(trk1,trk2);
109 G4double width = VariableWidth(trk1,trk2);
110 G4double cleb = NormalizedClebsch(trk1,trk2);
111
112 G4double S = eCM * eCM;
113 if (S == 0.) throw G4HadronicException(__FILE__, __LINE__, "G4XAnnihilationChannel::CrossSection - eCM = 0");
114
115 G4double pCM = std::sqrt((S-(m_1+m_2)*(m_1+m_2))*(S-(m_1-m_2)*(m_1-m_2))/(4.*S));
116
117 sigma = ( (JRes + 1.) / ( (J1 + 1) * (J2 + 1) )
118 * pi / (pCM * pCM) * branch * width * width /
119 ( (eCM - mRes) * (eCM - mRes) + width * width / 4.0) * cleb * hbarc_squared);
120
121// G4cout << "SS " << branch<<" "<<sigma<<" "
122// << J1 <<" "
123// <<J2<<" "
124// <<m1<<" "
125// <<m2<<" "
126// <<JRes<<" "
127// <<mRes<<" "
128// <<wRes<<" "
129// <<width<<" "
130// <<cleb<<" "
131// <<G4endl;
132 return sigma;
133}
G4double S(G4double temp)
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
const G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
const G4double pi

◆ GetComponents()

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

Implements G4VCrossSectionSource.

Definition at line 64 of file G4XAnnihilationChannel.hh.

64{ return 0; }

◆ IsValid()

G4bool G4XAnnihilationChannel::IsValid ( G4double e) const
virtual

Reimplemented from G4VCrossSectionSource.

Definition at line 144 of file G4XAnnihilationChannel.cc.

145{
146 G4bool answer = InLimits(e,lowLimit,highLimit);
147
148 return answer;
149}
bool G4bool
Definition G4Types.hh:86
G4bool InLimits(G4double e, G4double eLow, G4double eHigh) const

◆ Name()

G4String G4XAnnihilationChannel::Name ( ) const
virtual

Implements G4VCrossSectionSource.

Definition at line 136 of file G4XAnnihilationChannel.cc.

137{
138 G4String name("XAnnihilationChannelCrossSection");
139 return name;
140}
const char * name(G4int ptype)

◆ operator!=()

G4bool G4XAnnihilationChannel::operator!= ( const G4XAnnihilationChannel & right) const

Definition at line 85 of file G4XAnnihilationChannel.cc.

86{
87 return (this != (G4XAnnihilationChannel *) &right);
88}

◆ operator==()

G4bool G4XAnnihilationChannel::operator== ( const G4XAnnihilationChannel & right) const

Definition at line 79 of file G4XAnnihilationChannel.cc.

80{
81 return (this == (G4XAnnihilationChannel *) &right);
82}

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