Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/shortlived/src/G4ExcitedNucleonConstructor.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 /particles/shortlived/src/G4ExcitedNucleonConstructor.cc (Version 11.3.0) and /particles/shortlived/src/G4ExcitedNucleonConstructor.cc (Version 5.1.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
                                                   >>  23 //
                                                   >>  24 // $Id: G4ExcitedNucleonConstructor.cc,v 1.6 2002/11/19 11:49:24 jwellisc Exp $
                                                   >>  25 // GEANT4 tag $Name: geant4-05-01-patch-01 $
                                                   >>  26 //
                                                   >>  27 // 
 26 // -------------------------------------------     28 // --------------------------------------------------------------
 27 //  GEANT 4 class implementation file          <<  29 //  GEANT 4 class implementation file 
 28 //      History: first implementation, based o     30 //      History: first implementation, based on object model of
 29 //      10 oct 1998  H.Kurashige                   31 //      10 oct 1998  H.Kurashige
 30 //                                             << 
 31 //      Update mass and width following PDG 20 << 
 32 //        4 nov 2023 S.Okada                   << 
 33 // -------------------------------------------     32 // ---------------------------------------------------------------
 34                                                    33 
                                                   >>  34 
 35 #include "G4ExcitedNucleonConstructor.hh"          35 #include "G4ExcitedNucleonConstructor.hh"
 36                                                    36 
 37 #include "G4DecayTable.hh"                     <<  37 #include "G4ParticleDefinition.hh"
                                                   >>  38 #include "G4ParticleTable.hh"
                                                   >>  39 #include "G4ShortLivedTable.hh"
 38 #include "G4PhaseSpaceDecayChannel.hh"             40 #include "G4PhaseSpaceDecayChannel.hh"
 39 #include "G4SystemOfUnits.hh"                  << 
 40 #include "G4VDecayChannel.hh"                      41 #include "G4VDecayChannel.hh"
                                                   >>  42 #include "G4DecayTable.hh"
                                                   >>  43 
                                                   >>  44 
                                                   >>  45 G4ExcitedNucleonConstructor::G4ExcitedNucleonConstructor():
                                                   >>  46     G4ExcitedBaryonConstructor(NStates, NucleonIsoSpin)
                                                   >>  47 {
                                                   >>  48 
                                                   >>  49 }
 41                                                    50 
 42 G4ExcitedNucleonConstructor::G4ExcitedNucleonC <<  51 G4ExcitedNucleonConstructor::~G4ExcitedNucleonConstructor()
 43   : G4ExcitedBaryonConstructor(NStates, Nucleo <<  52 {
 44 {}                                             <<  53 }
 45                                                    54 
 46 G4int G4ExcitedNucleonConstructor::GetEncoding     55 G4int G4ExcitedNucleonConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState)
 47 {                                                  56 {
 48   G4int encoding;                                  57   G4int encoding;
 49   // Delta has exceptinal encoding                 58   // Delta has exceptinal encoding
 50   if ((idxState == 1)      // N(1520)          <<  59   if ((idxState==1)||(idxState==6)||(idxState==8)||(idxState==9)||(idxState==12) )  {
 51       || (idxState == 6)   // N(1700)          << 
 52       || (idxState == 8)   // N(1720)          << 
 53       || (idxState == 9)   // N(1900)          << 
 54       || (idxState == 12)) // N(2190)          << 
 55   {                                            << 
 56     encoding = GetEncodingOffset(idxState);        60     encoding = GetEncodingOffset(idxState);
 57     if ((iIsoSpin3 == 3) || (iIsoSpin3 == -3)) <<  61     if ((iIsoSpin3==3)||(iIsoSpin3==-3)) {
 58       // normal encoding                       <<  62       // normal encoding 
 59       encoding += 1000 * GetQuarkContents(0, i <<  63       encoding += 1000*GetQuarkContents(0, iIsoSpin3);
 60       encoding += 100 * GetQuarkContents(1, iI <<  64       encoding +=  100*GetQuarkContents(1, iIsoSpin3);
 61       encoding += 10 * GetQuarkContents(2, iIs <<  65       encoding +=   10*GetQuarkContents(2, iIsoSpin3);
 62     }                                          <<  66     } else if (iIsoSpin3== +1){
 63     else if (iIsoSpin3 == +1) {                <<  67       // 1st <--> 2nd quark 
 64       // 1st <--> 2nd quark                    <<  68       encoding += 1000*GetQuarkContents(0, iIsoSpin3);
 65       encoding += 1000 * GetQuarkContents(0, i <<  69       encoding +=   10*GetQuarkContents(1, iIsoSpin3);
 66       encoding += 10 * GetQuarkContents(1, iIs <<  70       encoding +=  100*GetQuarkContents(2, iIsoSpin3);
 67       encoding += 100 * GetQuarkContents(2, iI <<  71     } else if (iIsoSpin3== -1){
 68     }                                          <<  72       // 1st <--> 0th quark 
 69     else if (iIsoSpin3 == -1) {                <<  73       encoding +=  100*GetQuarkContents(0, iIsoSpin3);
 70       // 1st <--> 0th quark                    <<  74       encoding += 1000*GetQuarkContents(1, iIsoSpin3);
 71       encoding += 100 * GetQuarkContents(0, iI <<  75       encoding +=   10*GetQuarkContents(2, iIsoSpin3);
 72       encoding += 1000 * GetQuarkContents(1, i << 
 73       encoding += 10 * GetQuarkContents(2, iIs << 
 74     }                                              76     }
 75     encoding += GetiSpin(idxState) + 1;        <<  77     encoding += GetiSpin(idxState) +1;
 76   }                                            <<  78   } else {
 77   else                                         << 
 78   {                                            << 
 79     encoding = G4ExcitedBaryonConstructor::Get     79     encoding = G4ExcitedBaryonConstructor::GetEncoding(iIsoSpin3, idxState);
 80   }                                                80   }
 81   return encoding;                                 81   return encoding;
 82 }                                                  82 }
 83                                                    83 
 84 G4DecayTable* G4ExcitedNucleonConstructor::Cre <<  84 G4DecayTable* G4ExcitedNucleonConstructor::CreateDecayTable(
 85                                                <<  85              const G4String&  parentName,  
                                                   >>  86              G4int iIso3, 
                                                   >>  87              G4int iState,
                                                   >>  88              G4bool fAnti)
 86 {                                                  89 {
 87   // create decay table                            90   // create decay table
 88   auto decayTable = new G4DecayTable();        <<  91   G4DecayTable* decayTable =  new G4DecayTable();
 89                                                    92 
 90   G4double br;                                     93   G4double br;
 91   if ((br = bRatio[iState][NGamma]) > 0.0) {   <<  94   if ( (br=bRatio[iState][NGamma]) >0.0) {
 92     AddNGammaMode(decayTable, parentName, br,  <<  95     AddNGammaMode( decayTable, parentName, br, iIso3, fAnti);
 93   }                                                96   }
 94                                                    97 
 95   if ((br = bRatio[iState][NPi]) > 0.0) {      <<  98   if ( (br=bRatio[iState][NPi]) >0.0) {
 96     AddNPiMode(decayTable, parentName, br, iIs <<  99     AddNPiMode( decayTable, parentName, br, iIso3, fAnti);
 97   }                                               100   }
 98                                                   101 
 99   if ((br = bRatio[iState][NEta]) > 0.0) {     << 102   if ( (br=bRatio[iState][NEta]) >0.0) {
100     AddNEtaMode(decayTable, parentName, br, iI << 103     AddNEtaMode( decayTable, parentName, br, iIso3, fAnti);
101   }                                               104   }
102                                                   105 
103   if ((br = bRatio[iState][NOmega]) > 0.0) {   << 106   if ( (br=bRatio[iState][NOmega]) >0.0) {
104     AddNOmegaMode(decayTable, parentName, br,  << 107     AddNOmegaMode( decayTable, parentName, br, iIso3, fAnti);
105   }                                               108   }
106                                                   109 
107   if ((br = bRatio[iState][NRho]) > 0.0) {     << 110   if ( (br=bRatio[iState][NRho]) >0.0) {
108     AddNRhoMode(decayTable, parentName, br, iI << 111     AddNRhoMode( decayTable, parentName, br, iIso3, fAnti);
109   }                                               112   }
110                                                   113 
111   if ((br = bRatio[iState][N2Pi]) > 0.0) {     << 114   if ( (br=bRatio[iState][N2Pi]) >0.0) {
112     AddN2PiMode(decayTable, parentName, br, iI << 115     AddN2PiMode( decayTable, parentName, br, iIso3, fAnti);
113   }                                               116   }
114                                                   117 
115   if ((br = bRatio[iState][DeltaPi]) > 0.0) {  << 118   if ( (br=bRatio[iState][DeltaPi]) >0.0) {
116     AddDeltaPiMode(decayTable, parentName, br, << 119     AddDeltaPiMode( decayTable, parentName, br, iIso3, fAnti);
117   }                                               120   }
118                                                   121 
119   if ((br = bRatio[iState][NStarPi]) > 0.0) {  << 122   if ( (br=bRatio[iState][NStarPi]) >0.0) {
120     AddNStarPiMode(decayTable, parentName, br, << 123     AddNStarPiMode( decayTable, parentName, br, iIso3, fAnti);
121   }                                               124   }
122                                                   125 
123   if ((br = bRatio[iState][LambdaK]) > 0.0) {  << 126   if ( (br=bRatio[iState][LambdaK]) >0.0) {
124     AddLambdaKMode(decayTable, parentName, br, << 127     AddLambdaKMode( decayTable, parentName, br, iIso3, fAnti);
125   }                                               128   }
126                                                   129 
127   return decayTable;                           << 130   return  decayTable;
128 }                                                 131 }
129                                                   132 
130 G4DecayTable* G4ExcitedNucleonConstructor::Add << 133 G4DecayTable*  G4ExcitedNucleonConstructor::AddNGammaMode( 
131                                                << 134            G4DecayTable* decayTable, const G4String& nameParent,
132                                                << 135             G4double br, G4int iIso3, G4bool fAnti)
133 {                                                 136 {
134   G4VDecayChannel* mode;                          137   G4VDecayChannel* mode;
135                                                   138 
136   //                                           << 139   // 
137   G4String daughterN;                             140   G4String daughterN;
138   if (iIso3 == +1) {                           << 141   if (iIso3 == +1) { 
139     daughterN = "proton";                      << 142     daughterN = "proton";  
140   }                                            << 143   } else {
141   else {                                       << 144     daughterN = "neutron"; 
142     daughterN = "neutron";                     << 145   } 
143   }                                            << 
144   if (fAnti) daughterN = "anti_" + daughterN;     146   if (fAnti) daughterN = "anti_" + daughterN;
145                                                   147 
146   // create decay channel  [parent    BR     #    148   // create decay channel  [parent    BR     #daughters]
147   mode = new G4PhaseSpaceDecayChannel(namePare << 149   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
                                                   >> 150                                            daughterN,"gamma");
148   // add decay table                              151   // add decay table
149   decayTable->Insert(mode);                       152   decayTable->Insert(mode);
150                                                   153 
151   return decayTable;                              154   return decayTable;
152 }                                                 155 }
153                                                   156 
154 G4DecayTable* G4ExcitedNucleonConstructor::Add << 157 G4DecayTable*  G4ExcitedNucleonConstructor::AddNPiMode( 
155                                                << 158             G4DecayTable* decayTable, const G4String& nameParent,
156                                                << 159             G4double br, G4int iIso3, G4bool fAnti)
157 {                                                 160 {
158   G4VDecayChannel* mode;                          161   G4VDecayChannel* mode;
159                                                   162 
160   G4String daughterN;                             163   G4String daughterN;
161   G4String daughterPi;                            164   G4String daughterPi;
162                                                   165 
163   // ------------ N pi0 ------------           << 166   // ------------ N pi0 ------------ 
164   // determine daughters                          167   // determine daughters
165   if (iIso3 == +1) {                              168   if (iIso3 == +1) {
166     daughterN = "proton";                      << 169     daughterN  = "proton";
167     daughterPi = "pi0";                           170     daughterPi = "pi0";
168   }                                            << 171   } else {
169   else {                                       << 172     daughterN  = "neutron";
170     daughterN = "neutron";                     << 
171     daughterPi = "pi0";                           173     daughterPi = "pi0";
172   }                                               174   }
173   if (fAnti) daughterN = "anti_" + daughterN;     175   if (fAnti) daughterN = "anti_" + daughterN;
174   // create decay channel  [parent    BR     #    176   // create decay channel  [parent    BR     #daughters]
175   mode = new G4PhaseSpaceDecayChannel(namePare << 177   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
                                                   >> 178                                            daughterN,daughterPi);
176   // add decay table                              179   // add decay table
177   decayTable->Insert(mode);                       180   decayTable->Insert(mode);
178                                                   181 
179   // -------------N pi +/- --------------      << 182   // -------------N pi +/- -------------- 
180   // determine daughters                          183   // determine daughters
181   if (iIso3 == +1) {                              184   if (iIso3 == +1) {
182     daughterN = "neutron";                     << 185     daughterN  = "neutron";
183     if (!fAnti) {                                 186     if (!fAnti) {
184       daughterPi = "pi+";                         187       daughterPi = "pi+";
185     }                                          << 188     } else {
186     else {                                     << 
187       daughterPi = "pi-";                         189       daughterPi = "pi-";
188     }                                             190     }
189   }                                            << 191   } else {
190   else {                                       << 192     daughterN  = "proton";
191     daughterN = "proton";                      << 
192     if (!fAnti) {                                 193     if (!fAnti) {
193       daughterPi = "pi-";                         194       daughterPi = "pi-";
194     }                                          << 195     } else {
195     else {                                     << 
196       daughterPi = "pi+";                         196       daughterPi = "pi+";
197     }                                             197     }
198   }                                               198   }
199   if (fAnti) daughterN = "anti_" + daughterN;     199   if (fAnti) daughterN = "anti_" + daughterN;
200                                                   200 
201   // create decay channel  [parent    BR     #    201   // create decay channel  [parent    BR     #daughters]
202   mode = new G4PhaseSpaceDecayChannel(namePare << 202   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
                                                   >> 203                                            daughterN,daughterPi);
203   // add decay table                              204   // add decay table
204   decayTable->Insert(mode);                       205   decayTable->Insert(mode);
205                                                   206 
206   return decayTable;                              207   return decayTable;
207 }                                                 208 }
208                                                   209 
209 G4DecayTable* G4ExcitedNucleonConstructor::Add << 210 G4DecayTable*  G4ExcitedNucleonConstructor::AddNEtaMode( 
210                                                << 211             G4DecayTable* decayTable, const G4String& nameParent,
211                                                << 212             G4double br, G4int iIso3, G4bool fAnti)
212 {                                                 213 {
213   G4VDecayChannel* mode;                          214   G4VDecayChannel* mode;
214                                                   215 
215   G4String daughterN;                             216   G4String daughterN;
216                                                   217 
217   // ------------ N eta------------            << 218   // ------------ N eta------------ 
218   // determine daughters                          219   // determine daughters
219   if (iIso3 == +1) {                              220   if (iIso3 == +1) {
220     daughterN = "proton";                      << 221     daughterN  = "proton";
221   }                                            << 222   } else {
222   else {                                       << 223     daughterN  = "neutron";
223     daughterN = "neutron";                     << 
224   }                                               224   }
225   if (fAnti) daughterN = "anti_" + daughterN;     225   if (fAnti) daughterN = "anti_" + daughterN;
226   // create decay channel  [parent    BR     #    226   // create decay channel  [parent    BR     #daughters]
227   mode = new G4PhaseSpaceDecayChannel(namePare << 227   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
                                                   >> 228                                            daughterN, "eta");
228   // add decay table                              229   // add decay table
229   decayTable->Insert(mode);                       230   decayTable->Insert(mode);
230                                                   231 
231   return decayTable;                              232   return decayTable;
232 }                                                 233 }
233                                                   234 
234 G4DecayTable* G4ExcitedNucleonConstructor::Add << 235 G4DecayTable*  G4ExcitedNucleonConstructor::AddNOmegaMode( 
235                                                << 236             G4DecayTable* decayTable, const G4String& nameParent,
236                                                << 237             G4double br, G4int iIso3, G4bool fAnti)
237 {                                                 238 {
238   G4VDecayChannel* mode;                          239   G4VDecayChannel* mode;
239                                                   240 
240   G4String daughterN;                             241   G4String daughterN;
241                                                   242 
242   // ------------ N omega------------          << 243   // ------------ N omega------------ 
243   // determine daughters                          244   // determine daughters
244   if (iIso3 == +1) {                              245   if (iIso3 == +1) {
245     daughterN = "proton";                      << 246     daughterN  = "proton";
246   }                                            << 247   } else {
247   else {                                       << 248     daughterN  = "neutron";
248     daughterN = "neutron";                     << 
249   }                                               249   }
250   if (fAnti) daughterN = "anti_" + daughterN;     250   if (fAnti) daughterN = "anti_" + daughterN;
251   // create decay channel  [parent    BR     #    251   // create decay channel  [parent    BR     #daughters]
252   mode = new G4PhaseSpaceDecayChannel(namePare << 252   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
                                                   >> 253                                            daughterN, "omega");
253   // add decay table                              254   // add decay table
254   decayTable->Insert(mode);                       255   decayTable->Insert(mode);
255                                                   256 
256   return decayTable;                              257   return decayTable;
257 }                                                 258 }
258                                                   259 
259 G4DecayTable* G4ExcitedNucleonConstructor::Add << 260 G4DecayTable*  G4ExcitedNucleonConstructor::AddNRhoMode( 
260                                                << 261             G4DecayTable* decayTable, const G4String& nameParent,
261                                                << 262             G4double br, G4int iIso3, G4bool fAnti)
262 {                                                 263 {
263   G4VDecayChannel* mode;                          264   G4VDecayChannel* mode;
264                                                   265 
265   G4String daughterN;                             266   G4String daughterN;
266   G4String daughterRho;                           267   G4String daughterRho;
267                                                   268 
268   // ------------ N rho0 ------------          << 269   // ------------ N rho0 ------------ 
269   // determine daughters                          270   // determine daughters
270   if (iIso3 == +1) {                              271   if (iIso3 == +1) {
271     daughterN = "proton";                      << 272     daughterN  = "proton";
272     daughterRho = "rho0";                         273     daughterRho = "rho0";
273   }                                            << 274   } else {
274   else {                                       << 275     daughterN  = "neutron";
275     daughterN = "neutron";                     << 
276     daughterRho = "rho0";                         276     daughterRho = "rho0";
277   }                                               277   }
278   if (fAnti) daughterN = "anti_" + daughterN;     278   if (fAnti) daughterN = "anti_" + daughterN;
279   // create decay channel  [parent    BR     #    279   // create decay channel  [parent    BR     #daughters]
280   mode = new G4PhaseSpaceDecayChannel(namePare << 280   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
                                                   >> 281                                            daughterN,daughterRho);
281   // add decay table                              282   // add decay table
282   decayTable->Insert(mode);                       283   decayTable->Insert(mode);
283                                                   284 
284   // -------------N rho+/- --------------      << 285   // -------------N rho+/- -------------- 
285   // determine daughters                          286   // determine daughters
286   if (iIso3 == +1) {                              287   if (iIso3 == +1) {
287     daughterN = "neutron";                     << 288     daughterN  = "neutron";
288     if (!fAnti) {                                 289     if (!fAnti) {
289       daughterRho = "rho+";                       290       daughterRho = "rho+";
290     }                                          << 291     } else {
291     else {                                     << 
292       daughterRho = "rho-";                       292       daughterRho = "rho-";
293     }                                             293     }
294   }                                            << 294   } else {
295   else {                                       << 295     daughterN  = "proton";
296     daughterN = "proton";                      << 
297     if (!fAnti) {                                 296     if (!fAnti) {
298       daughterRho = "rho-";                       297       daughterRho = "rho-";
299     }                                          << 298     } else {
300     else {                                     << 
301       daughterRho = "rho+";                       299       daughterRho = "rho+";
302     }                                             300     }
303   }                                               301   }
304   if (fAnti) daughterN = "anti_" + daughterN;     302   if (fAnti) daughterN = "anti_" + daughterN;
305                                                   303 
306   // create decay channel  [parent    BR     #    304   // create decay channel  [parent    BR     #daughters]
307   mode = new G4PhaseSpaceDecayChannel(namePare << 305   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
                                                   >> 306                                            daughterN,daughterRho);
308   // add decay table                              307   // add decay table
309   decayTable->Insert(mode);                       308   decayTable->Insert(mode);
310                                                   309 
311   return decayTable;                              310   return decayTable;
312 }                                                 311 }
313                                                   312 
314 G4DecayTable* G4ExcitedNucleonConstructor::Add << 313 G4DecayTable*  G4ExcitedNucleonConstructor::AddN2PiMode( 
315                                                << 314             G4DecayTable* decayTable, const G4String& nameParent,
316                                                << 315             G4double br, G4int iIso3, G4bool fAnti)
317 {                                                 316 {
318   // Decay Modes                                  317   // Decay Modes
319   //   N* --> N + pi + pi                         318   //   N* --> N + pi + pi
320   //     Only I=0 states are included for 2-pi << 319   //     Only I=0 states are included for 2-pi system 
321                                                << 320   
322   G4VDecayChannel* mode;                          321   G4VDecayChannel* mode;
323                                                   322 
324   G4String daughterN;                             323   G4String daughterN;
325   G4String daughterPi1;                           324   G4String daughterPi1;
326   G4String daughterPi2;                           325   G4String daughterPi2;
327                                                   326 
328   // -------------N pi+ pi- --------------     << 327   // -------------N pi+ pi- -------------- 
329   // determine daughters                          328   // determine daughters
330   if (iIso3 == +1) {                              329   if (iIso3 == +1) {
331     daughterN = "proton";                      << 330     daughterN  = "proton";
332     daughterPi1 = "pi+";                          331     daughterPi1 = "pi+";
333     daughterPi2 = "pi-";                          332     daughterPi2 = "pi-";
334   }                                            << 333   } else {
335   else {                                       << 334     daughterN  = "neutron";
336     daughterN = "neutron";                     << 
337     daughterPi1 = "pi+";                          335     daughterPi1 = "pi+";
338     daughterPi2 = "pi-";                          336     daughterPi2 = "pi-";
339   }                                               337   }
340   if (fAnti) daughterN = "anti_" + daughterN;     338   if (fAnti) daughterN = "anti_" + daughterN;
341                                                   339 
342   // create decay channel  [parent    BR     #    340   // create decay channel  [parent    BR     #daughters]
343   mode = new G4PhaseSpaceDecayChannel(namePare << 341   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 3,
                                                   >> 342                                            daughterN,daughterPi1,daughterPi2);
344   // add decay table                              343   // add decay table
345   decayTable->Insert(mode);                       344   decayTable->Insert(mode);
346                                                   345 
347   // -------------N pi0 pi0 --------------     << 346   // -------------N pi0 pi0 --------------  
348   // determine daughters                          347   // determine daughters
349   if (iIso3 == +1) {                              348   if (iIso3 == +1) {
350     daughterN = "proton";                      << 349     daughterN  = "proton";
351     daughterPi1 = "pi0";                          350     daughterPi1 = "pi0";
352     daughterPi2 = "pi0";                          351     daughterPi2 = "pi0";
353   }                                            << 352   } else {
354   else {                                       << 353     daughterN  = "neutron";
355     daughterN = "neutron";                     << 
356     daughterPi1 = "pi0";                          354     daughterPi1 = "pi0";
357     daughterPi2 = "pi0";                          355     daughterPi2 = "pi0";
358   }                                               356   }
359   if (fAnti) daughterN = "anti_" + daughterN;     357   if (fAnti) daughterN = "anti_" + daughterN;
360                                                   358 
361   // create decay channel  [parent    BR     #    359   // create decay channel  [parent    BR     #daughters]
362   mode = new G4PhaseSpaceDecayChannel(namePare << 360   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 3,
                                                   >> 361                                            daughterN,daughterPi1,daughterPi2);
363   // add decay table                              362   // add decay table
364   decayTable->Insert(mode);                       363   decayTable->Insert(mode);
365                                                   364 
366   return decayTable;                              365   return decayTable;
367 }                                                 366 }
368                                                   367 
369 G4DecayTable* G4ExcitedNucleonConstructor::Add << 368 G4DecayTable*  G4ExcitedNucleonConstructor::AddNStarPiMode( 
370                                                << 369             G4DecayTable* decayTable, const G4String& nameParent,
371                                                << 370             G4double br, G4int iIso3, G4bool fAnti)
372 {                                                 371 {
373   G4VDecayChannel* mode;                          372   G4VDecayChannel* mode;
374                                                   373 
375   G4String daughterN;                             374   G4String daughterN;
376   G4String daughterPi;                            375   G4String daughterPi;
377                                                   376 
378   // ------------ N pi0 ------------           << 377   // ------------ N pi0 ------------ 
379   // determine daughters                          378   // determine daughters
380   if (iIso3 == +1) {                              379   if (iIso3 == +1) {
381     daughterN = "N(1440)+";                    << 380     daughterN  = "N(1440)+";
382     daughterPi = "pi0";                           381     daughterPi = "pi0";
383   }                                            << 382   } else {
384   else {                                       << 383     daughterN  = "N(1440)0";
385     daughterN = "N(1440)0";                    << 
386     daughterPi = "pi0";                           384     daughterPi = "pi0";
387   }                                               385   }
388   if (fAnti) daughterN = "anti_" + daughterN;     386   if (fAnti) daughterN = "anti_" + daughterN;
389   // create decay channel  [parent    BR     #    387   // create decay channel  [parent    BR     #daughters]
390   mode = new G4PhaseSpaceDecayChannel(namePare << 388   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
                                                   >> 389                                            daughterN,daughterPi);
391   // add decay table                              390   // add decay table
392   decayTable->Insert(mode);                       391   decayTable->Insert(mode);
393                                                   392 
394   // -------------N pi +/- --------------      << 393   // -------------N pi +/- -------------- 
395   // determine daughters                          394   // determine daughters
396   if (iIso3 == +1) {                              395   if (iIso3 == +1) {
397     daughterN = "N(1440)0";                    << 396     daughterN  = "N(1440)0";
398     if (!fAnti) {                                 397     if (!fAnti) {
399       daughterPi = "pi+";                         398       daughterPi = "pi+";
400     }                                          << 399     } else {
401     else {                                     << 
402       daughterPi = "pi-";                         400       daughterPi = "pi-";
403     }                                             401     }
404   }                                            << 402   } else {
405   else {                                       << 403     daughterN  = "N(1440)+";
406     daughterN = "N(1440)+";                    << 
407     if (!fAnti) {                                 404     if (!fAnti) {
408       daughterPi = "pi-";                         405       daughterPi = "pi-";
409     }                                          << 406     } else {
410     else {                                     << 
411       daughterPi = "pi+";                         407       daughterPi = "pi+";
412     }                                             408     }
413   }                                               409   }
414   if (fAnti) daughterN = "anti_" + daughterN;     410   if (fAnti) daughterN = "anti_" + daughterN;
415                                                   411 
416   // create decay channel  [parent    BR     #    412   // create decay channel  [parent    BR     #daughters]
417   mode = new G4PhaseSpaceDecayChannel(namePare << 413   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
                                                   >> 414                                            daughterN,daughterPi);
418   // add decay table                              415   // add decay table
419   decayTable->Insert(mode);                       416   decayTable->Insert(mode);
420                                                   417 
421   return decayTable;                              418   return decayTable;
422 }                                                 419 }
423                                                   420 
424 G4DecayTable* G4ExcitedNucleonConstructor::Add << 421 G4DecayTable*  G4ExcitedNucleonConstructor::AddDeltaPiMode( 
425                                                << 422             G4DecayTable* decayTable, const G4String& nameParent,
426                                                << 423             G4double br, G4int iIso3, G4bool fAnti)
427 {                                                 424 {
428   G4VDecayChannel* mode;                          425   G4VDecayChannel* mode;
429                                                   426 
430   G4String daughterDelta;                         427   G4String daughterDelta;
431   G4String daughterPi;                            428   G4String daughterPi;
432   G4double r;                                     429   G4double r;
433                                                   430 
434   // ------------ Delta pi+/- ------------     << 431   // ------------ Delta pi+/- ------------ 
435   // determine daughters                          432   // determine daughters
436   if (iIso3 == +1) {                              433   if (iIso3 == +1) {
437     daughterDelta = "delta0";                  << 434     daughterDelta  = "delta0";
438     if (!fAnti) {                                 435     if (!fAnti) {
439       daughterPi = "pi+";                         436       daughterPi = "pi+";
440     }                                          << 437     } else {
441     else {                                     << 
442       daughterPi = "pi-";                         438       daughterPi = "pi-";
443     }                                             439     }
444     r = br / 6.0;                              << 440     r = br/6.0;
445   }                                            << 441   } else {
446   else {                                       << 442     daughterDelta  = "delta+";
447     daughterDelta = "delta+";                  << 
448     if (!fAnti) {                                 443     if (!fAnti) {
449       daughterPi = "pi-";                         444       daughterPi = "pi-";
450     }                                          << 445     } else {
451     else {                                     << 
452       daughterPi = "pi+";                         446       daughterPi = "pi+";
453     }                                             447     }
454     r = br / 6.0;                              << 448     r = br/6.0;
455   }                                               449   }
456   if (fAnti) daughterDelta = "anti_" + daughte    450   if (fAnti) daughterDelta = "anti_" + daughterDelta;
457   // create decay channel  [parent    BR     #    451   // create decay channel  [parent    BR     #daughters]
458   mode = new G4PhaseSpaceDecayChannel(namePare << 452   mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
                                                   >> 453                                            daughterDelta,daughterPi);
459   // add decay table                              454   // add decay table
460   decayTable->Insert(mode);                       455   decayTable->Insert(mode);
461                                                   456 
462   // ------------ Delta pi+/- ------------     << 457   // ------------ Delta pi+/- ------------ 
463   // determine daughters                          458   // determine daughters
464   if (iIso3 == +1) {                              459   if (iIso3 == +1) {
465     daughterDelta = "delta++";                 << 460     daughterDelta  = "delta++";
466     if (!fAnti) {                                 461     if (!fAnti) {
467       daughterPi = "pi-";                         462       daughterPi = "pi-";
468     }                                          << 463     } else {
469     else {                                     << 
470       daughterPi = "pi+";                         464       daughterPi = "pi+";
471     }                                             465     }
472     r = br / 2.0;                              << 466     r = br/2.0;
473   }                                            << 467   } else {
474   else {                                       << 468     daughterDelta  = "delta-";
475     daughterDelta = "delta-";                  << 
476     if (!fAnti) {                                 469     if (!fAnti) {
477       daughterPi = "pi+";                         470       daughterPi = "pi+";
478     }                                          << 471     } else {
479     else {                                     << 
480       daughterPi = "pi-";                         472       daughterPi = "pi-";
481     }                                             473     }
482     r = br / 2.0;                              << 474     r = br/2.0;
483   }                                               475   }
484   if (fAnti) daughterDelta = "anti_" + daughte    476   if (fAnti) daughterDelta = "anti_" + daughterDelta;
485   // create decay channel  [parent    BR     #    477   // create decay channel  [parent    BR     #daughters]
486   mode = new G4PhaseSpaceDecayChannel(namePare << 478   mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
                                                   >> 479                                            daughterDelta,daughterPi);
487   // add decay table                              480   // add decay table
488   decayTable->Insert(mode);                       481   decayTable->Insert(mode);
489                                                   482 
490   // ------------ Delta pi0 ------------       << 483   // ------------ Delta pi0 ------------ 
491   // determine daughters                          484   // determine daughters
492   if (iIso3 == +1) {                              485   if (iIso3 == +1) {
493     daughterDelta = "delta+";                  << 486     daughterDelta  = "delta+";
494     daughterPi = "pi0";                           487     daughterPi = "pi0";
495     r = br / 3.0;                              << 488     r = br/3.0;
496   }                                            << 489   } else {
497   else {                                       << 490     daughterDelta  = "delta0";
498     daughterDelta = "delta0";                  << 
499     daughterPi = "pi0";                           491     daughterPi = "pi0";
500     r = br / 3.0;                              << 492     r = br/3.0;
501   }                                               493   }
502   if (fAnti) daughterDelta = "anti_" + daughte    494   if (fAnti) daughterDelta = "anti_" + daughterDelta;
503   // create decay channel  [parent    BR     #    495   // create decay channel  [parent    BR     #daughters]
504   mode = new G4PhaseSpaceDecayChannel(namePare << 496   mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
                                                   >> 497                                            daughterDelta,daughterPi);
505   // add decay table                              498   // add decay table
506   decayTable->Insert(mode);                       499   decayTable->Insert(mode);
507                                                   500 
                                                   >> 501 
508   return decayTable;                              502   return decayTable;
509 }                                                 503 }
510                                                   504 
511 G4DecayTable* G4ExcitedNucleonConstructor::Add << 505 G4DecayTable*  G4ExcitedNucleonConstructor::AddLambdaKMode( 
512                                                << 506             G4DecayTable* decayTable, const G4String& nameParent,
513                                                << 507             G4double br, G4int iIso3, G4bool fAnti)
514 {                                                 508 {
515   G4VDecayChannel* mode;                          509   G4VDecayChannel* mode;
516                                                   510 
517   G4String lambda = "lambda";                     511   G4String lambda = "lambda";
518   G4String daughterK;                             512   G4String daughterK;
519                                                   513 
520   // ------------ N pi0 ------------           << 514   // ------------ N pi0 ------------ 
521   // determine daughters                          515   // determine daughters
522   if (iIso3 == +1) {                              516   if (iIso3 == +1) {
523     if (!fAnti) {                                 517     if (!fAnti) {
524       daughterK = "kaon+";                        518       daughterK = "kaon+";
525     }                                          << 519     } else {
526     else {                                     << 
527       daughterK = "kaon-";                        520       daughterK = "kaon-";
528     }                                             521     }
529   }                                            << 522   } else {
530   else {                                       << 
531     if (!fAnti) {                                 523     if (!fAnti) {
532       daughterK = "kaon0";                        524       daughterK = "kaon0";
533     }                                          << 525     } else {
534     else {                                     << 
535       daughterK = "anti_kaon0";                   526       daughterK = "anti_kaon0";
536     }                                             527     }
537   }                                               528   }
538   if (fAnti) lambda = "anti_" + lambda;           529   if (fAnti) lambda = "anti_" + lambda;
539   // create decay channel  [parent    BR     #    530   // create decay channel  [parent    BR     #daughters]
540   mode = new G4PhaseSpaceDecayChannel(namePare << 531   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
                                                   >> 532                                            lambda, daughterK);
541   // add decay table                              533   // add decay table
542   decayTable->Insert(mode);                       534   decayTable->Insert(mode);
543                                                   535 
544   return decayTable;                              536   return decayTable;
545 }                                                 537 }
546                                                   538 
547 // clang-format off                            << 
548                                                   539 
549 // PDG2005                                     << 
550 //  N(2090) is renamed to N(2080)              << 
551 //   but keep unchanged temporalily Apr 06     << 
552 //                                             << 
553 // -> PDG2023: N(2090) is removed by S.Okada 4 << 
554                                                   540 
555 const char* G4ExcitedNucleonConstructor::name[    541 const char* G4ExcitedNucleonConstructor::name[] = {
556    "N(1440)", "N(1520)", "N(1535)", "N(1650)",    542    "N(1440)", "N(1520)", "N(1535)", "N(1650)", "N(1675)",
557    "N(1680)", "N(1700)", "N(1710)", "N(1720)", << 543    "N(1680)", "N(1700)", "N(1710)", "N(1720)", "N(1900)", 
558    "N(1990)", "N(2090)", "N(2190)", "N(2220)",    544    "N(1990)", "N(2090)", "N(2190)", "N(2220)", "N(2250)"
559 };                                                545 };
560                                                   546 
561 const G4double G4ExcitedNucleonConstructor::ma    547 const G4double G4ExcitedNucleonConstructor::mass[] = {
562   1.440*GeV, 1.515*GeV, 1.535*GeV, 1.650*GeV,  << 548   1.440*GeV, 1.515*GeV, 1.550*GeV, 1.650*GeV,  1.675*GeV, 
563   1.685*GeV, 1.720*GeV, 1.710*GeV, 1.720*GeV,  << 549   1.680*GeV, 1.730*GeV, 1.710*GeV, 1.720*GeV,  1.850*GeV, 
564   2.020*GeV, 2.080*GeV, 2.180*GeV, 2.250*GeV,  << 550   1.950*GeV, 2.000*GeV, 2.150*GeV, 2.220*GeV,  2.250*GeV
565 };                                                551 };
566                                                   552 
567 const G4double G4ExcitedNucleonConstructor::wi    553 const G4double G4ExcitedNucleonConstructor::width[] = {
568   350.0*MeV, 110.0*MeV, 150.0*MeV, 125.0*MeV,  << 554   350.0*MeV, 120.0*MeV, 140.0*MeV, 150.0*MeV, 140.0*MeV,
569   120.0*MeV, 200.0*MeV, 140.0*MeV, 250.0*MeV,  << 555   120.0*MeV, 120.0*MeV, 110.0*MeV, 150.0*MeV, 500.0*MeV,
570   300.0*MeV, 350.0*MeV, 400.0*MeV, 400.0*MeV,  << 556   550.0*MeV, 350.0*MeV, 500.0*MeV, 550.0*MeV, 470.0*MeV
571 };                                                557 };
572                                                   558 
573 const G4int G4ExcitedNucleonConstructor::iSpin    559 const G4int G4ExcitedNucleonConstructor::iSpin[] = {
574     1,   3,   1,   1,   5,                        560     1,   3,   1,   1,   5,
575     5,   3,   1,   3,   3,                        561     5,   3,   1,   3,   3,
576     7,   3,   7,   9,   9                         562     7,   3,   7,   9,   9
577 };                                                563 };
578                                                   564 
579 const G4int G4ExcitedNucleonConstructor::iPari    565 const G4int G4ExcitedNucleonConstructor::iParity[] = {
580   +1,  -1,   -1,  -1,  -1,                        566   +1,  -1,   -1,  -1,  -1,
581   +1,  -1,   +1,  +1,  +1,                        567   +1,  -1,   +1,  +1,  +1,
582   +1,  -1,   +1,  -1,  -1                      << 568   +1,  -1,   +1,  -1,  -1 
583 };                                                569 };
584                                                   570 
585 const G4int G4ExcitedNucleonConstructor::encod    571 const G4int G4ExcitedNucleonConstructor::encodingOffset[] = {
586    10000,       0,  20000,  30000,       0,       572    10000,       0,  20000,  30000,       0,
587    10000,   20000,  40000,  30000,   40000,    << 573    10000,   20000,  40000,  30000,   40000, 
588    10000,   50000,      0,     0,   10000      << 574    10000,   50000,       0,     0,   10000
589 };                                                575 };
590                                                   576 
591 const G4double G4ExcitedNucleonConstructor::bR << 577 const G4double G4ExcitedNucleonConstructor::bRatio[ G4ExcitedNucleonConstructor::NStates ][ G4ExcitedNucleonConstructor::NumberOfDecayModes] = 
592 {                                                 578 {
593    {  0.0, 0.70,  0.0,  0.0,  0.0,  0.05,  0.2 << 579    {  0.0, 0.70,  0.0,  0.0,  0.0,  0.05,  0.25,  0.0,  0.0}, 
594    {  0.0, 0.60,  0.0,  0.0,  0.0,  0.15,  0.2 << 580    {  0.0, 0.60,  0.0,  0.0,  0.0,  0.15,  0.25,  0.0,  0.0}, 
595    {0.001, 0.55, 0.35,  0.0,  0.0,  0.05,  0.0    581    {0.001, 0.55, 0.35,  0.0,  0.0,  0.05,  0.00, 0.05,  0.0},
596    {  0.0, 0.65, 0.05,  0.0,  0.0,  0.05,  0.1    582    {  0.0, 0.65, 0.05,  0.0,  0.0,  0.05,  0.10, 0.05, 0.10},
597    {  0.0, 0.45,  0.0,  0.0,  0.0,  0.00,  0.5    583    {  0.0, 0.45,  0.0,  0.0,  0.0,  0.00,  0.55,  0.0,  0.0},
598    {  0.0, 0.65,  0.0,  0.0,  0.0,  0.20,  0.1    584    {  0.0, 0.65,  0.0,  0.0,  0.0,  0.20,  0.15,  0.0,  0.0},
599    {  0.0, 0.10, 0.05,  0.0, 0.05,  0.45,  0.3    585    {  0.0, 0.10, 0.05,  0.0, 0.05,  0.45,  0.35,  0.0,  0.0},
600    {  0.0, 0.15, 0.20,  0.0, 0.05,  0.20,  0.2    586    {  0.0, 0.15, 0.20,  0.0, 0.05,  0.20,  0.20, 0.10, 0.10},
601    {  0.0, 0.15, 0.00,  0.0, 0.25,  0.45,  0.1    587    {  0.0, 0.15, 0.00,  0.0, 0.25,  0.45,  0.10, 0.00, 0.05},
602    {  0.0, 0.35,  0.0, 0.55, 0.05,  0.00,  0.0    588    {  0.0, 0.35,  0.0, 0.55, 0.05,  0.00,  0.05,  0.0,  0.0},
603    {  0.0, 0.05,  0.0,  0.0, 0.15,  0.25,  0.3    589    {  0.0, 0.05,  0.0,  0.0, 0.15,  0.25,  0.30, 0.15, 0.10},
604    {  0.0, 0.60, 0.05,  0.0, 0.25,  0.05,  0.0    590    {  0.0, 0.60, 0.05,  0.0, 0.25,  0.05,  0.05,  0.0,  0.0},
605    {  0.0, 0.35,  0.0, 0.00, 0.30,  0.15,  0.1    591    {  0.0, 0.35,  0.0, 0.00, 0.30,  0.15,  0.15, 0.05,  0.0},
606    {  0.0, 0.35,  0.0,  0.0, 0.25,  0.20,  0.2    592    {  0.0, 0.35,  0.0,  0.0, 0.25,  0.20,  0.20,  0.0,  0.0},
607    {  0.0, 0.30,  0.0, 0.00, 0.25,  0.20,  0.2    593    {  0.0, 0.30,  0.0, 0.00, 0.25,  0.20,  0.20, 0.05,  0.0}
608 };                                                594 };
                                                   >> 595 
                                                   >> 596 
                                                   >> 597 
                                                   >> 598 
                                                   >> 599 
                                                   >> 600 
                                                   >> 601 
                                                   >> 602 
                                                   >> 603 
                                                   >> 604 
                                                   >> 605 
                                                   >> 606 
                                                   >> 607 
                                                   >> 608 
                                                   >> 609 
                                                   >> 610 
609                                                   611