Ignore:
Timestamp:
Nov 25, 2009, 5:13:58 PM (16 years ago)
Author:
garnier
Message:

update CVS release candidate geant4.9.3.01

Location:
trunk/source/processes/hadronic/models/cascade
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/cascade/History

    r1055 r1196  
    1515     ---------------------------------------------------------------
    1616
     1711 Nov 2009 Dennis Wright (hadr-casc-V09-02-10)
     18-----------------------------------------------
     19- G4CascadParticle, G4InuclElementaryParticle: add integer argument to ctor
     20  to indicate which generation cascade particle belongs to.
     21  Also change G4NucleiModel and G4BertiniNucleiModel to use this.
     22
     23 8 Oct 2009 Dennis Wright (hadr-casc-V09-02-09)
     24-----------------------------------------------
     25- G4PionSampler:  use charge exchange cross section for pi0-p, go back
     26   original Bertini pi0-p elastic partial cs.  Update pi0 total cross
     27   section accordingly.  Improve fits to pi-p partial cs and update
     28   pi- total cross sections.
     29- G4NucleiModel: update pi- and pi0 total cross sections
     30
     3124 Sep 2009 Dennis Wright (hadr-casc-V09-02-08)
     32-----------------------------------------------
     33- add class G4NucleonSampler which replaces old pp, pn, and nn partial and
     34    total cross sections also modify other classes which use them
     35- move large arrays which are instantiated at every call of frequently
     36    used methods.  They are now initialized once in constructors.
     37- G4CascadSpecialFunctions: put copy of total cross section method
     38    in G4NucleiModel, also remove unneeded energy scale arrays
     39    (now replaced with a new one)
     40- G4CascadeInterface: move instantiation of various collider classes
     41    outside of loop, and put on stack instead of heap
     42- G4ElementaryParticleCollider: re-design to use G4NucleonSampler and
     43    remove instantiation of large arrays from within loops in code
     44- G4NucleiModel: remove instatiation of large arrays from with loops,
     45    add new total cross section sampling, remove use of all but one
     46    energy scale
     47
     4817 Sep 2009 Dennis Wright (hadr-casc-V09-02-07)
     49-----------------------------------------------
     50- G4PionSampler: remove large static arrays
     51- G4FinalStateSampler: remove static array pointer to G4 particle types
     52- G4ElementaryParticleCollider: clean up
     53
     544 Sep 2009 Dennis Wright (hadr-casc-V09-02-06)
     55----------------------------------------------
     56- add assignment operator to class G4CollisionOutput
     57
     5831 Aug 2009 Dennis Wright (hadr-casc-V09-02-05)
     59-----------------------------------------------
     60- add class G4FinalStateSampler which was accidentally omitted from
     61  the previous tag
     62
     6325 Aug 2009 Dennis Wright (hadr-casc-V09-02-04)
     64-----------------------------------------------
     65- correct bug in particle ordering in G4PionSampler
     66- clean up dead code in G4NucleiModel and G4ElementaryParticleCollider
     67
     6820 Aug 2009 Dennis Wright (hadr-casc-V09-02-03)
     69-----------------------------------------------
     70- create class G4PionSampler: samples partial cross sections, multiplicities
     71  and final state particle types required for pi+, pi- and pi0 scattering
     72  within a nucleus.  This class uses re-evaluated pion partial cross sections
     73  and includes production of strange particle pairs.
     74- G4CascadeSigmaPlusNChannel: correct sigma plus cross sections
     75- G4CascadSpecialFunctions:  move pion, kaon, hyperon total cross sections
     76  to this class
     77- G4ElementaryParticleCollider: re-write to use G4PionSampler class for
     78  cross sections and multiplicities, remove method reChargering (now redundant)
     79 
    178015 Apr 2009 Dennis Wright (hadr-casc-V09-02-02)
    1881-----------------------------------------------
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4CascadParticle.hh

    r962 r1196  
    3838                   const std::vector<G4double>& pos,
    3939                   G4int izone,
    40                    G4double cpath)
     40                   G4double cpath,
     41                   G4int gen)
    4142
    4243    : theParticle(particle),
     
    4647    current_path = cpath;
    4748    movingIn = true;
    48     reflectionCounter = 0;   
     49    reflectionCounter = 0;
     50    generation = gen;
    4951  };
    5052
     
    126128           << " z " << position[2] << G4endl;
    127129  };
     130
     131  G4int getGeneration() {
     132    return generation;
     133  }
    128134   
    129135private:
     
    137143  G4int reflectionCounter;   
    138144  G4bool reflected;
    139  
     145  G4int generation;
    140146};       
    141147
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4CascadSpecialFunctions.hh

    r1007 r1196  
    3535namespace G4CascadSpecialFunctions {
    3636
    37   std::pair<G4int, G4double> getPositionInEnergyScale2(G4double e);
     37  std::pair<G4int, G4double> getPositionInEnergyScale3(G4double e);
    3838
    39   std::pair<G4int, G4double> getPositionInEnergyScale1(G4double e);
    40  
    41   G4double absorptionCrosSection(G4double e,
    42                                  G4int type);
     39  G4double absorptionCrosSection(G4double e, G4int type);
    4340
    44   G4double crossSection(G4double e,
    45                         G4int is);
    46 
    47   std::pair<G4int, G4double> getPositionInEnergyScaleEMS(G4double e);
     41  G4double crossSection(G4double e, G4int is);
    4842
    4943}
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4CascadeInterface.hh

    r962 r1196  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CascadeInterface.hh,v 1.13 2008/10/18 16:04:40 vnivanch Exp $
     26// $Id: G4CascadeInterface.hh,v 1.14 2009/09/24 20:48:02 dennis Exp $
    2727// Defines an interface to Bertini (BERT) cascade
    2828// based on INUCL  intra-nuclear transport.models
     
    4040#include "G4ReactionProductVector.hh"
    4141#include "G4ReactionProduct.hh"
     42
     43#include "G4ElementaryParticleCollider.hh"
     44#include "G4NonEquilibriumEvaporator.hh"
     45#include "G4EquilibriumEvaporator.hh"
     46#include "G4Fissioner.hh"
     47#include "G4BigBanger.hh"
     48#include "G4IntraNucleiCascader.hh"
     49
    4250
    4351class G4CascadeInterface : public G4VIntraNuclearTransportModel {
     
    6472
    6573private:
     74
     75  G4ElementaryParticleCollider colep;
     76  G4NonEquilibriumEvaporator noneq;
     77  G4EquilibriumEvaporator eqil;
     78  G4Fissioner fiss;
     79  G4BigBanger bigb;
     80  G4IntraNucleiCascader inc;
     81
    6682  G4HadFinalState theResult; 
    67  
     83
    6884};
    6985
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4CascadeMomentum.hh

    r1007 r1196  
    2525//
    2626// $Id: G4CascadeMomentum.hh,v 1.1 2008/09/22 10:06:32 gcosmo Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     27// GEANT4 tag $Name: geant4-09-03-cand-01 $
    2828//
    2929//
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4CollisionOutput.hh

    r962 r1196  
    4040
    4141  G4CollisionOutput();
     42
     43  G4CollisionOutput& operator=(const G4CollisionOutput& right);
    4244
    4345  void reset() {
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4ElementaryParticleCollider.hh

    r1007 r1196  
    3232#include "G4CascadSpecialFunctions.hh"
    3333#include "G4LorentzConvertor.hh"
     34#include "G4NucleonSampler.hh"
     35#include "G4PionSampler.hh"
    3436
    35 
     37 
    3638using namespace G4InuclSpecialFunctions;
    3739using namespace G4CascadSpecialFunctions;
     40
    3841
    3942class G4ElementaryParticleCollider {
     
    4851private:
    4952
    50 //   G4CascadeKplusPChannel kpp;
    51 //   G4CascadeKplusNChannel kpn;
    52 //   G4CascadeKzeroPChannel k0p;
    53 //   G4CascadeKzeroNChannel k0n;
    54 //   G4CascadeKminusPChannel kmp;
    55 //   G4CascadeKminusNChannel kmn;
    56 //   G4CascadeKzeroBarPChannel k0bp;
    57 //   G4CascadeKzeroBarNChannel k0bn;
    58 //   G4CascadeLambdaPChannel lp;
    59 //   G4CascadeLambdaNChannel ln;
    60 //   G4CascadeSigmaPlusPChannel spp;
    61 //   G4CascadeSigmaPlusNChannel spn;
    62 //   G4CascadeSigmaZeroPChannel s0p;
    63 //   G4CascadeSigmaZeroNChannel s0n;
    64 //   G4CascadeSigmaMinusPChannel smp;
    65 //   G4CascadeSigmaMinusNChannel smn;
    66 //   G4CascadeXiZeroPChannel x0p;
    67 //   G4CascadeXiZeroNChannel x0n;
    68 //   G4CascadeXiMinusPChannel xmp;
    69 //   G4CascadeXiMinusNChannel xmn;
     53  G4int verboseLevel;
    7054
    71   G4int verboseLevel;
    72   G4int generateMultiplicity(G4int is,
    73                             G4double ekin) const;
     55  void initializeArrays();
     56
     57  G4int generateMultiplicity(G4int is, G4double ekin) const;
    7458
    7559  void collide(G4InuclElementaryParticle* bullet,
     
    7862
    7963     
    80   std::vector<G4InuclElementaryParticle> generateSCMfinalState(G4double ekin,
    81                                                                G4double etot_scm, G4double pscm,             
    82                                                                G4InuclElementaryParticle* particle1,
    83                                                                G4InuclElementaryParticle* particle2,
    84                                                                G4LorentzConvertor* toSCM) const;
    85 
    86   std::vector<G4double> generateMomModules(const std::vector<G4int>& kinds,
    87                                       G4int mult,
    88                                       G4int is,
    89                                       G4double ekin,
    90                                       G4double etot_cm) const;
    91      
    92   G4bool reChargering(G4double ekin,
    93                       G4int is) const;
     64  std::vector<G4InuclElementaryParticle>
     65  generateSCMfinalState(G4double ekin, G4double etot_scm, G4double pscm,             
     66                        G4InuclElementaryParticle* particle1,
     67                        G4InuclElementaryParticle* particle2,
     68                        G4LorentzConvertor* toSCM) const;
    9469
    9570
    96   G4CascadeMomentum particleSCMmomentumFor2to2(G4int is,
    97                                      G4int kw,
    98                                      G4double ekin,
    99                                      G4double pscm) const;
    100    
    101   G4int getElasticCase(G4int is,
    102                        G4int kw,
    103                        G4double ekin) const;
    104 
    105   std::vector<G4int> generateOutgoingKindsFor2toMany(G4int is,
    106                                                 G4int mult,
    107                                                 G4double ekin) const;
     71  std::vector<G4double>
     72  generateMomModules(const std::vector<G4int>& kinds, G4int mult,
     73                     G4int is, G4double ekin, G4double etot_cm) const;
    10874
    10975
    110   std::vector<G4int> generateStrangeChannelPartTypes(G4int is,
    111                                                 G4int mult,
    112                                                 G4double ekin) const;
     76  G4CascadeMomentum
     77  particleSCMmomentumFor2to2(G4int is, G4int kw, G4double ekin,
     78                             G4double pscm) const;
    11379
    11480
    115   G4double getMomModuleFor2toMany(G4int is,
    116                                   G4int mult,
    117                                   G4int knd,
    118                                   G4double ekin) const;
     81  G4int getElasticCase(G4int is, G4int kw, G4double ekin) const;
     82
     83
     84  std::vector<G4int>
     85  generateStrangeChannelPartTypes(G4int is, G4int mult,
     86                                  G4double ekin) const;
     87
     88
     89  G4double
     90  getMomModuleFor2toMany(G4int is, G4int mult, G4int knd,
     91                         G4double ekin) const;
     92
    11993
    12094  G4bool satisfyTriangle(const std::vector<G4double>& modules) const;
    12195       
    122   G4CascadeMomentum particleSCMmomentumFor2to3(G4int is,
    123                                               G4int knd,
    124                                               G4double ekin,
    125                                               G4double pmod) const;
    126        
    127   G4int getIL(G4int is,
    128               G4int mult) const;
     96  G4CascadeMomentum
     97  particleSCMmomentumFor2to3(G4int is, G4int knd, G4double ekin,
     98                             G4double pmod) const;
    12999
    130   std::pair<G4double, G4double> adjustIntervalForElastic(G4double ekin,
    131                                                     G4double ak,
    132                                                     G4double ae,
    133                                                     G4int k,
    134                                                     G4int l,
    135                                                     const std::vector<G4double>& ssv,
    136                                                     G4double st) const;
     100
     101  std::pair<G4double, G4double>
     102  adjustIntervalForElastic(G4double ekin, G4double ak, G4double ae,
     103                           G4int k, G4int l, const std::vector<G4double>& ssv,
     104                           G4double st) const;
    137105 
    138106  std::vector<G4InuclElementaryParticle>
     
    140108                            G4InuclElementaryParticle* particle1,
    141109                            G4InuclElementaryParticle* particle2) const;
    142    
    143 };       
     110
     111  G4NucleonSampler nucSampler;
     112  G4PionSampler piSampler;
     113
     114  // Parameter arrays
     115
     116  G4double rmn[14][10][2];   
     117  G4double ang[4][4][13];
     118  G4double abn[4][4][4];
     119
     120};
    144121
    145122#endif // G4ELEMENTARY_PARTICLE_COLLIDER_HH
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4InuclElementaryParticle.hh

    r962 r1196  
    5454    particleMass = 0.;    //            "              "
    5555    valid_particle = false;
     56    generation = 0;
    5657  };
    5758
     
    458459  };
    459460
     461  void setGeneration(G4int gen) {
     462    generation = gen;
     463  }
     464
     465  G4int getGeneration() {
     466    return generation;
     467  }
     468
    460469private:
    461470
     
    465474
    466475  G4bool valid_particle;
     476
     477  G4int generation;
     478
    467479};       
    468480
  • trunk/source/processes/hadronic/models/cascade/cascade/include/G4NucleiModel.hh

    r1007 r1196  
    2727#define G4NUCLEI_MODEL_HH
    2828
    29 //#include "G4InuclNuclei.hh"
    3029
    3130#ifndef G4INUCL_ELEMENTARY_PARTICLE_HH
     
    3433#include "G4CascadParticle.hh"
    3534#include "G4InuclSpecialFunctions.hh"
    36 #include "G4CascadSpecialFunctions.hh"
    3735#include "G4ElementaryParticleCollider.hh"
    3836
     
    4341
    4442using namespace G4InuclSpecialFunctions;
    45 using namespace G4CascadSpecialFunctions;
    4643
    4744typedef std::pair<G4InuclElementaryParticle, G4double> partner;
     
    5552
    5653  G4NucleiModel(G4InuclNuclei* nuclei) {
    57 
    5854    generateModel(nuclei->getA(), nuclei->getZ());
    59   };
    60 
    61   void generateModel(G4double a,
    62                      G4double z);
     55  }
     56
     57  void generateModel(G4double a, G4double z);
     58
    6359
    6460  void reset() {
    65 
    6661    neutronNumberCurrent = neutronNumber;
    6762    protonNumberCurrent = protonNumber;
    68   };
     63  }
     64
    6965
    7066  void printModel() const;
    7167
    72   G4double getDensity(G4int ip,
    73                       G4int izone) const {
    74 
     68
     69  G4double getDensity(G4int ip, G4int izone) const {
    7570    return nucleon_densities[ip - 1][izone];
    76   };
    77 
    78   G4double getFermiMomentum(G4int ip,
    79                             G4int izone) const {
    80 
     71  }
     72
     73
     74  G4double getFermiMomentum(G4int ip, G4int izone) const {
    8175    return fermi_momenta[ip - 1][izone];
    82   };
    83 
    84   G4double getFermiKinetic(G4int ip,
    85                            G4int izone) const {
    86 
     76  }
     77
     78
     79  G4double getFermiKinetic(G4int ip, G4int izone) const {
    8780    G4double ekin = 0.0;
    8881
     
    9285
    9386      ekin = std::sqrt(pf * pf + mass * mass) - mass;
    94     }; 
    95 
     87    } 
    9688    return ekin;
    97   };
    98 
    99   G4double getPotential(G4int ip,
    100                         G4int izone) const {
    101 
     89  }
     90
     91
     92  G4double getPotential(G4int ip, G4int izone) const {
    10293    G4int ip0 = ip < 3 ? ip - 1 : 2;
    10394    if (ip > 10 && ip < 18) ip0 = 3;
    10495    if (ip > 20) ip0 = 4;
    105 
    10696    return izone < number_of_zones ? zone_potentials[ip0][izone] : 0.0;
    107   };
     97  }
     98
    10899
    109100  std::vector<G4CascadParticle>
     
    111102                       G4ElementaryParticleCollider* theElementaryParticleCollider);
    112103
     104
    113105  G4double getNumberOfNeutrons() const {
    114 
    115106    return neutronNumberCurrent;
    116   };
     107  }
     108
    117109
    118110  G4double getNumberOfProtons() const {
    119 
    120111    return protonNumberCurrent;
    121   };
     112  }
     113
    122114
    123115  G4bool empty() const {
    124 
    125116    return neutronNumberCurrent < 1.0 && protonNumberCurrent < 1.0;
    126   };
     117  }
     118
    127119
    128120  G4bool stillInside(const G4CascadParticle& cparticle) {
    129 
    130121    return cparticle.getCurrentZone() < number_of_zones;
    131   };
     122  }
     123
    132124
    133125  G4CascadParticle initializeCascad(G4InuclElementaryParticle* particle);
    134126
    135   std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> > initializeCascad(G4InuclNuclei* bullet, G4InuclNuclei* target);
     127
     128  std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
     129  initializeCascad(G4InuclNuclei* bullet, G4InuclNuclei* target);
     130
    136131
    137132  std::pair<G4int, G4int> getTypesOfNucleonsInvolved() const {
    138133    return std::pair<G4int, G4int>(current_nucl1, current_nucl2);
    139   };
     134  }
     135
     136
    140137  G4bool worthToPropagate(const G4CascadParticle& cparticle) const;
    141138   
    142   G4InuclElementaryParticle generateNucleon(G4int type,
    143                                             G4int zone) const;
    144 
    145 private:
    146 G4int verboseLevel;
     139  G4InuclElementaryParticle generateNucleon(G4int type, G4int zone) const;
     140
     141private:
     142 
     143  G4int verboseLevel;
     144
     145  void initTotalCrossSections();
     146  G4double totalCrossSection(G4double e, G4int rtype) const;
     147
    147148  G4bool passFermi(const std::vector<G4InuclElementaryParticle>& particles,
    148149                   G4int zone);
     
    156157  partners generateInteractionPartners(G4CascadParticle& cparticle) const;
    157158
    158   G4double volNumInt(G4double r1,
    159                      G4double r2,
    160                      G4double cu,
     159  G4double volNumInt(G4double r1, G4double r2, G4double cu,
    161160                     G4double d1) const;
    162161
    163   G4double volNumInt1(G4double r1,
    164                       G4double r2,
    165                       G4double cu2) const;
     162  G4double volNumInt1(G4double r1, G4double r2, G4double cu2) const;
    166163
    167164  G4double getRatio(G4int ip) const;
     
    182179
    183180  G4double A;
    184 
    185181  G4double Z;
    186182
    187183  G4double neutronNumber;
    188 
    189184  G4double protonNumber;
    190185
    191186  G4double neutronNumberCurrent;
    192 
    193187  G4double protonNumberCurrent;
    194188
    195189  G4int current_nucl1;
    196 
    197190  G4int current_nucl2;
    198191
     192  // Total cross sections
     193
     194  G4double PPtot[30];
     195  G4double NPtot[30];
     196  G4double pipPtot[30];
     197  G4double pimPtot[30];
     198  G4double pizPtot[30];
     199  G4double kpPtot[30];
     200  G4double kpNtot[30];
     201  G4double kmPtot[30];
     202  G4double kmNtot[30];
     203  G4double lPtot[30];
     204  G4double spPtot[30];
     205  G4double smPtot[30];
     206  G4double xi0Ptot[30];
     207  G4double ximPtot[30];
     208
    199209};       
    200210
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4BertiniNucleiModel.cc

    r962 r1196  
    715715          for (G4int ip = 0; ip < G4int(outgoing_particles.size()); ip++)
    716716            outgouing_cparticles.push_back(G4CascadParticle(outgoing_particles[ip],
    717                                                             new_position, zone, 0.0));
     717                                                            new_position, zone, 0.0, 0));
    718718         
    719719          no_interaction = false;
     
    928928  pos[2] = -nuclei_radius * std::sqrt(1.0 - s1 * s1);
    929929 
    930   G4CascadParticle cpart(*particle, pos, number_of_zones, large);
     930  G4CascadParticle cpart(*particle, pos, number_of_zones, large, 0);
    931931
    932932  if (verboseLevel > 2){
     
    13741374            coordinates[ip][2] += mom[3] * tr / pmod;
    13751375            casparticles.push_back(G4CascadParticle(raw_particles[ip], coordinates[ip],
    1376                                                     number_of_zones, large));
     1376                                                    number_of_zones, large, 0));
    13771377          } else {
    13781378            particles.push_back(raw_particles[ip]);
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4CascadSpecialFunctions.cc

    r1055 r1196  
    2727
    2828std::pair<G4int, G4double>
    29 G4CascadSpecialFunctions::getPositionInEnergyScale2(G4double e)
     29G4CascadSpecialFunctions::getPositionInEnergyScale3(G4double e)
    3030{
    31   G4int verboseLevel = 2;
    32 
    33   if (verboseLevel > 3) {
    34     G4cout << " >>> G4CascadSpecialFunctions::getPositionInEnergyScale2" << G4endl;
    35   }
    36 
    37   const G4double EMT2[31] = {
    38     0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45,
    39     0.5, 1.0,  1.5, 2.0,  2.5, 3.0,  3.5, 4.0,  4.5, 5.0,
    40     5.5, 6.0,  6.5, 7.0,  7.5, 8.0,  8.5, 9.0,  9.5, 10.0, 15.0
    41   };
    42 
    43   G4int ik = 30;
     31
     32  const G4double EMT3[30] = {
     33  0.0,  0.01, 0.013, 0.018, 0.024, 0.032, 0.042, 0.056, 0.075, 0.1,
     34  0.13, 0.18, 0.24,  0.32,  0.42,  0.56,  0.75,  1.0,   1.3,   1.8,
     35  2.4,  3.2,  4.2,   5.6,   7.5,  10.0,  13.0,  18.0,  24.0,  32.0};
     36
     37  G4int ik = 29;
    4438  G4double sk = 1.0;
    4539
    46   for (G4int i = 1; i < 31; i++) {
    47 
    48     if (e <= EMT2[i]) {
     40  for (G4int i = 1; i < 30; i++) {
     41
     42    if (e <= EMT3[i]) {
    4943      ik = i;
    50       sk = (e - EMT2[ik - 1]) / (EMT2[ik] - EMT2[ik - 1]);
     44      sk = (e - EMT3[ik - 1]) / (EMT3[ik] - EMT3[ik - 1]);
    5145      break;
    5246    }
    53   }
    54 
    55   return std::pair<G4int, G4double>(ik, sk);
    56 }
    57 
    58 
    59 std::pair<G4int, G4double>
    60 G4CascadSpecialFunctions::getPositionInEnergyScale1(G4double e)
    61 {
    62   G4int verboseLevel = 2;
    63 
    64   if (verboseLevel > 3) {
    65     G4cout << " >>> G4CascadSpecialFunctions::getPositionInEnergyScale1" << G4endl;
    66   }
    67 
    68   const G4double EMT1[20] = {
    69     0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0,
    70     5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0
    71   };
    72 
    73   G4int ik=0;
    74   G4double sk=0.;
    75  
    76   if (e < EMT1[0]) {
    77     ik = 1;
    78     sk = 0.0;
    79 
    80   } else if (e <= EMT1[19]) {     
    81 
    82     for (G4int i = 1; i < 20; i++) {
    83 
    84       if (e <= EMT1[i]) {
    85         ik = i;
    86         sk = (e - EMT1[ik - 1]) / (EMT1[ik] - EMT1[ik - 1]);
    87 
    88         break;
    89       };
    90     };
    91 
    92   } else {
    93 
    94     ik = 19;
    95     sk = 1.0;
    96   };
    97 
    98   if (verboseLevel > 2) {
    99     G4cout << " e " << e << " ik " << ik << " sk " << sk << G4endl;
    10047  }
    10148
     
    13481
    13582
    136 std::pair<G4int, G4double>
    137 G4CascadSpecialFunctions::getPositionInEnergyScaleEMS(G4double e)
    138 {
    139   G4int verboseLevel = 2;
    140 
    141   if (verboseLevel > 3) {
    142     G4cout << " >>> G4CascadSpecialFunctions::getPositionInEnergyScaleEMS" << G4endl;
    143   }
    144 
    145   const G4double EMS[46] = {
    146     0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14,
    147     0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24,
    148     0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34,
    149     0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44,
    150     0.45, 0.46, 0.47, 0.48, 0.49, 0.50
    151   };
    152 
    153   G4int ik=0;
    154   G4double sk=0.;
    155  
    156   if (e < EMS[0]) {
    157     ik = 1;
    158     sk = 0.0;
    159 
    160   } else if (e <= EMS[45]) {     
    161 
    162     for (G4int i = 1; i < 46; i++) {
    163 
    164       if (e <= EMS[i]) {
    165         ik = i;
    166         sk = (e - EMS[ik - 1]) / (EMS[ik] - EMS[ik - 1]);
    167 
    168         break;
    169       };
    170     };
    171 
    172   } else {
    173 
    174     ik = 45;
    175     sk = 1.0;
    176   };
    177 
    178   return std::pair<G4int, G4double>(ik, sk);
    179 }
    180 
    181 
    18283G4double
    18384G4CascadSpecialFunctions::crossSection(G4double e, G4int is)
    18485{
    185   G4int verboseLevel = 2;
    186 
    187   if (verboseLevel > 3) {
    188     G4cout << " >>> G4CascadSpecialFunctions::crossSection" << G4endl;
    189   }
    190 
    191   const G4double dsig[46][2] = {
    192     {13.7,  15.0}, {15.8,  17.6}, {19.0,  15.0}, {46.0,  15.8}, {52.0,  21.0},
    193     {55.0,  21.9}, {77.0,  31.0}, {101.0, 38.4}, {124.0, 42.7}, {148.0, 55.4},
    194     {165.0, 55.3}, {172.0, 67.9}, {205.0, 66.2}, {189.0, 67.2}, {190.0, 67.8},
    195     {178.0, 63.8}, {148.0, 64.0}, {141.0, 52.1}, {135.0, 58.0}, {127.0, 48.3},
    196     {107.0, 40.0}, {111.0, 37.8}, {81.3,  37.5}, {78.0,  31.7}, {75.0,  30.0},
    197     {64.3,  30.0}, {60.3,  27.7}, {58.9,  26.0}, {55.0,  27.0}, {48.0,  26.0},
    198     {45.2,  26.7}, {40.8,  26.0}, {39.3,  27.0}, {40.7,  27.1}, {31.2,  26.5},
    199     {34.6,  26.9}, {31.4,  27.6}, {27.1,  28.4}, {26.2,  27.5}, {24.4,  27.2},
    200     {25.7,  28.8}, {23.8,  29.3}, {21.5,  27.0}, {22.2,  29.5}, {21.5,  31.2},
    201     {19.0, 30.7}
    202   };
    203 
    204   const G4double asig[4][6][31] = {
    205     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 24.3, 24.1, 24.0, 26.3,
    206       28.6, 24.8, 19.9, 19.2, 17.4, 15.3, 13.5, 12.3, 11.9, 10.4,
    207       11.8, 11.4, 11.0, 10.8, 10.9, 11.7, 11.4, 10.2, 11.0, 11.0, 9.0},
    208 
    209      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 1.45, 2.90, 4.10,
    210       5.30, 22.0, 21.2, 19.9, 14.9, 12.6, 12.3, 11.3, 10.8, 9.50,
    211       8.27, 7.20, 6.70, 6.25, 6.04, 5.89, 5.70, 5.60, 5.05, 4.17, 4.00},
    212 
    213      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    214       0.  , 2.27, 4.28, 7.81, 8.03, 8.11, 7.90, 7.82, 7.61, 7.47,
    215       7.07, 7.66, 7.05, 6.71, 6.38, 6.36, 6.37, 6.57, 6.01, 5.48, 6.80},
    216 
    217      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    218       0.  , 0.  , 1.20, 2.85, 3.70, 4.81, 5.33, 7.74, 6.91, 6.94,
    219       7.57, 7.21, 7.11, 7.10, 6.93, 6.79, 6.71, 6.55, 6.55, 6.15, 8.50},
    220 
    221      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    222       0.  , 0.  , 0.  , .005, 0.54, 0.74, 0.86, 0.91, 1.10, 1.16,
    223       1.36, 1.40, 1.43, 1.47, 1.47, 1.43, 1.38, 1.38, 1.63, 1.36, 2.80},
    224 
    225      // Used as pp, nn total cross section
    226      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    227       34.0, 46.2, 46.9, 45.2, 47.1, 42.3, 41.8, 41.2, 41.6, 41.6,
    228       41.0, 43.0, 42.4, 40.0, 39.9, 39.8, 42.0, 40.0, 39.8, 39.6, 38.7}},
    229 
    230     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 33.0, 31.3, 29.5, 27.8,
    231       14.6, 16.0, 17.5, 18.3, 19.4, 18.7, 15.6, 14.8, 13.6, 12.5,
    232       12.2, 11.9, 11.4, 11.2, 10.1, 9.62, 8.41, 7.14, 7.09, 5.04, 10.2},
    233 
    234      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 2.00, 4.00, 6.50,
    235       19.5, 20.8, 19.8, 18.6, 17.7, 14.4, 13.5, 10.4, 10.1, 12.0,
    236       8.87, 8.51, 8.49, 9.20, 8.29, 7.43, 8.20, 4.69, 4.57, 4.06, 4.10},
    237 
    238      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    239       0.68, 2.76, 3.85, 8.35, 12.7, 12.3, 10.8, 12.0, 10.9, 10.2,
    240       10.6, 12.2, 11.8, 11.0, 10.4, 10.5, 11.0, 10.6, 11.8, 12.5, 13.2},
    241 
    242      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    243       0.22, 0.52, 0.64, 1.19, 1.52, 1.75, 1.51, 2.04, 1.85, 1.70,
    244       1.92, 1.66, 1.74, 1.50, 1.39, 1.35, 1.41, 1.48, 1.43, 1.35, 3.20},
    245 
    246      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    247       0.  , 0.  , 0.14, 0.24, 0.30, 0.46, 0.85, 1.40, 1.54, 1.52,
    248       1.47, 1.48, 1.49, 1.42, 1.39, 1.37, 1.22, 1.19, 0.93, 0.  , 2.10},
    249 
    250      // Used as np total cross section
    251      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    252       35.0, 40.0, 42.4, 42.3, 41.0, 40.9, 40.4, 39.8, 35.0, 33.6,
    253       41.2, 41.0, 41.1, 41.2, 41.2, 39.6, 36.0, 36.0, 36.2, 36.2 ,40.2}},
     86  //
     87  // Total cross sections (mbarns)
     88  //
     89  const G4double PPtot[30] = {
     90  17613.0, 302.9, 257.1, 180.6, 128.4,  90.5,  66.1,  49.4,  36.9, 29.6,
     91     26.0,  23.1,  22.6,  23.0,  27.0,  32.0,  44.0,  47.04, 44.86, 46.03,
     92     44.09, 41.81, 41.17, 40.65, 40.15, 40.18, 39.26, 38.36, 38.39, 38.41};
     93
     94  const G4double NPtot[30] = {
     95  20357.0, 912.6, 788.6, 582.1, 415.0, 272.0, 198.8, 145.0, 100.4,  71.1,
     96     58.8,  45.7,  38.9,  34.4,  34.0,  35.0,  37.5,  39.02, 40.29, 40.72,
     97     42.36, 41.19, 42.04, 41.67, 40.96, 39.48, 39.79, 39.39, 39.36, 39.34};
    25498 
    255     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 60.0, 38.0, 30.6, 24.0,
    256       18.5, 12.8, 13.6, 9.15, 8.20, 7.80, 7.10, 6.40, 5.81, 5.85,
    257       5.50, 5.33, 5.40, 5.50, 4.90, 5.02, 5.00, 4.98, 4.96, 4.96, 4.50},
    258 
    259      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.38, 0.75, 1.28,
    260       2.26, 11.8, 11.1, 7.56, 6.04, 5.68, 4.15, 3.21, 2.12, 1.66,
    261       1.54, 1.53, 1.47, 1.33, 1.39, 1.35, 1.29, 1.23, 1.13, 1.06, 0.70},
    262 
    263      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    264       0.05, 2.19, 6.02, 7.36, 6.97, 5.83, 6.53, 5.09, 4.24, 3.24,
    265       3.31, 3.11, 2.91, 2.78, 2.72, 2.68, 2.48, 2.27, 2.02, 1.77, 4.40},
    266 
    267      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    268       0.06, 0.35, 0.55, 0.77, 0.89, 0.80, 0.86, 0.97, 0.90, 0.86,
    269       0.84, 0.84, 0.83, 0.81, 0.79, 0.82, 0.76, 0.88, 0.89, 0.89, 3.00},
    270 
    271      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    272       0.  , 0.02, 0.07, 0.33, 0.92, 1.39, 2.11, 1.81, 2.39, 2.60,
    273       2.19, 1.70, 1.60, 0.68, 1.43, 1.46, 1.46, 1.37, 1.16, 1.09, 2.60},
    274 
    275      // Used as pi+ p, pi- n total cross section
    276      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    277       18.9, 27.2, 34.9, 29.1, 30.8, 29.6, 28.2, 27.5, 26.9, 26.3,
    278       25.9, 25.6, 25.2, 26.1, 25.5, 25.4, 25.3, 25.1, 24.9, 24.8, 24.1}},
    279 
    280      // pi- p -> 2 body   (pi+ n -> two body)
    281     {{5.90, 9.40, 24.5, 62.6, 65.3, 41.3, 29.3, 24.3, 22.7, 22.9,
    282       23.2, 28.4, 11.7, 10.1, 8.30, 7.16, 6.49, 6.36, 6.60, 5.84,
    283        5.3,  5.2,  5.2,  5.1, 4.74, 4.7,  4.6,  4.5,  4.4,  4.3, 4.3},
    284      // pi- p -> 3 body
    285      {0.  , 0.  , 0.  , 0.  , 0.10, 0.40, 2.70, 3.50, 5.30, 6.60,
    286       9.10, 17.6, 12.2, 9.78, 7.51, 6.91, 6.86, 6.46, 6.19, 5.13,
    287       3.90, 2.82, 3.10, 3.12, 2.52, 2.22, 2.02, 2.01, 1.98, 2.14, 1.20},
    288      
    289      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    290       0.76, 2.63, 3.72, 6.53, 7.47, 7.94, 7.12, 6.85, 6.09, 5.35,
    291       4.12, 3.85, 3.68, 4.09, 3.58, 3.29, 3.08, 2.93, 2.80, 2.65, 3.30},
    292 
    293      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    294       0.59, 0.74, 1.47, 4.10, 4.78, 4.90, 5.07, 5.50, 5.48, 5.03,
    295       4.65, 4.39, 4.06, 3.53, 3.08, 3.05, 2.91, 3.42, 3.93, 3.93, 4.10},
    296      // pi- p -> 6 body
    297      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    298       0.01, .007, 0.03, .099, .251, .376, .419, .582, .755, .777,
    299       1.13, 1.08, 1.13, 1.08, .962, .866, .738, .674, .645, .613, 1.30},
    300 
    301      // Used as pi- p and pi+ n total cross section
    302      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    303       31.3, 46.0, 30.0, 35.7, 33.4, 31.6, 30.4, 29.6, 28.9, 28.5,
    304       28.1, 27.5, 31.0, 27.7, 27.8, 27.1, 26.2, 26.0, 26.0, 25.9, 25.7}}
    305   };
    306 
    307   const G4double EMT2_10 = 0.5;
     99  const G4double pipPtot[30] = {
     100    0.0,   1.2,   2.5,   3.8,   5.0,  7.0,   9.0,  15.0, 30.0,  64.0,
     101  130.0, 190.0, 130.0,  56.0,  28.0, 17.14, 19.28, 27.4, 40.05, 32.52,
     102   30.46, 29.0,  27.26, 25.84, 25.5, 24.5,  24.0,  23.5, 23.0,  23.0};
     103
     104  const G4double pimPtot[30] = {
     105    0.0,   3.5,  4.0,   4.7,   6.0,   7.5,   8.3,  12.0,  14.4,  24.0,
     106   44.0,  67.0, 45.06, 28.82, 28.98, 41.66, 37.32, 51.37, 35.67, 33.25,
     107   31.84, 31.0, 29.32, 27.5,  26.5,  25.9,  25.5,  25.2,  25.0,  24.8};
     108
     109  const G4double pizPtot[30] = {
     110    0.0,   3.55,  4.65,  5.9,   7.75, 10.1,  11.8,  18.0,  27.7, 52.5,
     111  102.0, 150.0, 102.64, 51.03, 34.94, 34.52, 32.45, 44.05, 40.2, 34.93,
     112   32.0,  30.0,  28.29, 26.91, 26.25, 25.25, 24.75, 24.35, 24.0, 23.9};
     113
     114  const G4double kpPtot[30] = {
     115   10.0,  10.34, 10.44, 10.61, 10.82, 11.09, 11.43, 11.71, 11.75, 11.8,
     116   11.98, 12.28, 12.56, 12.48, 12.67, 14.48, 15.92, 17.83, 17.93, 17.88,
     117   17.46, 17.3,  17.3,  17.4,  17.4,  17.4,  17.4,  17.5,  17.7,  17.8};
     118
     119  const G4double kpNtot[30] = {
     120    6.64,  6.99,  7.09,  7.27,  7.48,  7.75,  8.1,  8.49,  8.84, 9.31,
     121    9.8,  10.62, 11.64, 13.08, 14.88, 16.60, 17.5, 18.68, 18.68, 18.29,
     122   17.81, 17.6,  17.6,  17.6,  17.6,  17.6,  17.7, 17.8,  17.9,  18.0};
     123
     124  const G4double kmPtot[30] = {
     125 1997.0, 1681.41, 1586.74, 1428.95, 1239.59, 987.12, 671.54, 377.85, 247.30, 75.54,
     126    71.08, 54.74,   44.08,   44.38,   45.45,  45.07,  41.04,  35.75,  33.22, 30.08,
     127    27.61, 26.5,    25.2,    24.0,    23.4,   22.8,   22.0,   21.3,   21.0,  20.9};
     128
     129  const G4double kmNtot[30] = {
     130    6.15,  6.93,  7.16,  7.55,  8.02,  8.65,  9.43, 10.36, 11.34, 12.64,
     131   14.01, 16.45, 19.32, 23.0,  27.6,  30.92, 29.78, 28.28, 25.62, 23.1,
     132   22.31, 21.9,  21.73, 21.94, 21.23, 20.5,  20.4,  20.2,  20.1,  20.0};
     133
     134  const G4double lPtot[30] = {
     135  300.0, 249.07, 233.8, 208.33, 177.78, 137.04, 86.11, 41.41, 28.86, 12.35,
     136   13.82, 16.76, 20.68,  25.9,   30.37,  31.56, 32.83, 34.5,  34.91, 35.11,
     137   35.03, 36.06, 35.13,  35.01,  35.0,   35.0,  35.0,  35.0,  35.0,  35.0};
     138
     139  const G4double spPtot[30] = {
     140  150.0, 146.0, 144.8, 142.8, 140.4, 137.2, 133.2, 127.6, 120.0, 110.0,
     141   98.06, 84.16, 72.28, 56.58, 43.22, 40.44, 36.14, 30.48, 31.53, 31.92,
     142   29.25, 28.37, 29.81, 33.15, 33.95, 34.0,  34.0,  34.0,  34.0,  34.0};
     143
     144  const G4double smPtot[30] = {
     145  937.0, 788.14, 743.48, 669.05, 579.74, 460.65, 311.79, 183.33, 153.65, 114.6,
     146  105.18, 89.54,  70.58,  45.5,   32.17,  32.54,  32.95,  33.49,  33.55,  33.87,
     147   34.02, 34.29,  33.93,  33.88,  34.0,   34.0,   34.0,   34.0,   34.0,   34.0};
     148
     149  const G4double xi0Ptot[30] = {
     150  16.0,  14.72, 14.34, 13.7,  12.93, 11.9,  10.62, 9.29, 8.3,   7.0,
     151   7.96,  9.56, 11.48, 14.04, 19.22, 25.29, 29.4, 34.8, 34.32, 33.33,
     152  31.89, 29.55, 27.89, 21.43, 17.0,  16.0,  16.0, 16.0, 16.0,  16.0};
     153
     154  const G4double ximPtot[30] = {
     155  33.0,  32.5,  32.35, 32.1,  31.8,  31.4,  30.9, 30.2, 29.25, 28.0,
     156  26.5,  24.6,  22.8,  20.78, 18.22, 19.95, 21.7, 24.0, 24.74, 25.95,
     157  27.59, 27.54, 23.16, 17.43, 12.94, 12.0,  12.0, 12.0, 12.0,  12.0};
     158
     159
    308160  G4double csec = 0.0;
    309161  G4int l = is;
     
    321173  };
    322174
    323   if (e < EMT2_10) {
    324 
    325     if (l == 1) { // pp or nn
    326 
    327       if (e >= 0.4) {
    328         csec = 34.5;
    329 
    330       } else if (e >= 0.04) {
    331         csec = 0.23938 / (e * e) + 1.802 / e + 27.147;
    332 
    333       } else if (e >= 0.001) {
    334         csec = -0.0050574 / (e * e) + 9.0692 / e + 6.9466;
    335 
    336       } else {
    337         csec = 4.0 / e;
    338       }         
    339 
    340     } else if (l == 2) { // np
    341 
    342       if (e >= 0.4) {
    343         csec = 0.88737 / e + 53.37 * e + 3.5475;
    344 
    345       } else if (e >= 0.04) {
    346         csec = 0.093074 / (e * e) - 0.011148 / e + 22.429;
    347 
    348       } else if (e >= 0.001) {
    349         csec = -0.0011748 / (e * e) + 3.0885 / e + 5.3107;
    350 
    351       } else {
    352         csec = 1.92 / e;
    353       };       
    354 
    355     } else { // pi + n, p
    356 
    357       if (e <= 0.05) {
    358 
    359         if (l == 3) {
    360           csec = 3.7 + 204.35 * e;
    361 
    362         } else if (l == 4) {
    363           csec = 6.5 + 170.71 * e;
    364 
    365         } else if (l == 5) {
    366           csec = 5.1 + 187.53 * e;
    367         };
    368 
    369       } else {
    370         std::pair<G4int, G4double> iksk = getPositionInEnergyScaleEMS(e);
    371         G4int ik = iksk.first;
    372         G4double sk = iksk.second;
    373 
    374         if (l < 5) {
    375           int j = l - 3;
    376           csec = dsig[ik - 1][j] + sk * (dsig[ik][j] - dsig[ik - 1][j]);
    377 
    378         } else {
    379           csec = 0.5 * (dsig[ik - 1][0] + dsig[ik - 1][1] +
    380                         sk * (dsig[ik][0] - dsig[ik - 1][0] + dsig[ik][1] - dsig[ik - 1][1]));
    381         };
    382       };
    383     }; 
     175  std::pair<G4int, G4double> iksk = getPositionInEnergyScale3(e);
     176  G4int ik = iksk.first;
     177  G4double sk = iksk.second;
     178
     179  // pp, nn
     180  if (l == 1) {
     181    csec = PPtot[ik - 1] + sk * (PPtot[ik] - PPtot[ik - 1]);
     182
     183  // np
     184  } else if (l == 2) {
     185    csec = NPtot[ik - 1] + sk * (NPtot[ik] - NPtot[ik - 1]);
     186
     187  // pi+p, pi-n 
     188  } else if (l == 3) {
     189    csec = pipPtot[ik - 1] + sk * (pipPtot[ik] - pipPtot[ik - 1]);
     190
     191  // pi-p, pi+n
     192  } else if (l == 4) {
     193    csec = pimPtot[ik - 1] + sk * (pimPtot[ik] - pimPtot[ik - 1]);
     194
     195  // pi0p, pi0n
     196  } else if (l == 5) {
     197    csec = pizPtot[ik - 1] + sk * (pizPtot[ik] - pizPtot[ik - 1]);
     198
     199  // k+ p, k0 n
     200  } else if (l == 11 || l == 30) {
     201    csec = kpPtot[ik - 1] + sk * (kpPtot[ik] - kpPtot[ik - 1]);
     202
     203  // k- p, k0b n
     204  } else if (l == 13 || l == 34) {
     205    csec = kmPtot[ik - 1] + sk * (kmPtot[ik] - kmPtot[ik - 1]);
     206
     207  // k+ n, k0 p
     208  } else if (l == 22 || l == 15) {
     209    csec = kpNtot[ik - 1] + sk * (kpNtot[ik] - kpNtot[ik - 1]);
     210
     211  // k- n, k0b p
     212  } else if (l == 26 || l == 17) {
     213    csec = kmNtot[ik - 1] + sk * (kmNtot[ik] - kmNtot[ik - 1]);
     214
     215  // L p, L n, S0 p, S0 n
     216  } else if (l == 21 || l == 25 || l == 42 || l == 50) {
     217    csec = lPtot[ik - 1] + sk * (lPtot[ik] - lPtot[ik - 1]);
     218
     219  // Sp p, Sm n
     220  } else if (l == 23 || l == 54) {
     221    csec = spPtot[ik - 1] + sk * (spPtot[ik] - spPtot[ik - 1]);
     222
     223  // Sm p, Sp n
     224  } else if (l == 27 || l == 46) {
     225    csec = smPtot[ik - 1] + sk * (smPtot[ik] - smPtot[ik - 1]);
     226
     227  // Xi0 p, Xi- n
     228  } else if (l == 29 || l == 62) {
     229    csec = xi0Ptot[ik - 1] + sk * (xi0Ptot[ik] - xi0Ptot[ik - 1]);
     230
     231  // Xi- p, Xi0 n
     232  } else if (l == 31 || l == 58) {
     233    csec = ximPtot[ik - 1] + sk * (ximPtot[ik] - ximPtot[ik - 1]);
    384234
    385235  } else {
    386     std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(e);
    387     G4int ik = iksk.first;
    388     G4double sk = iksk.second;
    389 
    390     if (l < 5) {
    391       csec = asig[l - 1][5][ik - 1] + sk * (asig[l - 1][5][ik] - asig[l - 1][5][ik - 1]);
    392 
    393     } else {
    394       csec = 0.5 * (asig[2][5][ik - 1] + asig[3][5][ik - 1] +
    395                     sk * (asig[2][5][ik] - asig[2][5][ik - 1] +
    396                           asig[3][5][ik] - asig[3][5][ik - 1]));
    397     };
    398   };
     236    G4cout << " unknown collison type = " << l << G4endl;
     237    csec = 0.0;
     238  }
    399239
    400240  return csec; 
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc

    r962 r1196  
    3030#include "G4IonTable.hh"
    3131#include "G4InuclCollider.hh"
    32 #include "G4IntraNucleiCascader.hh"
    33 #include "G4ElementaryParticleCollider.hh"
    34 #include "G4NonEquilibriumEvaporator.hh"
    35 #include "G4EquilibriumEvaporator.hh"
    36 #include "G4Fissioner.hh"
    37 #include "G4BigBanger.hh"
     32// #include "G4IntraNucleiCascader.hh"
    3833#include "G4InuclElementaryParticle.hh"
    3934#include "G4InuclNuclei.hh"
     
    5853    G4cout << " >>> G4CascadeInterface::G4CascadeInterface" << G4endl;
    5954  }
     55
    6056}
     57
    6158
    6259G4CascadeInterface::~G4CascadeInterface()
     
    190187
    191188  // Colliders initialisation
    192   G4ElementaryParticleCollider*   colep = new G4ElementaryParticleCollider;
    193   G4IntraNucleiCascader*            inc = new G4IntraNucleiCascader; // the actual cascade
    194   inc->setInteractionCase(1); // Interaction type is particle with nuclei.
    195 
    196   G4NonEquilibriumEvaporator*     noneq = new G4NonEquilibriumEvaporator;
    197   G4EquilibriumEvaporator*         eqil = new G4EquilibriumEvaporator;
    198   G4Fissioner*                     fiss = new G4Fissioner;
    199   G4BigBanger*                     bigb = new G4BigBanger;
    200   G4InuclCollider*             collider = new G4InuclCollider(colep, inc, noneq, eqil, fiss, bigb);
     189  //  G4ElementaryParticleCollider*   colep = new G4ElementaryParticleCollider;
     190  //  G4IntraNucleiCascader*            inc = new G4IntraNucleiCascader; // the actual cascade
     191  //  inc->setInteractionCase(1); // Interaction type is particle with nuclei.
     192  inc.setInteractionCase(1); // Interaction type is particle with nuclei.
     193
     194  //  G4NonEquilibriumEvaporator*     noneq = new G4NonEquilibriumEvaporator;
     195  //  G4EquilibriumEvaporator*         eqil = new G4EquilibriumEvaporator;
     196  //  G4Fissioner*                     fiss = new G4Fissioner;
     197  //  G4BigBanger*                     bigb = new G4BigBanger;
     198  G4InuclCollider* collider = new G4InuclCollider(&colep, &inc, &noneq, &eqil, &fiss, &bigb);
    201199
    202200      G4int  maxTries = 100; // maximum tries for inelastic collision to avoid infinite loop
     
    516514
    517515  delete bullet;
    518   delete colep;
    519   delete inc;
    520   delete noneq;
    521   delete fiss;
    522   delete eqil;
    523   delete bigb;
     516//  delete inc;
    524517  delete collider;
    525518
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4CascadeSigmaPlusNChannel.cc

    r962 r1196  
    9393     {2,3,3,5,7,7,25},  {2,3,3,3,5,5,25}};
    9494
    95   // Cross sections for L p -> 2-7 body final states
    96   // 
     95  // Cross sections for S+ n -> 2-7 body final states
     96  //
    9797  // first index:    0-2: channels for mult = 2
    98   //                3-14: channels for mult = 3 
     98  //                3-14: channels for mult = 3
    9999  //               15-47: channels for mult = 4
    100100  //              48-106: channels for mult = 5
     
    109109    //
    110110    // S+ n
    111     {300.0,45.37,12.35,12.93,14.02,15.11,16.20,17.28,18.05,18.18,
    112      18.32,17.82,15.53,13.38,11.69,10.12, 9.14, 8.50, 8.10, 7.70,
    113      7.40, 7.10, 6.90, 6.70, 6.40, 6.10, 6.00, 5.90, 5.77, 5.65, 4.70},
     111    {267., 84.5, 51.6, 43.7, 35.8, 27.9, 19.96,12.06, 9.90, 9.76,
     112     9.62, 8.66, 8.08, 7.50, 7.10, 6.60,  6.20, 5.80, 5.48, 5.32,
     113     5.16, 5.08, 4.92, 4.76, 4.58, 4.42,  4.26, 4.18, 4.16, 4.14, 3.94},
    114114
    115115    // L p
    116     { 0.0,  0.0,  0.0,  0.69, 1.48, 2.28, 3.08, 3.87, 4.38, 4.33,
    117       4.27, 4.00, 3.27, 2.07, 1.02, 0.35, 0.11, 0.05, 0.01, 0.0,
    118       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     116    {170., 49.2, 31.0, 26.8, 22.6, 18.4, 14.27,10.09, 8.90, 8.76,
     117     8.62, 7.32, 6.03, 4.70, 3.20, 1.60,  0.80, 0.60, 0.56, 0.54,
     118     0.52, 0.51, 0.49, 0.47, 0.46, 0.44,  0.42, 0.41, 0.41, 0.41, 0.38},
    119119 
    120120    // S0 p
    121     { 0.0,  0.0,  0.0,  0.69, 1.48, 2.28, 3.08, 3.87, 4.38, 4.33,
    122       4.27, 4.00, 3.27, 2.07, 1.02, 0.35, 0.11, 0.05, 0.01, 0.0,
    123       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     121    {500., 59.0, 32.0, 27.6, 23.3, 18.9, 14.51,10.14, 8.90, 8.76,
     122     8.62, 7.32, 6.03, 4.70, 3.20, 1.60,  0.80, 0.60, 0.56, 0.54,
     123     0.52, 0.51, 0.49, 0.47, 0.46, 0.44,  0.42, 0.41, 0.41, 0.41, 0.38},
    124124
    125125    //
     
    128128    // p p K-
    129129    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    130       0.0,  0.06, 0.69, 1.22, 1.04, 0.77, 0.57, 0.45, 0.35, 0.24,
    131       0.21, 0.19, 0.18, 0.17, 0.16, 0.14, 0.12, 0.10, 0.09, 0.08, 0.01},
     130      0.0,  0.07, 0.27, 1.00, 1.20, 1.00, 0.85, 0.69, 0.64, 0.56,
     131      0.51, 0.46, 0.41, 0.36, 0.31, 0.26, 0.21, 0.16, 0.14, 0.13, 0.05},
    132132 
    133133    // n p K0bar
    134     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    135       0.0,  0.06, 0.69, 1.22, 1.04, 0.77, 0.57, 0.45, 0.35, 0.24,
    136       0.21, 0.19, 0.18, 0.17, 0.16, 0.14, 0.12, 0.10, 0.09, 0.08, 0.01},
    137  
     134     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     135      0.0,  0.07, 0.27, 1.00, 1.20, 1.00, 0.85, 0.69, 0.64, 0.56,
     136      0.51, 0.46, 0.41, 0.36, 0.31, 0.26, 0.21, 0.16, 0.14, 0.13, 0.05},
     137
    138138    // S+ n pi0
    139     { 0.0,  0.0,  0.0,  0.23, 0.51, 0.78, 1.05, 1.32, 1.57, 1.77,
    140       1.97, 4.06, 4.21, 3.03, 1.82, 0.96, 0.57, 0.42, 0.27, 0.19,
    141       0.17, 0.16, 0.15, 0.14, 0.13, 0.11, 0.09, 0.07, 0.06, 0.05, 0.0},
     139    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.06,
     140      0.10, 0.35, 0.65, 1.00, 0.90, 0.70, 0.60, 0.49, 0.44, 0.40,
     141      0.36, 0.33, 0.29, 0.25, 0.21, 0.17, 0.14, 0.11, 0.10, 0.09, 0.04},
    142142 
    143143    // S0 n pi+
    144     { 0.0,  0.0,  0.0,  0.26, 0.57, 0.88, 1.19, 1.50, 1.78, 2.01,
    145       2.24, 3.64, 3.36, 2.42, 1.45, 0.80, 0.46, 0.33, 0.22, 0.15,
    146       0.13, 0.12, 0.11, 0.10, 0.09, 0.07, 0.06, 0.04, 0.04, 0.03, 0.0},
     144    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.06,
     145      0.10, 0.35, 0.65, 1.00, 0.90, 0.70, 0.60, 0.49, 0.44, 0.40,
     146      0.36, 0.33, 0.29, 0.25, 0.21, 0.17, 0.14, 0.11, 0.10, 0.09, 0.04},
    147147
    148148    // S+ p pi-
    149     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    150       0.0,  0.0,  0.07, 0.18, 0.15, 0.09, 0.06, 0.04, 0.03, 0.02,
    151       0.01, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     149    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.06,
     150      0.10, 0.35, 0.65, 1.00, 0.90, 0.70, 0.60, 0.49, 0.44, 0.40,
     151      0.36, 0.33, 0.29, 0.25, 0.21, 0.17, 0.14, 0.11, 0.10, 0.09, 0.04},
    152152 
    153153    // S0 p pi0
    154     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    155       0.0,  0.0,  0.07, 0.18, 0.15, 0.09, 0.06, 0.04, 0.03, 0.02,
    156       0.01, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     154    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.06,
     155      0.10, 0.35, 0.65, 1.00, 0.90, 0.70, 0.60, 0.49, 0.44, 0.40,
     156      0.36, 0.33, 0.29, 0.25, 0.21, 0.17, 0.14, 0.11, 0.10, 0.09, 0.04},
    157157 
    158158    // L p pi0
    159     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    160       0.0,  0.0,  0.95, 0.98, 0.60, 0.33, 0.18, 0.14, 0.09, 0.06,
    161       0.05, 0.05, 0.04, 0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01},
     159    { 0.0,  0.0,  0.0,  0.4,  0.8,  1.1,  1.52, 1.90, 2.10, 2.24,
     160      2.38, 3.54, 3.46, 3.00, 2.60, 2.20, 1.80, 1.46, 1.33, 1.21,
     161      1.06, 0.95, 0.85, 0.75, 0.65, 0.54, 0.44, 0.33, 0.30, 0.28, 0.11},
    162162 
    163163    // L n pi+
    164     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.04,
    165       0.06, 0.32, 0.84, 0.77, 0.48, 0.27, 0.15, 0.11, 0.07, 0.05,
    166       0.04, 0.04, 0.03, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01},
     164    { 0.0,  0.0,  0.0,  0.4,  0.8,  1.1,  1.52, 1.90, 2.10, 2.24,
     165      2.38, 3.54, 3.46, 3.00, 2.60, 2.20, 1.80, 1.46, 1.33, 1.21,
     166      1.06, 0.95, 0.85, 0.75, 0.65, 0.54, 0.44, 0.33, 0.30, 0.28, 0.11},
    167167 
    168168    // S- p pi+
    169     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    170       0.0,  0.0,  0.07, 0.18, 0.15, 0.09, 0.06, 0.04, 0.03, 0.02,
    171       0.01, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
    172  
     169     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.06,
     170      0.10, 0.35, 0.65, 1.00, 0.90, 0.70, 0.60, 0.49, 0.44, 0.40,
     171      0.36, 0.33, 0.29, 0.25, 0.21, 0.17, 0.14, 0.11, 0.10, 0.09, 0.04},
     172
    173173    // X0 p K0
    174     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    175       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02,
    176       0.01, 0.01, 0.01, 0.0,  0.0, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
    177  
     174     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     175      0.0,  0.0,  0.0,  0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02,
     176      0.02, 0.01, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     177
    178178    // X0 n K+
    179179    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    180       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02,
    181       0.01, 0.01, 0.01, 0.0,  0.0, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     180      0.0,  0.0,  0.0,  0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02,
     181      0.02, 0.01, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
    182182 
    183183    // X- p K+
    184184    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    185       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02,
    186       0.01, 0.01, 0.01, 0.0,  0.0, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     185      0.0,  0.0,  0.0,  0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02,
     186      0.02, 0.01, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
    187187
    188188    //
     
    191191    // p p K- pi0
    192192    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    193       0.0,  0.0,  0.05, 0.18, 0.34, 0.47, 0.59, 0.77, 1.00, 1.15,
    194       1.10, 1.00, 0.90, 0.81, 0.73, 0.66, 0.59, 0.53, 0.51, 0.49, 0.31},
     193      0.0,  0.0,  0.08, 0.11, 0.19, 0.32, 0.47, 0.49, 0.46, 0.44,
     194      0.43, 0.41, 0.40, 0.38, 0.37, 0.36, 0.35, 0.34, 0.34, 0.33, 0.29},
    195195 
    196196    // p p K0bar pi-
    197197    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    198       0.0,  0.0,  0.05, 0.18, 0.34, 0.47, 0.59, 0.77, 1.00, 1.15,
    199       1.10, 1.00, 0.90, 0.81, 0.73, 0.66, 0.59, 0.53, 0.51, 0.49, 0.31},
     198      0.0,  0.0,  0.08, 0.11, 0.19, 0.32, 0.47, 0.49, 0.46, 0.44,
     199      0.43, 0.41, 0.40, 0.38, 0.37, 0.36, 0.35, 0.34, 0.34, 0.33, 0.29},
    200200 
    201201    // n p K0bar pi0
    202202    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    203       0.0,  0.0,  0.05, 0.18, 0.34, 0.47, 0.59, 0.77, 1.00, 1.15,
    204       1.10, 1.00, 0.90, 0.81, 0.73, 0.66, 0.59, 0.53, 0.51, 0.49, 0.31},
     203      0.0,  0.0,  0.08, 0.11, 0.19, 0.32, 0.47, 0.49, 0.46, 0.44,
     204      0.43, 0.41, 0.40, 0.38, 0.37, 0.36, 0.35, 0.34, 0.34, 0.33, 0.29},
    205205 
    206206    // n p K- pi+
    207207    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    208       0.0,  0.0,  0.05, 0.18, 0.34, 0.47, 0.59, 0.77, 1.00, 1.15,
    209       1.10, 1.00, 0.90, 0.81, 0.73, 0.66, 0.59, 0.53, 0.51, 0.49, 0.31},
     208      0.0,  0.0,  0.08, 0.11, 0.19, 0.32, 0.47, 0.49, 0.46, 0.44,
     209      0.43, 0.41, 0.40, 0.38, 0.37, 0.36, 0.35, 0.34, 0.34, 0.33, 0.29},
    210210 
    211211    // n n K0bar pi+
    212212    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    213       0.0,  0.0,  0.05, 0.18, 0.34, 0.47, 0.59, 0.77, 1.00, 1.15,
    214       1.10, 1.00, 0.90, 0.81, 0.73, 0.66, 0.59, 0.53, 0.51, 0.49, 0.31},
    215  
     213      0.0,  0.0,  0.08, 0.11, 0.19, 0.32, 0.47, 0.49, 0.46, 0.44,
     214      0.43, 0.41, 0.40, 0.38, 0.37, 0.36, 0.35, 0.34, 0.34, 0.33, 0.29},
     215
    216216    // S+ n 2pi0
    217217    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    218       0.01, 0.12, 0.36, 1.13, 1.97, 2.74, 2.59, 2.07, 1.56, 1.54,
    219       1.51, 1.49, 1.46, 1.68, 1.89, 1.95, 1.98, 2.02, 2.02, 2.02, 2.04},
     218      0.0,  0.0,  0.0,  0.02, 0.08, 0.20, 0.24, 0.25, 0.23, 0.22,
     219      0.21, 0.20, 0.20, 0.19, 0.18, 0.17, 0.16, 0.16, 0.16, 0.16, 0.14},
    220220
    221221    // S+ n pi+ pi-
    222     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01,
    223       0.02, 0.20, 0.59, 1.59, 3.24, 4.96, 4.33, 3.45, 2.60, 2.56,
    224       2.52, 2.48, 2.44, 2.40, 2.36, 2.32, 2.28, 2.24, 2.22, 2.20, 2.04},
     222    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     223      0.0,  0.0,  0.0,  0.02, 0.08, 0.20, 0.24, 0.25, 0.23, 0.22,
     224      0.21, 0.20, 0.20, 0.19, 0.18, 0.17, 0.16, 0.16, 0.16, 0.16, 0.14},
    225225 
    226226    // S0 n pi+ pi0
    227227    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    228       0.0,  0.20, 0.59, 1.67, 2.86, 3.64, 4.08, 4.17, 4.00, 3.50,
    229       3.32, 3.20, 3.00, 2.80, 2.60, 2.40, 2.20, 2.00, 1.89, 1.79, 1.00},
     228      0.0,  0.03, 0.09, 0.13, 0.38, 0.53, 0.68, 0.71, 0.67, 0.63,
     229      0.61, 0.58, 0.57, 0.54, 0.52, 0.50, 0.48, 0.47, 0.47, 0.46, 0.41},
    230230 
    231231    // S+ n K0bar K0
    232232    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    233       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.03, 0.03,
    234       0.04, 0.04, 0.04, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01},
     233      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     234      0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0},
    235235 
    236236    // S+ n K+ K-
    237237    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    238       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.03, 0.03,
    239       0.04, 0.04, 0.04, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01},
     238      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     239      0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0},
    240240 
    241241    // S0 n K+ K0bar
    242242    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    243       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.03, 0.03,
    244       0.04, 0.04, 0.04, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01},
     243      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     244      0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0},
    245245
    246246    // S+ p pi- pi0
    247     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    248       0.0,  0.0,  0.01, 0.04, 0.16, 0.29, 0.35, 0.43, 0.38, 0.33,
    249       0.27, 0.22, 0.19, 0.16, 0.14, 0.12, 0.10, 0.08, 0.07, 0.07, 0.01},
    250  
     247     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     248      0.0,  0.0,  0.0,  0.02, 0.08, 0.20, 0.24, 0.25, 0.23, 0.22,
     249      0.21, 0.20, 0.20, 0.19, 0.18, 0.17, 0.16, 0.16, 0.16, 0.16, 0.14},
     250
    251251    // S0 p 2pi0
    252252    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    253       0.0,  0.0,  0.01, 0.03, 0.10, 0.17, 0.24, 0.26, 0.23, 0.20,
    254       0.16, 0.13, 0.11, 0.11, 0.11, 0.10, 0.09, 0.07, 0.07, 0.06, 0.0},
     253      0.0,  0.02, 0.06, 0.13, 0.38, 0.88, 1.13, 1.17, 1.00, 0.94,
     254      0.91, 0.86, 0.84, 0.80, 0.78, 0.76, 0.73, 0.71, 0.70, 0.69, 0.62},
    255255 
    256256    // S0 p pi+ pi-
    257257    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    258       0.0,  0.0,  0.01, 0.04, 0.16, 0.29, 0.35, 0.43, 0.38, 0.33,
    259       0.27, 0.22, 0.19, 0.16, 0.14, 0.12, 0.10, 0.08, 0.07, 0.07, 0.01},
     258      0.0,  0.03, 0.09, 0.13, 0.38, 0.69, 0.97, 1.02, 0.96, 0.90,
     259      0.87, 0.83, 0.81, 0.77, 0.75, 0.73, 0.70, 0.68, 0.68, 0.67, 0.60},
    260260
    261261    // S+ p K- K0
    262262    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    263       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    264       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0},
     263      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     264      0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0, 0.0,  0.0},
    265265 
    266266    // S0 p K0 K0bar
    267267    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    268       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    269       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0},
     268      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     269      0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0, 0.0,  0.0},
    270270 
    271271    // S0 p K+ K-
    272272    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    273       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    274       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0},
     273      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     274      0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0, 0.0,  0.0},
    275275
    276276    // L p 2pi0
    277     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    278       0.0,  0.0,  0.04, 0.21, 0.40, 0.77, 0.86, 0.80, 0.75, 0.68,
    279       0.67, 0.54, 0.51, 0.56, 0.60, 0.59, 0.52, 0.45, 0.40, 0.36, 0.10},
    280  
     277     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.04,
     278      0.07, 0.26, 0.45, 0.73, 1.76, 3.37, 3.40, 3.57, 3.36, 3.12,
     279      3.00, 2.85, 2.80, 2.66, 2.58, 2.50, 2.40, 2.33, 2.30, 2.28, 2.03},
     280
    281281    // L p pi+ pi-
    282     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    283       0.0,  0.01, 0.08, 0.34, 0.66, 1.28, 1.43, 1.33, 1.25, 1.15,
    284       1.12, 0.90, 0.85, 0.80, 0.75, 0.70, 0.60, 0.50, 0.44, 0.39, 0.10},
     282    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.07,
     283      0.11, 0.44, 0.75, 1.07, 1.57, 2.44, 3.24, 3.40, 3.20, 3.00,
     284      2.90, 2.76, 2.70, 2.57, 2.49, 2.42, 2.32, 2.25, 2.22, 2.20, 1.97},
    285285 
    286286    // L n pi+ pi0
    287     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    288       0.0,  0.01, 0.08, 0.34, 0.66, 1.01, 1.22, 1.39, 1.30, 1.20,
    289       1.10, 1.05, 1.00, 0.95, 0.85, 0.75, 0.65, 0.55, 0.51, 0.47, 0.15},
     287    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.03, 0.07,
     288      0.11, 0.44, 0.75, 1.07, 1.15, 1.85, 2.04, 2.14, 2.01, 1.87,
     289      1.80, 1.71, 1.68, 1.60, 1.55, 1.50, 1.44, 1.40, 1.38, 1.37, 1.22},
    290290 
    291291    // L p K0 K0bar
    292292    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    293       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    294       0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     293      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02,
     294      0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.0, 0.0,  0.0,  0.0,  0.0},
    295295 
    296296    // L p K+ K-
    297297    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    298       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    299       0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     298      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02,
     299      0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.0, 0.0,  0.0,  0.0,  0.0},
    300300 
    301301    // L n K+ K0bar
    302302    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    303       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    304       0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     303      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02,
     304      0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.0, 0.0,  0.0,  0.0,  0.0},
    305305
    306306    // S- p pi+ pi0
    307307    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    308       0.0,  0.0,  0.01, 0.03, 0.13, 0.29, 0.30, 0.32, 0.32, 0.28,
    309       0.26, 0.24, 0.22, 0.19, 0.17, 0.15, 0.13, 0.11, 0.11, 0.10, 0.07},
     308      0.0,  0.0,  0.01, 0.04, 0.06, 0.12, 0.19, 0.20, 0.19, 0.18,
     309      0.17, 0.16, 0.16, 0.15, 0.15, 0.15, 0.14, 0.14, 0.14, 0.14, 0.12},
    310310 
    311311    // S- n 2pi+
    312312    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    313       0.0,  0.0,  0.01, 0.03, 0.13, 0.29, 0.30, 0.32, 0.32, 0.28,
    314       0.26, 0.24, 0.22, 0.19, 0.17, 0.15, 0.13, 0.11, 0.11, 0.10, 0.07},
     313      0.0,  0.0,  0.02, 0.07, 0.10, 0.20, 0.28, 0.29, 0.27, 0.25,
     314      0.24, 0.23, 0.23, 0.22, 0.21, 0.20, 0.19, 0.18, 0.18, 0.18, 0.16},
    315315 
    316316    // S- p K+ K0bar
    317317    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    318       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03,
    319       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
     318      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01,
     319      0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0, 0.0,  0.0,  0.0},
    320320 
    321321    // X0 p K0 pi0
    322322    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    323       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    324       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
     323      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     324      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
    325325 
    326326    // X0 n K0 pi+
    327     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    328       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    329       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
    330  
     327     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     328      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     329      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
     330
    331331    // X0 n K+ pi0
    332332    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    333       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    334       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
     333      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     334      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
    335335
    336336    // X0 p K+ pi-
    337     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    338       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    339       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
    340  
     337     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     338      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     339      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
     340
    341341    // X- p K+ pi0
    342     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    343       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    344       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
    345  
     342     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     343      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     344      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
     345
    346346    // X- p K0 pi+
    347     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    348       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    349       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
    350  
     347     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     348      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     349      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
     350
    351351    // X- n K+ pi+
    352352    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    353       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03,
    354       0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0},
     353      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
     354      0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0, 0.0,  0.0,  0.0},
    355355
    356356    //
     
    360360    // p p K- 2pi0
    361361    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    362       0.0,  0.0,  0.0,  0.01, 0.03, 0.05, 0.07, 0.09, 0.12, 0.13,
    363       0.14, 0.16, 0.18, 0.22, 0.26, 0.28, 0.29, 0.31, 0.31, 0.31, 0.30},
     362      0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.06, 0.06, 0.09, 0.11,
     363      0.12, 0.13, 0.14, 0.15, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.11},
    364364 
    365365    // p p K- pi+ pi-
    366366    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    367       0.0,  0.0,  0.0,  0.02, 0.05, 0.08, 0.12, 0.15, 0.20, 0.22,
    368       0.24, 0.26, 0.30, 0.32, 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.30},
     367      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.09, 0.11, 0.17, 0.22,
     368      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    369369 
    370370    // p p K0bar pi- pi0
    371371    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    372       0.0,  0.0,  0.0,  0.02, 0.05, 0.08, 0.12, 0.15, 0.20, 0.22,
    373       0.24, 0.26, 0.30, 0.32, 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.30},
     372      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.09, 0.11, 0.17, 0.22,
     373      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    374374 
    375375    // n p K0bar 2pi0
    376376    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    377       0.0,  0.0,  0.0,  0.01, 0.03, 0.05, 0.07, 0.09, 0.12, 0.13,
    378       0.14, 0.16, 0.18, 0.22, 0.26, 0.28, 0.29, 0.31, 0.31, 0.31, 0.30},
    379  
     377      0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.06, 0.06, 0.09, 0.11,
     378      0.12, 0.13, 0.14, 0.15, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.11},
     379
    380380    // n p K0bar pi+ pi-
    381381    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    382       0.0,  0.0,  0.0,  0.02, 0.05, 0.08, 0.12, 0.15, 0.20, 0.22,
    383       0.24, 0.26, 0.30, 0.32, 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.30},
     382      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.09, 0.11, 0.17, 0.22,
     383      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    384384 
    385385    // n p K- pi+ pi0
    386386    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    387       0.0,  0.0,  0.0,  0.02, 0.05, 0.08, 0.12, 0.15, 0.20, 0.22,
    388       0.24, 0.26, 0.30, 0.32, 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.30},
     387      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.09, 0.11, 0.17, 0.22,
     388      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    389389 
    390390    // n n K0bar pi+ pi0
    391391    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    392       0.0,  0.0,  0.0,  0.02, 0.05, 0.08, 0.12, 0.15, 0.20, 0.22,
    393       0.24, 0.26, 0.30, 0.32, 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.30},
     392      0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.06, 0.06, 0.09, 0.11,
     393      0.12, 0.13, 0.14, 0.15, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.11},
    394394 
    395395    // n n K- 2pi+
    396396    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    397       0.0,  0.0,  0.0,  0.02, 0.05, 0.08, 0.12, 0.15, 0.20, 0.22,
    398       0.24, 0.26, 0.30, 0.32, 0.32, 0.33, 0.33, 0.34, 0.34, 0.34, 0.30},
     397      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.09, 0.11, 0.17, 0.22,
     398      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    399399
    400400    // S+ n 3pi0
    401401    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    402       0.0,  0.0,  0.02, 0.08, 0.14, 0.20, 0.22, 0.26, 0.32, 0.34,
    403       0.36, 0.37, 0.37, 0.42, 0.46, 0.49, 0.50, 0.50, 0.50, 0.51, 0.50},
     402      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
     403      0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    404404 
    405405    // S+ n pi+ pi- pi0
    406406    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    407       0.0,  0.0,  0.04, 0.13, 0.24, 0.31, 0.37, 0.43, 0.53, 0.57,
    408       0.60, 0.62, 0.62, 0.60, 0.58, 0.58, 0.57, 0.56, 0.56, 0.56, 0.50},
     407      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.03, 0.03,
     408      0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04},
    409409 
    410410    // S0 n pi+ 2pi0
    411411    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    412       0.0,  0.0,  0.02, 0.08, 0.14, 0.20, 0.22, 0.26, 0.32, 0.34,
    413       0.36, 0.37, 0.37, 0.42, 0.46, 0.49, 0.50, 0.50, 0.50, 0.51, 0.50},
     412      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.05, 0.06, 0.09, 0.11,
     413      0.12, 0.13, 0.14, 0.15, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.11},
    414414 
    415415    // S0 n 2pi+ pi-
    416416    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    417       0.0,  0.0,  0.04, 0.13, 0.24, 0.31, 0.37, 0.43, 0.53, 0.57,
    418       0.60, 0.62, 0.62, 0.60, 0.58, 0.58, 0.57, 0.56, 0.56, 0.56, 0.50},
     417      0.0,  0.0,  0.0,  0.0,  0.04, 0.07, 0.08, 0.10, 0.15, 0.22,
     418      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    419419 
    420420    // S+ n K0 K0bar pi0
    421421    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    422422      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    423       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     423      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    424424 
    425425    // S+ n K0 K- pi+
    426426    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    427427      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    428       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     428      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    429429 
    430430    // S+ n K+ K- pi0
    431431    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    432432      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    433       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     433      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    434434
    435435    // S+ n K+ K0bar pi-
    436436    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    437437      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    438       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     438      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    439439 
    440440    // S0 n K+ K0bar pi0
    441441    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    442442      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    443       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     443      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    444444 
    445445    // S0 n K+ K- pi+
    446446    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    447447      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    448       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     448      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    449449 
    450450    // S0 n K0 K0bar pi+
    451451    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    452452      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    453       0.02, 0.03, 0.03, 0.03, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     453      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    454454
    455455    // S+ p pi- 2pi0
    456456    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    457       0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.02, 0.03, 0.04,
    458       0.04, 0.05, 0.05, 0.06, 0.06, 0.07, 0.06, 0.06, 0.06, 0.07, 0.06},
     457      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
     458      0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    459459 
    460460    // S+ p pi+ 2pi-
    461461    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    462       0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.03, 0.04, 0.05, 0.06,
    463       0.07, 0.08, 0.09, 0.09, 0.08, 0.08, 0.07, 0.07, 0.07, 0.07, 0.06},
     462      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.03, 0.03,
     463      0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04},
    464464 
    465465    // S0 p 3pi0
    466466    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    467       0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.02, 0.03, 0.04,
    468       0.04, 0.05, 0.05, 0.06, 0.06, 0.07, 0.06, 0.06, 0.06, 0.07, 0.06},
     467      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.05, 0.06, 0.09, 0.11,
     468      0.12, 0.13, 0.14, 0.15, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.11},
    469469 
    470470    // S0 p pi+ pi- pi0
    471471    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    472       0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.03, 0.04, 0.05, 0.06,
    473       0.07, 0.08, 0.09, 0.09, 0.08, 0.08, 0.07, 0.07, 0.07, 0.07, 0.06},
     472      0.0,  0.0,  0.0,  0.0,  0.04, 0.07, 0.08, 0.10, 0.15, 0.22,
     473      0.23, 0.26, 0.28, 0.30, 0.28, 0.29, 0.28, 0.27, 0.27, 0.27, 0.24},
    474474
    475475    // S+ p K0 K0bar pi-
    476476    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    477       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    478       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     477      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     478      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    479479 
    480480    // S+ p K0 K- pi0
    481481    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    482       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    483       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     482      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     483      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    484484 
    485485    // S+ p K+ K- pi-
    486486    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    487       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    488       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     487      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     488      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    489489 
    490490    // S0 p K0 K0bar pi0
    491491    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    492       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    493       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     492      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     493      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    494494 
    495495    // S0 p K0 K- pi+
    496496    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    497       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    498       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     497      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     498      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    499499 
    500500    // S0 p K+ K0bar pi-
    501     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    502       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    503       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
    504  
     501     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     502      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     503      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
     504
    505505    // S0 p K+ K- pi0
    506506    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    507       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01,
    508       0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0},
     507      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     508      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    509509
    510510    // L p 3pi0
    511511    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    512       0.0,  0.0,  0.0,  0.02, 0.05, 0.07, 0.07, 0.09, 0.10, 0.12,
    513       0.13, 0.14, 0.16, 0.20, 0.21, 0.20, 0.19, 0.18, 0.17, 0.17, 0.14},
     512      0.0,  0.0,  0.03, 0.03, 0.08, 0.13, 0.17, 0.18, 0.28, 0.40,
     513      0.42, 0.47, 0.50, 0.53, 0.52, 0.51, 0.50, 0.48, 0.48, 0.47, 0.42},
    514514
    515515    // L p pi+ pi- pi0
    516516    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    517       0.0,  0.0,  0.0,  0.04, 0.08, 0.11, 0.12, 0.14, 0.18, 0.20,
    518       0.22, 0.24, 0.26, 0.28, 0.26, 0.24, 0.22, 0.20, 0.19, 0.18, 0.14},
     517      0.0,  0.0,  0.03, 0.03, 0.14, 0.21, 0.29, 0.31, 0.48, 0.70,
     518      0.74, 0.82, 0.87, 0.92, 0.90, 0.89, 0.87, 0.84, 0.83, 0.82, 0.74},
    519519 
    520520    // L n pi+ 2pi0
    521521    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    522       0.0,  0.0,  0.0,  0.02, 0.05, 0.07, 0.07, 0.09, 0.10, 0.12,
    523       0.13, 0.14, 0.16, 0.20, 0.21, 0.20, 0.19, 0.18, 0.17, 0.17, 0.14},
     522      0.0,  0.0,  0.03, 0.03, 0.08, 0.13, 0.17, 0.18, 0.28, 0.40,
     523      0.42, 0.47, 0.50, 0.53, 0.52, 0.51, 0.50, 0.48, 0.48, 0.47, 0.42},
    524524
    525525    // L n 2pi+ pi-
    526526    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    527       0.0,  0.0,  0.0,  0.04, 0.08, 0.11, 0.12, 0.14, 0.18, 0.20,
    528       0.22, 0.24, 0.26, 0.28, 0.26, 0.24, 0.22, 0.20, 0.19, 0.18, 0.14},
     527      0.0,  0.0,  0.03, 0.03, 0.14, 0.21, 0.29, 0.31, 0.48, 0.70,
     528      0.74, 0.82, 0.87, 0.92, 0.90, 0.89, 0.87, 0.84, 0.83, 0.82, 0.74},
    529529 
    530530    // L p K0 K0bar pi0
    531531    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    532532      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    533       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     533      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    534534 
    535535    // L p K0 K- pi+
    536536    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    537537      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    538       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     538      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    539539 
    540540    // L p K+ K- pi0
    541541    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    542542      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    543       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     543      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    544544 
    545545    // L p K+ K0bar pi-
    546546    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    547547      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    548       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     548      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    549549
    550550    // L n K+ K0bar pi0
    551551    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    552552      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    553       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     553      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    554554 
    555555    // L n K+ K- pi+
    556556    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    557557      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    558       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     558      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    559559 
    560560    // L n K0 K0bar pi+
    561561    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    562562      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    563       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     563      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    564564
    565565    // S- p pi+ 2pi0
    566566    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    567       0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.02, 0.03, 0.04,
    568       0.04, 0.05, 0.05, 0.06, 0.06, 0.07, 0.06, 0.06, 0.06, 0.07, 0.06},
     567      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02, 0.02,
     568      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    569569 
    570570    // S- p 2pi+ pi-
    571571    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    572       0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.03, 0.04, 0.05, 0.06,
    573       0.07, 0.08, 0.09, 0.09, 0.08, 0.08, 0.07, 0.07, 0.07, 0.07, 0.06},
     572      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02, 0.02,
     573      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    574574 
    575575    // S- n 2pi+ pi0
    576576    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    577       0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.03, 0.04, 0.05, 0.06,
    578       0.07, 0.08, 0.09, 0.09, 0.08, 0.08, 0.07, 0.07, 0.07, 0.07, 0.06},
     577      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02, 0.02,
     578      0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    579579 
    580580    // S- p K+ K0bar pi0
    581581    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    582582      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    583       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     583      0.02, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    584584
    585585    // S- p K+ K- pi+
    586586    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    587587      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    588       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     588      0.02, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    589589 
    590590    // S- p K0 K0bar pi+
    591591    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    592592      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    593       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     593      0.02, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    594594
    595595    // S- n K+ K0bar pi+
    596596    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    597597      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
    598       0.02, 0.03, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01},
     598      0.02, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03},
    599599
    600600    // X0 p K0 2pi0
    601601    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    602       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01,
    603       0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     602      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01,
     603      0.01, 0.01, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01},
    604604 
    605605    // X0 p K0 pi+ pi-
    606606    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    607       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    608       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     607      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     608      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    609609 
    610610    // X0 n K0 pi+ pi0
    611611    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    612       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    613       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     612      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     613      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    614614 
    615615    // X0 n K+ 2pi0
    616616    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    617       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01,
    618       0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     617      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01,
     618      0.01, 0.01, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01},
    619619 
    620620    // X0 n K+ pi+ pi-
    621621    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    622       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    623       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     622      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     623      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    624624 
    625625    // X0 p K+ pi- pi0
    626626    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    627       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    628       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     627      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     628      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    629629 
    630630    // X- p K+ 2pi0
    631631    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    632       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01,
    633       0.01, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     632      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01,
     633      0.01, 0.01, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01},
    634634 
    635635    // X- p K+ pi+ pi-
    636636    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    637       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    638       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     637      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     638      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    639639 
    640640    // X- p K0 pi+ pi0
    641641    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    642       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    643       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     642      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     643      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    644644 
    645645    // X- n K+ pi+ pi0
    646646    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    647       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    648       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     647      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     648      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    649649
    650650    // X- n K0 2pi+
    651651    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    652       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
    653       0.02, 0.02, 0.01, 0.01, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0},
     652      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02,
     653      0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02},
    654654
    655655    //
     
    658658    // p p K- 3pi0
    659659    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    660       0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.04, 0.05, 0.06,
    661       0.08, 0.10, 0.12, 0.15, 0.19, 0.22, 0.24, 0.26, 0.26, 0.26, 0.25},
     660      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.05, 0.06, 0.07,
     661      0.08, 0.09, 0.10, 0.12, 0.14, 0.14, 0.15, 0.16, 0.16, 0.16, 0.14},
    662662
    663663    // p p K- pi+ pi- pi0   
    664664    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    665       0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.06, 0.08, 0.10,
    666       0.13, 0.16, 0.19, 0.22, 0.24, 0.26, 0.28, 0.29, 0.29, 0.28, 0.25},
     665      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.06, 0.07, 0.09,
     666      0.10, 0.12, 0.14, 0.16, 0.19, 0.20, 0.21, 0.22, 0.22, 0.22, 0.20},
    667667
    668668    // p p K0bar pi- 2pi0
    669669    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    670       0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.04, 0.05, 0.06,
    671       0.08, 0.10, 0.12, 0.15, 0.19, 0.22, 0.24, 0.26, 0.26, 0.26, 0.25},
     670      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.04, 0.05, 0.06,
     671      0.07, 0.08, 0.09, 0.11, 0.13, 0.13, 0.14, 0.15, 0.15, 0.15, 0.13},
    672672
    673673    // p p K0bar pi+ 2pi-
    674674    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    675       0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.06, 0.08, 0.10,
    676       0.13, 0.16, 0.19, 0.22, 0.24, 0.26, 0.28, 0.29, 0.29, 0.28, 0.25},
     675      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.06, 0.07, 0.09,
     676      0.10, 0.12, 0.14, 0.16, 0.19, 0.20, 0.21, 0.22, 0.22, 0.22, 0.20},
    677677
    678678    // n p K0bar 3pi0
    679679    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    680       0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.04, 0.05, 0.06,
    681       0.08, 0.10, 0.12, 0.15, 0.19, 0.22, 0.24, 0.26, 0.26, 0.26, 0.25},
     680      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.04, 0.05, 0.06,
     681      0.07, 0.08, 0.09, 0.11, 0.13, 0.13, 0.14, 0.15, 0.15, 0.15, 0.13},
    682682
    683683    // n p K0bar pi+ pi- pi0
    684684    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    685       0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.06, 0.08, 0.10,
    686       0.13, 0.16, 0.19, 0.22, 0.24, 0.26, 0.28, 0.29, 0.29, 0.28, 0.25},
     685      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.06, 0.07, 0.09,
     686      0.10, 0.12, 0.14, 0.16, 0.19, 0.20, 0.21, 0.22, 0.22, 0.22, 0.20},
    687687
    688688    // n p K- pi+ 2pi0
    689689    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    690       0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.04, 0.05, 0.06,
    691       0.08, 0.10, 0.12, 0.15, 0.19, 0.22, 0.24, 0.26, 0.26, 0.26, 0.25},
     690      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.04, 0.05, 0.06,
     691      0.07, 0.08, 0.09, 0.11, 0.13, 0.13, 0.14, 0.15, 0.15, 0.15, 0.13},
    692692
    693693    // n p K- 2pi+ pi-
    694694    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    695       0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.06, 0.08, 0.10,
    696       0.13, 0.16, 0.19, 0.22, 0.24, 0.26, 0.28, 0.29, 0.29, 0.28, 0.25},
     695      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.06, 0.07, 0.09,
     696      0.10, 0.12, 0.14, 0.16, 0.19, 0.20, 0.21, 0.22, 0.22, 0.22, 0.20},
    697697
    698698    // n n K0bar pi+ 2pi0
    699699    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    700       0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.04, 0.05, 0.06,
    701       0.08, 0.10, 0.12, 0.15, 0.19, 0.22, 0.24, 0.26, 0.26, 0.26, 0.25},
     700      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.04, 0.05, 0.06,
     701      0.07, 0.08, 0.09, 0.11, 0.13, 0.13, 0.14, 0.15, 0.15, 0.15, 0.13},
    702702
    703703    // n n K0bar 2pi+ pi-
    704704    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    705       0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.06, 0.08, 0.10,
    706       0.13, 0.16, 0.19, 0.22, 0.24, 0.26, 0.28, 0.29, 0.29, 0.28, 0.25},
     705      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.06, 0.07, 0.09,
     706      0.10, 0.12, 0.14, 0.16, 0.19, 0.20, 0.21, 0.22, 0.22, 0.22, 0.20},
    707707
    708708    // n n K- 2pi+ pi0
    709709    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    710       0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.05, 0.06, 0.07,
    711       0.09, 0.12, 0.15, 0.18, 0.20, 0.22, 0.23, 0.24, 0.24, 0.23, 0.20},
     710      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.04, 0.05, 0.06,
     711      0.07, 0.08, 0.09, 0.11, 0.13, 0.13, 0.14, 0.15, 0.15, 0.15, 0.13},
    712712
    713713    // S+ n 4pi0
    714714    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    715       0.0,  0.0,  0.0,  0.01, 0.04, 0.04, 0.05, 0.06, 0.07, 0.08,
    716       0.08, 0.10, 0.10, 0.15, 0.20, 0.23, 0.25, 0.28, 0.28, 0.28, 0.30},
     715      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02, 0.03,
     716      0.03, 0.04, 0.04, 0.05, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06},
    717717
    718718    // S+ n pi+ pi- 2pi0
    719719    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    720       0.0,  0.0,  0.0,  0.02, 0.06, 0.07, 0.08, 0.10, 0.11, 0.13,
    721       0.15, 0.16, 0.17, 0.21, 0.25, 0.27, 0.28, 0.31, 0.31, 0.30, 0.30},
     720      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03, 0.04, 0.05,
     721      0.06, 0.07, 0.08, 0.09, 0.11, 0.11, 0.12, 0.13, 0.13, 0.13, 0.11},
    722722
    723723    // S+ n 2pi+ 2pi-
    724724    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    725       0.0,  0.0,  0.0,  0.04, 0.09, 0.12, 0.14, 0.16, 0.19, 0.22,
    726       0.25, 0.27, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.34, 0.33, 0.30},
     725      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.05, 0.06, 0.07,
     726      0.08, 0.09, 0.10, 0.12, 0.14, 0.14, 0.15, 0.16, 0.16, 0.16, 0.14},
    727727
    728728    // S0 n pi+ 3pi0
    729729    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    730       0.0,  0.0,  0.0,  0.02, 0.06, 0.07, 0.08, 0.10, 0.11, 0.13,
    731       0.15, 0.16, 0.17, 0.21, 0.25, 0.27, 0.28, 0.31, 0.31, 0.30, 0.30},
     730      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.03, 0.01, 0.02, 0.02,
     731      0.02, 0.02, 0.03, 0.03, 0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.05},
    732732
    733733    // S0 n 2pi+ pi- pi0
    734734    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    735       0.0,  0.0,  0.0,  0.04, 0.09, 0.12, 0.14, 0.16, 0.19, 0.22,
    736       0.25, 0.27, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.34, 0.33, 0.30},
     735      0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.04, 0.02, 0.03, 0.03,
     736      0.03, 0.04, 0.04, 0.05, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06},
    737737
    738738    // S+ p pi- 3pi0
    739739    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    740       0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
    741       0.02, 0.03, 0.02, 0.03, 0.04, 0.04, 0.04, 0.02, 0.02, 0.03, 0.02},
     740      0.0,  0.0,  0.0,  0.0, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
     741      0.02, 0.02, 0.02, 0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04},
    742742
    743743    // S+ p pi+ 2pi- pi0
    744744    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    745       0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03,
    746       0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.05, 0.04, 0.04, 0.03, 0.02},
     745      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.03, 0.03,
     746      0.03, 0.04, 0.05, 0.06, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07},
    747747
    748748    // S0 p 4pi0
    749749    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    750       0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.01, 0.01,
    751       0.01, 0.01, 0.01, 0.02, 0.03, 0.03, 0.04, 0.03, 0.03, 0.03, 0.0},
     750      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.02, 0.03,
     751      0.03, 0.04, 0.04, 0.05, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06},
    752752
    753753    // S0 p pi+ pi- 2pi0
    754754    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    755       0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
    756       0.02, 0.02, 0.02, 0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.03, 0.02},
     755      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.03, 0.03, 0.04, 0.05,
     756      0.06, 0.07, 0.08, 0.09, 0.11, 0.11, 0.12, 0.13, 0.13, 0.13, 0.11},
    757757
    758758    // S0 p 2pi+ 2pi-
    759759    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    760       0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03,
    761       0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.05, 0.04, 0.04, 0.03, 0.02},
     760      0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.04, 0.05, 0.06, 0.07,
     761      0.08, 0.09, 0.10, 0.12, 0.14, 0.14, 0.15, 0.16, 0.16, 0.16, 0.14},
    762762
    763763    // L p 4pi0
    764764    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    765       0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02,
    766       0.03, 0.03, 0.04, 0.05, 0.07, 0.08, 0.08, 0.09, 0.09, 0.10, 0.10},
     765      0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.04, 0.06, 0.07, 0.09,
     766      0.10, 0.12, 0.14, 0.16, 0.19, 0.20, 0.21, 0.22, 0.22, 0.22, 0.20},
    767767
    768768    // L p pi+ pi- 2pi0
    769769    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    770       0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03, 0.04, 0.04,
    771       0.05, 0.05, 0.06, 0.07, 0.09, 0.09, 0.10, 0.10, 0.10, 0.10, 0.10},
     770      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.06, 0.10, 0.12, 0.15,
     771      0.17, 0.20, 0.23, 0.27, 0.33, 0.34, 0.36, 0.38, 0.38, 0.37, 0.34},
    772772
    773773    // L p 2pi+ 2pi-
    774774    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    775       0.0,  0.0,  0.0,  0.01, 0.03, 0.04, 0.05, 0.05, 0.06, 0.07,
    776       0.08, 0.09, 0.10, 0.10, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.10},
     775      0.0,  0.0,  0.0,  0.0,  0.05, 0.08, 0.11, 0.16, 0.20, 0.25,
     776      0.29, 0.34, 0.39, 0.46, 0.56, 0.58, 0.61, 0.65, 0.65, 0.64, 0.58},
    777777
    778778    // L n pi+ 3pi0
    779779    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    780       0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.03, 0.04, 0.04,
    781       0.05, 0.05, 0.06, 0.07, 0.09, 0.09, 0.10, 0.10, 0.10, 0.10, 0.10},
     780      0.0,  0.0,  0.0,  0.0,  0.03, 0.05, 0.06, 0.10, 0.12, 0.15,
     781      0.17, 0.20, 0.23, 0.27, 0.33, 0.34, 0.36, 0.38, 0.38, 0.37, 0.34},
    782782
    783783    // L n 2pi+ pi- pi0
    784784    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    785       0.0,  0.0,  0.0,  0.01, 0.03, 0.04, 0.05, 0.05, 0.06, 0.07,
    786       0.08, 0.09, 0.10, 0.10, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.10},
     785      0.0,  0.0,  0.0,  0.0,  0.05, 0.08, 0.11, 0.16, 0.20, 0.25,
     786      0.29, 0.34, 0.39, 0.46, 0.56, 0.58, 0.61, 0.65, 0.65, 0.64, 0.58},
    787787
    788788    // S- p pi+ 3pi0
    789789    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    790       0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
    791       0.02, 0.02, 0.02, 0.03, 0.04, 0.04, 0.03, 0.04, 0.04, 0.03, 0.02},
     790      0.0,  0.0,  0.0,  0.0, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
     791      0.02, 0.02, 0.03, 0.03, 0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.05},
    792792
    793793    // S- p 2pi+ pi- pi0
    794794    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    795       0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03,
    796       0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.04, 0.04, 0.04, 0.03, 0.02},
     795      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.02, 0.03,
     796      0.03, 0.04, 0.04, 0.05, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06},
    797797
    798798    // S- n 2pi+ 2pi0
    799799    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    800       0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
    801       0.02, 0.02, 0.02, 0.03, 0.04, 0.04, 0.03, 0.04, 0.04, 0.03, 0.02},
     800      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.01, 0.02, 0.02,
     801      0.02, 0.02, 0.03, 0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04},
    802802
    803803    // S- n 3pi+ pi-
    804804    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    805       0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03,
    806       0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.04, 0.04, 0.04, 0.03, 0.02},
     805      0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.03, 0.03,
     806      0.03, 0.04, 0.04, 0.05, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06},
    807807
    808808    //
     
    811811    // p p K- 4pi0   
    812812    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    813       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.0,  0.01, 0.02, 0.02,
    814       0.03, 0.04, 0.05, 0.07, 0.11, 0.14, 0.17, 0.21, 0.21, 0.22, 0.24},
     813      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
     814      0.04, 0.05, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.16, 0.16, 0.15},
    815815
    816816    // p p K- pi+ pi- 2pi0
    817817    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     818      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.03, 0.04,
     819      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     820
     821    // p p K- 2pi+ 2pi-
     822    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     823      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.06,
     824      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     825
     826    // p p K0bar pi- 3pi0
     827    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    818828      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.04,
    819       0.05, 0.07, 0.08, 0.10, 0.14, 0.17, 0.20, 0.23, 0.23, 0.24, 0.24},
    820 
    821     // p p K- 2pi+ 2pi-
    822     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    823       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.05, 0.07,
    824       0.09, 0.11, 0.13, 0.15, 0.17, 0.20, 0.23, 0.26, 0.26, 0.26, 0.24},
    825 
    826     // p p K0bar pi- 3pi0
     829      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     830
     831    // p p K0bar pi+ 2pi- pi0
     832    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     833      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.06,
     834      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     835
     836    // n p K0bar 4pi0
     837    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     838      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
     839      0.04, 0.05, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.16, 0.16, 0.15},
     840
     841    // n p K0bar pi+ pi- 2pi0
    827842    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    828843      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.04,
    829       0.05, 0.07, 0.08, 0.10, 0.14, 0.17, 0.20, 0.23, 0.23, 0.24, 0.24},
    830 
    831     // p p K0bar pi+ 2pi- pi0
    832     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    833       0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.07, 0.09,
    834       0.11, 0.13, 0.15, 0.17, 0.20, 0.23, 0.26, 0.26, 0.26, 0.25, 0.24},
    835 
    836     // n p K0bar 4pi0
    837     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    838       0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02,
    839       0.03, 0.04, 0.05, 0.07, 0.11, 0.14, 0.17, 0.21, 0.21, 0.22, 0.24},
    840 
    841     // n p K0bar pi+ pi- 2pi0
     844      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     845
     846    // n p K0bar 2pi+ 2pi-
     847    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     848      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.06,
     849      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     850
     851    // n p K- pi+ 3pi0
    842852    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    843853      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.04,
    844       0.05, 0.07, 0.08, 0.10, 0.14, 0.17, 0.20, 0.23, 0.23, 0.24, 0.24},
    845 
    846     // n p K0bar 2pi+ 2pi-
    847     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    848       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.05, 0.07,
    849       0.09, 0.11, 0.13, 0.15, 0.17, 0.20, 0.23, 0.26, 0.26, 0.26, 0.24},
    850 
    851     // n p K- pi+ 3pi0
     854      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     855
     856    // n p K- 2pi+ pi- pi0
     857    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     858      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.06,
     859      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     860
     861    // n n K0bar pi+ 3pi0
    852862    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    853863      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.04,
    854       0.05, 0.07, 0.08, 0.10, 0.14, 0.17, 0.20, 0.23, 0.23, 0.24, 0.24},
    855 
    856     // n p K- 2pi+ pi- pi0
    857     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    858       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.05, 0.07,
    859       0.09, 0.11, 0.13, 0.15, 0.17, 0.20, 0.23, 0.26, 0.26, 0.26, 0.24},
    860 
    861     // n n K0bar pi+ 3pi0
     864      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     865
     866    // n n K0bar 2pi+ pi- pi0
     867    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     868      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.06,
     869      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     870
     871    // n n K- 2pi+ 2pi0
    862872    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    863873      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.04,
    864       0.05, 0.07, 0.08, 0.10, 0.14, 0.17, 0.20, 0.23, 0.23, 0.24, 0.24},
    865 
    866     // n n K0bar 2pi+ pi- pi0
    867     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    868       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.05, 0.07,
    869       0.09, 0.11, 0.13, 0.15, 0.17, 0.20, 0.23, 0.26, 0.26, 0.26, 0.24},
    870 
    871     // n n K- 2pi+ 2pi0
    872     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    873       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03, 0.04,
    874       0.05, 0.07, 0.08, 0.10, 0.14, 0.17, 0.20, 0.23, 0.23, 0.24, 0.24},
     874      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
    875875
    876876    // n n K- 3pi+ pi-
    877877    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    878       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.03, 0.05, 0.07,
    879       0.09, 0.11, 0.13, 0.15, 0.17, 0.20, 0.23, 0.26, 0.26, 0.26, 0.24},
    880 
    881     // S+ n 5pi0
    882     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    883       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.01, 0.02,
    884       0.02, 0.03, 0.04, 0.06, 0.07, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08},
    885 
    886     // S+ n pi+ pi- 3pi0
    887     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    888       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.02, 0.03,
    889       0.04, 0.05, 0.06, 0.08, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.08},
    890 
    891     // S+ n 2pi+ 2pi- pi0
    892     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    893       0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.03, 0.04, 0.05,
    894       0.06, 0.08, 0.10, 0.12, 0.11, 0.11, 0.10, 0.10, 0.10, 0.09, 0.08},
    895 
    896     // S0 n pi+ 4pi0
    897     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    898       0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.01, 0.02, 0.02,
    899       0.03, 0.04, 0.05, 0.07, 0.10, 0.12, 0.14, 0.14, 0.14, 0.14, 0.14},
    900 
    901     // S0 n 2pi+ pi- 2pi0
     878      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.05, 0.06,
     879      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     880
     881    // L n pi+ 4pi0
     882    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     883      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
     884      0.04, 0.05, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.16, 0.16, 0.15},
     885
     886    // L n 2pi+ pi- 2pi0
     887    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     888      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.02, 0.03, 0.04,
     889      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     890
     891    // L n 3pi+ 2pi-
     892    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     893      0.0,  0.0,  0.0,  0.0,  0.02, 0.02, 0.03, 0.03, 0.05, 0.06,
     894      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27},
     895
     896    // L p 5pi0
     897    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     898      0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03,
     899      0.04, 0.05, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.16, 0.16, 0.16},
     900
     901    // L p pi+ pi- 3pi0
    902902    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    903903      0.0,  0.0,  0.0,  0.0,  0.0,  0.01, 0.02, 0.02, 0.03, 0.04,
    904       0.05, 0.07, 0.08, 0.10, 0.13, 0.14, 0.16, 0.16, 0.16, 0.15, 0.14},
    905 
    906     // S0 n 3pi+ 2pi-
    907     { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
    908       0.0,  0.0,  0.0,  0.0,  0.0,  0.02, 0.03, 0.03, 0.05, 0.07,
    909       0.09, 0.11, 0.13, 0.15, 0.16, 0.17, 0.18, 0.18, 0.18, 0.17, 0.14} };
     904      0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.17, 0.17, 0.16},
     905
     906    // L p 2pi+ 2pi- pi0
     907    { 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,
     908      0.0,  0.0,  0.0,  0.0,  0.01, 0.01, 0.02, 0.03, 0.05, 0.06,
     909      0.08, 0.10, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.27, 0.27, 0.27} };
    910910}
    911911
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4CollisionOutput.cc

    r962 r1196  
    3030typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
    3131
     32
    3233G4CollisionOutput::G4CollisionOutput()
    3334  : verboseLevel(0) {
    3435 
    35   if (verboseLevel > 3) {
     36  if (verboseLevel > 3)
    3637    G4cout << " >>> G4CollisionOutput::G4CollisionOutput" << G4endl;
    37   }
    3838}
     39
     40
     41G4CollisionOutput& G4CollisionOutput::operator=(const G4CollisionOutput& right)
     42{
     43  if (this != &right) {
     44    verboseLevel = right.verboseLevel;
     45    outgoingParticles = right.outgoingParticles;
     46    nucleiFragments = right.nucleiFragments;
     47    eex_rest = right.eex_rest;
     48    on_shell = right.on_shell;
     49  }
     50  return *this;
     51}
     52
    3953
    4054void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4ElementaryParticleCollider.cc

    r1007 r1196  
    5353typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
    5454
     55
    5556G4ElementaryParticleCollider::G4ElementaryParticleCollider()
    56   : verboseLevel(1) 
     57  : verboseLevel(1)
    5758{
    5859  if (verboseLevel > 3) {
    5960    G4cout << " >>> G4ElementaryParticleCollider ctor " << G4endl;
    6061  }
     62
     63  initializeArrays();
    6164}
    6265
     
    177180                                                   G4double ekin) const
    178181{
    179   if (verboseLevel > 3) {
    180     G4cout << " >>> G4ElementaryParticleCollider::generateMultiplicity"
    181            << G4endl;
    182   }
    183 
    184   const G4double asig[4][6][31] = {
    185      // pp, nn
    186     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 24.3, 24.1, 24.0, 26.3,
    187       28.6, 24.8, 19.9, 19.2, 17.4, 15.3, 13.5, 12.3, 11.9, 10.4,
    188       11.8, 11.4, 11.0, 10.8, 10.9, 11.7, 11.4, 10.2, 11.0, 11.0, 9.0},
    189 
    190      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 1.45, 2.90, 4.10,
    191       5.30, 22.0, 21.2, 19.9, 14.9, 12.6, 12.3, 11.3, 10.8, 9.50,
    192       8.27, 7.20, 6.70, 6.25, 6.04, 5.89, 5.70, 5.60, 5.05, 4.17,4.00},
    193  
    194      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    195       0.  , 2.27, 4.28, 7.81, 8.03, 8.11, 7.90, 7.82, 7.61, 7.47,
    196       7.07, 7.66, 7.05, 6.71, 6.38, 6.36, 6.37, 6.57, 6.01, 5.48, 6.80},
    197  
    198      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    199       0.  , 0.  , 1.20, 2.85, 3.70, 4.81, 5.33, 7.74, 6.91, 6.94,
    200       7.57, 7.21, 7.11, 7.10, 6.93, 6.79, 6.71, 6.55, 6.55, 6.15, 8.50},
    201      // pp, nn total cross section
    202      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    203       0.  , 0.  , 0.  , .005, 0.54, 0.74, 0.86, 0.91, 1.10, 1.16,
    204       1.36, 1.40, 1.43, 1.47, 1.47, 1.43, 1.38, 1.38, 1.63, 1.36, 2.80},
    205  
    206      { 1.0,  1.0,  1.0,  1.0,  1.0,  1.0, 24.3,25.55, 26.9, 30.4,
    207       34.0, 49.07,46.9, 49.765, 47.1, 42.3, 41.8, 41.2, 41.6, 41.6,
    208       41.0, 43.0, 42.4, 40.0,   39.9, 39.8, 42.0, 40.0, 39.8, 39.6, 38.7}},
    209 
    210     // pn, np
    211     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 33.0, 31.3, 29.5, 27.8,
    212       14.6, 16.0, 17.5, 18.3, 19.4, 18.7, 15.6, 14.8, 13.6, 12.5,
    213       12.2, 11.9, 11.4, 11.2, 10.1, 9.62, 8.41, 7.14, 7.09, 5.04, 10.2},
    214 
    215      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 2.00, 4.00, 6.50,
    216       19.5, 20.8, 19.8, 18.6, 17.7, 14.4, 13.5, 10.4, 10.1, 12.0,
    217       8.87, 8.51, 8.49, 9.20, 8.29, 7.43, 8.20, 4.69, 4.57, 4.06, 4.10},
    218 
    219      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    220       0.68, 2.76, 3.85, 8.35, 12.7, 12.3, 10.8, 12.0, 10.9, 10.2,
    221       10.6, 12.2, 11.8, 11.0, 10.4, 10.5, 11.0, 10.6, 11.8, 12.5, 13.2},
    222 
    223      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    224       0.22, 0.52, 0.64, 1.19, 1.52, 1.75, 1.51, 2.04, 1.85, 1.70,
    225       1.92, 1.66, 1.74, 1.50, 1.39, 1.35, 1.41, 1.48, 1.43, 1.35, 3.20},
    226 
    227      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    228       0.  , 0.  , 0.14, 0.24, 0.30, 0.46, 0.85, 1.40, 1.54, 1.52,
    229       1.47, 1.48, 1.49, 1.42, 1.39, 1.37, 1.22, 1.19, 0.93, 0.  ,2.10},
    230      // pn, np total cross section
    231      { 1.0,  1.0,   1.0,   1.0,   1.0,   1.0,  33.0,  33.3,  33.5,  34.3,
    232       35.0, 40.08, 41.93, 46.68, 51.62, 47.61, 42.26, 40.64, 37.99, 37.92,
    233       41.2, 41.0,  41.1,  41.2,  41.2,  39.6,  36.0,  36.0,  36.2,  36.2, 40.2}},
    234 
    235     // pi- n, pi+ p
    236     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 60.0, 38.0, 30.6, 24.0,
    237       18.5, 12.8, 13.6, 9.15, 8.20, 7.80, 7.10, 6.40, 5.81, 5.85,
    238       5.50, 5.33, 5.40, 5.50, 4.90, 5.02, 5.00, 4.98, 4.96, 4.96, 4.50},
    239 
    240      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.38, 0.75, 1.28,
    241       2.26, 11.8, 11.1, 7.56, 6.04, 5.68, 4.15, 3.21, 2.12, 1.66,
    242       1.54, 1.53, 1.47, 1.33, 1.39, 1.35, 1.29, 1.23, 1.13, 1.06, 0.70},
    243 
    244      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    245       0.05, 2.19, 6.02, 7.36, 6.97, 5.83, 6.53, 5.09, 4.24, 3.24,
    246       3.31, 3.11, 2.91, 2.78, 2.72, 2.68, 2.48, 2.27, 2.02, 1.77, 4.40},
    247 
    248      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    249       0.06, 0.35, 0.55, 0.77, 0.89, 0.80, 0.86, 0.97, 0.90, 0.86,
    250       0.84, 0.84, 0.83, 0.81, 0.79, 0.82, 0.76, 0.88, 0.89, 0.89, 3.00},
    251 
    252      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    253       0.  , 0.02, 0.07,0.33, 0.92, 1.39, 2.11, 1.81, 2.39, 2.60,
    254       2.19, 1.70, 1.60,0.68, 1.43, 1.46, 1.46, 1.37, 1.16, 1.09, 2.60},
    255      // pi- n, pi+ p total cross section
    256      {  1.0,  1.0,  1.0,  1.0,  1.0,  1.0, 60.0, 38.38, 31.35, 25.28,
    257       20.87, 27.2, 34.9, 29.1, 30.8, 29.6, 28.2, 27.5,  26.9,  26.3,
    258       25.9,  25.6, 25.2, 26.1, 25.5, 25.4, 25.3, 25.1,  24.9,  24.8, 24.1}},
    259 
    260      // pi- p -> 2 body  (pi+ n -> two body)
    261     {{5.90,9.40, 24.5, 62.6, 65.3, 41.3, 29.3, 24.3, 22.7, 22.9,
    262       23.2,28.4, 11.7, 10.1, 8.30, 7.16, 6.49, 6.36, 6.60, 5.84,
    263        5.3, 5.2,  5.2,  5.1, 4.74, 4.7,  4.6,  4.5,  4.4,  4.3, 4.3},
    264      // pi- p -> 3 body
    265      {0.  ,0.  , 0.  , 0.  , 0.10, 0.40, 2.70, 3.50, 5.30, 6.60,
    266       9.10,17.6, 12.2, 9.78, 7.51, 6.91, 6.86, 6.46, 6.19, 5.13,
    267       3.90,2.82, 3.10, 3.12, 2.52, 2.22, 2.02, 2.01, 1.98, 2.14, 1.20},
    268 
    269      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    270       0.76,2.63, 3.72, 6.53, 7.47, 7.94, 7.12, 6.85, 6.09, 5.35,
    271       4.12,3.85, 3.68, 4.09, 3.58, 3.29, 3.08, 2.93, 2.80, 2.65, 3.30},
    272 
    273      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    274       0.59,0.74, 1.47, 4.10, 4.78, 4.90, 5.07, 5.50, 5.48, 5.03,
    275       4.65,4.39, 4.06, 3.53, 3.08, 3.05, 2.91, 3.42, 3.93, 3.93, 4.10},
    276      // pi- p -> 6 body
    277      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    278       0.01,.007, 0.03, .099, .251, .376, .419, .582, .755, .777,
    279       1.13,1.08, 1.13, 1.08, .962, .866, .738, .674, .645, .613, 1.30},
    280 
    281      // Used as pi- p and pi+ n total cross section
    282      // For KE < 0.5 GeV, sum up 2-6 body cross sections
    283      { 5.9,  9.4, 24.5, 62.6, 65.4, 41.7, 32.0, 27.8, 28.0, 29.5,
    284       33.7, 49.4, 30.0, 35.7, 33.4, 31.6, 30.4, 29.6, 28.9, 28.5,
    285       28.1, 27.5, 31.0, 27.7, 27.8, 26.1, 25.2, 25.2, 25.2, 25.2, 25.7}}
    286   };
    287 
    288182  G4int mul = 0;
    289183  G4int l = is;
     
    339233    }
    340234
    341   } else {   // non-strange particle branch
    342 
    343     //  DHW 3 Sept 08  const G4double large_cut = 4.0;
    344     std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(ekin);
    345     G4int ik = iksk.first;
    346     G4double sk = iksk.second;
    347 
    348     l = is;
    349     if (l == 4) l = 1;
    350     if (l == 10) l = 3;
    351     if (l == 5 || l == 6) l = 4;
    352 
    353     std::vector<G4double> sigm(5);
    354     G4double stot = 0.0;
    355 
    356     if (l == 7 || l == 14) { // pi0 P or pi0 N
    357 
    358       for (G4int j = 0; j < 5; j++) {
    359         sigm[j] = 0.5 * (asig[2][j][ik - 1] + asig[3][j][ik - 1] +
    360                          sk * (asig[2][j][ik] + asig[3][j][ik] -
    361                                asig[2][j][ik - 1] - asig[3][j][ik - 1]));
    362       }
    363       stot = 0.5 * (asig[2][5][ik - 1] + asig[3][5][ik - 1] +
    364                          sk * (asig[2][5][ik] + asig[3][5][ik] -
    365                                asig[2][5][ik - 1] - asig[3][5][ik - 1]));
    366 
    367     } else {
    368 
    369       for (G4int j = 0; j < 5; j++) {
    370         sigm[j] = asig[l - 1][j][ik - 1] +
    371                   sk * (asig[l - 1][j][ik] - asig[l - 1][j][ik - 1]);
    372       }
    373       stot = asig[l - 1][5][ik - 1] +
    374                 sk * (asig[l - 1][5][ik] - asig[l - 1][5][ik - 1]);
    375     }
    376 
    377     G4double sl = inuclRndm();
    378     G4double ptot = 0.0;
    379 
    380     mul = 4;
    381     for (G4int i = 0; i < 5; i++) {
    382       ptot += sigm[i] / stot;
    383 
    384       if (sl <= ptot) {
    385         mul = i;
    386         break;
    387       }
    388     }
    389 
    390     // DHW 3 Sept 08    if(ekin > large_cut && mul == 1) mul = 2;
    391 
    392   }  // strange, non-strange
     235  // Non-strange branch
     236  } else if (l == 1 || l == 4) {
     237    mul = nucSampler.GetMultiplicityT1(ekin) - 2;
     238    if (mul > 7) G4cout << " Nuc sampler pp mult too high: mul = " << mul << G4endl;
     239  } else if (l == 2) {
     240    mul = nucSampler.GetMultiplicityT0(ekin) - 2;
     241    if (mul > 7) G4cout << " Nuc sampler np mult too high: mul = " << mul << G4endl;
     242  } else if (l == 3 || l == 10) {
     243    // |T,Tz> = |3/2,3/2>
     244    mul = piSampler.GetMultiplicityT33(ekin) - 2;
     245  } else if (l == 5 || l == 6) {
     246    // |T,Tz> = |3/2,1/2>
     247    mul = piSampler.GetMultiplicityT31(ekin) - 2;
     248  } else if (l == 7 || l == 14) {
     249    // |T,Tz> = |1/2,1/2>
     250    mul = piSampler.GetMultiplicityT11(ekin) - 2;
     251  } else {
     252    G4cout << " G4ElementaryParticleCollider: "
     253           << " Unknown interaction channel - multiplicity not generated "
     254           << G4endl;
     255  }
    393256
    394257  if(verboseLevel > 3){
    395     G4cout << " multiplicity " << mul + 2 << G4endl;
     258    G4cout << " G4ElementaryParticleCollider::generateMultiplicity: " 
     259           << " multiplicity = " << mul + 2 << G4endl;
    396260  }
    397261
     
    399263}
    400264
    401 
     265 
    402266std::vector<G4InuclElementaryParticle>
    403267G4ElementaryParticleCollider::generateSCMfinalState(G4double ekin,
     
    430294  G4bool generate = true;
    431295   
    432   while (generate) {     
     296  while (generate) {
    433297
    434298    if(multiplicity == 0) {
     
    440304
    441305    if(multiplicity == 2) { // 2 -> 2
    442       G4int kw;
    443       kw = 1;
     306      G4int kw = 1;
    444307      if ( (is > 10 && is < 14) || (is > 14 && is < 63) ) {
    445308        particle_kinds =
     
    448311        G4int finaltype = particle_kinds[0]*particle_kinds[1];
    449312        if (finaltype != is) kw = 2;  // Charge or strangeness exchange
     313
     314      } else if (is == 1 || is == 2 || is == 4) {
     315          particle_kinds.push_back(type1);
     316          particle_kinds.push_back(type2);
     317
     318      } else if (is == 3) {
     319        particle_kinds = piSampler.GetFSPartTypesForPipP(2, ekin);
     320        if (particle_kinds[0] != G4PionSampler::pro) kw = 2;
     321
     322      } else if (is == 10) {
     323        particle_kinds = piSampler.GetFSPartTypesForPimN(2, ekin);
     324        if (particle_kinds[0] != G4PionSampler::neu) kw = 2;
     325
     326      } else if (is == 5) {
     327        particle_kinds = piSampler.GetFSPartTypesForPimP(2, ekin);
     328        if (particle_kinds[0] != G4PionSampler::pro) kw = 2;
     329
     330      } else if (is == 6) {
     331        particle_kinds = piSampler.GetFSPartTypesForPipN(2, ekin);
     332        if (particle_kinds[0] != G4PionSampler::neu) kw = 2;
     333
     334      } else if (is == 7) {
     335        particle_kinds = piSampler.GetFSPartTypesForPizP(2, ekin);
     336        if (particle_kinds[0] != G4PionSampler::pro) kw = 2;
     337
     338      } else if (is == 14) {
     339        particle_kinds = piSampler.GetFSPartTypesForPizN(2, ekin);
     340        if (particle_kinds[0] != G4PionSampler::neu) kw = 2;
     341
    450342      } else {
    451 
    452         if(reChargering(ekin, is)) { // rechargering
    453           kw = 2;
    454 
    455           switch (is) {
    456 
    457           case 6: // pi+ N -> pi0 P
    458             particle_kinds.push_back(7);
    459             particle_kinds.push_back(1);
    460             break;   
    461 
    462           case 5: // pi- P -> pi0 N
    463             particle_kinds.push_back(7);
    464             particle_kinds.push_back(2);
    465             break;   
    466 
    467           case 7: // pi0 P -> pi+ N
    468             particle_kinds.push_back(3);
    469             particle_kinds.push_back(2);
    470             break;   
    471 
    472           case 14: // pi0 N -> pi- P
    473             particle_kinds.push_back(5);
    474             particle_kinds.push_back(1);
    475             break;   
    476 
    477           default:
    478             G4cout << " strange recharge: " << is << G4endl;
    479             particle_kinds.push_back(type1);
    480             particle_kinds.push_back(type2);
    481             kw = 1;
    482           };
    483 
    484         } else { // just elastic
    485 
    486           kw = 1;
    487           particle_kinds.push_back(type1);
    488           particle_kinds.push_back(type2);       
    489         };
     343        G4cout << " Unexpected interaction type (2->2) is = " << is << G4endl;
    490344      }
    491345
     
    511365      };
    512366
     367      //      G4cout << " Particle kinds = " << particle_kinds[0] << " , " << particle_kinds[1] << G4endl;
     368
    513369      if (verboseLevel > 3){
    514370        G4cout << " before rotation px " << mom[1] << " py " << mom[2] <<
     
    535391      if ( (is > 10 && is < 14) || (is > 14 && is < 63) ) {
    536392        particle_kinds =
    537           generateStrangeChannelPartTypes(is, multiplicity, ekin);
     393          generateStrangeChannelPartTypes(is, multiplicity, ekin);
     394
     395      } else if (is == 1) {
     396        particle_kinds = nucSampler.GetFSPartTypesForPP(multiplicity, ekin);
     397
     398      } else if (is == 2) {
     399        particle_kinds = nucSampler.GetFSPartTypesForNP(multiplicity, ekin);
     400
     401      } else if (is == 4) {
     402        particle_kinds = nucSampler.GetFSPartTypesForNN(multiplicity, ekin);
     403
     404      } else if (is == 3) {
     405        particle_kinds = piSampler.GetFSPartTypesForPipP(multiplicity, ekin);
     406
     407      } else if (is == 10) {
     408        particle_kinds = piSampler.GetFSPartTypesForPimN(multiplicity, ekin);
     409
     410      } else if (is == 5) {
     411        particle_kinds = piSampler.GetFSPartTypesForPimP(multiplicity, ekin);
     412
     413      } else if (is == 6) {
     414        particle_kinds = piSampler.GetFSPartTypesForPipN(multiplicity, ekin);
     415
     416      } else if (is == 7) {
     417        particle_kinds = piSampler.GetFSPartTypesForPizP(multiplicity, ekin);
     418
     419      } else if (is == 14) {
     420        particle_kinds = piSampler.GetFSPartTypesForPizN(multiplicity, ekin);
     421
    538422      } else {
    539         particle_kinds = generateOutgoingKindsFor2toMany(is, multiplicity, ekin);
     423        G4cout << " Unexpected interaction type is = " << is << G4endl;
    540424      }
     425
     426      //      G4cout << " Particle kinds = " ;
     427      //      for (G4int i = 0; i < multiplicity; i++) G4cout << particle_kinds[i] << " , " ;
     428      //       G4cout << G4endl;
    541429
    542430      G4int itry = 0;
     
    835723  return good;
    836724}
    837 
    838    
    839 G4int
    840 G4ElementaryParticleCollider::getIL(G4int is, G4int mult) const
    841 {
    842   if (verboseLevel > 3) {
    843     G4cout << " >>> G4ElementaryParticleCollider::getIL"
    844            << G4endl;
    845   }
    846 
    847   const G4int ifdef[4][7] = {
    848     {2, 3, 2, 2, 3, 3, 2},
    849     {4, 4, 3, 4, 4, 4, 3},
    850     {5, 6, 4, 5, 5, 5, 4},
    851     {7, 7, 5, 7, 6, 6, 5}
    852   };
    853 
    854   G4int l = is;
    855 
    856   if(l == 14) {
    857     l = 5;
    858 
    859   } else if(l == 7) {
    860     l = 6;
    861 
    862   } else if(l == 10) {
    863 
    864     l = 7;
    865   };
    866 
    867   return ifdef[mult - 3][l - 1];
    868 }
    869 
    870 
    871 std::vector<G4int>
    872 G4ElementaryParticleCollider::generateOutgoingKindsFor2toMany(
    873                                 G4int is,
    874                                 G4int mult,
    875                                 G4double ekin) const
    876 {
    877   if (verboseLevel > 3) {
    878     G4cout << " >>> G4ElementaryParticleCollider::generateOutgoingKindsFor2toMany"
    879            << G4endl;
    880   }
    881 
    882   const G4double bsig[4][20][20] = {
    883     {{1.20,3.70,3.98,3.85,3.51,2.90,2.86,2.81,2.77,2.80,
    884       2.54,2.00,1.90,1.75,1.68,1.61,1.54,1.40,1.25,1.17},
    885      {8.00,14.0,13.0,12.0,11.4,9.70,9.41,8.52,8.03,6.70,
    886       5.73,5.20,4.80,4.54,4.36,4.28,4.16,4.10,3.80,3.00},
    887      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    888       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    889      {0.  ,0.37,0.41,0.92,1.10,0.98,0.85,0.74,0.74,0.83,
    890       0.71,0.68,0.53,0.48,0.41,0.41,0.41,0.37,0.37,0.37},
    891      {0.  ,0.30,1.22,2.51,2.67,2.95,2.95,2.95,2.96,2.84,
    892       2.80,2.70,3.00,2.80,2.46,2.46,2.45,2.40,2.40,2.20},
    893      {0.  ,1.40,2.37,4.07,3.90,3.80,3.70,3.70,3.60,3.40,
    894       3.20,3.50,3.17,3.00,2.80,2.70,2.60,2.60,2.40,2.20},
    895      {0.  ,0.20,0.28,0.31,0.36,0.38,0.40,0.42,0.43,0.44,
    896       0.46,0.48,0.50,0.80,0.71,0.80,0.96,1.20,1.00,0.91},
    897      {0.  ,0.  ,0.14,0.14,0.14,0.14,0.12,0.11,0.11,0.11,
    898       0.14,0.17,0.16,0.16,0.16,0.15,0.15,0.15,0.15,0.14},
    899      {0.  ,0.  ,0.02,0.21,0.74,1.10,1.50,1.76,1.98,2.40,
    900       2.50,2.60,2.60,2.50,2.50,2.40,2.40,2.30,2.10,2.00},
    901      {0.  ,0.  ,0.10,0.40,1.15,1.60,1.80,2.19,2.80,2.30,
    902       2.90,2.60,2.60,2.60,2.50,2.50,2.50,2.40,2.20,1.85},
    903      {0.  ,0.  ,0.80,1.90,1.50,1.80,1.70,1.60,1.80,1.90,
    904       1.80,1.60,1.50,1.43,1.41,1.30,1.28,1.30,1.60,1.70},
    905      {0.  ,0.  ,0.14,0.16,0.17,0.17,0.21,0.21,0.22,0.23,
    906       0.24,0.25,0.41,0.36,0.40,0.46,0.52,0.50,0.50,0.46},
    907      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    908       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    909      {0.  ,0.  ,0.  ,0.  ,0.04,0.06,0.05,0.04,0.04,0.04,
    910       0.04,0.05,0.05,0.05,0.04,0.04,0.04,0.03,0.03,0.03},
    911      {0.  ,0.  ,0.  ,.005,0.02,0.07,0.11,0.15,0.17,0.19,
    912       0.24,0.25,0.26,0.26,0.25,0.25,0.24,0.24,0.23,0.21},
    913      {0.  ,0.  ,0.  ,0.  ,0.05,0.09,0.18,0.20,0.22,0.28,
    914       0.36,0.41,0.42,0.43,0.44,0.45,0.46,0.46,0.47,0.47},
    915      {0.  ,0.  ,0.  ,0.  ,0.09,0.16,0.18,0.22,0.28,0.23,
    916       0.29,0.26,0.26,0.26,0.25,0.25,0.25,0.24,0.22,0.18},
    917      {0.  ,0.  ,0.  ,0.  ,0.15,0.18,0.17,0.16,0.18,0.19,
    918       0.18,0.16,0.15,0.14,0.14,0.13,0.12,0.13,0.16,0.17},
    919      {0.  ,0.  ,0.  ,0.  ,0.02,0.02,0.02,0.02,0.04,0.05,
    920       0.05,0.06,0.07,0.10,0.11,0.10,0.09,0.09,0.09,0.09},
    921      {0.  ,0.  ,0.  ,0.  ,0.17,0.16,0.15,0.16,0.17,0.18,
    922       0.20,0.21,0.22,0.23,0.24,0.21,0.18,0.19,0.20,0.21}},
    923 
    924     {{12.0,14.0,13.1,12.0,11.0,10.0,8.70,6.30,5.20,7.80,
    925       6.40,6.20,6.20,6.80,5.40,4.80,4.80,2.60,2.50,1.90},
    926      {1.90,2.50,2.60,1.80,1.70,1.68,1.61,1.50,1.46,1.40,
    927       1.31,1.17,1.14,1.10,1.09,1.03,1.00,0.99,0.97,0.96},
    928      {5.60,4.30,4.20,4.80,5.00,2.70,3.20,2.60,3.40,2.80,
    929       1.16,1.14,1.15,1.30,1.80,1.60,1.20,1.10,1.10,1.20},
    930      {0.12,1.40,1.30,1.20,2.40,2.00,1.60,3.80,3.40,3.20,
    931       3.50,3.80,3.70,3.30,3.30,3.40,3.50,3.16,3.80,4.10},
    932      {0.  ,0.77,1.75,5.28,6.30,5.90,5.30,4.90,4.80,4.70,
    933       4.20,3.72,3.60,3.40,3.20,3.50,3.90,4.10,4.30,4.50},
    934      {0.  ,0.16,0.35,0.91,2.80,3.60,3.20,2.60,1.90,1.14,
    935       1.15,1.16,1.14,1.11,1.08,0.99,0.94,0.91,0.86,0.83},
    936      {0.56,0.43,0.42,0.96,1.20,0.80,0.64,0.71,0.84,1.20,
    937       1.80,3.50,3.40,3.20,2.80,2.60,2.70,2.40,2.80,3.10},
    938      {0.01,0.02,0.01,0.01,0.02,0.10,0.16,0.38,0.34,0.32,
    939       0.35,0.38,0.37,0.33,0.35,0.36,0.31,0.42,0.41,0.39},
    940      {0.  ,0.07,0.17,0.53,0.63,0.59,0.53,0.49,0.48,0.47,
    941       0.42,0.37,0.36,0.34,0.32,0.35,0.39,0.41,0.43,0.45},
    942      {0.09,0.18,0.21,0.28,0.36,0.37,0.20,0.64,0.68,0.56,
    943       0.61,0.48,0.34,0.36,0.36,0.32,0.41,0.39,0.39,0.36},
    944      {0.,0.02,0.04,0.18,0.28,0.36,0.32,0.26,0.19,0.12,
    945       0.12,0.13,0.14,0.15,0.12,0.11,0.10,0.09,0.07,0.04},
    946      {0.10,0.12,0.11,0.10,0.12,0.16,0.14,0.13,0.14,0.12,
    947       0.15,0.18,0.21,0.21,0.14,0.13,0.12,0.11,0.09,0.08},
    948      {0.02,0.11,0.10,0.09,0.11,0.17,0.16,0.14,0.12,0.11,
    949       0.13,0.12,0.11,0.11,0.10,0.09,0.08,0.06,0.04,0.03},
    950      {0.  ,0.  ,0.04,0.07,0.08,0.11,0.12,0.16,0.15,0.15,
    951       0.14,0.13,0.12,0.18,0.17,0.16,0.15,0.09,0.09,0.03},
    952      {0.  ,0.  ,0.09,0.10,0.11,0.12,0.28,0.49,0.58,0.53,
    953       0.48,0.46,0.46,0.44,0.43,0.43,0.42,0.39,0.39,0.31},
    954      {0.  ,0.  ,0.01,0.05,0.06,0.09,0.11,0.12,0.12,0.14,
    955       0.15,0.16,0.15,0.14,0.14,0.13,0.18,0.16,0.14,0.13},
    956      {0.  ,0.  ,0.  ,0.02,0.04,0.09,0.20,0.39,0.41,0.42,
    957       0.42,0.44,0.45,0.43,0.41,0.43,0.42,0.39,0.39,0.30},
    958      {0.  ,0.  ,0.  ,0.  ,0.01,0.02,0.08,0.04,0.08,0.09,
    959       0.10,0.11,0.12,0.11,0.09,0.09,0.06,0.06,0.06,0.06},
    960      {0.  ,0.  ,0.  ,0.  ,0.  ,0.01,0.02,0.08,0.09,0.09,
    961       0.09,0.09,0.10,0.11,0.11,0.08,0.07,0.07,0.07,0.06},
    962      {0.  ,0.  ,0.  ,0.  ,0.  ,0.02,0.04,0.12,0.11,0.10,
    963       0.09,0.08,0.08,0.08,0.07,0.07,0.07,0.06,0.05,0.04}},
    964 
    965     {{1.80,9.19,7.40,5.29,3.64,3.48,2.47,2.21,1.30,0.95,
    966       0.82,0.79,0.76,0.75,0.74,0.74,0.72,0.70,0.65,0.61},
    967      {0.46,2.60,3.70,2.27,2.40,2.00,1.68,1.00,0.82,0.71,
    968       0.72,0.74,0.71,0.68,0.65,0.61,0.57,0.53,0.48,0.45},
    969      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    970       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    971      {0.02,0.15,1.55,2.31,1.98,1.52,1.30,1.10,0.68,0.51,
    972       0.42,0.39,0.35,0.34,0.33,0.32,0.31,0.30,0.30,0.29},
    973      {0.01,0.95,1.09,1.63,1.50,1.40,1.38,1.20,1.00,0.81,
    974       0.63,0.52,0.38,0.34,0.32,0.31,0.24,0.23,0.22,0.21},
    975      {0.02,1.09,3.38,3.42,3.49,2.91,3.85,2.79,2.56,1.92,
    976       2.26,2.20,2.18,2.10,2.07,2.05,1.93,1.74,1.50,1.27},
    977      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    978       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    979      {0.08,0.21,0.38,0.68,0.44,0.32,0.29,0.18,0.11,0.09,
    980       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    981      {0.  ,0.10,0.98,2.41,3.29,3.38,4.29,3.70,3.51,2.90,
    982       1.94,2.00,2.08,2.16,2.15,2.14,2.12,1.95,1.48,1.39},
    983      {0.  ,0.02,0.07,0.28,0.39,0.59,0.76,0.97,0.91,0.85,
    984       0.82,0.80,0.78,0.76,0.74,0.74,0.63,0.59,0.52,0.4},
    985      {0.05,0.26,0.37,0.23,0.24,0.20,0.17,0.10,0.08,0.07,
    986       0.07,0.09,0.20,0.14,0.12,0.11,0.06,0.05,0.05,0.05},
    987      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    988       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    989      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    990       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    991      {0.  ,0.  ,0.  ,0.06,0.04,0.03,0.02,0.02,0.11,0.09,
    992       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    993      {0.  ,0.  ,0.  ,0.04,0.10,0.16,0.22,0.24,0.35,0.41,
    994       0.41,0.40,0.42,0.42,0.43,0.43,0.44,0.44,0.43,0.39},
    995      {0.  ,0.  ,0.  ,0.07,0.31,0.48,0.64,0.66,0.83,0.98,
    996       0.74,0.38,0.40,0.41,0.41,0.42,0.43,0.41,0.26,0.24},
    997      {0.  ,0.02,0.07,0.06,0.21,0.34,0.56,0.48,0.59,0.64,
    998       0.68,0.71,0.54,0.46,0.38,0.38,0.41,0.36,0.32,0.33},
    999      {0.  ,0.  ,0.  ,0.10,0.26,0.38,0.67,0.41,0.51,0.48,
    1000       0.36,0.21,0.24,0.22,0.21,0.21,0.18,0.17,0.17,0.16},
    1001      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    1002       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    1003      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    1004       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  }},
    1005 
    1006     {{2.05,5.30,4.72,3.70,2.60,2.70,2.20,1.88,1.90,1.43,
    1007       1.10,0.74,0.81,0.80,0.62,0.48,0.47,0.47,0.47,0.66},
    1008      {2.12,1.86,0.81,0.68,0.91,0.71,0.96,1.78,1.69,1.70,
    1009       1.30,0.94,1.03,1.04,0.84,0.84,0.67,0.67,0.66,0.65},
    1010      {4.93,10.40,6.67,5.40,4.00,3.50,3.70,2.80,2.60,2.00,
    1011       1.50,1.14,1.26,1.28,1.06,0.90,0.88,0.87,0.85,0.83},
    1012      {0.05,0.18,0.43,0.67,0.92,1.16,1.78,1.71,1.52,1.34,
    1013       1.04,0.97,0.92,1.02,0.89,0.82,0.77,0.73,0.70,0.66},
    1014      {0.08,0.32,0.70,1.60,1.65,1.88,1.68,1.92,1.79,1.64,
    1015       1.49,1.37,1.30,1.70,1.40,1.26,1.19,1.13,1.08,1.02},
    1016      {0.30,0.94,0.70,0.70,0.70,0.70,0.31,0.29,0.27,0.25,
    1017       0.23,0.21,0.18,0.15,0.13,0.11,0.09,0.07,0.05,0.03},
    1018      {0.33,1.19,1.89,3.56,4.20,3.78,3.35,2.93,2.51,2.12,
    1019       1.40,1.34,1.28,1.22,1.16,1.10,1.03,1.00,0.97,0.94},
    1020      {0.20,0.22,0.23,1.16,1.53,1.86,1.91,2.18,2.02,1.83,
    1021       1.65,1.52,1.72,1.55,1.39,1.23,1.11,1.02,1.36,1.69},
    1022      {0.30,0.40,0.70,2.20,2.10,1.80,1.90,2.10,2.20,2.00,
    1023       1.80,1.70,1.40,1.30,1.35,1.30,1.28,1.10,1.17,1.24},
    1024      {0.09,0.12,0.30,0.37,0.67,0.89,0.98,1.08,1.16,1.16,
    1025       1.16,1.17,1.17,1.21,0.79,0.55,0.66,0.79,0.89,1.00},
    1026      {0.  ,0.  ,0.09,0.11,0.05,0.  ,0.  ,0.  ,0.  ,0.  ,
    1027       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    1028      {0.  ,0.  ,0.15,0.26,0.43,0.35,0.28,0.14,0.10,0.08,
    1029       0.04,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    1030      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    1031       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  },
    1032      {0.  ,0.  ,0.10,0.28,0.44,0.85,1.15,1.87,2.22,1.80,
    1033       2.94,1.98,1.72,1.50,1.16,1.05,0.94,0.95,1.06,1.17},
    1034      {0.  ,0.02,0.04,0.12,0.60,1.60,1.30,1.50,2.10,2.40,
    1035       2.65,2.40,2.09,1.94,1.83,1.17,1.06,0.94,0.93,0.98},
    1036      {0.  ,.003,.041,0.13,0.40,0.09,0.10,0.38,0.96,1.07,
    1037       2.13,2.14,2.07,2.00,1.95,1.83,1.17,0.86,0.98,0.90},
    1038      {0.  ,.001,0.09,0.19,0.52,0.64,0.78,0.85,0.99,1.17,
    1039       1.86,1.93,2.14,1.98,1.83,1.76,1.52,1.43,1.35,1.24},
    1040      {0.10,0.10,0.03,0.16,0.35,0.37,0.52,0.64,0.82,0.95,
    1041       1.09,1.16,1.73,1.80,1.12,1.03,0.95,0.93,0.90,0.84},
    1042      {0.  ,.015,.008,0.11,0.20,0.21,0.34,0.58,0.46,0.38,
    1043       0.65,1.17,1.58,1.61,1.73,1.82,1.74,1.63,1.23,1.00},
    1044      {0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,
    1045       0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.  ,0.}}
    1046   };
    1047 
    1048   const G4int ifkn[7][7][18] = {
    1049     {{1,1,7,1,1,7,7,1,1,7,7,7,1,1,7,7,7,7},
    1050      {3,2,1,1,1,3,5,1,1,7,3,5,1,1,7,7,3,5},
    1051      {0,0,0,1,2,7,3,1,2,3,3,5,1,1,3,5,3,5},
    1052      {0,0,0,2,2,3,3,1,2,7,7,3,1,2,3,5,3,7},
    1053      {0,0,0,0,0,0,0,2,2,7,3,3,1,2,7,7,7,3},
    1054      {0,0,0,0,0,0,0,0,0,0,0,0,2,2,3,3,7,7},
    1055      {0,3,2,1,5,1,7,2,7,0,0,0,2,2,3,3,5,3}},
    1056 
    1057     {{1,2,7,1,2,7,7,1,2,7,7,7,1,2,7,7,7,7},
    1058      {1,1,5,1,2,3,5,1,2,3,5,7,1,2,3,5,3,5},
    1059      {2,2,3,1,1,5,7,1,1,5,3,5,1,2,3,5,7,7},
    1060      {0,0,0,2,2,3,7,1,1,5,7,7,1,1,3,5,5,7},
    1061      {0,0,0,0,0,0,0,2,2,3,7,7,1,1,7,7,7,5},
    1062      {0,0,0,0,0,0,0,2,2,3,5,3,2,2,7,7,7,3},
    1063      {0,1,7,2,7,2,3,1,5,0,0,0,2,2,3,5,7,3}},
    1064 
    1065     {{3,1,7,3,1,7,7,3,1,7,7,7,3,1,7,7,7,7},
    1066      {3,3,2,3,3,2,7,3,3,5,1,7,3,5,3,5,3,1},
    1067      {0,0,0,3,5,1,3,3,5,3,3,2,3,5,7,7,3,1},
    1068      {0,0,0,0,0,0,0,3,3,2,7,7,3,5,3,3,7,2},
    1069      {0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,7,7,7},
    1070      {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    1071      {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
    1072 
    1073     {{2,2,7,2,2,7,7,2,2,7,7,7,2,2,7,7,7,7},
    1074      {5,2,1,2,2,3,5,2,2,3,5,7,2,2,3,5,7,7},
    1075      {0,0,0,2,1,7,5,2,1,5,5,3,2,2,3,5,3,5},
    1076      {0,0,0,1,1,5,5,1,2,7,7,5,1,2,3,5,5,7},
    1077      {0,0,0,0,0,0,0,1,1,7,5,5,1,2,7,7,7,5},
    1078      {0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,5,7,7},
    1079      {0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,5,3,5}},
    1080 
    1081     {{5,1,7,5,1,7,7,5,1,7,7,7,5,1,3,5,3,5},
    1082      {7,7,2,5,1,3,5,5,1,5,3,7,5,1,7,7,7,7},
    1083      {3,5,2,7,7,7,2,7,7,7,7,2,5,1,5,3,7,7},
    1084      {0,0,0,3,5,2,7,3,5,2,7,7,2,7,7,7,7,7},
    1085      {0,0,0,0,0,0,0,3,5,3,5,2,3,5,2,7,7,7},
    1086      {0,0,0,0,0,0,0,0,0,0,0,0,3,5,3,5,2,7},
    1087      {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
    1088 
    1089     {{2,3,7,3,2,7,7,3,2,7,7,7,3,2,3,5,3,5},
    1090      {7,7,1,3,2,3,5,3,2,3,5,7,3,2,7,7,7,7},
    1091      {3,5,1,7,7,7,1,1,7,7,7,7,3,2,3,5,7,7},
    1092      {0,0,0,3,5,1,7,3,5,1,7,7,1,7,7,7,7,7},
    1093      {0,0,0,0,0,0,0,1,3,5,3,5,3,5,1,7,7,7},
    1094      {0,0,0,0,0,0,0,0,0,0,0,0,3,5,3,5,1,7},
    1095      {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
    1096 
    1097     {{5,2,7,5,2,7,7,5,2,7,7,7,7,7,7,7,5,2},
    1098      {5,5,1,5,1,7,5,3,5,7,5,2,3,5,3,5,5,2},
    1099      {0,0,0,5,3,2,5,3,5,5,5,1,3,5,7,7,5,2},
    1100      {0,0,0,0,0,0,0,5,5,1,7,7,3,5,5,5,1,7},
    1101      {0,0,0,0,0,0,0,0,0,0,0,0,5,5,1,7,7,7},
    1102      {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    1103      {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
    1104   };
    1105 
    1106   std::vector<G4int> kinds;
    1107 
    1108   G4int l = is;
    1109 
    1110   if(l == 10) {
    1111     l = 3;
    1112  
    1113   } else if(l == 4) {
    1114 
    1115     l = 1;
    1116 
    1117   } else if(l == 6 || l == 5) {
    1118 
    1119     l = 4;
    1120   };
    1121 
    1122   G4int il = getIL(is, mult);
    1123   std::pair<G4int, G4double> iksk = getPositionInEnergyScale1(ekin);
    1124   G4int ik = iksk.first;
    1125   G4double sk = iksk.second;
    1126   G4int n;     
    1127 
    1128   switch(mult) {
    1129 
    1130   case 3:
    1131     n = 0;
    1132     break;
    1133 
    1134   case 4:
    1135     n = 3;
    1136     break;
    1137 
    1138   case 5:
    1139     n = 7;
    1140     break;
    1141 
    1142   case 6:
    1143     n = 13;
    1144     break;
    1145 
    1146   default:
    1147     G4cout << " generateOutgoingKindsFor2toMany: mult " << mult << G4endl;
    1148     n = 13;
    1149   };     
    1150 
    1151   std::vector<G4double> sig;
    1152   G4double stot = 0.0;
    1153 
    1154   if(l == 7 || l == 14) {
    1155 
    1156     for(G4int j = 0; j < il; j++) {
    1157       sig.push_back(0.5 * (bsig[2][n + j][ik - 1] + bsig[3][n + j][ik - 1] +
    1158                            sk * (bsig[2][n + j][ik] - bsig[2][n + j][ik - 1] +
    1159                                  bsig[3][n + j][ik] - bsig[3][n + j][ik - 1])));
    1160       stot += sig[j];
    1161     };
    1162 
    1163   } else {
    1164 
    1165     for(G4int j = 0; j < il; j++) {
    1166       sig.push_back(bsig[l - 1][n + j][ik - 1] +
    1167                     sk*(bsig[l - 1][n + j][ik] - bsig[l - 1][n + j][ik - 1]));
    1168       stot += sig[j];
    1169     };
    1170 
    1171   };
    1172 
    1173   G4double sl = inuclRndm();
    1174 
    1175   sl *= stot;
    1176 
    1177   G4double ptot = 0.0;
    1178   G4int ml = 0;
    1179 
    1180   G4int i(0);
    1181   for(i = 0; i < il; i++) {
    1182     ptot += sig[i];
    1183     if(sl <= ptot) {
    1184       ml = i;
    1185       break;
    1186     }
    1187   }
    1188 
    1189   l = is;
    1190   if (l == 14) {
    1191     l = 5;
    1192   } else if (l == 7) {
    1193     l = 6;
    1194   } else if (is == 10) {
    1195     l = 7;
    1196   }
    1197 
    1198   G4int ks;     
    1199 
    1200   switch(mult) {
    1201 
    1202   case 3:
    1203     ks = 0;
    1204     break;
    1205 
    1206   case 4:
    1207     ks = 3;
    1208     break;
    1209 
    1210   case 5:
    1211     ks = 7;
    1212     break;
    1213 
    1214   case 6:
    1215     ks = 12;
    1216     break;
    1217 
    1218   default:
    1219     G4cout << " generateOutgoingKindsFor2toMany: mult "
    1220            << mult << G4endl;
    1221     ks = 12;
    1222   }
    1223 
    1224   for(i = 0; i < mult; i++) 
    1225     kinds.push_back(ifkn[l - 1][ml][i + ks]);
    1226 
    1227   return kinds;
    1228 }       
    1229725
    1230726
     
    1288784
    1289785G4double
    1290 G4ElementaryParticleCollider::getMomModuleFor2toMany(G4int is,
    1291                                                      G4int mult,
     786G4ElementaryParticleCollider::getMomModuleFor2toMany(G4int is, G4int mult,
    1292787                                                     G4int knd,
    1293788                                                     G4double ekin) const
     
    1297792           << G4endl;
    1298793  }
    1299 
    1300   const G4double rmn[14][10][2] = {
    1301     {{0.5028,   0.6305}, {3.1442, -3.7333}, {-7.8172,  13.464}, {8.1667, -18.594},
    1302      {1.6208,   1.9439}, {-4.3139, -4.6268}, {12.291,  9.7879}, {-15.288, -9.6074},
    1303      {   0.0,     0.0}, {   0.0,      0.0}},     
    1304 
    1305     {{0.9348,   2.1801}, {-10.59,  1.5163}, { 29.227,  -16.38}, {-34.55,  27.944},
    1306      {-0.2009, -0.3464}, {1.3641,   1.1093}, {-3.403, -1.9313}, { 3.8559,  1.7064},
    1307      {   0.0,     0.0}, {    0.0,     0.0}},   
    1308 
    1309     {{-0.0967, -1.2886}, {4.7335,  -2.457}, {-14.298,  15.129}, {17.685, -23.295},
    1310      { 0.0126,  0.0271}, {-0.0835, -0.1164}, { 0.186,  0.2697}, {-0.2004, -0.3185},
    1311      {   0.0,     0.0}, {    0.0,     0.0}},   
    1312 
    1313     {{-0.025,   0.2091}, {-0.6248, 0.5228}, { 2.0282, -2.8687}, {-2.5895, 4.2688},
    1314      {-0.0002, -0.0007}, {0.0014,   0.0051}, {-0.0024, -0.015}, { 0.0022,  0.0196},
    1315      {    0.0,    0.0}, {    0.0,     0.0}},     
    1316 
    1317     {{1.1965,   0.9336}, {-0.8289,-1.8181}, { 1.0426,  5.5157}, { -1.909,-8.5216},
    1318      { 1.2419,  1.8693}, {-4.3633, -5.5678}, { 13.743, 14.795}, {-18.592, -16.903},
    1319      {    0.0,    0.0}, {    0.0,     0.0}},     
    1320 
    1321     {{0.287,    1.7811}, {-4.9065,-8.2927}, { 16.264,  20.607}, {-19.904,-20.827},
    1322      {-0.244,  -0.4996}, {1.3158,   1.7874}, {-3.5691, -4.133}, { 4.3867,  3.8393},
    1323      {    0.0,    0.0}, {   0.0,      0.0}},
    1324    
    1325     {{-0.2449, -1.5264}, { 2.9191, 6.8433}, {-9.5776, -16.067}, { 11.938, 16.845},
    1326      {0.0157,   0.0462}, {-0.0826, -0.1854}, { 0.2143, 0.4531}, {-0.2585, -0.4627},
    1327      {    0.0,    0.0}, {   0.0,      0.0}},
    1328 
    1329     {{0.0373,   0.2713}, {-0.422, -1.1944}, { 1.3883,  2.7495}, {-1.7476,-2.9045},
    1330      {-0.0003, -0.0013}, {0.0014,   0.0058}, {-0.0034,-0.0146}, { 0.0039,  0.0156},
    1331      {    0.0,    0.0}, {    0.0,     0.0}},     
    1332 
    1333     {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
    1334      {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
    1335      { 0.1451,  0.0929},{ 0.1538,  0.1303}}, 
    1336 
    1337     {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
    1338      {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
    1339      { 0.4652,  0.5389},{ 0.2744,  0.4071}}, 
    1340 
    1341     {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},{    0.0,     0.0},
    1342      {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, { -0.033, -0.0545},{-0.0146, -0.0288}}, 
    1343 
    1344     {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},{    0.0,     0.0},     
    1345      {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, { 0.6296,  0.1491},{ 0.8381,  0.1802}}, 
    1346 
    1347     {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},{    0.0,     0.0},     
    1348      {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, { 0.1787,   0.385},{ 0.0086,  0.3302}}, 
    1349 
    1350     {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},{    0.0,     0.0},     
    1351      {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {-0.0026, -0.0128},{ 0.0033, -0.0094}}
    1352   };
    1353794
    1354795  G4double S = inuclRndm();
     
    1363804
    1364805  if(is == 1 || is == 2 || is == 4) KM = 1;
    1365 
    1366806  if(mult == 3) { IM = 0; IL = 0; };
    1367 
    1368807  if(knd == 1 || knd == 2) JK = 0;
    1369808
    1370809  for(G4int i = 0; i < 4; i++) {
    1371810    G4double V = 0.0;
    1372 
    1373811    for(G4int k = 0; k < 4; k++) V += rmn[k + JK][i + IL][KM - 1] * std::pow(ekin, k);
    1374 
    1375812    PR += V * std::pow(S, i);
    1376813    PQ += V;
    1377   }
     814  }
    1378815
    1379816  if(knd == 1 || knd == 2) JM = 1;
    1380 
    1381817  for(G4int m = 0; m < 3; m++) PS += rmn[8 + IM + m][7 + JM][KM - 1] * std::pow(ekin, m);
    1382 
    1383818  G4double PRA = PS * std::sqrt(S) * (PR + (1 - PQ) * std::pow(S, 4));
    1384819
     
    1399834  }
    1400835
    1401   const G4double abn[4][4][4] = {
    1402     {{0.0856,  0.0716,  0.1729,  0.0376},  {5.0390,  3.0960,  7.1080,  1.4331},
    1403      {-13.782, -11.125, -17.961, -3.1350},  {14.661,  18.130,  16.403,  6.4864}},
    1404     {{0.0543,  0.0926, -0.1450,  0.2383}, {-9.2324, -3.2186, -13.032,  1.8253},
    1405      {36.397,  20.273,  41.781,  1.7648}, {-42.962, -33.245, -40.799, -16.735}},
    1406     {{-0.0511, -0.0515,  0.0454, -0.1541}, {4.6003,  0.8989,  8.3515, -1.5201},
    1407      {-20.534, -7.5084, -30.260, -1.5692},  {27.731,  13.188,  32.882,  17.185}},
    1408     {{0.0075,  0.0058, -0.0048,  0.0250}, {-0.6253, -0.0017, -1.4095,  0.3059},
    1409      {2.9159,  0.7022,  5.3505,  0.3252}, {-4.1101, -1.4854, -6.0946, -3.5277}}
    1410   };
    1411 
    1412836  const G4int itry_max = 100;
    1413837  G4double ct = 2.0;
     
    1461885}
    1462886
    1463    
    1464 G4bool
    1465 G4ElementaryParticleCollider::reChargering(G4double ekin,
    1466                                            G4int is) const
    1467 
    1468   if (verboseLevel > 3) {
    1469     G4cout << " >>> G4ElementaryParticleCollider::reChargering"
    1470            << G4endl;
    1471   }
    1472 
    1473   const G4double ali[31] = {
    1474     3.9, 6.6, 13.2, 42.6, 36.6, 26.2, 17.9, 13.5, 11.3, 10.7,
    1475     9.5, 6.4,  1.9, 0.8,  0.56, 0.26, 0.19, 0.19, 0.18, 0.1,
    1476     0.0, 0.0,  0.0, 0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0 ,0.0
    1477   };
    1478 
    1479   const G4double asig[4][6][31] = {
    1480     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 24.3, 24.1, 24.0, 26.3,
    1481       28.6, 24.8, 19.9, 19.2, 17.4, 15.3, 13.5, 12.3, 11.9, 10.4,
    1482       11.8, 11.4, 11.0, 10.8, 10.9, 11.7, 11.4, 10.2, 11.0, 11.0, 9.0},
    1483 
    1484      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 1.45, 2.90, 4.10,
    1485       5.30, 22.0, 21.2, 19.9, 14.9, 12.6, 12.3, 11.3, 10.8, 9.50,
    1486       8.27, 7.20, 6.70, 6.25, 6.04, 5.89, 5.70, 5.60, 5.05, 4.17,4.00},
    1487  
    1488      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1489       0.  , 2.27, 4.28, 7.81, 8.03, 8.11, 7.90, 7.82, 7.61, 7.47,
    1490       7.07, 7.66, 7.05, 6.71, 6.38, 6.36, 6.37, 6.57, 6.01, 5.48, 6.80},
    1491  
    1492      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1493       0.  , 0.  , 1.20, 2.85, 3.70, 4.81, 5.33, 7.74, 6.91, 6.94,
    1494       7.57, 7.21, 7.11, 7.10, 6.93, 6.79, 6.71, 6.55, 6.55, 6.15, 8.50},
    1495 
    1496      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1497       0.  , 0.  , 0.  , .005, 0.54, 0.74, 0.86, 0.91, 1.10, 1.16,
    1498       1.36, 1.40, 1.43, 1.47, 1.47, 1.43, 1.38, 1.38, 1.63, 1.36, 2.80},
    1499  
    1500      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1501       34.0, 46.2, 46.9, 45.2, 47.1, 42.3, 41.8, 41.2, 41.6, 41.6,
    1502       41.0, 43.0, 42.4, 40.0, 39.9, 39.8, 42.0, 40.0, 39.8, 39.6, 38.7}},
    1503 
    1504     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 33.0, 31.3, 29.5, 27.8,
    1505       14.6, 16.0, 17.5, 18.3, 19.4, 18.7, 15.6, 14.8, 13.6, 12.5,
    1506       12.2, 11.9, 11.4, 11.2, 10.1, 9.62, 8.41, 7.14, 7.09, 5.04, 10.2},
    1507 
    1508      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 2.00, 4.00, 6.50,
    1509       19.5, 20.8, 19.8, 18.6, 17.7, 14.4, 13.5, 10.4, 10.1, 12.0,
    1510       8.87, 8.51, 8.49, 9.20, 8.29, 7.43, 8.20, 4.69, 4.57, 4.06, 4.10},
    1511 
    1512      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1513       0.68, 2.76, 3.85, 8.35, 12.7, 12.3, 10.8, 12.0, 10.9, 10.2,
    1514       10.6, 12.2, 11.8, 11.0, 10.4, 10.5, 11.0, 10.6, 11.8, 12.5, 13.2},
    1515 
    1516      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1517       0.22, 0.52, 0.64, 1.19, 1.52, 1.75, 1.51, 2.04, 1.85, 1.70,
    1518       1.92, 1.66, 1.74, 1.50, 1.39, 1.35, 1.41, 1.48, 1.43, 1.35, 3.20},
    1519 
    1520      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1521       0.  , 0.  , 0.14, 0.24, 0.30, 0.46, 0.85, 1.40, 1.54, 1.52,
    1522       1.47, 1.48, 1.49, 1.42, 1.39, 1.37, 1.22, 1.19, 0.93, 0.  ,2.10},
    1523 
    1524      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1525       35.0, 40.0, 42.4, 42.3, 41.0, 40.9, 40.4, 39.8, 35.0, 33.6,
    1526       41.2, 41.0, 41.1, 41.2, 41.2, 39.6, 36.0, 36.0, 36.2, 0.  ,40.2}},
    1527 
    1528     // pi- n
    1529 
    1530     {{1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 60.0, 38.0, 30.6, 24.0,
    1531       18.5, 12.8, 13.6, 9.15, 8.20, 7.80, 7.10, 6.40, 5.81, 5.85,
    1532       5.50, 5.33, 5.40, 5.50, 4.90, 5.02, 5.00, 4.98, 4.96, 4.96, 4.50},
    1533 
    1534      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.38, 0.75, 1.28,
    1535       2.26, 11.8, 11.1, 7.56, 6.04, 5.68, 4.15, 3.21, 2.12, 1.66,
    1536       1.54, 1.53, 1.47, 1.33, 1.39, 1.35, 1.29, 1.23, 1.13, 1.06, 0.70},
    1537 
    1538      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1539       0.05, 2.19, 6.02, 7.36, 6.97, 5.83, 6.53, 5.09, 4.24, 3.24,
    1540       3.31, 3.11, 2.91, 2.78, 2.72, 2.68, 2.48, 2.27, 2.02, 1.77, 4.40},
    1541 
    1542      {0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1543       0.06, 0.35, 0.55, 0.77, 0.89, 0.80, 0.86, 0.97, 0.90, 0.86,
    1544       0.84, 0.84, 0.83, 0.81, 0.79, 0.82, 0.76, 0.88, 0.89, 0.89, 3.00},
    1545 
    1546      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1547       0.  , 0.02, 0.07,0.33, 0.92, 1.39, 2.11, 1.81, 2.39, 2.60,
    1548       2.19, 1.70, 1.60,0.68, 1.43, 1.46, 1.46, 1.37, 1.16, 1.09, 2.60},
    1549 
    1550      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1551       18.9,27.2, 34.9, 29.1, 30.8, 29.6, 28.2, 27.5, 26.9, 26.3,
    1552       25.9,25.6, 25.2, 26.1, 25.5, 25.4, 25.3, 25.1, 24.9, 24.8,24.1}},
    1553 
    1554     // pi- p -> 2 body
    1555 
    1556     {{5.90,9.40, 24.5, 62.6, 65.3, 41.3, 29.3, 24.3, 22.7, 22.9,
    1557       23.2,28.4, 11.7, 10.1, 8.30, 7.16, 6.49, 6.36, 6.60, 5.84,
    1558        5.3, 5.2,  5.2,  5.1, 4.74, 4.7,   4.6, 4.5,  4.4,  4.3, 4.3},
    1559 
    1560      {0.  ,0.  , 0.  , 0.  , 0.10, 0.40, 2.70, 3.50, 5.30, 6.60,
    1561       9.10,17.6, 12.2, 9.78, 7.51, 6.91, 6.86, 6.46, 6.19, 5.13,
    1562       3.90,2.82, 3.10, 3.12, 2.52, 2.22, 2.02, 2.01, 1.98, 2.14, 1.20},
    1563 
    1564      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1565       0.76,2.63, 3.72, 6.53, 7.47, 7.94, 7.12, 6.85, 6.09, 5.35,
    1566       4.12,3.85, 3.68, 4.09, 3.58, 3.29, 3.08, 2.93, 2.80, 2.65, 3.30},
    1567 
    1568      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1569       0.59,0.74, 1.47, 4.10, 4.78, 4.90, 5.07, 5.50, 5.48, 5.03,
    1570       4.65,4.39, 4.06, 3.53, 3.08, 3.05, 2.91, 3.42, 3.93, 3.93, 4.10},
    1571 
    1572      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1573       0.01,.007, 0.03, .099, .251, .376, .419, .582, .755, .777,
    1574       1.13,1.08, 1.13, 1.08, .962, .866, .738, .674, .645, .613, 1.30},
    1575 
    1576      {0.  ,0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
    1577       31.3,46.0, 30.0, 35.7, 33.4, 31.6, 30.4, 29.6, 28.9, 28.5,
    1578       28.1,27.5, 31.0, 27.7, 27.8, 26.1, 25.2, 6.92, 6.70, 0.  , 25.7}}
    1579   };
    1580 
    1581   G4bool rech = false;
    1582 
    1583   if (is == 6 || is == 5 || is == 7 || is == 14) {
    1584     std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(ekin);
    1585     G4int ik = iksk.first;
    1586     G4double sk = iksk.second;
    1587     G4double chrg;
    1588 
    1589     if(ik == 30 && sk == 1.0) {
    1590       chrg = 1.0;   
    1591 
    1592     } else {
    1593 
    1594       chrg = 1.0 - (ali[ik - 1] + sk * (ali[ik] - ali[ik - 1])) /
    1595         (asig[3][0][ik - 1] + sk * (asig[3][0][ik] - asig[3][0][ik - 1]));
    1596     };
    1597     rech = inuclRndm() > chrg;
    1598   };
    1599 
    1600   return rech;
    1601 }
    1602 
    1603887
    1604888std::pair<G4double, G4double>
    1605 G4ElementaryParticleCollider::adjustIntervalForElastic(
    1606                          G4double ekin,
    1607                          G4double ak,
    1608                          G4double ae,
    1609                          G4int k,
    1610                          G4int l,
    1611                          const std::vector<G4double>& ssv,
    1612                          G4double st) const {
     889G4ElementaryParticleCollider::adjustIntervalForElastic(G4double ekin, G4double ak,
     890                                                       G4double ae, G4int k,
     891                                                       G4int l,
     892                                                       const std::vector<G4double>& ssv,
     893                                                       G4double st) const {
    1613894
    1614895  if (verboseLevel > 3) {
     
    17541035           << G4endl;
    17551036  }
    1756 
    1757   const G4double ang[4][4][13] = {
    1758     {{ 2.7404, -30.853,  0.1026,-0.3829,  0.2499, 3.9025, 19.402,
    1759        0.1579, 0.3153,-17.953, 0.4217, 0.1499,  0.5369},
    1760      {-9.6998,  106.24, -1.0542, 3.7587,  32.028,-91.126,-224.46,
    1761        2.9671,-7.4981, 109.72, 147.05, 2.8753, -13.216},
    1762      { 10.400, -129.39,  11.389,-6.5144, -118.82, 323.73, 747.33,
    1763        -5.5251, 43.295,-239.54,-653.35,-5.3078,  81.011},
    1764      { 2.3882,  54.339, -16.638, 6.7740,  150.99,-400.48,-935.70,
    1765        6.8925,-76.460, 228.26, 915.07, 6.2233, -142.85}},
    1766 
    1767     {{-7.5137,  19.465, -0.4961, 103.81, -2.6994,-20.619,-44.180,
    1768       -7.0218,-6.5373, 91.968,-3.5198,-5.9558, -10.550},
    1769      { 44.096, -68.102,  11.800,-272.82, -460.45, 491.70, 471.94,
    1770       -205.34, 193.07,-519.63,-260.19,-162.03,  296.29},
    1771      {-74.379,  96.358, -90.857, 477.59,  1895.9,-1715.5,-1485.6,
    1772       569.51,-1018.1, 1126.6, 1225.0, 430.79, -1695.7},
    1773      { 46.038, -56.827,  164.76,-512.22, -2519.0, 2114.3, 1805.5,
    1774      -898.58, 1742.6,-1074.0,-1748.1,-625.48,  2893.5}},
    1775 
    1776     {{ 7.5479, -3.4831,  1.5437,-1788.2,  16.268, 33.004, 31.567,
    1777        134.96, 46.864,-132.70, 3.6373, 128.75,  69.621},
    1778      {-39.274,  12.341, -33.769, 4305.2,  2138.4,-766.84,-301.76,
    1779        4872.2,-1303.0, 741.12, 155.92, 3140.2, -1924.5},
    1780      { 64.835, -18.592,  251.92,-7931.4, -9126.2, 2700.3, 907.63,
    1781        -14674., 6729.1,-1600.0,-752.01,-7918.9, 10620.0},
    1782      { 41.609,  12.024, -450.71, 9347.1, 12431.0,-3352.5,-1077.3,
    1783        23924.,-11075., 1524.9, 1079.6, 10983., -17468.}},
    1784 
    1785     {{-1.8369,  0.1894, -1.2021, 7147.5, -29.654,-16.367,-6.8648,
    1786       -821.16,-95.192, 58.598,-0.7804,-851.61, -138.65},
    1787      { 8.6911, -0.6788,  0.2534,-3339.5, -3182.3, 373.94, 60.476,
    1788       -32586., 2637.3,-318.74,-30.563,-18780.,  3928.1},
    1789      {-13.060,  1.0665, -186.58,-4139.2,  13944.,-1320.2,-175.20,
    1790        100980.,-12857., 677.51, 147.95, 44607., -20293.},
    1791      { 7.1880, -0.7291,  332.54,-4436.4, -19342., 1642.3, 203.81,
    1792        -165530.,20294.,-640.11,-212.50,-58790.,  32058.}}
    1793   };
    17941037
    17951038  const G4int itry_max = 100;
     
    20571300  return particles;
    20581301}
     1302
     1303void G4ElementaryParticleCollider::initializeArrays()
     1304{
     1305  // Parameter array for momentum calculation of many body final states
     1306  const G4double rmnData[14][10][2] = {
     1307    {{0.5028,   0.6305}, {3.1442, -3.7333}, {-7.8172,  13.464}, {8.1667, -18.594},
     1308     {1.6208,   1.9439}, {-4.3139, -4.6268}, {12.291,  9.7879}, {-15.288, -9.6074},
     1309     {   0.0,     0.0}, {   0.0,      0.0}},     
     1310
     1311    {{0.9348,   2.1801}, {-10.59,  1.5163}, { 29.227,  -16.38}, {-34.55,  27.944},
     1312     {-0.2009, -0.3464}, {1.3641,   1.1093}, {-3.403, -1.9313}, { 3.8559,  1.7064},
     1313     {   0.0,     0.0}, {    0.0,     0.0}},   
     1314
     1315    {{-0.0967, -1.2886}, {4.7335,  -2.457}, {-14.298,  15.129}, {17.685, -23.295},
     1316     { 0.0126,  0.0271}, {-0.0835, -0.1164}, { 0.186,  0.2697}, {-0.2004, -0.3185},
     1317     {   0.0,     0.0}, {    0.0,     0.0}},   
     1318
     1319    {{-0.025,   0.2091}, {-0.6248, 0.5228}, { 2.0282, -2.8687}, {-2.5895, 4.2688},
     1320     {-0.0002, -0.0007}, {0.0014,   0.0051}, {-0.0024, -0.015}, { 0.0022,  0.0196},
     1321     {    0.0,    0.0}, {    0.0,     0.0}},     
     1322
     1323    {{1.1965,   0.9336}, {-0.8289,-1.8181}, { 1.0426,  5.5157}, { -1.909,-8.5216},
     1324     { 1.2419,  1.8693}, {-4.3633, -5.5678}, { 13.743, 14.795}, {-18.592, -16.903},
     1325     {    0.0,    0.0}, {    0.0,     0.0}},     
     1326
     1327    {{0.287,    1.7811}, {-4.9065,-8.2927}, { 16.264,  20.607}, {-19.904,-20.827},
     1328     {-0.244,  -0.4996}, {1.3158,   1.7874}, {-3.5691, -4.133}, { 4.3867,  3.8393},
     1329     {    0.0,    0.0}, {   0.0,      0.0}},
     1330   
     1331    {{-0.2449, -1.5264}, { 2.9191, 6.8433}, {-9.5776, -16.067}, { 11.938, 16.845},
     1332     {0.0157,   0.0462}, {-0.0826, -0.1854}, { 0.2143, 0.4531}, {-0.2585, -0.4627},
     1333     {    0.0,    0.0}, {   0.0,      0.0}},
     1334
     1335    {{0.0373,   0.2713}, {-0.422, -1.1944}, { 1.3883,  2.7495}, {-1.7476,-2.9045},
     1336     {-0.0003, -0.0013}, {0.0014,   0.0058}, {-0.0034,-0.0146}, { 0.0039,  0.0156},
     1337     {    0.0,    0.0}, {    0.0,     0.0}},     
     1338
     1339    {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
     1340     {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
     1341     { 0.1451,  0.0929},{ 0.1538,  0.1303}}, 
     1342
     1343    {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
     1344     {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
     1345     { 0.4652,  0.5389},{ 0.2744,  0.4071}}, 
     1346
     1347    {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
     1348     {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
     1349     { -0.033, -0.0545},{-0.0146, -0.0288}}, 
     1350
     1351    {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
     1352     {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
     1353     { 0.6296,  0.1491},{ 0.8381,  0.1802}}, 
     1354
     1355    {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
     1356     {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
     1357     { 0.1787,   0.385},{ 0.0086,  0.3302}}, 
     1358
     1359    {{   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0}, {    0.0,     0.0},
     1360     {    0.0,     0.0}, {   0.0,      0.0}, {    0.0,    0.0}, {    0.0,     0.0},
     1361     {-0.0026, -0.0128},{ 0.0033, -0.0094}}
     1362  };
     1363
     1364  // Copy to class scope
     1365  for (G4int i = 0; i < 14; i++) {
     1366    for (G4int j = 0; j < 10; j++) {
     1367      for (G4int k = 0; k < 2; k++) rmn[i][j][k] = rmnData[i][j][k];
     1368    }
     1369  }
     1370
     1371  // Parameter array for angular distribution calculation
     1372  const G4double angData[4][4][13] = {
     1373    {{ 2.7404, -30.853,  0.1026,-0.3829,  0.2499, 3.9025, 19.402,
     1374       0.1579, 0.3153,-17.953, 0.4217, 0.1499,  0.5369},
     1375     {-9.6998,  106.24, -1.0542, 3.7587,  32.028,-91.126,-224.46,
     1376       2.9671,-7.4981, 109.72, 147.05, 2.8753, -13.216},
     1377     { 10.400, -129.39,  11.389,-6.5144, -118.82, 323.73, 747.33,
     1378       -5.5251, 43.295,-239.54,-653.35,-5.3078,  81.011},
     1379     { 2.3882,  54.339, -16.638, 6.7740,  150.99,-400.48,-935.70,
     1380       6.8925,-76.460, 228.26, 915.07, 6.2233, -142.85}},
     1381
     1382    {{-7.5137,  19.465, -0.4961, 103.81, -2.6994,-20.619,-44.180,
     1383      -7.0218,-6.5373, 91.968,-3.5198,-5.9558, -10.550},
     1384     { 44.096, -68.102,  11.800,-272.82, -460.45, 491.70, 471.94,
     1385      -205.34, 193.07,-519.63,-260.19,-162.03,  296.29},
     1386     {-74.379,  96.358, -90.857, 477.59,  1895.9,-1715.5,-1485.6,
     1387      569.51,-1018.1, 1126.6, 1225.0, 430.79, -1695.7},
     1388     { 46.038, -56.827,  164.76,-512.22, -2519.0, 2114.3, 1805.5,
     1389     -898.58, 1742.6,-1074.0,-1748.1,-625.48,  2893.5}},
     1390
     1391    {{ 7.5479, -3.4831,  1.5437,-1788.2,  16.268, 33.004, 31.567,
     1392       134.96, 46.864,-132.70, 3.6373, 128.75,  69.621},
     1393     {-39.274,  12.341, -33.769, 4305.2,  2138.4,-766.84,-301.76,
     1394       4872.2,-1303.0, 741.12, 155.92, 3140.2, -1924.5},
     1395     { 64.835, -18.592,  251.92,-7931.4, -9126.2, 2700.3, 907.63,
     1396       -14674., 6729.1,-1600.0,-752.01,-7918.9, 10620.0},
     1397     { 41.609,  12.024, -450.71, 9347.1, 12431.0,-3352.5,-1077.3,
     1398       23924.,-11075., 1524.9, 1079.6, 10983., -17468.}},
     1399
     1400    {{-1.8369,  0.1894, -1.2021, 7147.5, -29.654,-16.367,-6.8648,
     1401      -821.16,-95.192, 58.598,-0.7804,-851.61, -138.65},
     1402     { 8.6911, -0.6788,  0.2534,-3339.5, -3182.3, 373.94, 60.476,
     1403      -32586., 2637.3,-318.74,-30.563,-18780.,  3928.1},
     1404     {-13.060,  1.0665, -186.58,-4139.2,  13944.,-1320.2,-175.20,
     1405       100980.,-12857., 677.51, 147.95, 44607., -20293.},
     1406     { 7.1880, -0.7291,  332.54,-4436.4, -19342., 1642.3, 203.81,
     1407       -165530.,20294.,-640.11,-212.50,-58790.,  32058.}}
     1408  };
     1409
     1410  // Copy to class scope
     1411  for (G4int i = 0; i < 4; i++) {
     1412    for (G4int j = 0; j < 4; j++) {
     1413      for (G4int k = 0; k < 13; k++) ang[i][j][k] = angData[i][j][k];
     1414    }
     1415  }
     1416
     1417  const G4double abnData[4][4][4] = {
     1418    {{0.0856,  0.0716,  0.1729,  0.0376},  {5.0390,  3.0960,  7.1080,  1.4331},
     1419     {-13.782, -11.125, -17.961, -3.1350},  {14.661,  18.130,  16.403,  6.4864}},
     1420    {{0.0543,  0.0926, -0.1450,  0.2383}, {-9.2324, -3.2186, -13.032,  1.8253},
     1421     {36.397,  20.273,  41.781,  1.7648}, {-42.962, -33.245, -40.799, -16.735}},
     1422    {{-0.0511, -0.0515,  0.0454, -0.1541}, {4.6003,  0.8989,  8.3515, -1.5201},
     1423     {-20.534, -7.5084, -30.260, -1.5692},  {27.731,  13.188,  32.882,  17.185}},
     1424    {{0.0075,  0.0058, -0.0048,  0.0250}, {-0.6253, -0.0017, -1.4095,  0.3059},
     1425     {2.9159,  0.7022,  5.3505,  0.3252}, {-4.1101, -1.4854, -6.0946, -3.5277}}
     1426  };
     1427
     1428  // Copy to class scope
     1429  for (G4int i = 0; i < 4; i++) {
     1430    for (G4int j = 0; j < 4; j++) {
     1431      for (G4int k = 0; k < 4; k++) abn[i][j][k] = abnData[i][j][k];
     1432    }
     1433  }
     1434
     1435}
  • trunk/source/processes/hadronic/models/cascade/cascade/src/G4NucleiModel.cc

    r1007 r1196  
    3030#include "G4CollisionOutput.hh"
    3131
    32 #include "G4CascadeKplusPChannel.hh"
    33 #include "G4CascadeKplusNChannel.hh"
    34 #include "G4CascadeKminusPChannel.hh"
    35 #include "G4CascadeKminusNChannel.hh"
    36 #include "G4CascadeKzeroPChannel.hh"
    37 #include "G4CascadeKzeroNChannel.hh"
    38 #include "G4CascadeKzeroBarPChannel.hh"
    39 #include "G4CascadeKzeroBarNChannel.hh"
    40 #include "G4CascadeLambdaPChannel.hh"
    41 #include "G4CascadeLambdaNChannel.hh"
    42 #include "G4CascadeSigmaPlusPChannel.hh"
    43 #include "G4CascadeSigmaPlusNChannel.hh"
    44 #include "G4CascadeSigmaZeroPChannel.hh"
    45 #include "G4CascadeSigmaZeroNChannel.hh"
    46 #include "G4CascadeSigmaMinusPChannel.hh"
    47 #include "G4CascadeSigmaMinusNChannel.hh"
    48 #include "G4CascadeXiZeroPChannel.hh"
    49 #include "G4CascadeXiZeroNChannel.hh"
    50 #include "G4CascadeXiMinusPChannel.hh"
    51 #include "G4CascadeXiMinusNChannel.hh"
    5232
    5333typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
     
    6141}
    6242
    63 void G4NucleiModel::generateModel(G4double a,
    64                                   G4double z) {
     43void
     44G4NucleiModel::generateModel(G4double a, G4double z) {
    6545
    6646  verboseLevel = 2;
    67 
    6847  if (verboseLevel > 3) {
    6948    G4cout << " >>> G4NucleiModel::generateModel" << G4endl;
    7049  }
     50
     51  initTotalCrossSections();
    7152
    7253  const G4double AU = 1.7234;
     
    9879
    9980  G4double CU = cuu * std::pow(a, one_third);
    100 
    10181  G4double D1 = CU / AU;
    102 
    10382  G4double D = std::exp(-D1);
    104 
    10583  G4double CU2 = 0.0;
    10684
     
    11896        // G4double y = std::log((1.0 + D) / alfa6[i] - 1.0);
    11997        G4double y = std::log((1.0 + D)/alfa3[i] - 1.0);
    120 
    12198        zone_radii.push_back(CU + AU * y);
    12299        ur.push_back(y);
     
    129106 
    130107      G4double CU1 = CU * CU;
    131 
    132108      CU2 = std::sqrt(CU1 * (1.0 - 1.0 / a) + 6.4);
    133109
     
    140116
    141117    G4double tot_vol = 0.0;
    142 
    143118    std::vector<G4double> v;
    144 
    145119    std::vector<G4double> v1;
    146120
     
    161135            std::pow(zone_radii[i - 1], G4double(3)));
    162136      v1.push_back(v0);
    163     };
     137    }
    164138
    165139    // proton
     
    176150      pf.push_back(pff);
    177151      vz.push_back(0.5 * pff * pff / mproton + binding_energies[0]);
    178     };
     152    }
    179153
    180154    nucleon_densities.push_back(rod);
     
    264238  };
    265239  nuclei_radius = zone_radii[zone_radii.size() - 1];
     240
    266241}
    267242
    268 G4double G4NucleiModel::volNumInt(G4double r1,
    269                                   G4double r2,
    270                                   G4double ,
    271                                   G4double d1) const {
     243
     244G4double
     245G4NucleiModel::volNumInt(G4double r1, G4double r2,
     246                         G4double, G4double d1) const {
    272247
    273248  if (verboseLevel > 3) {
     
    306281      dr1 = dr;
    307282      fun1 = fun;
    308 
    309283    } else {
    310284      break;
    311 
    312     };
    313 
    314   };
     285    }
     286
     287  }
    315288
    316289  if (verboseLevel > 2){
     
    321294}
    322295
    323 G4double G4NucleiModel::volNumInt1(G4double r1,
    324                                    G4double r2,
    325                                    G4double cu2) const {
     296
     297G4double
     298G4NucleiModel::volNumInt1(G4double r1, G4double r2,
     299                          G4double cu2) const {
    326300  if (verboseLevel > 3) {
    327301    G4cout << " >>> G4NucleiModel::volNumInt1" << G4endl;
     
    349323      r += dr1;
    350324      fi += r * r * std::exp(-r * r);
    351     };
     325    }
    352326
    353327    fun = 0.5 * fun1 + fi * dr; 
     
    360334    } else {
    361335      break;
    362 
    363     };
    364 
    365   };
     336    }
     337
     338  }
    366339
    367340  if (verboseLevel > 2){
     
    371344  return std::pow(cu2, G4double(3)) * fun;
    372345}
     346
    373347
    374348void G4NucleiModel::printModel() const {
     
    392366      getFermiMomentum(2,i) << " VP " << getPotential(2,i) << G4endl
    393367           << " pions: VP " << getPotential(3,i) << G4endl;
    394 
    395368}
    396369
    397 G4InuclElementaryParticle G4NucleiModel::generateNucleon(G4int type,
    398                                                          G4int zone) const {
     370
     371G4InuclElementaryParticle
     372G4NucleiModel::generateNucleon(G4int type, G4int zone) const {
    399373
    400374  if (verboseLevel > 3) {
     
    409383
    410384  G4CascadeMomentum mom;
    411 
    412385  std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
    413 
    414386  G4double FI = randomPHI();
    415 
    416387  G4double pt = pmod * COS_SIN.second;
    417388
     
    423394}
    424395
    425 G4InuclElementaryParticle G4NucleiModel::generateQuasiDeutron(G4int type1,
    426                                                               G4int type2,
    427                                                               G4int zone) const {
     396
     397G4InuclElementaryParticle
     398G4NucleiModel::generateQuasiDeutron(G4int type1, G4int type2,
     399                                    G4int zone) const {
    428400
    429401  if (verboseLevel > 3) {
     
    452424}
    453425
    454 partners G4NucleiModel::generateInteractionPartners(G4CascadParticle& cparticle) const {
     426
     427partners
     428G4NucleiModel::generateInteractionPartners(G4CascadParticle& cparticle) const {
    455429
    456430  if (verboseLevel > 3) {
     
    503477    return thePartners;
    504478
    505   } else if (std::fabs(path) < small) { // just on the bounday
     479  } else if (std::fabs(path) < small) { // just on the boundary
    506480    path = 0.0;
    507481
     
    516490    dummy_convertor.setBullet(pmom, pmass);
    517491 
    518     G4int rtype;
    519 
    520492    for (G4int ip = 1; ip < 3; ip++) {
    521493      G4InuclElementaryParticle particle = generateNucleon(ip, zone);
    522494      dummy_convertor.setTarget(particle.getMomentum(), particle.getMass());
    523495      G4double ekin = dummy_convertor.getKinEnergyInTheTRS();
    524       G4double csec = crossSection(ekin, ptype * ip);
    525       rtype = ptype*ip;
    526 
    527       if ( (rtype > 10 && rtype < 14) || (rtype > 14 && rtype < 63) ) {
    528         // strange particle branch
    529         if (rtype == 11) {
    530           csec = G4CascadeKplusPChannel::getCrossSection(ekin);
    531         } else if (rtype == 13) {
    532           csec = G4CascadeKminusPChannel::getCrossSection(ekin);
    533         } else if (rtype == 15) {
    534           csec = G4CascadeKzeroPChannel::getCrossSection(ekin);
    535         } else if (rtype == 17) {
    536           csec = G4CascadeKzeroBarPChannel::getCrossSection(ekin);
    537         } else if (rtype == 21) {
    538           csec = G4CascadeLambdaPChannel::getCrossSection(ekin);
    539         } else if (rtype == 23) {
    540           csec = G4CascadeSigmaPlusPChannel::getCrossSection(ekin);
    541         } else if (rtype == 25) {
    542           csec = G4CascadeSigmaZeroPChannel::getCrossSection(ekin);
    543         } else if (rtype == 27) {
    544           csec = G4CascadeSigmaMinusPChannel::getCrossSection(ekin);
    545         } else if (rtype == 29) {
    546           csec = G4CascadeXiZeroPChannel::getCrossSection(ekin);
    547         } else if (rtype == 31) {
    548           csec = G4CascadeXiMinusPChannel::getCrossSection(ekin);
    549 
    550         } else if (rtype == 22) {
    551           csec = G4CascadeKplusNChannel::getCrossSection(ekin);
    552         } else if (rtype == 26) {
    553           csec = G4CascadeKminusNChannel::getCrossSection(ekin);
    554         } else if (rtype == 30) {
    555           csec = G4CascadeKzeroNChannel::getCrossSection(ekin);
    556         } else if (rtype == 34) {
    557           csec = G4CascadeKzeroBarNChannel::getCrossSection(ekin);
    558         } else if (rtype == 42) {
    559           csec = G4CascadeLambdaNChannel::getCrossSection(ekin);
    560         } else if (rtype == 46) {
    561           csec = G4CascadeSigmaPlusNChannel::getCrossSection(ekin);
    562         } else if (rtype == 50) {
    563           csec = G4CascadeSigmaZeroNChannel::getCrossSection(ekin);
    564         } else if (rtype == 54) {
    565           csec = G4CascadeSigmaMinusNChannel::getCrossSection(ekin);
    566         } else if (rtype == 58) {
    567           csec = G4CascadeXiZeroNChannel::getCrossSection(ekin);
    568         } else if (rtype == 62) {
    569           csec = G4CascadeXiMinusNChannel::getCrossSection(ekin);
    570 
    571         } else {
    572           csec = 0;
    573           G4cout << " G4NucleiModel:"
    574                  << " Unknown strange interaction channel - returning zero cross section : rtype = "
    575                  << rtype << G4endl;
    576         }
    577       }
     496      G4double csec = totalCrossSection(ekin, ptype * ip);
    578497
    579498      if(verboseLevel > 2){
     
    583502      G4double dens = nucleon_densities[ip - 1][zone];
    584503      G4double rat = getRatio(ip);
    585 
    586       // double rat = 1.0;
    587 
    588504      G4double pw = -path * dens * csec * rat;
    589505
     
    760676}
    761677
    762 std::vector<G4CascadParticle> G4NucleiModel::generateParticleFate(G4CascadParticle& cparticle,
    763                                                                     G4ElementaryParticleCollider* theElementaryParticleCollider) {
    764 
    765   if (verboseLevel > 3) {
    766     G4cout << " >>> G4NucleiModel::generateParticleFate" << G4endl;
    767   }
     678
     679std::vector<G4CascadParticle>
     680G4NucleiModel::generateParticleFate(G4CascadParticle& cparticle,
     681                                    G4ElementaryParticleCollider* theElementaryParticleCollider) {
     682
     683  if (verboseLevel > 3) G4cout << " >>> G4NucleiModel::generateParticleFate" << G4endl;
    768684
    769685  std::vector<G4CascadParticle> outgouing_cparticles;
     
    779695
    780696    if (npart == 1) { // cparticle is on the next zone entry
     697      // need to go here if particle outside nucleus ?
     698      //
    781699      cparticle.propagateAlongThePath(thePartners[0].second);
    782700      cparticle.incrementCurrentPath(thePartners[0].second);
     
    806724        if (verboseLevel > 2){
    807725          if (target.quasi_deutron())
    808 
    809726            G4cout << " try absorption: target " << target.type() << " bullet " <<
    810 
    811               bullet.type() << G4endl;
     727                      bullet.type() << G4endl;
    812728        }
    813729
    814730        G4CollisionOutput output = theElementaryParticleCollider->collide(&bullet, &target);
    815731
    816         if (verboseLevel > 2){
    817           output.printCollisionOutput();
    818         }
     732        if (verboseLevel > 2) output.printCollisionOutput();
    819733
    820734        std::vector<G4InuclElementaryParticle> outgoing_particles =
     
    822736          output.getOutgoingParticles();
    823737
    824         if (passFermi(outgoing_particles, zone)) { // interaction
     738        if (passFermi(outgoing_particles, zone)) { // interaction
    825739          cparticle.propagateAlongThePath(thePartners[i].second);
    826 
    827           std::vector<G4double> new_position = cparticle.getPosition();
    828 
    829           for (G4int ip = 0; ip < G4int(outgoing_particles.size()); ip++)
    830             outgouing_cparticles.push_back(G4CascadParticle(outgoing_particles[ip],
    831                                                             new_position, zone, 0.0));
    832           no_interaction = false;
     740          std::vector<G4double> new_position = cparticle.getPosition();
     741
     742          /*
     743          // find jet axis for new particles
     744          G4double incidentE = cparticle.getParticle().getEnergy();
     745          G4CascadeMomentum jetAxis;
     746          for (G4int i = 0; i < G4int(outgoing_particles.size()); i++) {
     747            for (G4int j = 1; j < 4; j++) jetAxis[j] += (outgoing_particles[i].getMomentum())[j];
     748          }
     749
     750          // Find pT wrt jet axis for each secondary
     751          */
     752
     753          for (G4int ip = 0; ip < G4int(outgoing_particles.size()); ip++) {
     754            G4CascadParticle temp(outgoing_particles[ip], new_position, zone, 0.0, 0);
     755            /*
     756            G4double pathLength = temp.getPathToTheNextZone(0, nuclei_radius);
     757
     758            // Get jet axis
     759            G4CascadeMomentum pmom = temp.getMomentum();
     760            G4double secMass = temp.getParticle().getMass();
     761            G4double dot = 0.0;
     762            G4double pmod = 0.0;
     763            G4double jmod = 0.0;
     764            for (G4int i = 1; i < 4; i++) {
     765              dot += pmom[i]*jetAxis[i];
     766              pmod += pmom[i]*pmom[i];
     767              jmod += jetAxis[i]*jetAxis[i];
     768            }
     769
     770            //            G4double sinTheta = std::sqrt(1.0 - dot*dot/pmod/jmod);
     771            G4double pT2 = pmod - dot*dot/jmod;
     772            // G4cout << " mass = " << secMass << " Energy = " << incidentE << " pT = " << pT << G4endl;
     773            G4double formationLength = 1.0*0.1973*incidentE/(pT2 + secMass*secMass);
     774            if(formationLength > pathLength) {
     775              //              G4cout << " formation length = " << formationLength
     776              //                     << " path length = " << pathLength << G4endl;
     777              temp.propagateAlongThePath(pathLength);
     778              temp.incrementCurrentPath(pathLength);
     779              temp.updateZone(number_of_zones-1);
     780            }
     781            */
     782            outgouing_cparticles.push_back(temp);
     783          }
     784
     785          no_interaction = false;
    833786          current_nucl1 = 0;
    834787          current_nucl2 = 0;
     
    853806
    854807          } else {
    855             if (verboseLevel > 2){
    856               G4cout << " good absorption " << G4endl;
    857             }
     808            if (verboseLevel > 2) G4cout << " good absorption " << G4endl;
    858809
    859810            current_nucl1 = (target.type() - 100) / 10;
    860811            current_nucl2 = target.type() - 100 - 10 * current_nucl1;
    861           };   
     812          }   
    862813         
    863814          if (current_nucl1 == 1) {
     
    876827 
    877828          break;
    878         };
    879       };
    880       if (no_interaction) { // still now interactions
     829        };
     830      }  // loop over partners
     831
     832      if (no_interaction) { // still no interactions
    881833        cparticle.updatePosition(old_position);
    882834        cparticle.propagateAlongThePath(thePartners[npart - 1].second);
     
    1017969
    1018970  G4double rat;
    1019 
     971  G4double ratm;
     972
     973  // Calculate number of protons and neutrons in local region
     974  G4double Athird = std::pow(A, 0.3333);
     975  G4double Nneut = Athird*(A-Z)/A;
     976  G4double Nprot = Athird*Z/A;
     977
     978  // Reduce number of
    1020979  if (ip == 1) {
    1021980    if (verboseLevel > 2){
     
    1023982    }
    1024983
    1025     rat = protonNumberCurrent / protonNumber;
     984    rat = protonNumberCurrent/protonNumber;
     985
     986    // Calculate ratio modified for local region
     987    G4double deltaP = protonNumber - protonNumberCurrent;
     988    //    G4cout << " deltaP = " << deltaP << G4endl;
     989    ratm = std::max(0.0, (Nprot - deltaP)/Nprot);
    1026990
    1027991  } else {
     
    1030994    }
    1031995
    1032     rat = neutronNumberCurrent / neutronNumber;
    1033   };
    1034 
     996    rat = neutronNumberCurrent/neutronNumber;
     997
     998    // Calculate ratio modified for local region
     999    G4double deltaN = neutronNumber - neutronNumberCurrent;
     1000    //   G4cout << " deltaN = " << deltaN << G4endl;
     1001    ratm = std::max(0.0, (Nneut - deltaN)/Nneut);
     1002  }
     1003
     1004  //  G4cout << " get ratio: ratm =  " << ratm << G4endl;
    10351005  return rat;
     1006  //  return ratm;
    10361007}
    10371008
     
    10541025  pos[2] = -nuclei_radius * std::sqrt(1.0 - s1 * s1);
    10551026 
    1056   G4CascadParticle cpart(*particle, pos, number_of_zones, large);
     1027  G4CascadParticle cpart(*particle, pos, number_of_zones, large, 0);
    10571028
    10581029  if (verboseLevel > 2){
     
    13981369            momentums.push_back(mom);
    13991370          };
    1400         };
    1401         // coordinates and momentums at rest are generated, now back to the lab;
     1371        }
     1372 
     1373        // Coordinates and momenta at rest are generated, now back to the lab
    14021374        G4double rb = 0.0;
    14031375        G4int i(0);
     
    14961468            casparticles.push_back(
    14971469                                   G4CascadParticle(raw_particles[ip], coordinates[ip],
    1498                                                     number_of_zones, large));
     1470                                                    number_of_zones, large, 0));
    14991471
    15001472          } else {
     
    15261498    (casparticles, particles);
    15271499}
     1500
     1501
     1502G4double G4NucleiModel::totalCrossSection(G4double ke, G4int rtype) const
     1503{
     1504  const G4double keScale[30] = {
     1505    0.0,  0.01, 0.013, 0.018, 0.024, 0.032, 0.042, 0.056, 0.075, 0.1,
     1506    0.13, 0.18, 0.24,  0.32,  0.42,  0.56,  0.75,  1.0,   1.3,   1.8,
     1507    2.4,  3.2,  4.2,   5.6,   7.5,  10.0,  13.0,  18.0,  24.0,  32.0};
     1508
     1509  G4int ik = 29;
     1510  G4double sk = 1.0;
     1511  for (G4int i = 1; i < 30; i++) {
     1512    if (ke <= keScale[i]) {
     1513      ik = i;
     1514      sk = (ke - keScale[ik - 1]) / (keScale[ik] - keScale[ik - 1]);
     1515      break;
     1516    }
     1517  }
     1518
     1519  G4double csec = 0.0;
     1520
     1521  // pp, nn
     1522  if (rtype == 1 || rtype == 4) {
     1523    csec = PPtot[ik - 1] + sk * (PPtot[ik] - PPtot[ik - 1]);
     1524
     1525  // np
     1526  } else if (rtype == 2) {
     1527    csec = NPtot[ik - 1] + sk * (NPtot[ik] - NPtot[ik - 1]);
     1528
     1529  // pi+p, pi-n 
     1530  } else if (rtype == 3 || rtype == 10) {
     1531    csec = pipPtot[ik - 1] + sk * (pipPtot[ik] - pipPtot[ik - 1]);
     1532
     1533  // pi-p, pi+n
     1534  } else if (rtype == 5 || rtype == 6) {
     1535    csec = pimPtot[ik - 1] + sk * (pimPtot[ik] - pimPtot[ik - 1]);
     1536
     1537  // pi0p, pi0n
     1538  } else if (rtype == 7 || rtype == 14) {
     1539    csec = pizPtot[ik - 1] + sk * (pizPtot[ik] - pizPtot[ik - 1]);
     1540
     1541    // k+ p, k0 n
     1542  } else if (rtype == 11 || rtype == 30) {
     1543    csec = kpPtot[ik - 1] + sk * (kpPtot[ik] - kpPtot[ik - 1]);
     1544
     1545  // k- p, k0b n
     1546  } else if (rtype == 13 || rtype == 34) {
     1547    csec = kmPtot[ik - 1] + sk * (kmPtot[ik] - kmPtot[ik - 1]);
     1548
     1549  // k+ n, k0 p
     1550  } else if (rtype == 22 || rtype == 15) {
     1551    csec = kpNtot[ik - 1] + sk * (kpNtot[ik] - kpNtot[ik - 1]);
     1552
     1553  // k- n, k0b p
     1554  } else if (rtype == 26 || rtype == 17) {
     1555    csec = kmNtot[ik - 1] + sk * (kmNtot[ik] - kmNtot[ik - 1]);
     1556
     1557  // L p, L n, S0 p, S0 n
     1558  } else if (rtype == 21 || rtype == 25 || rtype == 42 || rtype == 50) {
     1559    csec = lPtot[ik - 1] + sk * (lPtot[ik] - lPtot[ik - 1]);
     1560
     1561  // Sp p, Sm n
     1562  } else if (rtype == 23 || rtype == 54) {
     1563    csec = spPtot[ik - 1] + sk * (spPtot[ik] - spPtot[ik - 1]);
     1564
     1565  // Sm p, Sp n
     1566  } else if (rtype == 27 || rtype == 46) {
     1567    csec = smPtot[ik - 1] + sk * (smPtot[ik] - smPtot[ik - 1]);
     1568
     1569  // Xi0 p, Xi- n
     1570  } else if (rtype == 29 || rtype == 62) {
     1571    csec = xi0Ptot[ik - 1] + sk * (xi0Ptot[ik] - xi0Ptot[ik - 1]);
     1572
     1573  // Xi- p, Xi0 n
     1574  } else if (rtype == 31 || rtype == 58) {
     1575    csec = ximPtot[ik - 1] + sk * (ximPtot[ik] - ximPtot[ik - 1]);
     1576
     1577  } else {
     1578    G4cout << " unknown collison type = " << rtype << G4endl;
     1579  }
     1580
     1581  return csec;
     1582}
     1583
     1584
     1585void G4NucleiModel::initTotalCrossSections()
     1586{
     1587  const G4double PPtotData[30] = {
     1588  17613.0, 302.9, 257.1, 180.6, 128.4,  90.5,  66.1,  49.4,  36.9, 29.6,
     1589     26.0,  23.1,  22.6,  23.0,  27.0,  32.0,  44.0,  47.04, 44.86, 46.03,
     1590     44.09, 41.81, 41.17, 40.65, 40.15, 40.18, 39.26, 38.36, 38.39, 38.41};
     1591
     1592  const G4double NPtotData[30] = {
     1593  20357.0, 912.6, 788.6, 582.1, 415.0, 272.0, 198.8, 145.0, 100.4,  71.1,
     1594     58.8,  45.7,  38.9,  34.4,  34.0,  35.0,  37.5,  39.02, 40.29, 40.72,
     1595     42.36, 41.19, 42.04, 41.67, 40.96, 39.48, 39.79, 39.39, 39.36, 39.34};
     1596
     1597  const G4double pipPtotData[30] = {
     1598    0.0,   1.2,   2.5,   3.8,   5.0,  7.0,   9.0,  15.0, 30.0,  64.0,
     1599  130.0, 190.0, 130.0,  56.0,  28.0, 17.14, 19.28, 27.4, 40.05, 32.52,
     1600   30.46, 29.0,  27.26, 25.84, 25.5, 24.5,  24.0,  23.5, 23.0,  23.0};
     1601
     1602  const G4double pimPtotData[30] = {
     1603    6.13,  6.4,   6.67,  6.94,  7.22,  7.5,  8.3,  12.0,  14.4,  24.0,
     1604   46.0,  72.04, 43.02, 27.19, 27.32, 43.8, 37.08, 51.37, 34.21, 34.79,
     1605   32.08, 31.19, 30.32, 28.5,  27.0,  25.9, 25.5,  25.2,  25.0,  24.8};
     1606
     1607  //  const G4double pizPtotData[30] = {
     1608  //    0.0,   3.55,  4.65,  5.9,   7.75, 10.1,  11.8,  18.0,  27.7, 52.5,
     1609  //  102.0, 150.0, 102.64, 51.03, 34.94, 34.52, 32.45, 44.05, 40.2, 34.93,
     1610  //   32.0,  30.0,  28.29, 26.91, 26.25, 25.25, 24.75, 24.35, 24.0, 23.9};
     1611
     1612  // New test
     1613  const G4double pizPtotData[30] = {
     1614    6.43,  7.18,  7.54,  8.01,  8.52,  9.13, 10.22, 14.37, 20.96, 34.73,
     1615   61.07, 98.23, 61.97, 32.62, 28.07, 31.37, 35.15, 40.17, 37.27, 33.49,
     1616   31.06, 29.52, 28.29, 26.91, 26.25, 25.25, 24.75, 24.35, 24.0,  23.9};
     1617
     1618  const G4double kpPtotData[30] = {
     1619   10.0,  10.34, 10.44, 10.61, 10.82, 11.09, 11.43, 11.71, 11.75, 11.8,
     1620   11.98, 12.28, 12.56, 12.48, 12.67, 14.48, 15.92, 17.83, 17.93, 17.88,
     1621   17.46, 17.3,  17.3,  17.4,  17.4,  17.4,  17.4,  17.5,  17.7,  17.8};
     1622
     1623  const G4double kpNtotData[30] = {
     1624    6.64,  6.99,  7.09,  7.27,  7.48,  7.75,  8.1,  8.49,  8.84, 9.31,
     1625    9.8,  10.62, 11.64, 13.08, 14.88, 16.60, 17.5, 18.68, 18.68, 18.29,
     1626   17.81, 17.6,  17.6,  17.6,  17.6,  17.6,  17.7, 17.8,  17.9,  18.0};
     1627
     1628  const G4double kmPtotData[30] = {
     1629 1997.0, 1681.41, 1586.74, 1428.95, 1239.59, 987.12, 671.54, 377.85, 247.30, 75.54,
     1630    71.08, 54.74,   44.08,   44.38,   45.45,  45.07,  41.04,  35.75,  33.22, 30.08,
     1631    27.61, 26.5,    25.2,    24.0,    23.4,   22.8,   22.0,   21.3,   21.0,  20.9};
     1632
     1633  const G4double kmNtotData[30] = {
     1634    6.15,  6.93,  7.16,  7.55,  8.02,  8.65,  9.43, 10.36, 11.34, 12.64,
     1635   14.01, 16.45, 19.32, 23.0,  27.6,  30.92, 29.78, 28.28, 25.62, 23.1,
     1636   22.31, 21.9,  21.73, 21.94, 21.23, 20.5,  20.4,  20.2,  20.1,  20.0};
     1637
     1638  const G4double lPtotData[30] = {
     1639  300.0, 249.07, 233.8, 208.33, 177.78, 137.04, 86.11, 41.41, 28.86, 12.35,
     1640   13.82, 16.76, 20.68,  25.9,   30.37,  31.56, 32.83, 34.5,  34.91, 35.11,
     1641   35.03, 36.06, 35.13,  35.01,  35.0,   35.0,  35.0,  35.0,  35.0,  35.0};
     1642
     1643  const G4double spPtotData[30] = {
     1644  150.0, 146.0, 144.8, 142.8, 140.4, 137.2, 133.2, 127.6, 120.0, 110.0,
     1645   98.06, 84.16, 72.28, 56.58, 43.22, 40.44, 36.14, 30.48, 31.53, 31.92,
     1646   29.25, 28.37, 29.81, 33.15, 33.95, 34.0,  34.0,  34.0,  34.0,  34.0};
     1647
     1648  const G4double smPtotData[30] = {
     1649  937.0, 788.14, 743.48, 669.05, 579.74, 460.65, 311.79, 183.33, 153.65, 114.6,
     1650  105.18, 89.54,  70.58,  45.5,   32.17,  32.54,  32.95,  33.49,  33.55,  33.87,
     1651   34.02, 34.29,  33.93,  33.88,  34.0,   34.0,   34.0,   34.0,   34.0,   34.0};
     1652
     1653  const G4double xi0PtotData[30] = {
     1654  16.0,  14.72, 14.34, 13.7,  12.93, 11.9,  10.62, 9.29, 8.3,   7.0,
     1655   7.96,  9.56, 11.48, 14.04, 19.22, 25.29, 29.4, 34.8, 34.32, 33.33,
     1656  31.89, 29.55, 27.89, 21.43, 17.0,  16.0,  16.0, 16.0, 16.0,  16.0};
     1657
     1658  const G4double ximPtotData[30] = {
     1659  33.0,  32.5,  32.35, 32.1,  31.8,  31.4,  30.9, 30.2, 29.25, 28.0,
     1660  26.5,  24.6,  22.8,  20.78, 18.22, 19.95, 21.7, 24.0, 24.74, 25.95,
     1661  27.59, 27.54, 23.16, 17.43, 12.94, 12.0,  12.0, 12.0, 12.0,  12.0};
     1662
     1663  for (G4int i = 0; i < 30; i++) {
     1664    PPtot[i] = PPtotData[i];
     1665    NPtot[i] = NPtotData[i];
     1666    pipPtot[i] = pipPtotData[i];
     1667    pimPtot[i] = pimPtotData[i];
     1668    pizPtot[i] = pizPtotData[i];
     1669    kpPtot[i] = kpPtotData[i];
     1670    kpNtot[i] = kpNtotData[i];
     1671    kmPtot[i] = kmPtotData[i];
     1672    kmNtot[i] = kmNtotData[i];
     1673    lPtot[i] = lPtotData[i];
     1674    spPtot[i] = spPtotData[i];
     1675    smPtot[i] = smPtotData[i];
     1676    xi0Ptot[i] = xi0PtotData[i];
     1677    ximPtot[i] = ximPtotData[i];
     1678  }
     1679
     1680}
Note: See TracChangeset for help on using the changeset viewer.