Geant4-11
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
G4INCL::NDeltaToDeltaLKChannel Class Reference

#include <G4INCLNDeltaToDeltaLKChannel.hh>

Inheritance diagram for G4INCL::NDeltaToDeltaLKChannel:
G4INCL::IChannel

Public Member Functions

void fillFinalState (FinalState *fs)
 
FinalStategetFinalState ()
 
 NDeltaToDeltaLKChannel (Particle *, Particle *)
 
virtual ~NDeltaToDeltaLKChannel ()
 

Private Member Functions

 INCL_DECLARE_ALLOCATION_POOL (NDeltaToDeltaLKChannel)
 
G4double sampleDeltaMass (G4double ecm)
 

Private Attributes

Particleparticle1
 
Particleparticle2
 

Static Private Attributes

static const G4double angularSlope = 2.
 

Detailed Description

Definition at line 47 of file G4INCLNDeltaToDeltaLKChannel.hh.

Constructor & Destructor Documentation

◆ NDeltaToDeltaLKChannel()

G4INCL::NDeltaToDeltaLKChannel::NDeltaToDeltaLKChannel ( Particle p1,
Particle p2 
)

◆ ~NDeltaToDeltaLKChannel()

G4INCL::NDeltaToDeltaLKChannel::~NDeltaToDeltaLKChannel ( )
virtual

Definition at line 55 of file G4INCLNDeltaToDeltaLKChannel.cc.

55{}

Member Function Documentation

◆ fillFinalState()

void G4INCL::NDeltaToDeltaLKChannel::fillFinalState ( FinalState fs)
virtual

Implements G4INCL::IChannel.

Definition at line 96 of file G4INCLNDeltaToDeltaLKChannel.cc.

96 {
97 // D++ p -> L K+ D++ (4)
98 //
99 // D++ n -> L K+ D+ (3)
100 // D++ n -> L K0 D++ (4)
101 //
102 // D+ p -> L K0 D++ (3)
103 // D+ p -> L K+ D+ (2)
104 //
105 // D+ n -> L K+ D0 (4)
106 // D+ n -> L K0 D+ (2)
107
108 Particle *delta;
109 Particle *nucleon;
110
111 if (particle1->isResonance()) {
112 delta = particle1;
114 }
115 else {
116 delta = particle2;
118 }
119
120
122
124 const G4int iso_d = ParticleTable::getIsospin(delta->getType());
125 const G4double rdm = Random::shoot();
126
127/* const G4double m1 = particle1->getMass();
128 const G4double m2 = particle2->getMass();
129 const G4double pLab = KinematicsUtils::momentumInLab(particle1, particle2);*/
130
131 ParticleType KaonType;
132 ParticleType DeltaType;
133 nucleon->setType(Lambda);
134
135 if(std::abs(iso) == 4){// D++ p
136 KaonType = ParticleTable::getKaonType(iso/4);
137 DeltaType = ParticleTable::getDeltaType(3*iso/4);
138 }
139 else if(iso == 0){// D+ n
140 if(rdm*3 < 2){
141 KaonType = ParticleTable::getKaonType(iso_d);
142 DeltaType = ParticleTable::getDeltaType(-iso_d);
143 }
144 else{
145 KaonType = ParticleTable::getKaonType(-iso_d);
146 DeltaType = ParticleTable::getDeltaType(iso_d);
147 }
148 }
150 if(rdm*5 < 3){
151 KaonType = ParticleTable::getKaonType(-iso/2);
152 DeltaType = ParticleTable::getDeltaType(3*iso/2);
153 }
154 else{
155 KaonType = ParticleTable::getKaonType(iso/2);
156 DeltaType = ParticleTable::getDeltaType(iso/2);
157 }
158 }
159 else{// D++ n
160 if(rdm*7 < 3){
161 KaonType = ParticleTable::getKaonType(iso/2);
162 DeltaType = ParticleTable::getDeltaType(iso/2);
163 }
164 else{
165 KaonType = ParticleTable::getKaonType(-iso/2);
166 DeltaType = ParticleTable::getDeltaType(3*iso/2);
167 }
168 }
169
170 delta->setType(DeltaType);
171 delta->setMass(sampleDeltaMass(sqrtS));
172
173 ParticleList list;
174 list.push_back(delta);
175 list.push_back(nucleon);
176 const ThreeVector &rcol = nucleon->getPosition();
177 const ThreeVector zero;
178 Particle *kaon = new Particle(KaonType,zero,rcol);
179 list.push_back(kaon);
180
183
184
185 fs->addModifiedParticle(delta);
186 fs->addModifiedParticle(nucleon);
187 fs->addCreatedParticle(kaon);
188
189 }
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4INCL::ParticleType getType() const
G4bool isResonance() const
Is it a resonance?
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
ParticleType getKaonType(const G4int isosp)
Get the type of kaon.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
ParticleType getDeltaType(const G4int isosp)
Get the type of delta.
void generateBiased(const G4double sqrtS, ParticleList &particles, const size_t index, const G4double slope)
Generate a biased event in the CM system.
G4double shoot()
Definition: G4INCLRandom.cc:93
G4bool nucleon(G4int ityp)
static const G4LorentzVector zero(0., 0., 0., 0.)

References G4INCL::FinalState::addCreatedParticle(), G4INCL::FinalState::addModifiedParticle(), angularSlope, G4INCL::PhaseSpaceGenerator::generateBiased(), G4INCL::ParticleTable::getDeltaType(), G4INCL::ParticleTable::getIsospin(), G4INCL::ParticleTable::getKaonType(), G4INCL::Particle::getType(), G4INCL::Particle::isResonance(), G4INCL::Lambda, G4InuclParticleNames::nucleon(), particle1, particle2, sampleDeltaMass(), G4INCL::Particle::setMass(), G4INCL::Particle::setType(), G4INCL::Random::shoot(), G4INCL::KinematicsUtils::totalEnergyInCM(), and anonymous_namespace{G4CascadeDeexciteBase.cc}::zero.

◆ getFinalState()

FinalState * G4INCL::IChannel::getFinalState ( )
inherited

Definition at line 50 of file G4INCLIChannel.cc.

50 {
51 FinalState *fs = new FinalState;
53 return fs;
54 }
virtual void fillFinalState(FinalState *fs)=0

References G4INCL::IChannel::fillFinalState().

◆ INCL_DECLARE_ALLOCATION_POOL()

G4INCL::NDeltaToDeltaLKChannel::INCL_DECLARE_ALLOCATION_POOL ( NDeltaToDeltaLKChannel  )
private

◆ sampleDeltaMass()

G4double G4INCL::NDeltaToDeltaLKChannel::sampleDeltaMass ( G4double  ecm)
private

Definition at line 57 of file G4INCLNDeltaToDeltaLKChannel.cc.

57 {
59 const G4double maxDeltaMassRndm = std::atan((maxDeltaMass-ParticleTable::effectiveDeltaMass)*2./ParticleTable::effectiveDeltaWidth);
60 const G4double deltaMassRndmRange = maxDeltaMassRndm - ParticleTable::minDeltaMassRndm;
61// assert(deltaMassRndmRange>0.);
62
63 G4double y=ecm*ecm;
64 G4double q2=(y-1.157776E6)*(y-6.4E5)/y/4.0; // 1.157776E6 = 1076^2 = (mNucleon + mPion)^2, 6.4E5 = 800^2 = (mNucleon - mPion)^2
65 G4double q3=std::pow(std::sqrt(q2), 3.);
66 const G4double f3max=q3/(q3+5.832E6); // 5.832E6 = 180^3 = ???^3
67 G4double x;
68
69 G4int nTries = 0;
70 G4bool success = false;
71 while(!success) { /* Loop checking, 10.07.2015, D.Mancusi */
72 if(++nTries >= 100000) {
73 INCL_WARN("NDeltaToDeltaLKChannel::sampleDeltaMass loop was stopped because maximum number of tries was reached. Minimum delta mass "
74 << ParticleTable::minDeltaMass << " MeV with CM energy " << ecm << " MeV may be unphysical." << '\n');
76 }
77
78 G4double rndm = ParticleTable::minDeltaMassRndm + Random::shoot() * deltaMassRndmRange;
79 y = std::tan(rndm);
81// assert(x>=ParticleTable::minDeltaMass && ecm >= x + ParticleTable::effectiveLambdaMass + ParticleTable::effectiveKaonMass + 1.0);
82
83 // generation of the delta mass with the penetration factor
84 // (see prc56(1997)2431)
85 y=x*x;
86 q2=(y-1.157776E6)*(y-6.4E5)/y/4.0; // 1.157776E6 = 1076^2 = (mNucleon + mPion)^2, 6.4E5 = 800^2 = (mNucleon - mPion)^2
87 q3=std::pow(std::sqrt(q2), 3.);
88 const G4double f3=q3/(q3+5.832E6); // 5.832E6 = 180^3 = ???^3
89 rndm = Random::shoot();
90 if (rndm*f3max < f3)
91 success = true;
92 }
93 return x;
94 }
#define INCL_WARN(x)
bool G4bool
Definition: G4Types.hh:86
const G4double effectiveDeltaWidth
const G4double effectiveKaonMass
const G4double effectiveDeltaMass
G4ThreadLocal G4double minDeltaMass
const G4double effectiveLambdaMass
G4ThreadLocal G4double minDeltaMassRndm

References G4INCL::ParticleTable::effectiveDeltaMass, G4INCL::ParticleTable::effectiveDeltaWidth, G4INCL::ParticleTable::effectiveKaonMass, G4INCL::ParticleTable::effectiveLambdaMass, INCL_WARN, G4INCL::ParticleTable::minDeltaMass, G4INCL::ParticleTable::minDeltaMassRndm, and G4INCL::Random::shoot().

Referenced by fillFinalState().

Field Documentation

◆ angularSlope

const G4double G4INCL::NDeltaToDeltaLKChannel::angularSlope = 2.
staticprivate

Definition at line 59 of file G4INCLNDeltaToDeltaLKChannel.hh.

Referenced by fillFinalState().

◆ particle1

Particle* G4INCL::NDeltaToDeltaLKChannel::particle1
private

Definition at line 57 of file G4INCLNDeltaToDeltaLKChannel.hh.

Referenced by fillFinalState().

◆ particle2

Particle * G4INCL::NDeltaToDeltaLKChannel::particle2
private

Definition at line 57 of file G4INCLNDeltaToDeltaLKChannel.hh.

Referenced by fillFinalState().


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