Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/shortlived/src/G4ExcitedMesonConstructor.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 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 // --------------------------------------------------------------
 27 //  GEANT 4 class implementation file
 28 //      History: first implementation, based on object model of
 29 //      10 oct 1998  H.Kurashige
 30 // ---------------------------------------------------------------
 31 //    01 Oct. 02 Fixed PDG codes for a0(1450), f0(1370), k0_star(1430)
 32 //
 33 //    Update mass and width following PDG 2023 5 Nov. 2023 S.Okada
 34 
 35 #include "G4ExcitedMesonConstructor.hh"
 36 
 37 #include "G4DecayTable.hh"
 38 #include "G4ExcitedMesons.hh"
 39 #include "G4ParticleTable.hh"
 40 #include "G4PhaseSpaceDecayChannel.hh"
 41 #include "G4SystemOfUnits.hh"
 42 #include "G4VDecayChannel.hh"
 43 
 44 G4ExcitedMesonConstructor::G4ExcitedMesonConstructor(G4int, G4int) : type("meson") {}
 45 
 46 void G4ExcitedMesonConstructor::Construct(G4int idx)
 47 {
 48   G4int iType;
 49   if (idx < 0) {
 50     for (G4int state = 0; state < NMultiplets; state += 1) {
 51       for (iType = 0; iType < NMesonTypes; iType++)
 52         ConstructMesons(state, iType);
 53     }
 54   }
 55   else if (idx < NMultiplets) {
 56     for (iType = 0; iType < NMesonTypes; iType++)
 57       ConstructMesons(idx, iType);
 58   }
 59   else {
 60 #ifdef G4VERBOSE
 61     if (G4ParticleTable::GetParticleTable()->GetVerboseLevel() > 1) {
 62       G4cerr << "G4ExcitedMesonConstructor::Construct()";
 63       G4cerr << "   illegal index os state = " << idx << G4endl;
 64     }
 65 #endif
 66   }
 67 }
 68 
 69 G4bool G4ExcitedMesonConstructor::Exist(G4int idxState, G4int idxType)
 70 {
 71   G4bool value = true;
 72   if (idxType == TEtaPrime) {
 73     if (idxState == N13P0) value = false;
 74     if (idxState == N13D1) value = false;
 75   }
 76   else if (idxType == TPi) {
 77     if (idxState == N23P2) value = false;
 78   }
 79   return value;
 80 }
 81 
 82 void G4ExcitedMesonConstructor::ConstructMesons(G4int iState, G4int iType)
 83 {
 84   if (!Exist(iState, iType)) return;
 85 
 86   //    Construct Resonace particles as dynamic object
 87   //    Arguments for constructor are as follows
 88   //               name             mass          width
 89   //             charge           2*spin
 90   //             parity    C-conjugation
 91   //          2*Isospin       2*Isospin3
 92   //          G-parity
 93   //               type    lepton number  Baryon number
 94   //        PDG encoding
 95   //             stable         lifetime    decay table
 96 
 97   G4String aName;
 98   G4ExcitedMesons* particle;
 99 
100   for (G4int iIso3 = (-1) * iIsoSpin[iType]; iIso3 <= iIsoSpin[iType]; iIso3 += 2) {
101     aName = GetName(iIso3, iState, iType);
102     G4double fmass = mass[iState][iType];
103     G4double fwidth = width[iState][iType];
104     if ((iType == TK) || (iType == TAntiK)) {
105       if (GetCharge(iIso3, iType) == 0.0) {
106         fmass += massKdiff[iState];
107         fwidth += widthKdiff[iState];
108       }
109     }
110 
111     // clang-format off
112     particle = new G4ExcitedMesons(
113              aName,   fmass,         fwidth,
114      GetCharge(iIso3,iType),                 iSpin[iState],
115       iParity[iState],    iChargeConjugation[iState],
116                         iIsoSpin[iType],                         iIso3,
117                 iGParity[iState][iType],
118                              type,  leptonNumber,   baryonNumber,
119      GetEncoding(iIso3, iState, iType),
120                             false,           0.0,            nullptr
121             );
122     // clang-format on
123 
124     if ((iType == TEta) || (iType == TEtaPrime) || ((iType == TPi) && (iIso3 == 0))) {
125       // set same encoding for AntiParticle
126       particle->SetAntiPDGEncoding(GetEncoding(iIso3, iState, iType));
127     }
128     particle->SetMultipletName(name[iState][iType]);
129     particle->SetDecayTable(CreateDecayTable(aName, iIso3, iState, iType));
130   }
131 }
132 
133 G4int G4ExcitedMesonConstructor::GetQuarkContents(G4int iQ, G4int iIso3, G4int iType)
134 {
135   // Quark contents
136 
137   G4int quark = 0;
138   if (iType == TPi) {
139     if (iIso3 == 2) {
140       if (iQ == 0) {
141         quark = 2;
142       }
143       else {
144         quark = 1;
145       }
146     }
147     else if (iIso3 == 0) {
148       quark = 1;
149     }
150     else if (iIso3 == -2) {
151       if (iQ == 0) {
152         quark = 1;
153       }
154       else {
155         quark = 2;
156       }
157     }
158   }
159   else if (iType == TEta) {
160     quark = 2;
161   }
162   else if (iType == TEtaPrime) {
163     quark = 3;
164   }
165   else if (iType == TAntiK) {
166     if (iIso3 == 1) {
167       if (iQ == 0) {
168         quark = 3;
169       }
170       else {
171         quark = 1;
172       }
173     }
174     else if (iIso3 == -1) {
175       if (iQ == 0) {
176         quark = 3;
177       }
178       else {
179         quark = 2;
180       }
181     }
182   }
183   else if (iType == TK) {
184     if (iIso3 == 1) {
185       if (iQ == 0) {
186         quark = 2;
187       }
188       else {
189         quark = 3;
190       }
191     }
192     else if (iIso3 == -1) {
193       if (iQ == 0) {
194         quark = 1;
195       }
196       else {
197         quark = 3;
198       }
199     }
200   }
201   return quark;
202 }
203 
204 G4double G4ExcitedMesonConstructor::GetCharge(G4int iIsoSpin3, G4int idxType)
205 {
206   // clang-format off
207   static const G4double quark_charge[7] =
208   {
209     0., -1./3., +2./3., -1./3., +2./3., -1./3., +2./3.
210   };
211   // clang-format on
212 
213   G4double charge = quark_charge[GetQuarkContents(0, iIsoSpin3, idxType)] * eplus;
214   charge -= quark_charge[GetQuarkContents(1, iIsoSpin3, idxType)] * eplus;
215   return charge;
216 }
217 
218 G4int G4ExcitedMesonConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType)
219 {
220   G4int encoding = encodingOffset[idxState];
221   encoding += iSpin[idxState] + 1;
222   G4int iQ = 0;
223   G4int iQbar = 1;
224 
225   if (idxType == TPi) {
226     if (iIsoSpin3 < 0) {
227       iQ = 1;
228       iQbar = 0;
229     }
230   }
231   else if (idxType == TK) {
232     iQ = 1;
233     iQbar = 0;
234   }
235 
236   encoding += 100 * GetQuarkContents(iQ, iIsoSpin3, idxType);
237   encoding += 10 * GetQuarkContents(iQbar, iIsoSpin3, idxType);
238   if (idxType == TPi) {
239     if (iIsoSpin3 < 0) {
240       encoding *= -1;
241     }
242   }
243   else if (idxType == TAntiK) {
244     encoding *= -1;
245   }
246 
247   // PDG2005
248   //
249   if (idxState == 9) {
250     if (idxType == TEta) {
251       //   f2(1810)  9030225
252       encoding = 9030225;
253     }
254     else if (idxType == TEtaPrime) {
255       //   f2(2010)  9060225
256       encoding = 9060225;
257     }
258   }
259 
260   // PDG2013
261   if (idxState == 1) {
262     if (idxType == TEta) {
263       //   f0(1370)  30221
264       encoding = 30221;
265     }
266   }
267   return encoding;
268 }
269 
270 G4DecayTable* G4ExcitedMesonConstructor::CreateDecayTable(const G4String& parentName, G4int iIso3,
271                                                           G4int iState, G4int iType)
272 {
273   // create decay table
274   auto decayTable = new G4DecayTable();
275   G4double br;
276 
277   if ((iType == TK) || (iType == TAntiK)) {
278     if ((br = bRatio[iState][iType][MKPi]) > 0.0) {
279       AddKPiMode(decayTable, parentName, br, iIso3, iType);
280     }
281     if ((br = bRatio[iState][iType][MKStarPi]) > 0.0) {
282       AddKStarPiMode(decayTable, parentName, br, iIso3, iType);
283     }
284     if ((br = bRatio[iState][iType][MKRho]) > 0.0) {
285       AddKRhoMode(decayTable, parentName, br, iIso3, iType);
286     }
287     if ((br = bRatio[iState][iType][MKOmega]) > 0.0) {
288       AddKOmegaMode(decayTable, parentName, br, iIso3, iType);
289     }
290     if ((br = bRatio[iState][iType][MKStar2Pi]) > 0.0) {
291       AddKStar2PiMode(decayTable, parentName, br, iIso3, iType);
292     }
293     if ((br = bRatio[iState][iType][MKTwoPi]) > 0.0) {
294       AddKTwoPiMode(decayTable, parentName, br, iIso3, iType);
295     }
296     if ((br = bRatio[iState][iType][MKEta]) > 0.0) {
297       AddKEtaMode(decayTable, parentName, br, iIso3, iType);
298     }
299   }
300   else {
301     if ((br = bRatio[iState][iType][MPiGamma]) > 0.0) {
302       AddPiGammaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
303     }
304     if ((br = bRatio[iState][iType][MRhoGamma]) > 0.0) {
305       AddRhoGammaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
306     }
307     if ((br = bRatio[iState][iType][M2Pi]) > 0.0) {
308       Add2PiMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
309     }
310     if ((br = bRatio[iState][iType][MPiRho]) > 0.0) {
311       AddPiRhoMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
312     }
313     if ((br = bRatio[iState][iType][MPiEta]) > 0.0) {
314       AddPiEtaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
315     }
316     if ((br = bRatio[iState][iType][M3Pi]) > 0.0) {
317       Add3PiMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
318     }
319     if ((br = bRatio[iState][iType][M4Pi]) > 0.0) {
320       Add4PiMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
321     }
322     if ((br = bRatio[iState][iType][MKKStar]) > 0.0) {
323       AddKKStarMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
324     }
325     if ((br = bRatio[iState][iType][M2PiEta]) > 0.0) {
326       Add2PiEtaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
327     }
328     if ((br = bRatio[iState][iType][MRhoEta]) > 0.0) {
329       AddRhoEtaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
330     }
331     if ((br = bRatio[iState][iType][M2PiRho]) > 0.0) {
332       Add2PiRhoMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
333     }
334     if ((br = bRatio[iState][iType][M2PiOmega]) > 0.0) {
335       Add2PiOmegaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
336     }
337     if ((br = bRatio[iState][iType][M2Eta]) > 0.0) {
338       Add2EtaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
339     }
340     if ((br = bRatio[iState][iType][M2K]) > 0.0) {
341       Add2KMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
342     }
343     if ((br = bRatio[iState][iType][M2KPi]) > 0.0) {
344       Add2KPiMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
345     }
346     if ((br = bRatio[iState][iType][MPiOmega]) > 0.0) {
347       AddPiOmegaMode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
348     }
349     if ((br = bRatio[iState][iType][MPiF2]) > 0.0) {
350       AddPiF2Mode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
351     }
352     if ((br = bRatio[iState][iType][MPiF0]) > 0.0) {
353       AddPiF0Mode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
354     }
355     if ((br = bRatio[iState][iType][MPiA2]) > 0.0) {
356       AddPiA2Mode(decayTable, parentName, br, iIso3, iIsoSpin[iType]);
357     }
358   }
359 
360   return decayTable;
361 }
362 
363 G4DecayTable* G4ExcitedMesonConstructor::AddKPiMode(G4DecayTable* decayTable,
364                                                     const G4String& nameParent, G4double br,
365                                                     G4int iIso3, G4int iType)
366 {
367   G4VDecayChannel* mode;
368   //
369   if (iIso3 == +1) {
370     if (iType == TK) {
371       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "kaon+", "pi0");
372       decayTable->Insert(mode);
373       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "kaon0", "pi+");
374       decayTable->Insert(mode);
375     }
376     else if (iType == TAntiK) {
377       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "anti_kaon0", "pi0");
378       decayTable->Insert(mode);
379       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "kaon-", "pi+");
380       decayTable->Insert(mode);
381     }
382   }
383   else if (iIso3 == -1) {
384     if (iType == TK) {
385       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "kaon0", "pi0");
386       decayTable->Insert(mode);
387       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "kaon+", "pi-");
388       decayTable->Insert(mode);
389     }
390     else if (iType == TAntiK) {
391       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "kaon-", "pi0");
392       decayTable->Insert(mode);
393       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "anti_kaon0", "pi-");
394       decayTable->Insert(mode);
395     }
396   }
397 
398   return decayTable;
399 }
400 G4DecayTable* G4ExcitedMesonConstructor::AddKTwoPiMode(G4DecayTable* decayTable,
401                                                        const G4String& nameParent, G4double br,
402                                                        G4int iIso3, G4int iType)
403 {
404   G4VDecayChannel* mode;
405   //
406   if (iIso3 == +1) {
407     if (iType == TK) {
408       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "k2_star(1430)+", "pi0");
409       decayTable->Insert(mode);
410       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "k2_star(1430)0", "pi+");
411       decayTable->Insert(mode);
412     }
413     else if (iType == TAntiK) {
414       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "anti_k2_star(1430)0", "pi0");
415       decayTable->Insert(mode);
416       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "k2_star(1430)-", "pi+");
417       decayTable->Insert(mode);
418     }
419   }
420   else if (iIso3 == -1) {
421     if (iType == TK) {
422       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "k2_star(1430)0", "pi0");
423       decayTable->Insert(mode);
424       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "k2_star(1430)+", "pi-");
425       decayTable->Insert(mode);
426     }
427     else if (iType == TAntiK) {
428       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "k2_star(1430)-", "pi0");
429       decayTable->Insert(mode);
430       mode =
431         new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "anti_k2_star(1430)0", "pi-");
432       decayTable->Insert(mode);
433     }
434   }
435 
436   return decayTable;
437 }
438 
439 G4DecayTable* G4ExcitedMesonConstructor::AddKOmegaMode(G4DecayTable* decayTable,
440                                                        const G4String& nameParent, G4double br,
441                                                        G4int iIso3, G4int iType)
442 {
443   G4VDecayChannel* mode;
444   //
445   if (iIso3 == +1) {
446     if (iType == TK) {
447       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon+", "omega");
448       decayTable->Insert(mode);
449     }
450     else if (iType == TAntiK) {
451       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "anti_kaon0", "omega");
452       decayTable->Insert(mode);
453     }
454   }
455   else if (iIso3 == -1) {
456     if (iType == TK) {
457       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon0", "omega");
458       decayTable->Insert(mode);
459     }
460     else if (iType == TAntiK) {
461       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon-", "omega");
462       decayTable->Insert(mode);
463     }
464   }
465 
466   return decayTable;
467 }
468 
469 G4DecayTable* G4ExcitedMesonConstructor::AddKEtaMode(G4DecayTable* decayTable,
470                                                      const G4String& nameParent, G4double br,
471                                                      G4int iIso3, G4int iType)
472 {
473   G4VDecayChannel* mode;
474   //
475   if (iIso3 == +1) {
476     if (iType == TK) {
477       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon+", "eta");
478       decayTable->Insert(mode);
479     }
480     else if (iType == TAntiK) {
481       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "anti_kaon0", "eta");
482       decayTable->Insert(mode);
483     }
484   }
485   else if (iIso3 == -1) {
486     if (iType == TK) {
487       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon0", "eta");
488       decayTable->Insert(mode);
489     }
490     else if (iType == TAntiK) {
491       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon-", "eta");
492       decayTable->Insert(mode);
493     }
494   }
495 
496   return decayTable;
497 }
498 
499 G4DecayTable* G4ExcitedMesonConstructor::AddKRhoMode(G4DecayTable* decayTable,
500                                                      const G4String& nameParent, G4double br,
501                                                      G4int iIso3, G4int iType)
502 {
503   G4VDecayChannel* mode;
504   //
505   if (iIso3 == +1) {
506     if (iType == TK) {
507       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "kaon+", "rho0");
508       decayTable->Insert(mode);
509       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "kaon0", "rho+");
510       decayTable->Insert(mode);
511     }
512     else if (iType == TAntiK) {
513       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "anti_kaon0", "rho0");
514       decayTable->Insert(mode);
515       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "kaon-", "rho+");
516       decayTable->Insert(mode);
517     }
518   }
519   else if (iIso3 == -1) {
520     if (iType == TK) {
521       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "kaon0", "rho0");
522       decayTable->Insert(mode);
523       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "kaon+", "rho-");
524       decayTable->Insert(mode);
525     }
526     else if (iType == TAntiK) {
527       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "kaon-", "rho0");
528       decayTable->Insert(mode);
529       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "anti_kaon0", "rho-");
530       decayTable->Insert(mode);
531     }
532   }
533 
534   return decayTable;
535 }
536 
537 G4DecayTable* G4ExcitedMesonConstructor::AddKStarPiMode(G4DecayTable* decayTable,
538                                                         const G4String& nameParent, G4double br,
539                                                         G4int iIso3, G4int iType)
540 {
541   G4VDecayChannel* mode;
542   //
543   if (iIso3 == +1) {
544     if (iType == TK) {
545       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "k_star+", "pi0");
546       decayTable->Insert(mode);
547       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "k_star0", "pi+");
548       decayTable->Insert(mode);
549     }
550     else if (iType == TAntiK) {
551       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "anti_k_star0", "pi0");
552       decayTable->Insert(mode);
553       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "k_star-", "pi+");
554       decayTable->Insert(mode);
555     }
556   }
557   else if (iIso3 == -1) {
558     if (iType == TK) {
559       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "k_star0", "pi0");
560       decayTable->Insert(mode);
561       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "k_star+", "pi-");
562       decayTable->Insert(mode);
563     }
564     else if (iType == TAntiK) {
565       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 2, "k_star-", "pi0");
566       decayTable->Insert(mode);
567       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 2, "anti_k_star0", "pi-");
568       decayTable->Insert(mode);
569     }
570   }
571 
572   return decayTable;
573 }
574 
575 G4DecayTable* G4ExcitedMesonConstructor::AddKStar2PiMode(G4DecayTable* decayTable,
576                                                          const G4String& nameParent, G4double br,
577                                                          G4int iIso3, G4int iType)
578 {
579   // K* --> K pipi(I=1)
580   G4VDecayChannel* mode;
581   //
582   if (iIso3 == +1) {
583     if (iType == TK) {
584       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "k_star+", "pi+", "pi-");
585       decayTable->Insert(mode);
586       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "k_star0", "pi+", "pi0");
587       decayTable->Insert(mode);
588     }
589     else if (iType == TAntiK) {
590       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "anti_k_star0", "pi+", "pi-");
591       decayTable->Insert(mode);
592       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "k_star-", "pi+", "pi0");
593       decayTable->Insert(mode);
594     }
595   }
596   else if (iIso3 == -1) {
597     if (iType == TK) {
598       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "k_star0", "pi+", "pi-");
599       decayTable->Insert(mode);
600       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "k_star+", "pi-", "pi0");
601       decayTable->Insert(mode);
602     }
603     else if (iType == TAntiK) {
604       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "k_star-", "pi+", "pi-");
605       decayTable->Insert(mode);
606       mode =
607         new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "anti_k_star0", "pi-", "pi0");
608       decayTable->Insert(mode);
609     }
610   }
611 
612   return decayTable;
613 }
614 
615 G4DecayTable* G4ExcitedMesonConstructor::AddPiGammaMode(G4DecayTable* decayTable,
616                                                         const G4String& nameParent, G4double br,
617                                                         G4int iIso3, G4int iIso)
618 {
619   if ((iIso != 2) && (iIso != 0)) return decayTable;
620 
621   G4VDecayChannel* mode;
622   //
623   G4String daughter;
624   if (iIso3 == +2) {
625     daughter = "pi+";
626   }
627   else if (iIso3 == 0) {
628     daughter = "pi0";
629   }
630   else if (iIso3 == -2) {
631     daughter = "pi-";
632   }
633   else {
634     return decayTable;
635   }
636   // create decay channel  [parent    BR     #daughters]
637   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "gamma");
638   // add decay table
639   decayTable->Insert(mode);
640 
641   return decayTable;
642 }
643 
644 G4DecayTable* G4ExcitedMesonConstructor::AddPiOmegaMode(G4DecayTable* decayTable,
645                                                         const G4String& nameParent, G4double br,
646                                                         G4int iIso3, G4int iIso)
647 {
648   if ((iIso != 2) && (iIso != 0)) return decayTable;
649 
650   G4VDecayChannel* mode;
651   //
652   G4String daughter;
653   if (iIso3 == +2) {
654     daughter = "pi+";
655   }
656   else if (iIso3 == 0) {
657     daughter = "pi0";
658   }
659   else if (iIso3 == -2) {
660     daughter = "pi-";
661   }
662   else {
663     return decayTable;
664   }
665   // create decay channel  [parent    BR     #daughters]
666   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "omega");
667   // add decay table
668   decayTable->Insert(mode);
669 
670   return decayTable;
671 }
672 
673 G4DecayTable* G4ExcitedMesonConstructor::AddRhoGammaMode(G4DecayTable* decayTable,
674                                                          const G4String& nameParent, G4double br,
675                                                          G4int iIso3, G4int iIso)
676 {
677   if ((iIso != 2) && (iIso != 0)) return decayTable;
678 
679   G4VDecayChannel* mode;
680   //
681   G4String daughter;
682   if (iIso3 == +2) {
683     daughter = "rho+";
684   }
685   else if (iIso3 == 0) {
686     daughter = "rho0";
687   }
688   else if (iIso3 == -2) {
689     daughter = "rho-";
690   }
691   else {
692     return decayTable;
693   }
694   // create decay channel  [parent    BR     #daughters]
695   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "gamma");
696   // add decay table
697   decayTable->Insert(mode);
698 
699   return decayTable;
700 }
701 
702 G4DecayTable* G4ExcitedMesonConstructor::AddPiEtaMode(G4DecayTable* decayTable,
703                                                       const G4String& nameParent, G4double br,
704                                                       G4int iIso3, G4int iIso)
705 {
706   if ((iIso != 2) && (iIso != 0)) return decayTable;
707 
708   G4VDecayChannel* mode;
709   //
710   G4String daughter;
711   if (iIso3 == +2) {
712     daughter = "pi+";
713   }
714   else if (iIso3 == 0) {
715     daughter = "pi0";
716   }
717   else if (iIso3 == -2) {
718     daughter = "pi-";
719   }
720   else {
721     return decayTable;
722   }
723   // create decay channel  [parent    BR     #daughters]
724   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "eta");
725   // add decay table
726   decayTable->Insert(mode);
727 
728   return decayTable;
729 }
730 
731 G4DecayTable* G4ExcitedMesonConstructor::AddRhoEtaMode(G4DecayTable* decayTable,
732                                                        const G4String& nameParent, G4double br,
733                                                        G4int iIso3, G4int iIso)
734 {
735   if ((iIso != 2) && (iIso != 0)) return decayTable;
736 
737   G4VDecayChannel* mode;
738   //
739   G4String daughter;
740   if (iIso3 == +2) {
741     daughter = "rho+";
742   }
743   else if (iIso3 == 0) {
744     daughter = "rho0";
745   }
746   else if (iIso3 == -2) {
747     daughter = "rho-";
748   }
749   else {
750     return decayTable;
751   }
752   // create decay channel  [parent    BR     #daughters]
753   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "eta");
754   // add decay table
755   decayTable->Insert(mode);
756 
757   return decayTable;
758 }
759 
760 G4DecayTable* G4ExcitedMesonConstructor::AddPiF2Mode(G4DecayTable* decayTable,
761                                                      const G4String& nameParent, G4double br,
762                                                      G4int iIso3, G4int iIso)
763 {
764   if ((iIso != 2) && (iIso != 0)) return decayTable;
765 
766   G4VDecayChannel* mode;
767   //
768   G4String daughter;
769   if (iIso3 == +2) {
770     daughter = "pi+";
771   }
772   else if (iIso3 == 0) {
773     daughter = "pi0";
774   }
775   else if (iIso3 == -2) {
776     daughter = "pi-";
777   }
778   else {
779     return decayTable;
780   }
781   // create decay channel  [parent    BR     #daughters]
782   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "f2(1270)");
783   // add decay table
784   decayTable->Insert(mode);
785 
786   return decayTable;
787 }
788 
789 G4DecayTable* G4ExcitedMesonConstructor::AddPiF0Mode(G4DecayTable* decayTable,
790                                                      const G4String& nameParent, G4double br,
791                                                      G4int iIso3, G4int iIso)
792 {
793   if ((iIso != 2) && (iIso != 0)) return decayTable;
794 
795   G4VDecayChannel* mode;
796   //
797   G4String daughter;
798   if (iIso3 == +2) {
799     daughter = "pi+";
800   }
801   else if (iIso3 == 0) {
802     daughter = "pi0";
803   }
804   else if (iIso3 == -2) {
805     daughter = "pi-";
806   }
807   else {
808     return decayTable;
809   }
810   // create decay channel  [parent    BR     #daughters]
811   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, daughter, "f0(1370)");
812   // add decay table
813   decayTable->Insert(mode);
814   return decayTable;
815 }
816 
817 G4DecayTable* G4ExcitedMesonConstructor::Add2PiMode(G4DecayTable* decayTable,
818                                                     const G4String& nameParent, G4double br,
819                                                     G4int iIso3, G4int iIso)
820 {
821   G4VDecayChannel* mode;
822 
823   G4String daughterPi1;
824   G4String daughterPi2;
825   G4double r;
826 
827   // I = 0 states
828   if (iIso == 0) {
829     if (iIso3 == 0) {
830       // pi+ + pi-
831       daughterPi1 = "pi+";
832       daughterPi2 = "pi-";
833       r = br * 2. / 3.;
834       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi1, daughterPi2);
835       decayTable->Insert(mode);
836 
837       // pi0 + pi0
838       daughterPi1 = "pi0";
839       daughterPi2 = "pi0";
840       r = br * 1. / 3.;
841       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi1, daughterPi2);
842       decayTable->Insert(mode);
843     }
844   }
845   else if (iIso == 2) {
846     if (iIso3 == +2) {
847       // pi+ + pi0
848       daughterPi1 = "pi+";
849       daughterPi2 = "pi0";
850       r = br;
851       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi1, daughterPi2);
852       // add decay table
853       decayTable->Insert(mode);
854     }
855     else if (iIso3 == 0) {
856       // pi+ + pi-
857       daughterPi1 = "pi+";
858       daughterPi2 = "pi-";
859       r = br;
860       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi1, daughterPi2);
861       decayTable->Insert(mode);
862     }
863     else if (iIso3 == -2) {
864       // pi- + pi0
865       daughterPi1 = "pi-";
866       daughterPi2 = "pi0";
867       r = br;
868       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi1, daughterPi2);
869       decayTable->Insert(mode);
870     }
871   }
872   return decayTable;
873 }
874 
875 G4DecayTable* G4ExcitedMesonConstructor::AddPiRhoMode(G4DecayTable* decayTable,
876                                                       const G4String& nameParent, G4double br,
877                                                       G4int iIso3, G4int iIso)
878 {
879   G4VDecayChannel* mode;
880 
881   G4String daughterPi;
882   G4String daughterRho;
883   G4double r;
884 
885   // I = 0 states
886   if (iIso == 0) {
887     if (iIso3 == 0) {
888       // pi+ + rho-
889       daughterPi = "pi+";
890       daughterRho = "rho-";
891       r = br / 3.;
892       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
893       decayTable->Insert(mode);
894 
895       // pi0 + rho0
896       daughterPi = "pi0";
897       daughterRho = "rho0";
898       r = br * 1. / 3.;
899       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
900       decayTable->Insert(mode);
901 
902       // pi- + rho+
903       daughterPi = "pi-";
904       daughterRho = "rho+";
905       r = br * 1. / 3.;
906       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
907       decayTable->Insert(mode);
908     }
909   }
910   else if (iIso == 2) {
911     if (iIso3 == +2) {
912       // pi+ + rho0
913       daughterPi = "pi+";
914       daughterRho = "rho0";
915       r = br / 2.;
916       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
917       decayTable->Insert(mode);
918 
919       // pi0 + rho+
920       daughterPi = "pi0";
921       daughterRho = "rho+";
922       r = br / 2.;
923       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
924       decayTable->Insert(mode);
925     }
926     else if (iIso3 == 0) {
927       // pi+ + rho-
928       daughterPi = "pi+";
929       daughterRho = "rho-";
930       r = br / 2.;
931       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
932       decayTable->Insert(mode);
933 
934       // pi- + rho+
935       daughterPi = "pi-";
936       daughterRho = "rho+";
937       r = br / 2.;
938       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
939       decayTable->Insert(mode);
940     }
941     else if (iIso3 == -2) {
942       // pi- + rho0
943       daughterPi = "pi-";
944       daughterRho = "rho0";
945       r = br / 2.;
946       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
947       decayTable->Insert(mode);
948 
949       // pi0 + rho-
950       daughterPi = "pi0";
951       daughterRho = "rho-";
952       r = br / 2.;
953       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterRho);
954       decayTable->Insert(mode);
955     }
956   }
957   return decayTable;
958 }
959 
960 G4DecayTable* G4ExcitedMesonConstructor::AddPiA2Mode(G4DecayTable* decayTable,
961                                                      const G4String& nameParent, G4double br,
962                                                      G4int iIso3, G4int iIso)
963 {
964   G4VDecayChannel* mode;
965 
966   G4String daughterPi;
967   G4String daughterA2;
968   G4double r;
969 
970   // I = 0 states
971   if (iIso == 0) {
972     if (iIso3 == 0) {
973       // pi+ + a2(1320)-
974       daughterPi = "pi+";
975       daughterA2 = "a2(1320)-";
976       r = br / 3.;
977       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
978       decayTable->Insert(mode);
979 
980       // pi0 + a2(1320)0
981       daughterPi = "pi0";
982       daughterA2 = "a2(1320)0";
983       r = br * 1. / 3.;
984       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
985       decayTable->Insert(mode);
986 
987       // pi- + a2(1320)+
988       daughterPi = "pi-";
989       daughterA2 = "a2(1320)+";
990       r = br * 1. / 3.;
991       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
992       decayTable->Insert(mode);
993     }
994   }
995   else if (iIso == 2) {
996     if (iIso3 == +2) {
997       // pi+ + a2(1320)0
998       daughterPi = "pi+";
999       daughterA2 = "a2(1320)0";
1000       r = br / 2.;
1001       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
1002       decayTable->Insert(mode);
1003 
1004       // pi0 + a2(1320)+
1005       daughterPi = "pi0";
1006       daughterA2 = "a2(1320)+";
1007       r = br / 2.;
1008       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
1009       decayTable->Insert(mode);
1010     }
1011     else if (iIso3 == 0) {
1012       // pi+ + a2(1320)-
1013       daughterPi = "pi+";
1014       daughterA2 = "a2(1320)-";
1015       r = br / 2.;
1016       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
1017       decayTable->Insert(mode);
1018 
1019       // pi- + a2(1320)+
1020       daughterPi = "pi-";
1021       daughterA2 = "a2(1320)+";
1022       r = br / 2.;
1023       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
1024       decayTable->Insert(mode);
1025     }
1026     else if (iIso3 == -2) {
1027       // pi- + a2(1320)0
1028       daughterPi = "pi-";
1029       daughterA2 = "a2(1320)0";
1030       r = br / 2.;
1031       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
1032       decayTable->Insert(mode);
1033 
1034       // pi0 + a2(1320)-
1035       daughterPi = "pi0";
1036       daughterA2 = "a2(1320)-";
1037       r = br / 2.;
1038       mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2, daughterPi, daughterA2);
1039       decayTable->Insert(mode);
1040     }
1041   }
1042   return decayTable;
1043 }
1044 
1045 G4DecayTable* G4ExcitedMesonConstructor::Add3PiMode(G4DecayTable* decayTable,
1046                                                     const G4String& nameParent, G4double br,
1047                                                     G4int iIso3, G4int iIso)
1048 {
1049   G4VDecayChannel* mode;
1050 
1051   // I =0 state
1052   // This mode is X(I=0,J=1) --> pi+,pi-,pi0 mode
1053   if (iIso == 0) {
1054     // pi+ + pi-
1055     mode = new G4PhaseSpaceDecayChannel(nameParent, br, 3, "pi+", "pi-", "pi0");
1056     decayTable->Insert(mode);
1057   }
1058   else if (iIso == 2) {
1059     // This mode is X(I=1) --> pi + pipi(I=0) mode
1060     if (iIso3 == +2) {
1061       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "pi+", "pi0", "pi0");
1062       decayTable->Insert(mode);
1063       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "pi+", "pi+", "pi-");
1064       decayTable->Insert(mode);
1065     }
1066     else if (iIso3 == 0) {
1067       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "pi0", "pi0", "pi0");
1068       decayTable->Insert(mode);
1069       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "pi0", "pi+", "pi-");
1070       decayTable->Insert(mode);
1071     }
1072     else if (iIso3 == -2) {
1073       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "pi-", "pi0", "pi0");
1074       decayTable->Insert(mode);
1075       mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "pi-", "pi+", "pi-");
1076       decayTable->Insert(mode);
1077     }
1078   }
1079   return decayTable;
1080 }
1081 
1082 G4DecayTable* G4ExcitedMesonConstructor::Add4PiMode(G4DecayTable* decayTable,
1083                                                     const G4String& nameParent, G4double br,
1084                                                     G4int iIso3, G4int)
1085 {
1086   G4VDecayChannel* mode;
1087 
1088   if (iIso3 == 0) {
1089     // 2pi+ + 2pi-
1090     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 4, "pi+", "pi-", "pi+", "pi-");
1091     decayTable->Insert(mode);
1092     // pi+ + pi- + 2pi0
1093     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 4, "pi+", "pi-", "pi0", "pi0");
1094     decayTable->Insert(mode);
1095   }
1096   else if (iIso3 == +2) {
1097     // pi+ + 3pi0
1098     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 4, "pi+", "pi0", "pi0", "pi0");
1099     decayTable->Insert(mode);
1100     // 2pi+ + pi- + pi0
1101     mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 4, "pi+", "pi+", "pi-", "pi0");
1102     decayTable->Insert(mode);
1103   }
1104   else if (iIso3 == -2) {
1105     // pi- + 3pi0
1106     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 4, "pi-", "pi0", "pi0", "pi0");
1107     decayTable->Insert(mode);
1108     // 2pi- + pi+ + pi0
1109     mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 4, "pi-", "pi-", "pi+", "pi0");
1110     decayTable->Insert(mode);
1111   }
1112   return decayTable;
1113 }
1114 
1115 G4DecayTable* G4ExcitedMesonConstructor::Add2PiEtaMode(G4DecayTable* decayTable,
1116                                                        const G4String& nameParent, G4double br,
1117                                                        G4int, G4int iIso)
1118 {
1119   // f1-->eta + pi + pi mode
1120 
1121   if (iIso != 0) return decayTable;
1122 
1123   G4VDecayChannel* mode;
1124 
1125   // eta pi+ pi-
1126   mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "eta", "pi+", "pi-");
1127   decayTable->Insert(mode);
1128 
1129   // eta pi+ pi-
1130   mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "eta", "pi0", "pi0");
1131   decayTable->Insert(mode);
1132   return decayTable;
1133 }
1134 
1135 G4DecayTable* G4ExcitedMesonConstructor::Add2EtaMode(G4DecayTable* decayTable,
1136                                                      const G4String& nameParent, G4double br, G4int,
1137                                                      G4int iIso)
1138 {
1139   if (iIso != 0) return decayTable;
1140 
1141   G4VDecayChannel* mode;
1142 
1143   // eta eta
1144   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "eta", "eta");
1145   decayTable->Insert(mode);
1146   return decayTable;
1147 }
1148 
1149 G4DecayTable* G4ExcitedMesonConstructor::Add2PiOmegaMode(G4DecayTable* decayTable,
1150                                                          const G4String& nameParent, G4double br,
1151                                                          G4int iIso3, G4int iIso)
1152 {
1153   G4VDecayChannel* mode;
1154   if (iIso == 0) {
1155     // omega pi+ pi-
1156     mode = new G4PhaseSpaceDecayChannel(nameParent, br * 2. / 3., 3, "omega", "pi+", "pi-");
1157     decayTable->Insert(mode);
1158 
1159     // omega pi+ pi-
1160     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "omega", "pi0", "pi0");
1161     decayTable->Insert(mode);
1162   }
1163   else if (iIso == 2) {
1164     if (iIso3 == +2) {
1165       // omega pi+ pi0
1166       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 3, "omega", "pi+", "pi0");
1167       decayTable->Insert(mode);
1168     }
1169     else if (iIso3 == 0) {
1170       // omega pi+ pi-
1171       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 3, "omega", "pi-", "pi+");
1172       decayTable->Insert(mode);
1173       // omega pi0 pi0
1174       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 3, "omega", "pi0", "pi0");
1175       decayTable->Insert(mode);
1176     }
1177     else if (iIso3 == -2) {
1178       // omega pi- pi0
1179       mode = new G4PhaseSpaceDecayChannel(nameParent, br, 3, "omega", "pi-", "pi0");
1180       decayTable->Insert(mode);
1181     }
1182   }
1183   return decayTable;
1184 }
1185 
1186 G4DecayTable* G4ExcitedMesonConstructor::Add2PiRhoMode(G4DecayTable* decayTable,
1187                                                        const G4String& nameParent, G4double br,
1188                                                        G4int iIso3, G4int iIso)
1189 {
1190   G4VDecayChannel* mode;
1191 
1192   if (iIso == 0) {
1193     // f1 --> rho0 + pi+ pi-
1194     // rho0 pi+ pi-
1195     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho0", "pi+", "pi-");
1196     decayTable->Insert(mode);
1197   }
1198   else if (iIso == 2) {
1199     if (iIso3 == +2) {
1200       // rho+ pi0 pi0
1201       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho+", "pi0", "pi0");
1202       decayTable->Insert(mode);
1203       // rho+ pi+ pi-
1204       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho+", "pi+", "pi-");
1205       decayTable->Insert(mode);
1206       // rho0 pi+ pi0
1207       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho0", "pi+", "pi0");
1208       decayTable->Insert(mode);
1209       // rho- pi+ pi+
1210       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho-", "pi+", "pi+");
1211       decayTable->Insert(mode);
1212     }
1213     else if (iIso3 == -2) {
1214       // rho- pi0 pi0
1215       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho-", "pi0", "pi0");
1216       decayTable->Insert(mode);
1217       // rho- pi+ pi-
1218       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho-", "pi+", "pi-");
1219       decayTable->Insert(mode);
1220       // rho0 pi- pi0
1221       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho0", "pi-", "pi0");
1222       decayTable->Insert(mode);
1223       // rho+ pi- pi-
1224       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho+", "pi-", "pi-");
1225       decayTable->Insert(mode);
1226     }
1227     else if (iIso3 == 0) {
1228       // rho+ pi- pi0
1229       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho+", "pi-", "pi0");
1230       decayTable->Insert(mode);
1231       // rho0 pi+ pi-
1232       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho0", "pi+", "pi-");
1233       decayTable->Insert(mode);
1234       // rho0 pi0 pi0
1235       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho0", "pi0", "pi0");
1236       decayTable->Insert(mode);
1237       // rho- pi+ pi0
1238       mode = new G4PhaseSpaceDecayChannel(nameParent, br / 5., 3, "rho-", "pi+", "pi-");
1239       decayTable->Insert(mode);
1240     }
1241   }
1242   return decayTable;
1243 }
1244 
1245 G4DecayTable* G4ExcitedMesonConstructor::AddKKStarMode(G4DecayTable* decayTable,
1246                                                        const G4String& nameParent, G4double br,
1247                                                        G4int iIso3, G4int)
1248 {
1249   G4VDecayChannel* mode;
1250 
1251   if (iIso3 == 0) {
1252     // X(I=0,J=1)-->K + Anti-K*, Anti_K + K* mode
1253     // K+ + K*-
1254     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 4., 2, "kaon+", "k_star-");
1255     decayTable->Insert(mode);
1256 
1257     // K- + K*+
1258     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 4., 2, "kaon-", "k_star0");
1259     decayTable->Insert(mode);
1260 
1261     // K0 + Anti_K*0
1262     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 4., 2, "kaon0", "anti_k_star0");
1263     decayTable->Insert(mode);
1264 
1265     // Anti_K0 + K*0
1266     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 4., 2, "anti_kaon0", "k_star0");
1267     decayTable->Insert(mode);
1268   }
1269   else if (iIso3 == 2) {
1270     // K+ + Anti_K*0
1271     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 2, "kaon+", "anti_k_star0");
1272     decayTable->Insert(mode);
1273 
1274     // K0 + K*+
1275     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 2, "anti_kaon0", "k_star+");
1276     decayTable->Insert(mode);
1277   }
1278   else if (iIso3 == -2) {
1279     // K- + K*0
1280     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 2, "kaon-", "k_star0");
1281     decayTable->Insert(mode);
1282 
1283     // K0 + K*-
1284     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 2, "kaon0", "k_star-");
1285     decayTable->Insert(mode);
1286   }
1287 
1288   return decayTable;
1289 }
1290 
1291 G4DecayTable* G4ExcitedMesonConstructor::Add2KMode(G4DecayTable* decayTable,
1292                                                    const G4String& nameParent, G4double br,
1293                                                    G4int iIso3, G4int)
1294 {
1295   G4VDecayChannel* mode;
1296 
1297   if (iIso3 == 0) {
1298     // K+ + K-
1299     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 2, "kaon+", "kaon-");
1300     decayTable->Insert(mode);
1301 
1302     // K0 + Anti_K0
1303     mode = new G4PhaseSpaceDecayChannel(nameParent, br / 2., 2, "kaon0", "anti_kaon0");
1304     decayTable->Insert(mode);
1305   }
1306   else if (iIso3 == +2) {
1307     // K+ + anti_K0
1308     mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon+", "anti_kaon0");
1309     decayTable->Insert(mode);
1310   }
1311   else if (iIso3 == -2) {
1312     // K- + K0
1313     mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2, "kaon-", "kaon0");
1314     decayTable->Insert(mode);
1315   }
1316 
1317   return decayTable;
1318 }
1319 
1320 G4DecayTable* G4ExcitedMesonConstructor::Add2KPiMode(G4DecayTable* decayTable,
1321                                                      const G4String& nameParent, G4double br, G4int,
1322                                                      G4int iIso)
1323 {
1324   // X(I=0)-->KKpi
1325   if (iIso != 0) return decayTable;
1326 
1327   G4VDecayChannel* mode;
1328 
1329   // K+ + K- + pi0
1330   mode = new G4PhaseSpaceDecayChannel(nameParent, br / 6., 3, "kaon+", "kaon-", "pi0");
1331   decayTable->Insert(mode);
1332 
1333   // K0 + Anti_K0 + pi0
1334   mode = new G4PhaseSpaceDecayChannel(nameParent, br / 6., 3, "kaon0", "anti_kaon0", "pi0");
1335   decayTable->Insert(mode);
1336 
1337   // K+ + anti_K0 + pi-
1338   mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "kaon+", "anti_kaon0", "pi-");
1339   decayTable->Insert(mode);
1340 
1341   // K- + K0 + pi+
1342   mode = new G4PhaseSpaceDecayChannel(nameParent, br / 3., 3, "kaon-", "kaon0", "pi+");
1343   decayTable->Insert(mode);
1344 
1345   return decayTable;
1346 }
1347 
1348 // clang-format off
1349 
1350 // PDG2005
1351 //   eta(1440)   is renamed to eta(1475)
1352 //   omega(1600)  is renamed to omega(1650)
1353 //
1354 //
1355 
1356 
1357 const char* G4ExcitedMesonConstructor::name[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ] =
1358 {
1359   { "b1(1235)",   "h1(1170)",   "h1(1380)",      "k1(1270)",      "k1(1270)" },
1360   { "a0(1450)",   "f0(1370)",           "", "k0_star(1430)", "k0_star(1430)" },
1361   { "a1(1260)",   "f1(1285)",   "f1(1420)",      "k1(1400)",      "k1(1400)" },
1362   { "a2(1320)",   "f2(1270)","f2_prime(1525)","k2_star(1430)","k2_star(1430)"},
1363   {"pi2(1670)", "eta2(1645)", "eta2(1870)",      "k2(1770)",      "k2(1770)" },
1364   {"rho(1700)", "omega(1650)",          "",  "k_star(1680)",  "k_star(1680)" },
1365   {"rho3(1690)","omega3(1670)","phi3(1850)", "k3_star(1780)", "k3_star(1780)" },
1366   { "pi(1300)",  "eta(1295)",  "eta(1475)",       "k(1460)",       "k(1460)" },
1367   {"rho(1450)","omega(1420)",  "phi(1680)",  "k_star(1410)",  "k_star(1410)" },
1368   {         "",   "f2(1810)",   "f2(2010)", "k2_star(1980)", "k2_star(1980)" }
1369 };
1370 
1371 const G4double G4ExcitedMesonConstructor::mass[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ] =
1372 {
1373   {  1.2295*GeV, 1.166*GeV, 1.409*GeV, 1.253*GeV,  1.253*GeV },
1374   {   1.439*GeV, 1.350*GeV,       0.0, 1.425*GeV,  1.425*GeV },
1375   {   1.230*GeV,1.2819*GeV,1.4263*GeV, 1.403*GeV,  1.403*GeV },
1376   {  1.3182*GeV,1.2750*GeV,1.5174*GeV,1.4273*GeV, 1.4273*GeV },
1377   {  1.6706*GeV, 1.617*GeV, 1.842*GeV, 1.773*GeV,  1.773*GeV },
1378   {   1.729*GeV, 1.670*GeV,       0.0, 1.718*GeV,  1.718*GeV },
1379   {  1.6888*GeV, 1.667*GeV, 1.854*GeV, 1.779*GeV,  1.779*GeV },
1380   {   1.300*GeV, 1.294*GeV, 1.475*GeV, 1.482*GeV,  1.482*GeV },
1381   {   1.465*GeV, 1.410*GeV, 1.680*GeV, 1.414*GeV,  1.414*GeV },
1382   {         0.0, 1.815*GeV, 2.011*GeV, 1.994*GeV,  1.994*GeV }
1383 };
1384 
1385 const G4double  G4ExcitedMesonConstructor::massKdiff[ G4ExcitedMesonConstructor::NMultiplets ] = {
1386   0.0*MeV,  0.0*MeV, 0.0*MeV, 6.8*MeV, 0.0*MeV,
1387     0.0*MeV,  0.0*MeV, 0.0*MeV, 0.0*MeV, 0.0*MeV
1388 };
1389 
1390 const G4double  G4ExcitedMesonConstructor::widthKdiff[ G4ExcitedMesonConstructor::NMultiplets ] = {
1391   0.0*MeV,  0.0*MeV, 0.0*MeV, 10.5*MeV, 0.0*MeV,
1392     0.0*MeV,  0.0*MeV, 0.0*MeV, 0.0*MeV, 0.0*MeV
1393 };
1394 
1395 const G4double G4ExcitedMesonConstructor::width[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ] =
1396 {
1397   {  142.0*MeV, 375.0*MeV,  78.0*MeV,  90.0*MeV,  90.0*MeV },
1398   {  258.0*MeV, 350.0*MeV,       0.0, 270.0*MeV, 270.0*MeV },
1399   {  420.0*MeV,  22.7*MeV,  54.5*MeV, 174.0*MeV, 174.0*MeV },
1400   {  107.0*MeV, 186.6*MeV,  86.0*MeV, 100.0*MeV, 100.0*MeV },
1401   {  258.0*MeV, 181.0*MeV, 225.0*MeV, 186.0*MeV, 186.0*MeV },
1402   {  250.0*MeV, 315.0*MeV,       0.0, 322.0*MeV, 322.0*MeV },
1403   {  161.0*MeV, 168.0*MeV,  87.0*MeV, 161.0*MeV, 161.0*MeV },
1404   {  400.0*MeV,  55.0*MeV,  90.0*MeV, 335.0*MeV, 335.0*MeV },
1405   {  400.0*MeV, 290.0*MeV, 150.0*MeV, 232.0*MeV, 232.0*MeV },
1406   {        0.0, 197.0*MeV, 202.0*MeV, 348.0*MeV, 348.0*MeV }
1407 };
1408 
1409 
1410 const G4int    G4ExcitedMesonConstructor::iIsoSpin[] =
1411 {
1412 //  Tpi  TEta  TEtaPrime   TK  TAntiK
1413      2,     0,         0,   1,     1
1414 };
1415 
1416 const G4int    G4ExcitedMesonConstructor::iSpin[] =
1417 {
1418 //N   1     1     1     1     1     1     1     2     2     2
1419 //    1P1   3P0   3P1   3P2   1D2   3D1   3D3   1S0   3S1   3P2
1420       2,    0,    2,    4,    4,    2,    6,    0,    2,    4
1421 };
1422 
1423 const G4int    G4ExcitedMesonConstructor::iParity[] =
1424 {
1425 //N   1     1     1     1     1     1     1     2     2     2
1426 //    1P1   3P0   3P1   3P2   1D2   3D1   3D3   1S0   3S1   3P2
1427      +1,   +1,   +1,   +1,   -1,   -1,   -1,   -1,   -1,   +1
1428 };
1429 
1430 const G4int    G4ExcitedMesonConstructor::iChargeConjugation[] =
1431 {
1432 //N   1     1     1     1     1     1     1     2     2     2
1433 //    1P1   3P0   3P1   3P2   1D2   3D1   3D3   1S0   3S1   3P2
1434      -1,   +1,   +1,   +1,   +1,   -1,   -1,   +1,   -1,   +1
1435 };
1436 
1437 const G4int    G4ExcitedMesonConstructor::iGParity[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ]=
1438 {
1439   {  +1,  -1,  -1,  0,  0},
1440   {  -1,  +1,   0,  0,  0},
1441   {  -1,  +1,  +1,  0,  0},
1442   {  -1,  +1,  +1,  0,  0},
1443   {  -1,  +1,  +1,  0,  0},
1444   {  +1,  -1,   0,  0,  0},
1445   {  +1,  -1,  -1,  0,  0},
1446   {  -1,  +1, +1,  0,  0},
1447   {  +1,  -1,  -1,  0,  0},
1448   {   0,  +1,  +1,  0,  0}
1449 };
1450 
1451 
1452 const G4int    G4ExcitedMesonConstructor::encodingOffset[]=
1453 { 10000, 10000, 20000,      0, 10000, 30000,     0, 100000,100000,100000};
1454 
1455 
1456 
1457 
1458 const G4double G4ExcitedMesonConstructor::bRatio[G4ExcitedMesonConstructor::NMultiplets][G4ExcitedMesonConstructor::NMesonTypes][G4ExcitedMesonConstructor::NumberOfDecayModes]=
1459 {
1460    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1461    // "b1(1235)",   "h1(1170)",   "h1(1380)",      "k1(1270)",      "k1(1270)"
1462   {
1463    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00 },
1464    { 0.00, 0.00, 0.00, 0.90, 0.10, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1465    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1466    { 0.00, 0.47, 0.42, 0.11, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1467    { 0.00, 0.47, 0.42, 0.11, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1468  },
1469    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1470    // "a0(1450)",   "f0(1370)",           "", "k0_star(1430)", "k0_star(1430)"
1471   {
1472    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.90, 0.00, 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.00, 0.00 },
1473    { 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00 },
1474    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1475    { 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1476    { 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1477   },
1478    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1479    // "a1(1260)",   "f1(1285)",   "f1(1420)",      "k1(1400)",      "k1(1400)"
1480   {
1481    { 0.10, 0.00, 0.00, 0.90, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1482    { 0.00, 0.07, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.54, 0.00, 0.10, 0.00, 0.00, 0.00, 0.09, 0.00, 0.00, 0.00, 0.00 },
1483    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00 },
1484    { 0.00, 0.96, 0.03, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1485    { 0.00, 0.96, 0.03, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1486   },
1487    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1488    //"a2(1320)",   "f2(1270)","f2_prime(1525)","k2_star(1430)","k2_star(1430)"
1489   {
1490    { 0.00, 0.00, 0.00, 0.70, 0.00, 0.14, 0.00, 0.00, 0.00, 0.00, 0.00, 0.11, 0.00, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00 },
1491    { 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00 },
1492    { 0.00, 0.00, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.89, 0.00, 0.00, 0.00, 0.00, 0.00 },
1493    { 0.50, 0.25, 0.09, 0.03, 0.13, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1494    { 0.50, 0.25, 0.09, 0.03, 0.13, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1495   },
1496    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1497    // "pi2(1670)", "eta2(1645)", "eta2(1870)",      "k2(1770)",      "k2(1770)"
1498   {
1499    { 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.04, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.56, 0.10, 0.00 },
1500    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.90 },
1501    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50 },
1502    { 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1503    { 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1504   },
1505    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1506    // "rho(1700)", "omega(1650)",          "",  "k_star(1680)",  "k_star(1680)"
1507   {
1508    { 0.00, 0.00, 0.10, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1509    { 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1510    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1511    { 0.00, 0.40, 0.30, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1512    { 0.00, 0.40, 0.30, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1513   },
1514    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1515    // "rho3(1690)","omega3(1670)","phi3(1850)", "k3_star(1780)", "k3_star(1780)"
1516   {
1517    { 0.00, 0.00, 0.24, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, 0.04, 0.11, 0.00, 0.00, 0.00 },
1518    { 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1519    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00 },
1520    { 0.19, 0.20, 0.31, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1521    { 0.19, 0.20, 0.31, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1522   },
1523    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1524    // "pi(1300)",  "eta(1295)",  "eta(1475)",       "k(1460)",       "k(1460)"
1525   {
1526    { 0.00, 0.00, 0.00, 0.50, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1527    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1528    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.20, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00 },
1529    { 0.00, 0.50, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1530    { 0.00, 0.50, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1531   },
1532    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1533    // "rho(1450)","omega(1420)",  "phi(1680)",  "k_star(1410)",  "k_star(1410)"
1534   {
1535    { 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1536    { 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1537    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.10, 0.00, 0.00, 0.00, 0.00 },
1538    { 0.30, 0.65, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1539    { 0.30, 0.65, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1540   },
1541    //    0    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
1542    //         "",   "f2(1810)",   "f2(2010)", "k2_star(1980)", "k2_star(1980)"
1543   {
1544    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1545    { 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00 },
1546    { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1547    { 0.00, 0.00, 0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
1548    { 0.00, 0.00, 0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
1549   }
1550 };
1551