Geant4 10.7.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 G4double CrossSection (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0
 
virtual const G4CrossSectionVectorGetComponents () 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
 

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

◆ 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}
const G4String & GetParticleName() const
const G4String ShortName(const G4String &name)
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}
double S(double 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: