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

#include <G4INCLAntinucleiAtrestEntryChannel.hh>

Inheritance diagram for G4INCL::AntinucleiAtrestEntryChannel:

Public Member Functions

 AntinucleiAtrestEntryChannel (Nucleus *n, Cluster *ac, ThreeVector pos1, ThreeVector pos2)
 AntinucleiAtrestEntryChannel (Nucleus *n, Particle *p)
virtual ~AntinucleiAtrestEntryChannel ()
void fillFinalState (FinalState *fs)
ThreeVector getAnnihilationPosition (ThreeVector nbarPos, ThreeVector pbarPos)
ParticleList makeMesonStar ()
IAvatarList bringMesonStar (ParticleList const &pL, Nucleus *const n)
Public Member Functions inherited from G4INCL::IChannel
 IChannel ()
virtual ~IChannel ()
FinalStategetFinalState ()

Detailed Description

Definition at line 53 of file G4INCLAntinucleiAtrestEntryChannel.hh.

Constructor & Destructor Documentation

◆ AntinucleiAtrestEntryChannel() [1/2]

G4INCL::AntinucleiAtrestEntryChannel::AntinucleiAtrestEntryChannel ( Nucleus * n,
Cluster * ac,
ThreeVector pos1,
ThreeVector pos2 )

Definition at line 52 of file G4INCLAntinucleiAtrestEntryChannel.cc.

53 :theNucleus(n), theantiComposite(ac), Posnbar(pos1), Pospbar(pos2){}

◆ AntinucleiAtrestEntryChannel() [2/2]

G4INCL::AntinucleiAtrestEntryChannel::AntinucleiAtrestEntryChannel ( Nucleus * n,
Particle * p )

Definition at line 55 of file G4INCLAntinucleiAtrestEntryChannel.cc.

55:theNucleus(n),Meson(p){}

◆ ~AntinucleiAtrestEntryChannel()

G4INCL::AntinucleiAtrestEntryChannel::~AntinucleiAtrestEntryChannel ( )
virtual

Definition at line 57 of file G4INCLAntinucleiAtrestEntryChannel.cc.

57{}

Member Function Documentation

◆ bringMesonStar()

IAvatarList G4INCL::AntinucleiAtrestEntryChannel::bringMesonStar ( ParticleList const & pL,
Nucleus *const n )

Definition at line 115 of file G4INCLAntinucleiAtrestEntryChannel.cc.

115 {
116 ThreeVector ann_position = getAnnihilationPosition(Posnbar,Pospbar);
117 IAvatarList theAvatarList;
118 G4int cnt=1;
119 if (ann_position.getX() == 999. && ann_position.getY() == 999. && ann_position.getZ() == 999.){
120 INCL_DEBUG("Particle are close to each other : 2 sources of annihilation "<< '\n');
121 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p){
122 if(cnt <= pbarListSize){
123 (*p)->setPosition(Pospbar);
124 }
125 else
126 (*p)->setPosition(Posnbar);
127 theAvatarList.push_back(new ParticleEntryAvatar(0.0, n, *p, ADAR));
128 cnt++;
129 }
130 }
131 else{
132 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p){
133 (*p)->setPosition(ann_position);
134 theAvatarList.push_back(new ParticleEntryAvatar(0.0, n, *p, ADAR));
135 }
136 }
137 return theAvatarList;
138 }
#define INCL_DEBUG(x)
int G4int
Definition G4Types.hh:85
ThreeVector getAnnihilationPosition(ThreeVector nbarPos, ThreeVector pbarPos)
ParticleList::const_iterator ParticleIter
UnorderedVector< IAvatar * > IAvatarList

Referenced by G4INCL::StandardPropagationModel::shootCompositeAtrest().

◆ fillFinalState()

void G4INCL::AntinucleiAtrestEntryChannel::fillFinalState ( FinalState * fs)
virtual

Implements G4INCL::IChannel.

Definition at line 140 of file G4INCLAntinucleiAtrestEntryChannel.cc.

140 {
141 const G4double energyBefore = Meson->getEnergy();
142 fs->addEnteringParticle(Meson);
143 INCL_DEBUG("Entering antiComposite annihilation product added " << '\n');
144 fs->setTotalEnergyBeforeInteraction(energyBefore);
145 }
double G4double
Definition G4Types.hh:83

◆ getAnnihilationPosition()

ThreeVector G4INCL::AntinucleiAtrestEntryChannel::getAnnihilationPosition ( ThreeVector nbarPos,
ThreeVector pbarPos )

Definition at line 59 of file G4INCLAntinucleiAtrestEntryChannel.cc.

59 { //Choose between the pbar or nbar annihilation position
60 if((nbarPos - pbarPos).mag2() <= ParticleTable::getLargestNuclearRadius(-theantiComposite->getA(),- theantiComposite->getZ())){
61 //If the annihilions positions are close (the radius of a deuteron) then we have 2 sources for the meson star
62 return ThreeVector(999.,999.,999.);
63 }
64 if(nbarPos.mag2() <= pbarPos.mag2())
65 return nbarPos;
66 else
67 return pbarPos;
68 }
G4double getLargestNuclearRadius(const G4int A, const G4int Z)

Referenced by bringMesonStar().

◆ makeMesonStar()

ParticleList G4INCL::AntinucleiAtrestEntryChannel::makeMesonStar ( )

Definition at line 70 of file G4INCLAntinucleiAtrestEntryChannel.cc.

70 {
71 ParticleList Antiparticles = theantiComposite->getParticles();
72 Particle *nbar=nullptr;
73 Particle *pbar=nullptr;
74 for(ParticleIter p =Antiparticles.begin(), e=Antiparticles.end(); p!=e; ++p){
75 if((*p)->getType()==antiProton)
76 pbar = *p;
77 else if((*p)->getType()==antiNeutron)
78 nbar = *p;
79 else
80 INCL_ERROR("ERROR : something else than antiNeutron or antiProton in antiComposite");
81 }
82 PbarAtrestEntryChannel *pbarChannel = new PbarAtrestEntryChannel(theNucleus, pbar);
83 NbarAtrestEntryChannel *nbarChannel = new NbarAtrestEntryChannel(theNucleus, nbar);
84
85 ParticleList TotalStarList = pbarChannel->makeMesonStar(); //pbar in first because polarisation of the dbar (Coulomb)
86 ParticleList nbarMesonStar = nbarChannel->makeMesonStar();
87 pbarListSize = (G4int)TotalStarList.size();
88
89 for(ParticleIter p=nbarMesonStar.begin(), e=nbarMesonStar.end(); p!=e; ++p){
90 TotalStarList.push_back(*p);
91 }
92 Pospbar = pbarChannel->getAnnihilationPosition();
93 Posnbar = nbarChannel->getAnnihilationPosition();
94
95 G4double EnergyofFinalMesonStar = 0;
96 G4int a=theNucleus->getA();
97 G4int z=theNucleus->getZ();
98 G4int stra=theNucleus->getS();
99 if(theNucleus->getAnnihilationType()==DNbarPPbarPType){
100 EnergyofFinalMesonStar = theantiComposite->getMass() + (ParticleTable::getTableMass(a+2,z+2,stra)- ParticleTable::getTableMass(a,z+1,stra));
101 }
102 else if(theNucleus->getAnnihilationType()==DNbarPPbarNType || theNucleus->getAnnihilationType()==DNbarNPbarPType){
103 //Correction for all but they all cancel out !
104 EnergyofFinalMesonStar = theantiComposite->getMass() + (ParticleTable::getTableMass(a+2,z+1,stra)- ParticleTable::getTableMass(a,z,stra));
105
106 }
107 else if(theNucleus->getAnnihilationType()==DNbarNPbarNType){
108 EnergyofFinalMesonStar = theantiComposite->getMass() + (ParticleTable::getTableMass(a+2,z,stra) - ParticleTable::getTableMass(a,z-1,stra));
109 }
110 PhaseSpaceGenerator::generate(EnergyofFinalMesonStar, TotalStarList);
111
112 return TotalStarList;
113 }
#define INCL_ERROR(x)
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
void generate(const G4double sqrtS, ParticleList &particles)
Generate an event in the CM system.
@ DNbarNPbarNType
@ DNbarNPbarPType
@ DNbarPPbarPType
@ DNbarPPbarNType
std::vector< Base * > ParticleList
Definition PoPI.hpp:186

Referenced by G4INCL::StandardPropagationModel::shootCompositeAtrest().


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