Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ExcitedMesonConstructor.hh
Go to the documentation of this file.
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// This code plementation is the intellectual property of
27// the GEANT4 collaboration.
28//
29// By copying, distributing or modifying the Program (or any work
30// based on the Program) you indicate your acceptance of this statement,
31// and all its terms.
32//
33//
34//
35// --------------------------------------------------------------
36// GEANT 4 class implementation file
37//
38// History: first implementation, based on object model of
39// 10 oct 1998 H.Kurashige
40// ---------------------------------------------------------------
41#ifndef G4ExcitedMesonConstructor_h
42#define G4ExcitedMesonConstructor_h 1
43
44#include "globals.hh"
45#include "G4ios.hh"
46class G4DecayTable;
47
49{
50 //This class is a utility class for construction
51 //short lived particles
52
53 public:
54 G4ExcitedMesonConstructor(G4int nStates = 0, G4int isoSpin=0);
56
57 public:
58 virtual void Construct(G4int indexOfState = -1);
59
60 protected:
61 void ConstructMesons(G4int indexOfState, G4int indexOfType);
62
63 G4String GetName(G4int iIso3, G4int iState, G4int idxType);
65 G4int GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType);
66 G4int GetQuarkContents(G4int iQ, G4int iIso3, G4int iType);
67
68 public:
69 enum { NMultiplets = 10 };
70 protected:
71 enum {
72 N11P1 = 0, N13P0 = 1, N13P1 = 2, N13P2 = 3,
73 N11D2 = 4, N13D1 = 5, N13D3 = 6,
74 N21S0 = 7, N23S1 = 8, N23P2 = 9
75 };
76
77 public:
78 enum { NMesonTypes = 5 };
79 protected:
80 enum { TPi=0, TEta=1, TEtaPrime=2, TK=3, TAntiK=4 };
81
82 protected:
86
87 G4bool Exist(G4int idxState, G4int idxType);
88 G4double GetCharge(G4int iIsoSpin3, G4int idxType);
89 static const char* name[ NMultiplets ][ NMesonTypes ];
94 static const G4int iIsoSpin[ NMesonTypes ];
95 static const G4int iSpin[ NMultiplets ];
96 static const G4int iParity[ NMultiplets ];
100
101 public:
102 enum { NumberOfDecayModes = 19 };
103 protected:
104 enum { MPiGamma = 0, MRhoGamma=1, M2Pi=2, MPiRho=3,
105 M3Pi= 4, MPiEta=5, M4Pi=6, MKKStar=7,
107 M2Eta=12, M2K=13, M2KPi=14, MPiOmega=15,
108 MPiF2=16, MPiF0=17, MPiA2=18 };
109 enum { MKPi = 0, MKStarPi=1, MKRho=2, MKOmega=3,
111
112
114
116 G4int , G4int, G4int);
117
119 G4double br, G4int iIso3, G4int iType);
121 G4double br, G4int iIso3, G4int iType);
123 G4double br, G4int iIso3, G4int iType);
125 G4double br, G4int iIso3, G4int iType);
127 G4double br, G4int iIso3, G4int iType);
129 G4double br, G4int iIso3, G4int iType);
131 G4double br, G4int iIso3, G4int iType);
133 G4double br, G4int iIso3,G4int iIso);
135 G4double br, G4int iIso3, G4int iIso);
137 G4double br, G4int iIso3, G4int iIso);
139 G4double br, G4int iIso3, G4int iIso);
141 G4double br, G4int iIso3, G4int iIso);
143 G4double br, G4int iIso3, G4int iIso);
145 G4double br, G4int iIso3, G4int iIso);
147 G4double br, G4int iIso3, G4int iIso);
149 G4double br, G4int iIso3, G4int iIso);
151 G4double br, G4int iIso3, G4int iIso);
153 G4double br, G4int iIso3, G4int iIso);
155 G4double br, G4int iIso3, G4int iIso);
157 G4double br, G4int iIso3, G4int iIso);
159 G4double br, G4int iIso3, G4int iIso);
161 G4double br, G4int iIso3, G4int iIso);
163 G4double br, G4int iIso3, G4int iIso);
165 G4double br, G4int iIso3, G4int iIso);
167 G4double br, G4int iIso3, G4int iIso);
169 G4double br, G4int iIso3, G4int iIso);
170
171
172
173};
174
175
176inline
178 G4int iState,
179 G4int iType)
180{
181 G4String particle = name[iState][iType];
182 if (iType == TPi) {
183 if ( iIso3 == +2 ){
184 particle += "+";
185 } else if ( iIso3 == -2 ){
186 particle += "-";
187 } else {
188 particle += "0";
189 }
190 } else if (iType == TK) {
191 if ( iIso3 == +1 ){
192 particle += "+";
193 } else if ( iIso3 == -1 ){
194 particle += "0";
195 }
196 } else if (iType == TAntiK) {
197 if ( iIso3 == +1 ){
198 particle += "0";
199 particle = "anti_" + particle;
200 } else if ( iIso3 == -1 ){
201 particle += "-";
202 }
203 }
204 return particle;
205}
206
207#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
G4DecayTable * Add3PiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddKRhoMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
static const G4int iChargeConjugation[NMultiplets]
static const G4double mass[NMultiplets][NMesonTypes]
G4DecayTable * AddPiF0Mode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddPiA2Mode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddKStarPiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
static const G4double width[NMultiplets][NMesonTypes]
static const G4int iSpin[NMultiplets]
static const G4double massKdiff[NMultiplets]
G4DecayTable * AddKOmegaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
G4int GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType)
G4String GetName(G4int iIso3, G4int iState, G4int idxType)
G4DecayTable * Add2KPiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * Add2PiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddKTwoPiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
G4DecayTable * CreateDecayTable(const G4String &, G4int, G4int, G4int)
G4int GetQuarkContents(G4int iQ, G4int iIso3, G4int iType)
static const G4int encodingOffset[NMultiplets]
G4DecayTable * AddPiOmegaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddPiF2Mode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
static const G4double widthKdiff[NMultiplets]
void ConstructMesons(G4int indexOfState, G4int indexOfType)
G4DecayTable * AddKPiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
G4double GetCharge(G4int iIsoSpin3)
G4DecayTable * AddPiEtaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddKStar2PiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
G4DecayTable * AddKEtaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iType)
G4DecayTable * AddRhoEtaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * Add2PiOmegaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * Add2PiEtaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * Add2PiRhoMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddRhoGammaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * Add4PiMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
static const G4int iIsoSpin[NMesonTypes]
static const char * name[NMultiplets][NMesonTypes]
virtual void Construct(G4int indexOfState=-1)
static const G4int iParity[NMultiplets]
G4DecayTable * Add2EtaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
static const G4int iGParity[NMultiplets][NMesonTypes]
static const G4double bRatio[NMultiplets][NMesonTypes][NumberOfDecayModes]
G4DecayTable * AddPiGammaMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * Add2KMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4bool Exist(G4int idxState, G4int idxType)
G4DecayTable * AddKKStarMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)
G4DecayTable * AddPiRhoMode(G4DecayTable *table, const G4String &name, G4double br, G4int iIso3, G4int iIso)