118{
120 G4cout <<
" >>> G4ElementaryParticleCollider::collide" <<
G4endl;
121
123 G4cerr <<
" ElementaryParticleCollider -> can collide only particle with particle "
125 return;
126 }
127
128#ifdef G4CASCADE_DEBUG_SAMPLER
129 static G4bool doPrintTables =
true;
130 if (doPrintTables) {
131 printFinalStateTables();
132 doPrintTables = false;
133 }
134#endif
135
137
139
144
145 if (!particle1 || !particle2) {
146 G4cerr <<
" ElementaryParticleCollider -> can only collide hadrons"
148 return;
149 }
150
151
154 G4cerr <<
" ElementaryParticleCollider -> cannot collide "
157 return;
158 }
159
160
161
167 } else {
170 };
171
173
178
179 generateSCMfinalState(ekin, etot_scm, pscm, particle1, particle2,
180 &convertToSCM);
181
182 if (particles.empty()) {
184 G4cerr <<
" ElementaryParticleCollider -> failed to collide "
188 }
189 } else {
192 for(ipart = particles.begin(); ipart != particles.end(); ipart++) {
194 ipart->setMomentum(mom);
195 };
196
197
199 G4cout <<
" incoming particles: \n" << *particle1 <<
G4endl
201 <<
" outgoing particles: " <<
G4endl;
202 for(ipart = particles.begin(); ipart != particles.end(); ipart++)
204
205 G4cout <<
" <<< Non-conservation in G4ElementaryParticleCollider"
207 }
208
211 }
212 } else {
214 if (particle1->
pion() || particle2->
pion() ||
220 } else {
223 };
226
227 generateSCMpionAbsorption(etot_scm, particle1, particle2);
228
229 if (particles.empty()) {
231 G4cerr <<
" ElementaryParticleCollider -> failed to collide "
235 }
236 } else {
239 for(ipart = particles.begin(); ipart != particles.end(); ipart++) {
241 ipart->setMomentum(mom);
242 };
243
245
248 };
249 } else {
250 G4cerr <<
" ElementaryParticleCollider -> can only collide pions with dibaryons "
252 };
253 } else {
254 G4cerr <<
" ElementaryParticleCollider -> can only collide something with nucleon or dibaryon "
256 };
257 };
258}
std::vector< G4InuclElementaryParticle >::iterator particleIterator
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
static const G4CascadeChannel * GetTable(G4int initialState)
virtual G4bool useEPCollider(G4InuclParticle *bullet, G4InuclParticle *target) const
G4InteractionCase interCase
virtual G4bool validateOutput(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
void addOutgoingParticles(const std::vector< G4InuclElementaryParticle > &particles)
void set(G4InuclParticle *part1, G4InuclParticle *part2)
G4bool quasi_deutron() const
G4ParticleDefinition * getDefinition() const
G4double getMomModule() const
G4double getTotalSCMEnergy() const
void setVerbose(G4int vb=0)
void setBullet(const G4InuclParticle *bullet)
G4double getSCMMomentum() const
G4LorentzVector backToTheLab(const G4LorentzVector &mom) const
G4double getKinEnergyInTheTRS() const
void setTarget(const G4InuclParticle *target)
const G4String & GetParticleName() const