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

#include <G4INCLNNToNSKpiChannel.hh>

Inheritance diagram for G4INCL::NNToNSKpiChannel:
G4INCL::IChannel

Public Member Functions

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

Private Member Functions

 INCL_DECLARE_ALLOCATION_POOL (NNToNSKpiChannel)
 

Private Attributes

Particleparticle1
 
Particleparticle2
 

Static Private Attributes

static const G4double angularSlope = 2.
 

Detailed Description

Definition at line 47 of file G4INCLNNToNSKpiChannel.hh.

Constructor & Destructor Documentation

◆ NNToNSKpiChannel()

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

Definition at line 51 of file G4INCLNNToNSKpiChannel.cc.

◆ ~NNToNSKpiChannel()

G4INCL::NNToNSKpiChannel::~NNToNSKpiChannel ( )
virtual

Definition at line 55 of file G4INCLNNToNSKpiChannel.cc.

55{}

Member Function Documentation

◆ fillFinalState()

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

Implements G4INCL::IChannel.

Definition at line 57 of file G4INCLNNToNSKpiChannel.cc.

57 {
58
59 // pp (36) pn (36)
60 //
61 // pp -> p pi+ S- K+ (9)
62 // pp -> p pi+ S0 K0 (9)
63 // pp -> p pi0 S+ K0 (4)
64 // pp -> n pi+ S+ K0 (2)
65 // pp -> p pi0 S0 K+ (4)
66 // pp -> n pi+ S0 K+ (2)
67 // pp -> p pi- S+ K+ (2)
68 // pp -> n pi0 S+ K+ (4)
69
70 // pn -> p pi0 S- K+ (4)
71 // pn -> n pi+ S- K+ (2)
72 // pn -> p pi0 S0 K0 (2)
73 // pn -> n pi+ S0 K0 (1)
74 // pn -> p pi+ S- K0 (9)
75
77
79
80 ParticleType KaonType;
81 ParticleType PionType;
82
83 G4double rdm = Random::shoot();
84
85 if(iso == 2){
86 if(rdm * 36. < 9.){
87 KaonType = KPlus;
88 PionType = PiPlus;
90 }
91 else if(rdm * 36. < 18.){
92 KaonType = KZero;
93 PionType = PiPlus;
95 }
96 else if(rdm * 36. < 22.){
97 KaonType = KZero;
98 PionType = PiZero;
100 }
101 else if(rdm * 36. < 24.){
102 KaonType = KZero;
103 PionType = PiPlus;
106 }
107 else if(rdm * 36. < 28.){
108 KaonType = KPlus;
109 PionType = PiZero;
111 }
112 else if(rdm * 36. < 30.){
113 KaonType = KPlus;
114 PionType = PiPlus;
117 }
118 else if(rdm * 36. < 32.){
119 KaonType = KPlus;
120 PionType = PiMinus;
122 }
123 else{
124 KaonType = KPlus;
125 PionType = PiZero;
128 }
129
130 }
131 else if(iso == -2){
132 if(rdm * 36. < 9.){
133 KaonType = KZero;
134 PionType = PiMinus;
136 }
137 else if(rdm * 36. < 18.){
138 KaonType = KPlus;
139 PionType = PiMinus;
141 }
142 else if(rdm * 36. < 22.){
143 KaonType = KPlus;
144 PionType = PiZero;
146 }
147 else if(rdm * 36. < 24.){
148 KaonType = KPlus;
149 PionType = PiMinus;
152 }
153 else if(rdm * 36. < 28.){
154 KaonType = KZero;
155 PionType = PiZero;
157 }
158 else if(rdm * 36. < 30.){
159 KaonType = KZero;
160 PionType = PiMinus;
163 }
164 else if(rdm * 36. < 32.){
165 KaonType = KZero;
166 PionType = PiPlus;
168 }
169 else{
170 KaonType = KZero;
171 PionType = PiZero;
174 }
175
176 }
177 else if(rdm*36. < 4.){
178 KaonType = KPlus;
179 PionType = PiZero;
182 }
183 else if(rdm*36. < 6.){
184 KaonType = KZero;
185 PionType = PiZero;
188 }
189 else if(rdm*36. < 8.){
190 KaonType = KPlus;
191 PionType = PiPlus;
194 }
195 else if(rdm*36. < 9.){
196 KaonType = KZero;
197 PionType = PiMinus;
200 }
201 else if(rdm*36. < 18.){
202 KaonType = KZero;
203 PionType = PiZero;
206 }
207 else if(rdm*36. < 27.){
208 KaonType = KPlus;
209 PionType = PiZero;
212 }
213 else if(rdm*36. < 28.){
214 KaonType = KZero;
215 PionType = PiPlus;
218 }
219 else if(rdm*36. < 30.){
220 KaonType = KPlus;
221 PionType = PiMinus;
224 }
225 else if(rdm*36. < 32.){
226 KaonType = KZero;
227 PionType = PiPlus;
230 }
231 else{
232 KaonType = KPlus;
233 PionType = PiMinus;
236 }
237
238 ParticleList list;
239 list.push_back(particle1);
240 list.push_back(particle2);
241 const ThreeVector &rcol1 = particle1->getPosition();
242 const ThreeVector &rcol2 = particle2->getPosition();
243 const ThreeVector zero;
244 Particle *pion = new Particle(PionType,zero,rcol1);
245 Particle *kaon = new Particle(KaonType,zero,rcol2);
246 list.push_back(kaon);
247 list.push_back(pion);
248
251
252 INCL_DEBUG("NNToNSKpi " << (kaon->getMomentum().theta()) * 180. / G4INCL::Math::pi << '\n');
253
254 fs->addModifiedParticle(particle1);
255 fs->addModifiedParticle(particle2);
256 fs->addCreatedParticle(kaon);
257 fs->addCreatedParticle(pion);
258
259 }
#define INCL_DEBUG(x)
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
static const G4double angularSlope
const G4INCL::ThreeVector & getPosition() const
G4INCL::ParticleType getType() const
void setType(ParticleType t)
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
const G4double pi
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
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 pion(G4int ityp)
static const G4LorentzVector zero(0., 0., 0., 0.)

References G4INCL::FinalState::addCreatedParticle(), G4INCL::FinalState::addModifiedParticle(), angularSlope, G4INCL::PhaseSpaceGenerator::generateBiased(), G4INCL::ParticleTable::getIsospin(), G4INCL::Particle::getMomentum(), G4INCL::Particle::getPosition(), G4INCL::Particle::getType(), INCL_DEBUG, G4INCL::KPlus, G4INCL::KZero, G4INCL::Neutron, particle1, particle2, G4INCL::Math::pi, G4INCL::PiMinus, G4InuclParticleNames::pion(), G4INCL::PiPlus, G4INCL::PiZero, G4INCL::Proton, G4INCL::Particle::setType(), G4INCL::Random::shoot(), G4INCL::SigmaMinus, G4INCL::SigmaPlus, G4INCL::SigmaZero, G4INCL::ThreeVector::theta(), 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::NNToNSKpiChannel::INCL_DECLARE_ALLOCATION_POOL ( NNToNSKpiChannel  )
private

Field Documentation

◆ angularSlope

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

Definition at line 57 of file G4INCLNNToNSKpiChannel.hh.

Referenced by fillFinalState().

◆ particle1

Particle* G4INCL::NNToNSKpiChannel::particle1
private

Definition at line 55 of file G4INCLNNToNSKpiChannel.hh.

Referenced by fillFinalState().

◆ particle2

Particle * G4INCL::NNToNSKpiChannel::particle2
private

Definition at line 55 of file G4INCLNNToNSKpiChannel.hh.

Referenced by fillFinalState().


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