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

#include <G4INCLNDeltaToDeltaLKChannel.hh>

+ Inheritance diagram for G4INCL::NDeltaToDeltaLKChannel:

Public Member Functions

 NDeltaToDeltaLKChannel (Particle *, Particle *)
 
virtual ~NDeltaToDeltaLKChannel ()
 
void fillFinalState (FinalState *fs)
 
- Public Member Functions inherited from G4INCL::IChannel
 IChannel ()
 
virtual ~IChannel ()
 
FinalStategetFinalState ()
 

Detailed Description

Definition at line 47 of file G4INCLNDeltaToDeltaLKChannel.hh.

Constructor & Destructor Documentation

◆ NDeltaToDeltaLKChannel()

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

Definition at line 51 of file G4INCLNDeltaToDeltaLKChannel.cc.

52 : particle1(p1), particle2(p2)
53 {}

◆ ~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;
113 nucleon = particle2;
114 }
115 else {
116 delta = particle2;
117 nucleon = particle1;
118 }
119
120
121 const G4double sqrtS = KinematicsUtils::totalEnergyInCM(particle1, particle2);
122
123 const G4int iso = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
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 }
149 else if(ParticleTable::getIsospin(particle1->getType()) == ParticleTable::getIsospin(particle2->getType())){// D+ p
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
181 if(Random::shoot()<0.5) PhaseSpaceGenerator::generateBiased(sqrtS, list, 0, angularSlope);
182 else PhaseSpaceGenerator::generateBiased(sqrtS, list, 1, angularSlope);
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()
G4bool nucleon(G4int ityp)

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