Geant4  10.02.p03
G4GammaParticipants Class Reference

#include <G4GammaParticipants.hh>

Inheritance diagram for G4GammaParticipants:
Collaboration diagram for G4GammaParticipants:

Public Member Functions

virtual ~G4GammaParticipants ()
 
- Public Member Functions inherited from G4QGSParticipants
 G4QGSParticipants ()
 
 G4QGSParticipants (const G4QGSParticipants &right)
 
const G4QGSParticipantsoperator= (const G4QGSParticipants &right)
 
virtual ~G4QGSParticipants ()
 
int operator== (const G4QGSParticipants &right) const
 
int operator!= (const G4QGSParticipants &right) const
 
virtual void DoLorentzBoost (G4ThreeVector aBoost)
 
G4PartonPairGetNextPartonPair ()
 
void BuildInteractions (const G4ReactionProduct &thePrimary)
 
void StartPartonPairLoop ()
 
- Public Member Functions inherited from G4VParticipants
 G4VParticipants ()
 
 G4VParticipants (const G4VParticipants &right)
 
virtual ~G4VParticipants ()
 
const G4VParticipantsoperator= (const G4VParticipants &right)
 
int operator== (const G4VParticipants &right) const
 
int operator!= (const G4VParticipants &right) const
 
virtual void Init (G4int theZ, G4int theA)
 
virtual void SetNucleus (G4V3DNucleus *aNucleus)
 
virtual G4V3DNucleusGetWoundedNucleus () const
 
virtual void InitProjectileNucleus (G4int theZ, G4int theA)
 
virtual void SetProjectileNucleus (G4V3DNucleus *aNucleus)
 
virtual G4V3DNucleusGetProjectileNucleus () const
 

Private Member Functions

virtual G4VSplitableHadronSelectInteractions (const G4ReactionProduct &thePrimary)
 

Additional Inherited Members

- Public Attributes inherited from G4VParticipants
G4V3DNucleustheNucleus
 
G4V3DNucleustheProjectileNucleus
 
- Protected Types inherited from G4QGSParticipants
enum  { SOFT, DIFFRACTIVE }
 
- Protected Member Functions inherited from G4QGSParticipants
void SplitHadrons ()
 
void PerformSoftCollisions ()
 
void PerformDiffractiveCollisions ()
 
G4bool IsSingleDiffractive ()
 
- Protected Attributes inherited from G4QGSParticipants
std::vector< G4InteractionContent * > theInteractions
 
std::vector< G4VSplitableHadron * > theTargets
 
std::vector< G4PartonPair * > thePartonPairs
 
G4SingleDiffractiveExcitation theSingleDiffExcitation
 
G4QGSDiffractiveExcitation theDiffExcitaton
 
G4int ModelMode
 
G4ThreeVector theBoost
 
const G4int nCutMax
 
const G4double ThresholdParameter
 
const G4double QGSMThreshold
 
const G4double theNucleonRadius
 

Detailed Description

Definition at line 37 of file G4GammaParticipants.hh.

Constructor & Destructor Documentation

◆ ~G4GammaParticipants()

virtual G4GammaParticipants::~G4GammaParticipants ( )
inlinevirtual

Definition at line 40 of file G4GammaParticipants.hh.

40 {}
Here is the call graph for this function:

Member Function Documentation

◆ SelectInteractions()

G4VSplitableHadron * G4GammaParticipants::SelectInteractions ( const G4ReactionProduct thePrimary)
privatevirtual

Reimplemented from G4QGSParticipants.

Definition at line 40 of file G4GammaParticipants.cc.

41 {
42  // Check reaction threshold - goes to CheckThreshold
43  G4VSplitableHadron* aProjectile = new G4QGSMSplitableHadron(thePrimary, TRUE); // @@@ check the TRUE
44 
45  const std::vector<G4Nucleon>& theTargetNuc = theNucleus->GetNucleons();
46  G4LorentzVector aPrimaryMomentum(thePrimary.GetMomentum(), thePrimary.GetTotalEnergy());
47  if((!(aPrimaryMomentum.e()>-1)) && (!(aPrimaryMomentum.e()<1)) )
48  {
49  throw G4HadronicException(__FILE__, __LINE__,
50  "G4GammaParticipants::SelectInteractions: primary nan energy.");
51  }
52  G4double S = (aPrimaryMomentum + theTargetNuc[0].Get4Momentum()).mag2();
53  G4double ThresholdMass = thePrimary.GetMass() + theTargetNuc[0].GetDefinition()->GetPDGMass();
54  ModelMode = SOFT;
55  if (sqr(ThresholdMass + ThresholdParameter) > S)
56  {
58  //throw G4HadronicException(__FILE__, __LINE__, "Initial energy is too low. The 4-vectors of the input are inconsistant with the particle masses.");
59  }
60  if (sqr(ThresholdMass + QGSMThreshold) > S) // thus only diffractive in cascade!
61  {
63  }
64 
65  // first find the collisions HPW
66  std::for_each(theInteractions.begin(), theInteractions.end(), DeleteInteractionContent());
67  theInteractions.clear();
68  G4int totalCuts = 0;
69 
70  #ifdef debug_G4GammaParticipants
71  G4double eK = thePrimary.GetKineticEnergy()/GeV;
72  G4int nucleonCount = theTargetNuc.size(); // debug
73  #endif
74 
75  G4int theCurrent = static_cast<G4int> (theTargetNuc.size()*G4UniformRand());
76  const G4Nucleon& pNucleon = theTargetNuc[theCurrent];
77  G4QGSMSplitableHadron* aTarget = new G4QGSMSplitableHadron(pNucleon);
78  theTargets.push_back(aTarget);
79  const_cast<G4Nucleon&>(pNucleon).Hit(aTarget);
80  if ( (0.06 > G4UniformRand() &&(ModelMode==SOFT)) || (ModelMode==DIFFRACTIVE ) )
81  {
82  // diffractive interaction occurs
84  {
85  theSingleDiffExcitation.ExciteParticipants(aProjectile, aTarget);
86  }
87  else
88  {
89  theDiffExcitaton.ExciteParticipants(aProjectile, aTarget);
90  }
91  G4InteractionContent * aInteraction = new G4InteractionContent(aProjectile);
92  aInteraction->SetTarget(aTarget);
93  theInteractions.push_back(aInteraction);
94  aInteraction->SetNumberOfDiffractiveCollisions(1);
95  totalCuts += 1;
96  }
97  else
98  {
99  // nondiffractive soft interaction occurs
100  aTarget->IncrementCollisionCount(1);
101  aProjectile->IncrementCollisionCount(1);
102  G4InteractionContent * aInteraction = new G4InteractionContent(aProjectile);
103  aInteraction->SetTarget(aTarget);
104  aInteraction->SetNumberOfSoftCollisions(1);
105  theInteractions.push_back(aInteraction);
106  totalCuts += 1;
107  }
108  return aProjectile;
109 }
G4double GetMass() const
double S(double temp)
const G4double QGSMThreshold
G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner) const
int G4int
Definition: G4Types.hh:78
#define G4UniformRand()
Definition: Randomize.hh:97
virtual G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner) const
#define TRUE
Definition: globals.hh:55
void IncrementCollisionCount(G4int aCount)
static const double GeV
Definition: G4SIunits.hh:214
G4QGSDiffractiveExcitation theDiffExcitaton
G4V3DNucleus * theNucleus
void SetNumberOfDiffractiveCollisions(int)
std::vector< G4VSplitableHadron * > theTargets
G4double GetTotalEnergy() const
virtual const std::vector< G4Nucleon > & GetNucleons()=0
G4double GetKineticEnergy() const
T sqr(const T &x)
Definition: templates.hh:145
double G4double
Definition: G4Types.hh:76
G4SingleDiffractiveExcitation theSingleDiffExcitation
std::vector< G4InteractionContent * > theInteractions
const G4double ThresholdParameter
G4ThreeVector GetMomentum() const
void SetTarget(G4VSplitableHadron *aTarget)
Here is the call graph for this function:
Here is the caller graph for this function:

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