Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/im_r_matrix/src/G4AngularDistribution.cc

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

Diff markup

Differences between /processes/hadronic/models/im_r_matrix/src/G4AngularDistribution.cc (Version 11.3.0) and /processes/hadronic/models/im_r_matrix/src/G4AngularDistribution.cc (Version 10.1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // hpw: done, but low quality at present.          26 // hpw: done, but low quality at present.
 27                                                    27 
 28 #include "globals.hh"                              28 #include "globals.hh"
 29 #include "G4Log.hh"                            << 
 30 #include "G4SystemOfUnits.hh"                      29 #include "G4SystemOfUnits.hh"
 31 #include "G4AngularDistribution.hh"                30 #include "G4AngularDistribution.hh"
 32 #include "Randomize.hh"                            31 #include "Randomize.hh"
 33                                                    32 
 34 G4AngularDistribution::G4AngularDistribution(G     33 G4AngularDistribution::G4AngularDistribution(G4bool symmetrize)
 35   : sym(symmetrize)                                34   : sym(symmetrize)
 36 {                                                  35 {
 37   // The following are parameters of the model     36   // The following are parameters of the model - not to be confused with the PDG values!
 38                                                    37 
 39       mSigma = 0.55;                               38       mSigma = 0.55; 
 40       cmSigma = 1.20;                              39       cmSigma = 1.20; 
 41       gSigma  = 9.4;                               40       gSigma  = 9.4;
 42                                                    41 
 43       mOmega = 0.783;                              42       mOmega = 0.783; 
 44       cmOmega = 0.808;                             43       cmOmega = 0.808; 
 45       gOmega = 10.95;                              44       gOmega = 10.95;
 46                                                    45 
 47       mPion = 0.138;                               46       mPion = 0.138; 
 48       cmPion = 0.51;                               47       cmPion = 0.51; 
 49       gPion  = 7.27;                               48       gPion  = 7.27;
 50                                                    49 
 51       mNucleon = 0.938;                            50       mNucleon = 0.938;   
 52                                                    51 
 53       // Definition of constants for pion-Term     52       // Definition of constants for pion-Term (no s-dependence)
 54                                                    53 
 55       m42   = 4. * mNucleon * mNucleon;            54       m42   = 4. * mNucleon * mNucleon;
 56       mPion2  = mPion * mPion;                     55       mPion2  = mPion * mPion;           
 57       cmPion2 = cmPion * cmPion;                   56       cmPion2 = cmPion * cmPion;
 58       dPion1 = cmPion2-mPion2;                     57       dPion1 = cmPion2-mPion2;
 59       dPion2 = dPion1 * dPion1;                    58       dPion2 = dPion1 * dPion1;
 60       cm6gp = 1.5 * (cmPion2*cmPion2*cmPion2)      59       cm6gp = 1.5 * (cmPion2*cmPion2*cmPion2) * (gPion*gPion*gPion*gPion) * m42 * m42 / dPion2;
 61                                                    60 
 62       cPion_3 = -(cm6gp/3.);                       61       cPion_3 = -(cm6gp/3.);
 63       cPion_2 = -(cm6gp * mPion2/dPion1);          62       cPion_2 = -(cm6gp * mPion2/dPion1);
 64       cPion_1 = -(cm6gp * mPion2 * (2. * cmPio     63       cPion_1 = -(cm6gp * mPion2 * (2. * cmPion2 + mPion2) / dPion2);
 65       cPion_m = -(cm6gp * cmPion2 * mPion2 / d     64       cPion_m = -(cm6gp * cmPion2 * mPion2 / dPion2);
 66       cPion_L = -(cm6gp * 2. * cmPion2 * mPion     65       cPion_L = -(cm6gp * 2. * cmPion2 * mPion2 * (cmPion2 + mPion2) / dPion2 / dPion1);
 67       cPion_0 = -(cPion_3 + cPion_2 + cPion_1      66       cPion_0 = -(cPion_3 + cPion_2 + cPion_1 + cPion_m);
 68                                                    67     
 69      // Definition of constants for sigma-Term     68      // Definition of constants for sigma-Term (no s-dependence)
 70                                                    69 
 71       G4double gSigmaSq = gSigma * gSigma;         70       G4double gSigmaSq = gSigma * gSigma; 
 72                                                    71 
 73       mSigma2  = mSigma * mSigma;                  72       mSigma2  = mSigma * mSigma;
 74       cmSigma2 = cmSigma * cmSigma;                73       cmSigma2 = cmSigma * cmSigma;
 75       cmSigma4 = cmSigma2 * cmSigma2;              74       cmSigma4 = cmSigma2 * cmSigma2;
 76       cmSigma6 = cmSigma2 * cmSigma4;              75       cmSigma6 = cmSigma2 * cmSigma4;
 77       dSigma1 = m42 - cmSigma2;                    76       dSigma1 = m42 - cmSigma2;
 78       dSigma2 = m42 - mSigma2;                     77       dSigma2 = m42 - mSigma2;
 79       dSigma3 = cmSigma2 - mSigma2;                78       dSigma3 = cmSigma2 - mSigma2;
 80                                                    79 
 81       G4double dSigma1Sq = dSigma1 * dSigma1;      80       G4double dSigma1Sq = dSigma1 * dSigma1;
 82       G4double dSigma2Sq = dSigma2 * dSigma2;      81       G4double dSigma2Sq = dSigma2 * dSigma2;
 83       G4double dSigma3Sq = dSigma3 * dSigma3;      82       G4double dSigma3Sq = dSigma3 * dSigma3;
 84                                                    83 
 85       cm2gs = 0.5 * cmSigma2 * gSigmaSq*gSigma     84       cm2gs = 0.5 * cmSigma2 * gSigmaSq*gSigmaSq / dSigma3Sq;     
 86                                                    85 
 87                                                    86 
 88       cSigma_3 = -(cm2gs * dSigma1Sq / 3.);        87       cSigma_3 = -(cm2gs * dSigma1Sq / 3.);
 89       cSigma_2 = -(cm2gs * cmSigma2 * dSigma1      88       cSigma_2 = -(cm2gs * cmSigma2 * dSigma1 * dSigma2 / dSigma3);
 90       cSigma_1 = -(cm2gs * cmSigma4 * (2. * dS     89       cSigma_1 = -(cm2gs * cmSigma4 * (2. * dSigma1 + dSigma2) * dSigma2 / dSigma3Sq);
 91       cSigma_m = -(cm2gs * cmSigma6 * dSigma2S     90       cSigma_m = -(cm2gs * cmSigma6 * dSigma2Sq / mSigma2 / dSigma3Sq);
 92       cSigma_L = -(cm2gs * cmSigma6 * dSigma2      91       cSigma_L = -(cm2gs * cmSigma6 * dSigma2 * (dSigma1 + dSigma2) * 2. / (dSigma3 * dSigma3Sq));
 93       cSigma_0 = -(cSigma_3 + cSigma_2 + cSigm     92       cSigma_0 = -(cSigma_3 + cSigma_2 + cSigma_1 + cSigma_m);
 94                                                    93 
 95       // Definition of constants for omega-Ter     94       // Definition of constants for omega-Term
 96                                                    95 
 97       G4double gOmegaSq = gOmega * gOmega;         96       G4double gOmegaSq = gOmega * gOmega;
 98                                                    97 
 99       mOmega2  = mOmega * mOmega;                  98       mOmega2  = mOmega * mOmega;
100       cmOmega2 = cmOmega * cmOmega;                99       cmOmega2 = cmOmega * cmOmega;
101       cmOmega4 = cmOmega2 * cmOmega2;             100       cmOmega4 = cmOmega2 * cmOmega2;
102       cmOmega6 = cmOmega2 * cmOmega4;             101       cmOmega6 = cmOmega2 * cmOmega4;
103       dOmega1 = m42 - cmOmega2;                   102       dOmega1 = m42 - cmOmega2;
104       dOmega2 = m42 - mOmega2;                    103       dOmega2 = m42 - mOmega2;
105       dOmega3 = cmOmega2 - mOmega2;               104       dOmega3 = cmOmega2 - mOmega2;
106       sOmega1 = cmOmega2 + mOmega2;               105       sOmega1 = cmOmega2 + mOmega2;
107                                                   106 
108       G4double dOmega3Sq = dOmega3 * dOmega3;     107       G4double dOmega3Sq = dOmega3 * dOmega3;
109                                                   108 
110       cm2go = 0.5 * cmOmega2 * gOmegaSq * gOme    109       cm2go = 0.5 * cmOmega2 * gOmegaSq * gOmegaSq / dOmega3Sq;
111                                                   110 
112       cOmega_3 =  cm2go / 3.;                     111       cOmega_3 =  cm2go / 3.;
113       cOmega_2 = -(cm2go * cmOmega2 / dOmega3)    112       cOmega_2 = -(cm2go * cmOmega2 / dOmega3);
114       cOmega_1 =  cm2go * cmOmega4 / dOmega3Sq    113       cOmega_1 =  cm2go * cmOmega4 / dOmega3Sq;
115       cOmega_m =  cm2go * cmOmega6 / (dOmega3S    114       cOmega_m =  cm2go * cmOmega6 / (dOmega3Sq * mOmega2);
116       cOmega_L = -(cm2go * cmOmega6 * 4. / (dO    115       cOmega_L = -(cm2go * cmOmega6 * 4. / (dOmega3 * dOmega3Sq));
117                                                   116 
118       // Definition of constants for mix-Term     117       // Definition of constants for mix-Term
119                                                   118 
120       G4double fac1Tmp = (gSigma * gOmega * cm    119       G4double fac1Tmp = (gSigma * gOmega * cmSigma2 * cmOmega2);
121       fac1 = -(fac1Tmp *  fac1Tmp * m42);         120       fac1 = -(fac1Tmp *  fac1Tmp * m42);  
122       dMix1 = cmOmega2 - cmSigma2;                121       dMix1 = cmOmega2 - cmSigma2;
123       dMix2 = cmOmega2 - mSigma2;                 122       dMix2 = cmOmega2 - mSigma2;
124       dMix3 = cmSigma2 - mOmega2;                 123       dMix3 = cmSigma2 - mOmega2;
125                                                   124 
126       G4double dMix1Sq = dMix1 * dMix1;           125       G4double dMix1Sq = dMix1 * dMix1;
127       G4double dMix2Sq = dMix2 * dMix2;           126       G4double dMix2Sq = dMix2 * dMix2;
128       G4double dMix3Sq = dMix3 * dMix3;           127       G4double dMix3Sq = dMix3 * dMix3;
129                                                   128 
130       cMix_o1 =    fac1 / (cmOmega2  * dMix1Sq    129       cMix_o1 =    fac1 / (cmOmega2  * dMix1Sq * dMix2 * dOmega3);
131       cMix_s1 =    fac1 / (cmSigma2  * dMix1Sq    130       cMix_s1 =    fac1 / (cmSigma2  * dMix1Sq * dMix3 * dSigma3);
132       cMix_Omega = fac1 / (dOmega3Sq * dMix3Sq    131       cMix_Omega = fac1 / (dOmega3Sq * dMix3Sq * (mOmega2 - mSigma2));
133       cMix_sm =    fac1 / (dSigma3Sq * dMix2Sq    132       cMix_sm =    fac1 / (dSigma3Sq * dMix2Sq * (mSigma2 - mOmega2)); 
134       fac2 = (-fac1) / (dMix1*dMix1Sq * dOmega    133       fac2 = (-fac1) / (dMix1*dMix1Sq * dOmega3Sq * dMix2Sq);
135       fac3 = (-fac1) / (dMix1*dMix1Sq * dSigma    134       fac3 = (-fac1) / (dMix1*dMix1Sq * dSigma3Sq * dMix3Sq); 
136                                                   135       
137       cMix_oLc = fac2 * (3. * cmOmega2*cmOmega    136       cMix_oLc = fac2 * (3. * cmOmega2*cmOmega4            - cmOmega4 * cmSigma2 
138            - 2. * cmOmega4 * mOmega2              137            - 2. * cmOmega4 * mOmega2           - 2. * cmOmega4 * mSigma2 
139            + cmOmega2 * mOmega2 * mSigma2         138            + cmOmega2 * mOmega2 * mSigma2      + cmSigma2 * mOmega2 * mSigma2 
140            - 4. * cmOmega4 * m42                  139            - 4. * cmOmega4 * m42               + 2. * cmOmega2 * cmSigma2 * m42 
141            + 3. * cmOmega2 * mOmega2 * m42        140            + 3. * cmOmega2 * mOmega2 * m42     - cmSigma2 * mOmega2 * m42 
142            + 3. * cmOmega2 * mSigma2 * m42        141            + 3. * cmOmega2 * mSigma2 * m42     - cmSigma2 * mSigma2 * m42 
143            - 2. * mOmega2 * mSigma2 * m42);       142            - 2. * mOmega2 * mSigma2 * m42);
144                                                   143       
145       cMix_oLs = fac2 * (8. * cmOmega4            144       cMix_oLs = fac2 * (8. * cmOmega4                     - 4. * cmOmega2 * cmSigma2 
146        - 6. * cmOmega2 * mOmega2         + 2.     145        - 6. * cmOmega2 * mOmega2         + 2. * cmSigma2 * mOmega2 
147        - 6. * cmOmega2 * mSigma2         + 2.     146        - 6. * cmOmega2 * mSigma2         + 2. * cmSigma2 * mSigma2 
148        + 4. * mOmega2 * mSigma2);                 147        + 4. * mOmega2 * mSigma2);
149                                                   148       
150       cMix_sLc = fac3 * (cmOmega2 * cmSigma4      149       cMix_sLc = fac3 * (cmOmega2 * cmSigma4               - 3. * cmSigma6    
151        + 2. * cmSigma4 * mOmega2         + 2.     150        + 2. * cmSigma4 * mOmega2         + 2. * cmSigma4 * mSigma2 
152        - cmOmega2 * mOmega2 * mSigma2    - cmS    151        - cmOmega2 * mOmega2 * mSigma2    - cmSigma2 * mOmega2 * mSigma2 
153        - 2. * cmOmega2 * cmSigma2 * m42  + 4.     152        - 2. * cmOmega2 * cmSigma2 * m42  + 4. * cmSigma4 * m42 
154        + cmOmega2 * mOmega2 * m42        - 3.     153        + cmOmega2 * mOmega2 * m42        - 3. * cmSigma2 * mOmega2 * m42 
155        + cmOmega2 * mSigma2 * m42        - 3.     154        + cmOmega2 * mSigma2 * m42        - 3. * cmSigma2 * mSigma2 * m42 
156        + 2. * mOmega2 * mSigma2 * m42);           155        + 2. * mOmega2 * mSigma2 * m42);
157                                                   156 
158       cMix_sLs = fac3 * (4. * cmOmega2 * cmSig    157       cMix_sLs = fac3 * (4. * cmOmega2 * cmSigma2          - 8. * cmSigma4
159            - 2. * cmOmega2 * mOmega2              158            - 2. * cmOmega2 * mOmega2           + 6. * cmSigma2 * mOmega2 
160            - 2. * cmOmega2 * mSigma2              159            - 2. * cmOmega2 * mSigma2           + 6. * cmSigma2 * mSigma2 
161            - 4. * mOmega2 * mSigma2);             160            - 4. * mOmega2 * mSigma2);
162 }                                                 161 }
163                                                   162 
164                                                   163 
165 G4AngularDistribution::~                          164 G4AngularDistribution::~
166 G4AngularDistribution()                           165 G4AngularDistribution()
167 { }                                               166 { }
168                                                   167 
169                                                   168 
170 G4double G4AngularDistribution::CosTheta(G4dou    169 G4double G4AngularDistribution::CosTheta(G4double S, G4double m_1, G4double m_2) const
171 {                                                 170 {
172    G4double random = G4UniformRand();             171    G4double random = G4UniformRand();
173    G4double dCosTheta = 2.;                       172    G4double dCosTheta = 2.;
174    G4double cosTheta = -1.;                       173    G4double cosTheta = -1.;
175                                                   174 
176    // For jmax=12 the accuracy is better than     175    // For jmax=12 the accuracy is better than 0.1 degree 
177    G4int jMax = 12;                               176    G4int jMax = 12;
178                                                   177 
179    for (G4int j = 1; j <= jMax; ++j)              178    for (G4int j = 1; j <= jMax; ++j)
180    {                                              179    {
181       // Accuracy is 2^-jmax                      180       // Accuracy is 2^-jmax 
182       dCosTheta *= 0.5;                           181       dCosTheta *= 0.5;
183       G4double cosTh = cosTheta + dCosTheta;      182       G4double cosTh = cosTheta + dCosTheta;
184       if(DifferentialCrossSection(S, m_1, m_2,    183       if(DifferentialCrossSection(S, m_1, m_2, cosTh) <= random) cosTheta = cosTh;
185     }                                             184     }
186                                                   185 
187    // Randomize in final interval in order to     186    // Randomize in final interval in order to avoid discrete angles 
188    cosTheta += G4UniformRand() * dCosTheta;       187    cosTheta += G4UniformRand() * dCosTheta;
189                                                   188 
190                                                   189 
191    if (cosTheta > 1. || cosTheta < -1.)           190    if (cosTheta > 1. || cosTheta < -1.)
192      throw G4HadronicException(__FILE__, __LIN    191      throw G4HadronicException(__FILE__, __LINE__, "G4AngularDistribution::CosTheta - std::cos(theta) outside allowed range");
193                                                   192 
194    return cosTheta;                               193    return cosTheta;
195 }                                                 194 }
196                                                   195 
197                                                   196 
198 G4double G4AngularDistribution::DifferentialCr    197 G4double G4AngularDistribution::DifferentialCrossSection(G4double sIn, G4double m_1, G4double m_2, 
199                G4double cosTheta) const           198                G4double cosTheta) const
200 {                                                 199 {
201 // local calculus is in GeV, ie. normalize inp    200 // local calculus is in GeV, ie. normalize input
202   sIn = sIn/sqr(GeV)+m42/2.;                      201   sIn = sIn/sqr(GeV)+m42/2.;
203   m_1  = m_1/GeV;                                 202   m_1  = m_1/GeV;
204   m_2  = m_2/GeV;                                 203   m_2  = m_2/GeV;
205 //  G4cout << "Here we go"<<sIn << " "<<m1 <<     204 //  G4cout << "Here we go"<<sIn << " "<<m1 << " " << m2 <<" " m42<< G4endl;
206 // scaling from masses other than p,p.            205 // scaling from masses other than p,p.
207   G4double S = sIn - (m_1+m_2) * (m_1+m_2) + m    206   G4double S = sIn - (m_1+m_2) * (m_1+m_2) + m42;
208   G4double tMax = S - m42;                        207   G4double tMax = S - m42;
209   G4double tp = 0.5 * (cosTheta + 1.) * tMax;     208   G4double tp = 0.5 * (cosTheta + 1.) * tMax; 
210   G4double twoS = 2. * S;                         209   G4double twoS = 2. * S;
211                                                   210   
212   // Define s-dependent stuff for omega-Term      211   // Define s-dependent stuff for omega-Term
213   G4double brak1 = (twoS-m42) * (twoS-m42);       212   G4double brak1 = (twoS-m42) * (twoS-m42);
214   G4double bOmega_3 = cOmega_3 * (-2. * cmOmeg    213   G4double bOmega_3 = cOmega_3 * (-2. * cmOmega4 - 2. * cmOmega2 * twoS - brak1);
215   G4double bOmega_2 = cOmega_2 * ( 2. * cmOmeg    214   G4double bOmega_2 = cOmega_2 * ( 2. * cmOmega2 * mOmega2 + sOmega1 * twoS + brak1);
216   G4double bOmega_1 = cOmega_1 * (-4. * cmOmeg    215   G4double bOmega_1 = cOmega_1 * (-4. * cmOmega2 * mOmega2 
217        - 2. * mOmega2*mOmega2                     216        - 2. * mOmega2*mOmega2 
218        - 2. * (cmOmega2 + 2 * mOmega2) * twoS     217        - 2. * (cmOmega2 + 2 * mOmega2) * twoS 
219        - 3. * brak1);                             218        - 3. * brak1);
220   G4double bOmega_m = cOmega_m * (-2. * mOmega    219   G4double bOmega_m = cOmega_m * (-2. * mOmega2*mOmega2 - 2. * mOmega2 * twoS - brak1);
221   G4double bOmega_L = cOmega_L * (sOmega1 * mO    220   G4double bOmega_L = cOmega_L * (sOmega1 * mOmega2 + (cmOmega2 + 3. * mOmega2) * S + brak1);
222   G4double bOmega_0 = -(bOmega_3 + bOmega_2 +     221   G4double bOmega_0 = -(bOmega_3 + bOmega_2 + bOmega_1 + bOmega_m);
223                                                   222   
224   // Define s-dependent stuff for mix-Term        223   // Define s-dependent stuff for mix-Term            
225   G4double bMix_o1 = cMix_o1 * (dOmega1 - twoS    224   G4double bMix_o1 = cMix_o1 * (dOmega1 - twoS);
226   G4double bMix_s1 = cMix_s1 * (dSigma1 - twoS    225   G4double bMix_s1 = cMix_s1 * (dSigma1 - twoS);
227   G4double bMix_Omega = cMix_Omega * (dOmega2     226   G4double bMix_Omega = cMix_Omega * (dOmega2 - twoS);
228   G4double bMix_sm = cMix_sm * (dSigma2 - twoS    227   G4double bMix_sm = cMix_sm * (dSigma2 - twoS);
229   G4double bMix_oL = cMix_oLc + cMix_oLs * S;     228   G4double bMix_oL = cMix_oLc + cMix_oLs * S;
230   G4double bMix_sL = cMix_sLc + cMix_sLs * S;     229   G4double bMix_sL = cMix_sLc + cMix_sLs * S;
231                                                   230   
232   G4double t1_Pion = 1. / (1. + tMax / cmPion2    231   G4double t1_Pion = 1. / (1. + tMax / cmPion2);
233   G4double t2_Pion = 1. + tMax / mPion2;          232   G4double t2_Pion = 1. + tMax / mPion2;
234   G4double t1_Sigma = 1. / (1. + tMax / cmSigm    233   G4double t1_Sigma = 1. / (1. + tMax / cmSigma2);
235   G4double t2_Sigma = 1. + tMax / mSigma2;        234   G4double t2_Sigma = 1. + tMax / mSigma2;
236   G4double t1_Omega = 1. / (1. + tMax / cmOmeg    235   G4double t1_Omega = 1. / (1. + tMax / cmOmega2);
237   G4double t2_Omega = 1. + tMax / mOmega2;        236   G4double t2_Omega = 1. + tMax / mOmega2;
238                                                   237   
239   G4double norm = Cross(t1_Pion, t1_Sigma, t1_    238   G4double norm = Cross(t1_Pion, t1_Sigma, t1_Omega,
240       t2_Pion, t2_Sigma, t2_Omega,                239       t2_Pion, t2_Sigma, t2_Omega,
241       bMix_o1, bMix_s1, bMix_Omega,               240       bMix_o1, bMix_s1, bMix_Omega,
242       bMix_sm, bMix_oL, bMix_sL,                  241       bMix_sm, bMix_oL, bMix_sL,
243       bOmega_0, bOmega_1, bOmega_2,               242       bOmega_0, bOmega_1, bOmega_2,
244       bOmega_3, bOmega_m, bOmega_L);              243       bOmega_3, bOmega_m, bOmega_L);
245                                                   244   
246   t1_Pion = 1. / (1. + tp / cmPion2);             245   t1_Pion = 1. / (1. + tp / cmPion2);
247   t2_Pion = 1. + tp / mPion2;                     246   t2_Pion = 1. + tp / mPion2;
248   t1_Sigma = 1. / (1. + tp / cmSigma2);           247   t1_Sigma = 1. / (1. + tp / cmSigma2);
249   t2_Sigma = 1. + tp / mSigma2;                   248   t2_Sigma = 1. + tp / mSigma2;
250   t1_Omega = 1. / (1. + tp / cmOmega2);           249   t1_Omega = 1. / (1. + tp / cmOmega2);
251   t2_Omega = 1. + tp / mOmega2;                   250   t2_Omega = 1. + tp / mOmega2;
252                                                   251   
253   G4double dSigma;                                252   G4double dSigma;
254   if (sym)                                        253   if (sym) 
255     {                                             254     { 
256       G4double to;                                255       G4double to;
257       norm = 2. * norm;                           256       norm = 2. * norm;
258       to = tMax - tp;                             257       to = tMax - tp;
259       G4double t3_Pion = 1. / (1. + to / cmPio    258       G4double t3_Pion = 1. / (1. + to / cmPion2);
260       G4double t4_Pion = 1. + to / mPion2;        259       G4double t4_Pion = 1. + to / mPion2;
261       G4double t3_Sigma = 1. / (1. + to / cmSi    260       G4double t3_Sigma = 1. / (1. + to / cmSigma2);
262       G4double t4_Sigma = 1. + to / mSigma2;      261       G4double t4_Sigma = 1. + to / mSigma2;
263       G4double t3_Omega = 1. / (1. + to / cmOm    262       G4double t3_Omega = 1. / (1. + to / cmOmega2);
264       G4double t4_Omega = 1. + to / mOmega2;      263       G4double t4_Omega = 1. + to / mOmega2;
265                                                   264       
266       dSigma = ( Cross(t1_Pion, t1_Sigma, t1_O    265       dSigma = ( Cross(t1_Pion, t1_Sigma, t1_Omega,
267            t2_Pion,t2_Sigma, t2_Omega,            266            t2_Pion,t2_Sigma, t2_Omega,
268            bMix_o1, bMix_s1, bMix_Omega,          267            bMix_o1, bMix_s1, bMix_Omega,
269            bMix_sm, bMix_oL, bMix_sL,             268            bMix_sm, bMix_oL, bMix_sL,
270            bOmega_0, bOmega_1, bOmega_2,          269            bOmega_0, bOmega_1, bOmega_2,
271            bOmega_3, bOmega_m, bOmega_L) -        270            bOmega_3, bOmega_m, bOmega_L) - 
272      Cross(t3_Pion,t3_Sigma, t3_Omega,            271      Cross(t3_Pion,t3_Sigma, t3_Omega,
273            t4_Pion, t4_Sigma, t4_Omega,           272            t4_Pion, t4_Sigma, t4_Omega,
274            bMix_o1, bMix_s1, bMix_Omega,          273            bMix_o1, bMix_s1, bMix_Omega,
275            bMix_sm, bMix_oL, bMix_sL,             274            bMix_sm, bMix_oL, bMix_sL,
276            bOmega_0, bOmega_1, bOmega_2,          275            bOmega_0, bOmega_1, bOmega_2,
277            bOmega_3, bOmega_m, bOmega_L) )        276            bOmega_3, bOmega_m, bOmega_L) ) 
278   / norm + 0.5;                                   277   / norm + 0.5;
279     }                                             278     }
280   else                                            279   else
281     {                                             280     {
282       dSigma = Cross(t1_Pion, t1_Sigma, t1_Ome    281       dSigma = Cross(t1_Pion, t1_Sigma, t1_Omega, 
283          t2_Pion, t2_Sigma, t2_Omega,             282          t2_Pion, t2_Sigma, t2_Omega,
284          bMix_o1, bMix_s1, bMix_Omega,            283          bMix_o1, bMix_s1, bMix_Omega,
285          bMix_sm, bMix_oL, bMix_sL,               284          bMix_sm, bMix_oL, bMix_sL,
286          bOmega_0, bOmega_1, bOmega_2,            285          bOmega_0, bOmega_1, bOmega_2,
287          bOmega_3, bOmega_m, bOmega_L)            286          bOmega_3, bOmega_m, bOmega_L) 
288   / norm;                                         287   / norm;
289     }                                             288     }
290                                                   289   
291   return dSigma;                                  290   return dSigma;
292 }                                                 291 }
293                                                   292 
294                                                   293 
295 G4double G4AngularDistribution::Cross(G4double    294 G4double G4AngularDistribution::Cross(G4double tpPion,
296               G4double tpSigma,                   295               G4double tpSigma,
297               G4double tpOmega,                   296               G4double tpOmega,
298               G4double tmPion,                    297               G4double tmPion,
299               G4double tmSigma,                   298               G4double tmSigma,
300               G4double tmOmega,                   299               G4double tmOmega,
301               G4double bMix_o1,                   300               G4double bMix_o1,
302               G4double bMix_s1,                   301               G4double bMix_s1,
303               G4double bMix_Omega,                302               G4double bMix_Omega,
304               G4double bMix_sm,                   303               G4double bMix_sm,
305               G4double bMix_oL,                   304               G4double bMix_oL,
306               G4double bMix_sL,                   305               G4double bMix_sL,
307               G4double bOmega_0,                  306               G4double bOmega_0,
308               G4double bOmega_1,                  307               G4double bOmega_1,
309               G4double bOmega_2,                  308               G4double bOmega_2,
310               G4double bOmega_3,                  309               G4double bOmega_3,
311               G4double bOmega_m,                  310               G4double bOmega_m,
312               G4double bOmega_L) const            311               G4double bOmega_L) const
313 {                                                 312 {
314   G4double cross = 0;                             313   G4double cross = 0;
315      //  Pion                                     314      //  Pion
316     cross += ((cPion_3 * tpPion  + cPion_2)  * << 315     cross += ((cPion_3 * tpPion  + cPion_2)  * tpPion  + cPion_1)  * tpPion  + cPion_m/tmPion   + cPion_0  +  cPion_L * std::log(tpPion*tmPion);
317 //    G4cout << "cross1 "<< cross<<G4endl;        316 //    G4cout << "cross1 "<< cross<<G4endl;
318     //  Sigma                                     317     //  Sigma
319     cross += ((cSigma_3 * tpSigma + cSigma_2)  << 318     cross += ((cSigma_3 * tpSigma + cSigma_2) * tpSigma + cSigma_1) * tpSigma + cSigma_m/tmSigma + cSigma_0 + cSigma_L * std::log(tpSigma*tmSigma);
320 //    G4cout << "cross2 "<< cross<<G4endl;        319 //    G4cout << "cross2 "<< cross<<G4endl;
321     // Omega                                      320     // Omega
322     cross += ((bOmega_3 * tpOmega + bOmega_2)  << 321     cross += ((bOmega_3 * tpOmega + bOmega_2) * tpOmega + bOmega_1) * tpOmega + bOmega_m/tmOmega + bOmega_0 + bOmega_L * std::log(tpOmega*tmOmega)
323     // Mix                                        322     // Mix
324     +  bMix_o1 * (tpOmega - 1.)                   323     +  bMix_o1 * (tpOmega - 1.)
325     +  bMix_s1 * (tpSigma - 1.)                   324     +  bMix_s1 * (tpSigma - 1.)
326     +  bMix_Omega * G4Log(tmOmega)             << 325     +  bMix_Omega * std::log(tmOmega)
327     +  bMix_sm * G4Log(tmSigma)                << 326     +  bMix_sm * std::log(tmSigma)
328     +  bMix_oL * G4Log(tpOmega)                << 327     +  bMix_oL * std::log(tpOmega)
329     +  bMix_sL * G4Log(tpSigma);               << 328     +  bMix_sL * std::log(tpSigma);
330 /*      G4cout << "cross3 "<< cross<<" "          329 /*      G4cout << "cross3 "<< cross<<" "
331              <<bMix_o1<<" "                       330              <<bMix_o1<<" "
332              <<bMix_s1<<" "                       331              <<bMix_s1<<" "
333              <<bMix_Omega<<" "                    332              <<bMix_Omega<<" "
334              <<bMix_sm<<" "                       333              <<bMix_sm<<" "
335              <<bMix_oL<<" "                       334              <<bMix_oL<<" "
336              <<bMix_sL<<" "                       335              <<bMix_sL<<" "
337              <<tpOmega<<" "                       336              <<tpOmega<<" "
338              <<tpSigma<<" "                       337              <<tpSigma<<" "
339              <<tmOmega<<" "                       338              <<tmOmega<<" "
340              <<tmSigma<<" "                       339              <<tmSigma<<" "
341              <<tpOmega<<" "                       340              <<tpOmega<<" "
342              <<tpSigma                            341              <<tpSigma
343              <<G4endl;                            342              <<G4endl;
344 */                                                343 */
345   return cross;                                   344   return cross;
346                                                   345 
347 }                                                 346 }
348                                                   347