Geant4-11
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
G4CascadeFinalStateGenerator Class Reference

#include <G4CascadeFinalStateGenerator.hh>

Inheritance diagram for G4CascadeFinalStateGenerator:
G4HadDecayGenerator

Public Types

enum  Algorithm { NONE =0 , Kopylov =1 , GENBOD =2 , NBody =3 }
 

Public Member Functions

void Configure (G4InuclElementaryParticle *bullet, G4InuclElementaryParticle *target, const std::vector< G4int > &particle_kinds)
 
 G4CascadeFinalStateGenerator ()
 
G4bool Generate (const G4LorentzVector &initialState, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState)
 
G4bool Generate (const G4ParticleDefinition *initialPD, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState)
 
G4bool Generate (G4double initialMass, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState)
 
const G4StringGetAlgorithmName () const
 
void SetVerboseLevel (G4int verbose)
 
virtual ~G4CascadeFinalStateGenerator ()
 

Protected Member Functions

G4bool GenerateOneBody (G4double initialMass, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState) const
 
void ReportInvalidAlgorithm (Algorithm alg) const
 
void ReportMissingAlgorithm () const
 
void UseAlgorithm (G4VHadDecayAlgorithm *alg)
 

Protected Attributes

G4VHadDecayAlgorithmtheAlgorithm
 
G4int verboseLevel
 

Detailed Description

Definition at line 45 of file G4CascadeFinalStateGenerator.hh.

Member Enumeration Documentation

◆ Algorithm

Enumerator
NONE 
Kopylov 
GENBOD 
NBody 

Definition at line 52 of file G4HadDecayGenerator.hh.

Constructor & Destructor Documentation

◆ G4CascadeFinalStateGenerator()

G4CascadeFinalStateGenerator::G4CascadeFinalStateGenerator ( )

◆ ~G4CascadeFinalStateGenerator()

G4CascadeFinalStateGenerator::~G4CascadeFinalStateGenerator ( )
virtual

Definition at line 44 of file G4CascadeFinalStateGenerator.cc.

44{;}

Member Function Documentation

◆ Configure()

void G4CascadeFinalStateGenerator::Configure ( G4InuclElementaryParticle bullet,
G4InuclElementaryParticle target,
const std::vector< G4int > &  particle_kinds 
)

Definition at line 49 of file G4CascadeFinalStateGenerator.cc.

51 {
52 if (verboseLevel>1)
53 G4cout << " >>> G4CascadeFinalStateGenerator::Configure" << G4endl;
54
55 // Casting is safe, based on constructor implementation
58 cascAlg->Configure(bullet, target, particle_kinds);
59}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void Configure(G4InuclElementaryParticle *bullet, G4InuclElementaryParticle *target, const std::vector< G4int > &particle_kinds)
G4VHadDecayAlgorithm * theAlgorithm

References G4CascadeFinalStateAlgorithm::Configure(), G4cout, G4endl, G4HadDecayGenerator::theAlgorithm, and G4HadDecayGenerator::verboseLevel.

Referenced by G4ElementaryParticleCollider::generateSCMfinalState(), and G4LightTargetCollider::SingleNucleonScattering().

◆ Generate() [1/3]

G4bool G4HadDecayGenerator::Generate ( const G4LorentzVector initialState,
const std::vector< G4double > &  masses,
std::vector< G4LorentzVector > &  finalState 
)
inherited

Definition at line 150 of file G4HadDecayGenerator.cc.

152 {
153 if (verboseLevel)
154 G4cout << " >>> G4HadDecayGenerator::Generate (frame)" << G4endl;
155
156 G4bool good = Generate(initialState.m(), masses, finalState);
157 if (good) {
158 G4ThreeVector bv = initialState.boostVector();
159 for (size_t i=0; i<finalState.size(); i++) {
160 finalState[i].boost(bv);
161 }
162 }
163
164 return good;
165}
bool G4bool
Definition: G4Types.hh:86
Hep3Vector boostVector() const
G4bool Generate(G4double initialMass, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState)

References CLHEP::HepLorentzVector::boostVector(), G4cout, G4endl, G4HadDecayGenerator::Generate(), CLHEP::HepLorentzVector::m(), and G4HadDecayGenerator::verboseLevel.

◆ Generate() [2/3]

G4bool G4HadDecayGenerator::Generate ( const G4ParticleDefinition initialPD,
const std::vector< G4double > &  masses,
std::vector< G4LorentzVector > &  finalState 
)
inherited

Definition at line 138 of file G4HadDecayGenerator.cc.

140 {
141 if (verboseLevel)
142 G4cout << " >>> G4HadDecayGenerator::Generate (particle)" << G4endl;
143
144 return (initialPD && Generate(initialPD->GetPDGMass(), masses, finalState));
145}

References G4cout, G4endl, G4HadDecayGenerator::Generate(), G4ParticleDefinition::GetPDGMass(), and G4HadDecayGenerator::verboseLevel.

◆ Generate() [3/3]

G4bool G4HadDecayGenerator::Generate ( G4double  initialMass,
const std::vector< G4double > &  masses,
std::vector< G4LorentzVector > &  finalState 
)
inherited

Definition at line 120 of file G4HadDecayGenerator.cc.

122 {
123 if (verboseLevel)
124 G4cout << " >>> G4HadDecayGenerator::Generate (mass)" << G4endl;
125
127
128 if (masses.size() == 1U)
129 return GenerateOneBody(initialMass, masses, finalState);
130
131 theAlgorithm->Generate(initialMass, masses, finalState);
132 return !finalState.empty(); // Generator failure returns empty state
133}
void ReportMissingAlgorithm() const
G4bool GenerateOneBody(G4double initialMass, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState) const
void Generate(G4double initialMass, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState)

References G4cout, G4endl, G4VHadDecayAlgorithm::Generate(), G4HadDecayGenerator::GenerateOneBody(), G4HadDecayGenerator::ReportMissingAlgorithm(), G4HadDecayGenerator::theAlgorithm, and G4HadDecayGenerator::verboseLevel.

Referenced by G4HadDecayGenerator::Generate(), G4ElementaryParticleCollider::generateSCMfinalState(), and G4LightTargetCollider::SingleNucleonScattering().

◆ GenerateOneBody()

G4bool G4HadDecayGenerator::GenerateOneBody ( G4double  initialMass,
const std::vector< G4double > &  masses,
std::vector< G4LorentzVector > &  finalState 
) const
protectedinherited

Definition at line 170 of file G4HadDecayGenerator.cc.

173 {
174 if (verboseLevel>1)
175 G4cout << " >>> G4HadDecayGenerator::GenerateOneBody" << G4endl;
176
177 // Initialization and sanity checks
178 finalState.clear();
179
180 if (masses.size() != 1U) return false; // Should not have been called
181 if (std::fabs(initialMass-masses[0]) > eV) return false;
182
183 if (verboseLevel>2) G4cout << " finalState mass = " << masses[0] << G4endl;
184
185 finalState.push_back(G4LorentzVector(0.,0.,0.,masses[0]));
186 return true;
187}
CLHEP::HepLorentzVector G4LorentzVector
static constexpr double eV
Definition: G4SIunits.hh:201

References eV, G4cout, G4endl, and G4HadDecayGenerator::verboseLevel.

Referenced by G4HadDecayGenerator::Generate().

◆ GetAlgorithmName()

const G4String & G4HadDecayGenerator::GetAlgorithmName ( ) const
inherited

Definition at line 111 of file G4HadDecayGenerator.cc.

111 {
112 static const G4String& none = "NONE";
113 return (theAlgorithm ? theAlgorithm->GetName() : none);
114}
const G4String & GetName() const

References G4VHadDecayAlgorithm::GetName(), and G4HadDecayGenerator::theAlgorithm.

◆ ReportInvalidAlgorithm()

void G4HadDecayGenerator::ReportInvalidAlgorithm ( Algorithm  alg) const
protectedinherited

Definition at line 90 of file G4HadDecayGenerator.cc.

90 {
91 if (verboseLevel)
92 G4cerr << "G4HadDecayGenerator: bad algorithm code " << alg << G4endl;
93
94 throw G4HadronicException(__FILE__, __LINE__, "Invalid algorithm code");
95}
G4GLOB_DLL std::ostream G4cerr

References G4cerr, G4endl, and G4HadDecayGenerator::verboseLevel.

Referenced by G4HadDecayGenerator::G4HadDecayGenerator().

◆ ReportMissingAlgorithm()

void G4HadDecayGenerator::ReportMissingAlgorithm ( ) const
protectedinherited

Definition at line 97 of file G4HadDecayGenerator.cc.

97 {
98 if (verboseLevel)
99 G4cerr << "G4HadDecayGenerator: no algorithm specified" << G4endl;
100
101 throw G4HadronicException(__FILE__, __LINE__, "Null algorithm pointer");
102}

References G4cerr, G4endl, and G4HadDecayGenerator::verboseLevel.

Referenced by G4HadDecayGenerator::Generate().

◆ SetVerboseLevel()

void G4HadDecayGenerator::SetVerboseLevel ( G4int  verbose)
inherited

◆ UseAlgorithm()

void G4HadDecayGenerator::UseAlgorithm ( G4VHadDecayAlgorithm alg)
inlineprotectedinherited

Definition at line 100 of file G4HadDecayGenerator.hh.

100{ theAlgorithm = alg; }

References G4HadDecayGenerator::theAlgorithm.

Field Documentation

◆ theAlgorithm

G4VHadDecayAlgorithm* G4HadDecayGenerator::theAlgorithm
protectedinherited

◆ verboseLevel

G4int G4HadDecayGenerator::verboseLevel
protectedinherited

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