Geant4-11
Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
G4ConcreteMesonBaryonToResonance Class Reference

#include <G4ConcreteMesonBaryonToResonance.hh>

Inheritance diagram for G4ConcreteMesonBaryonToResonance:
G4VAnnihilationCollision G4VCollision

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
 
 G4ConcreteMesonBaryonToResonance (const G4ParticleDefinition *aPrimary, const G4ParticleDefinition *bPriamry, const G4ParticleDefinition *aSecondary, const G4String &partWidthLabel)
 
virtual const G4VAngularDistributionGetAngularDistribution () const
 
virtual const std::vector< G4String > & GetListOfColliders (G4int) const
 
virtual G4String GetName () const
 
virtual G4bool IsInCharge (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 
G4bool operator!= (const G4ConcreteMesonBaryonToResonance &right) const
 
G4bool operator!= (const G4VAnnihilationCollision &right) const
 
G4bool operator!= (const G4VCollision &right) const
 
G4bool operator== (const G4ConcreteMesonBaryonToResonance &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 ~G4ConcreteMesonBaryonToResonance ()
 

Protected Member Functions

virtual const G4CollisionVectorGetComponents () const
 
virtual const G4VCrossSectionSourceGetCrossSectionSource () const
 
G4int GetNumberOfPartons (const G4ParticleDefinition *aP) const
 
virtual const G4ParticleDefinitionGetOutgoingParticle (const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
 

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
 
 G4ConcreteMesonBaryonToResonance (const G4ConcreteMesonBaryonToResonance &)
 
G4ConcreteMesonBaryonToResonanceoperator= (const G4ConcreteMesonBaryonToResonance &)
 
double SampleResonanceMass (const double poleMass, const double width, const double minMass, const double maxMass) const
 

Static Private Member Functions

static void InitialisePointers ()
 
static G4ParticleTypeConvertermyConv ()
 
static G4BaryonPartialWidththeBaryonPartialWidth ()
 
static G4BaryonWidththeBaryonWidth ()
 

Private Attributes

G4VCrossSectionSourcecrossSectionSource
 
G4VAngularDistributiontheAngularDistribution
 
const G4ParticleDefinitionthePrimary1
 
const G4ParticleDefinitionthePrimary2
 
const G4ParticleDefinitiontheSecondary
 

Static Private Attributes

static G4BaryonPartialWidthbaryonPartialWidth = nullptr
 
static G4BaryonWidthbaryonWidth = nullptr
 
static G4ParticleTypeConverterparticleTypeConverter = nullptr
 

Detailed Description

Definition at line 45 of file G4ConcreteMesonBaryonToResonance.hh.

Constructor & Destructor Documentation

◆ G4ConcreteMesonBaryonToResonance() [1/2]

G4ConcreteMesonBaryonToResonance::G4ConcreteMesonBaryonToResonance ( const G4ParticleDefinition aPrimary,
const G4ParticleDefinition bPriamry,
const G4ParticleDefinition aSecondary,
const G4String partWidthLabel 
)

◆ ~G4ConcreteMesonBaryonToResonance()

G4ConcreteMesonBaryonToResonance::~G4ConcreteMesonBaryonToResonance ( )
virtual

Definition at line 70 of file G4ConcreteMesonBaryonToResonance.cc.

71{
72 delete crossSectionSource;
73}

References crossSectionSource.

◆ G4ConcreteMesonBaryonToResonance() [2/2]

G4ConcreteMesonBaryonToResonance::G4ConcreteMesonBaryonToResonance ( const G4ConcreteMesonBaryonToResonance )
private

Member Function Documentation

◆ BrWigInt0()

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

Definition at line 81 of file G4VAnnihilationCollision.hh.

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

Referenced by G4VAnnihilationCollision::BrWigInt1().

◆ BrWigInt1()

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

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 G4VAnnihilationCollision::BrWigInt0(), and G4Log().

◆ BrWigInv()

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

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
virtualinherited

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(), G4VAnnihilationCollision::GetOutgoingParticle(), G4KineticTrack::GetPosition(), and CLHEP::HepLorentzVector::m().

◆ GetAngularDistribution()

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

Implements G4VCollision.

Definition at line 69 of file G4VAnnihilationCollision.hh.

70 {
72 }
G4VAngularDistribution * theAngularDistribution

References G4VAnnihilationCollision::theAngularDistribution.

◆ GetComponents()

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

◆ GetCrossSectionSource()

virtual const G4VCrossSectionSource * G4ConcreteMesonBaryonToResonance::GetCrossSectionSource ( ) const
inlineprotectedvirtual

Implements G4VCollision.

Definition at line 81 of file G4ConcreteMesonBaryonToResonance.hh.

82 { return crossSectionSource; }

References crossSectionSource.

◆ GetListOfColliders()

virtual const std::vector< G4String > & G4ConcreteMesonBaryonToResonance::GetListOfColliders ( G4int  ) const
inlinevirtual

Implements G4VCollision.

Definition at line 60 of file G4ConcreteMesonBaryonToResonance.hh.

61 {
62 throw G4HadronicException(__FILE__, __LINE__, "Tried to call G4ConcreteMesonBaryonToResonance::GetListOfColliders. Please find out why!");
63 std::vector<G4String> * aList = new std::vector<G4String>;
64 return *aList;
65 }

◆ GetName()

virtual G4String G4ConcreteMesonBaryonToResonance::GetName ( ) const
inlinevirtual

Implements G4VCollision.

Definition at line 67 of file G4ConcreteMesonBaryonToResonance.hh.

68 {
69 return "ConcreteMesonBaryonToResonance";
70 }

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

const G4ParticleDefinition * G4ConcreteMesonBaryonToResonance::GetOutgoingParticle ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
protectedvirtual

Implements G4VAnnihilationCollision.

Definition at line 102 of file G4ConcreteMesonBaryonToResonance.cc.

104{
105 G4int secondaryIso3 = trk1.GetDefinition()->GetPDGiIsospin3() + trk2.GetDefinition()->GetPDGiIsospin3();
106 const G4ParticleDefinition* state;
107 if ( (state = myConv().FindIso3State(myConv().GetGenericType(theSecondary), secondaryIso3)) == NULL)
108 {
109 G4cerr << "for "<<static_cast<G4int>(myConv().GetGenericType(theSecondary))<<" "<<secondaryIso3<<G4endl;
110 throw G4HadronicException(__FILE__, __LINE__, "G4ConcreteMesonBaryonToResonance: Can't find iso3 state!");
111 }
112 return state;
113}
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
static G4ParticleTypeConverter & myConv()
const G4ParticleDefinition * GetDefinition() const
GenericType GetGenericType(const G4ParticleDefinition *const aParticleDef) const

References G4cerr, G4endl, G4KineticTrack::GetDefinition(), G4ParticleTypeConverter::GetGenericType(), G4ParticleDefinition::GetPDGiIsospin3(), myConv(), and theSecondary.

◆ InitialisePointers()

void G4ConcreteMesonBaryonToResonance::InitialisePointers ( )
staticprivate

Definition at line 75 of file G4ConcreteMesonBaryonToResonance.cc.

76{
77 if(!baryonWidth) {
78#ifdef G4MULTITHREADED
79 G4MUTEXLOCK(&concreteMesonBaryonToResonanceMutex);
80 if (!baryonWidth) {
81#endif
85#ifdef G4MULTITHREADED
86 }
87 G4MUTEXUNLOCK(&concreteMesonBaryonToResonanceMutex);
88#endif
89 }
90}
#define G4MUTEXLOCK(mutex)
Definition: G4Threading.hh:251
#define G4MUTEXUNLOCK(mutex)
Definition: G4Threading.hh:254
static G4ParticleTypeConverter * particleTypeConverter

References baryonPartialWidth, baryonWidth, G4MUTEXLOCK, G4MUTEXUNLOCK, and particleTypeConverter.

Referenced by G4ConcreteMesonBaryonToResonance(), myConv(), theBaryonPartialWidth(), and theBaryonWidth().

◆ IsInCharge()

G4bool G4ConcreteMesonBaryonToResonance::IsInCharge ( const G4KineticTrack trk1,
const G4KineticTrack trk2 
) const
virtual

Implements G4VCollision.

Definition at line 92 of file G4ConcreteMesonBaryonToResonance.cc.

94{
95 if (myConv().GetGenericType(trk1)==myConv().GetGenericType(thePrimary1) &&
96 myConv().GetGenericType(trk2)==myConv().GetGenericType(thePrimary2)) return true;
97 if (myConv().GetGenericType(trk1)==myConv().GetGenericType(thePrimary2) &&
98 myConv().GetGenericType(trk2)==myConv().GetGenericType(thePrimary1)) return true;
99 return false;
100}

References myConv(), thePrimary1, and thePrimary2.

◆ myConv()

G4ParticleTypeConverter & G4ConcreteMesonBaryonToResonance::myConv ( )
staticprivate

◆ operator!=() [1/3]

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

◆ operator!=() [2/3]

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

◆ operator!=() [3/3]

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

Definition at line 48 of file G4VCollision.cc.

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

◆ operator=()

G4ConcreteMesonBaryonToResonance & G4ConcreteMesonBaryonToResonance::operator= ( const G4ConcreteMesonBaryonToResonance )
private

◆ operator==() [1/3]

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

◆ operator==() [2/3]

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

◆ operator==() [3/3]

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
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
privateinherited

◆ theBaryonPartialWidth()

G4BaryonPartialWidth & G4ConcreteMesonBaryonToResonance::theBaryonPartialWidth ( )
staticprivate

◆ theBaryonWidth()

G4BaryonWidth & G4ConcreteMesonBaryonToResonance::theBaryonWidth ( )
staticprivate

Field Documentation

◆ baryonPartialWidth

G4BaryonPartialWidth * G4ConcreteMesonBaryonToResonance::baryonPartialWidth = nullptr
staticprivate

◆ baryonWidth

G4BaryonWidth * G4ConcreteMesonBaryonToResonance::baryonWidth = nullptr
staticprivate

Definition at line 100 of file G4ConcreteMesonBaryonToResonance.hh.

Referenced by InitialisePointers(), and theBaryonWidth().

◆ crossSectionSource

G4VCrossSectionSource* G4ConcreteMesonBaryonToResonance::crossSectionSource
private

◆ particleTypeConverter

G4ParticleTypeConverter * G4ConcreteMesonBaryonToResonance::particleTypeConverter = nullptr
staticprivate

Definition at line 102 of file G4ConcreteMesonBaryonToResonance.hh.

Referenced by InitialisePointers(), and myConv().

◆ theAngularDistribution

G4VAngularDistribution* G4VAnnihilationCollision::theAngularDistribution
privateinherited

◆ thePrimary1

const G4ParticleDefinition* G4ConcreteMesonBaryonToResonance::thePrimary1
private

Definition at line 92 of file G4ConcreteMesonBaryonToResonance.hh.

Referenced by IsInCharge().

◆ thePrimary2

const G4ParticleDefinition* G4ConcreteMesonBaryonToResonance::thePrimary2
private

Definition at line 93 of file G4ConcreteMesonBaryonToResonance.hh.

Referenced by IsInCharge().

◆ theSecondary

const G4ParticleDefinition* G4ConcreteMesonBaryonToResonance::theSecondary
private

Definition at line 94 of file G4ConcreteMesonBaryonToResonance.hh.

Referenced by GetOutgoingParticle().


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