Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/inclxx/incl_physics/src/G4INCLNNToNSKpiChannel.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/hadronic/models/inclxx/incl_physics/src/G4INCLNNToNSKpiChannel.cc (Version 11.3.0) and /processes/hadronic/models/inclxx/incl_physics/src/G4INCLNNToNSKpiChannel.cc (Version 10.3.p3)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // INCL++ intra-nuclear cascade model             
 27 // Alain Boudard, CEA-Saclay, France              
 28 // Joseph Cugnon, University of Liege, Belgium    
 29 // Jean-Christophe David, CEA-Saclay, France      
 30 // Pekka Kaitaniemi, CEA-Saclay, France, and H    
 31 // Sylvie Leray, CEA-Saclay, France               
 32 // Davide Mancusi, CEA-Saclay, France             
 33 //                                                
 34 #define INCLXX_IN_GEANT4_MODE 1                   
 35                                                   
 36 #include "globals.hh"                             
 37                                                   
 38 #include "G4INCLNNToNSKpiChannel.hh"              
 39 #include "G4INCLKinematicsUtils.hh"               
 40 #include "G4INCLBinaryCollisionAvatar.hh"         
 41 #include "G4INCLRandom.hh"                        
 42 #include "G4INCLGlobals.hh"                       
 43 #include "G4INCLLogger.hh"                        
 44 #include <algorithm>                              
 45 #include "G4INCLPhaseSpaceGenerator.hh"           
 46                                                   
 47 namespace G4INCL {                                
 48                                                   
 49   const G4double NNToNSKpiChannel::angularSlop    
 50                                                   
 51   NNToNSKpiChannel::NNToNSKpiChannel(Particle     
 52     : particle1(p1), particle2(p2)                
 53     {}                                            
 54                                                   
 55   NNToNSKpiChannel::~NNToNSKpiChannel(){}         
 56                                                   
 57   void NNToNSKpiChannel::fillFinalState(FinalS    
 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                                                   
 76     const G4double sqrtS = KinematicsUtils::to    
 77                                                   
 78     const G4int iso = ParticleTable::getIsospi    
 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;                        
 89         particle2->setType(SigmaMinus);           
 90       }                                           
 91       else if(rdm * 36. < 18.){                   
 92         KaonType = KZero;                         
 93         PionType = PiPlus;                        
 94         particle2->setType(SigmaZero);            
 95       }                                           
 96       else if(rdm * 36. < 22.){                   
 97         KaonType = KZero;                         
 98         PionType = PiZero;                        
 99         particle2->setType(SigmaPlus);            
100       }                                           
101       else if(rdm * 36. < 24.){                   
102         KaonType = KZero;                         
103         PionType = PiPlus;                        
104         particle1->setType(Neutron);              
105         particle2->setType(SigmaPlus);            
106       }                                           
107       else if(rdm * 36. < 28.){                   
108         KaonType = KPlus;                         
109         PionType = PiZero;                        
110         particle2->setType(SigmaZero);            
111       }                                           
112       else if(rdm * 36. < 30.){                   
113         KaonType = KPlus;                         
114         PionType = PiPlus;                        
115         particle1->setType(Neutron);              
116         particle2->setType(SigmaZero);            
117       }                                           
118       else if(rdm * 36. < 32.){                   
119         KaonType = KPlus;                         
120         PionType = PiMinus;                       
121         particle2->setType(SigmaPlus);            
122       }                                           
123       else{                                       
124         KaonType = KPlus;                         
125         PionType = PiZero;                        
126         particle1->setType(Neutron);              
127         particle2->setType(SigmaPlus);            
128       }                                           
129                                                   
130     }                                             
131     else if(iso == -2){                           
132       if(rdm * 36. < 9.){                         
133         KaonType = KZero;                         
134         PionType = PiMinus;                       
135         particle2->setType(SigmaPlus);            
136       }                                           
137       else if(rdm * 36. < 18.){                   
138         KaonType = KPlus;                         
139         PionType = PiMinus;                       
140         particle2->setType(SigmaZero);            
141       }                                           
142       else if(rdm * 36. < 22.){                   
143         KaonType = KPlus;                         
144         PionType = PiZero;                        
145         particle2->setType(SigmaMinus);           
146       }                                           
147       else if(rdm * 36. < 24.){                   
148         KaonType = KPlus;                         
149         PionType = PiMinus;                       
150         particle1->setType(Proton);               
151         particle2->setType(SigmaMinus);           
152       }                                           
153       else if(rdm * 36. < 28.){                   
154         KaonType = KZero;                         
155         PionType = PiZero;                        
156         particle2->setType(SigmaZero);            
157       }                                           
158       else if(rdm * 36. < 30.){                   
159         KaonType = KZero;                         
160         PionType = PiMinus;                       
161         particle1->setType(Proton);               
162         particle2->setType(SigmaZero);            
163       }                                           
164       else if(rdm * 36. < 32.){                   
165         KaonType = KZero;                         
166         PionType = PiPlus;                        
167         particle2->setType(SigmaMinus);           
168       }                                           
169       else{                                       
170         KaonType = KZero;                         
171         PionType = PiZero;                        
172         particle1->setType(Proton);               
173         particle2->setType(SigmaMinus);           
174       }                                           
175                                                   
176     }                                             
177     else if(rdm*36. < 4.){                        
178       KaonType = KPlus;                           
179       PionType = PiZero;                          
180       particle1->setType(Proton);                 
181       particle2->setType(SigmaMinus);             
182     }                                             
183     else if(rdm*36. < 6.){                        
184       KaonType = KZero;                           
185       PionType = PiZero;                          
186       particle1->setType(Neutron);                
187       particle2->setType(SigmaPlus);              
188     }                                             
189     else if(rdm*36. < 8.){                        
190       KaonType = KPlus;                           
191       PionType = PiPlus;                          
192       particle1->setType(Neutron);                
193       particle2->setType(SigmaMinus);             
194     }                                             
195     else if(rdm*36. < 9.){                        
196       KaonType = KZero;                           
197       PionType = PiMinus;                         
198       particle1->setType(Proton);                 
199       particle2->setType(SigmaPlus);              
200     }                                             
201     else if(rdm*36. < 18.){                       
202       KaonType = KZero;                           
203       PionType = PiZero;                          
204       particle1->setType(Proton);                 
205       particle2->setType(SigmaZero);              
206     }                                             
207     else if(rdm*36. < 27.){                       
208       KaonType = KPlus;                           
209       PionType = PiZero;                          
210       particle1->setType(Neutron);                
211       particle2->setType(SigmaZero);              
212     }                                             
213     else if(rdm*36. < 28.){                       
214       KaonType = KZero;                           
215       PionType = PiPlus;                          
216       particle1->setType(Neutron);                
217       particle2->setType(SigmaZero);              
218     }                                             
219     else if(rdm*36. < 30.){                       
220       KaonType = KPlus;                           
221       PionType = PiMinus;                         
222       particle1->setType(Proton);                 
223       particle2->setType(SigmaZero);              
224     }                                             
225     else if(rdm*36. < 32.){                       
226       KaonType = KZero;                           
227       PionType = PiPlus;                          
228       particle1->setType(Proton);                 
229       particle2->setType(SigmaMinus);             
230     }                                             
231     else{                                         
232       KaonType = KPlus;                           
233       PionType = PiMinus;                         
234       particle1->setType(Neutron);                
235       particle2->setType(SigmaPlus);              
236     }                                             
237                                                   
238     ParticleList list;                            
239     list.push_back(particle1);                    
240     list.push_back(particle2);                    
241     const ThreeVector &rcol1 = particle1->getP    
242     const ThreeVector &rcol2 = particle2->getP    
243     const ThreeVector zero;                       
244     Particle *pion = new Particle(PionType,zer    
245     Particle *kaon = new Particle(KaonType,zer    
246     list.push_back(kaon);                         
247     list.push_back(pion);                         
248                                                   
249     if(Random::shoot()<0.5) PhaseSpaceGenerato    
250     else PhaseSpaceGenerator::generateBiased(s    
251                                                   
252     INCL_DEBUG("NNToNSKpi " << (kaon->getMomen    
253                                                   
254     fs->addModifiedParticle(particle1);           
255     fs->addModifiedParticle(particle2);           
256     fs->addCreatedParticle(kaon);                 
257     fs->addCreatedParticle(pion);                 
258                                                   
259   }                                               
260 }                                                 
261