Warning, file /include/Geant4/G4ExcitedMesonConstructor.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #ifndef G4ExcitedMesonConstructor_h
0033 #define G4ExcitedMesonConstructor_h 1
0034
0035 #include "globals.hh"
0036 class G4DecayTable;
0037
0038 class G4ExcitedMesonConstructor
0039 {
0040
0041
0042 public:
0043 enum
0044 {
0045 NMultiplets = 10
0046 };
0047
0048 enum
0049 {
0050 NMesonTypes = 5
0051 };
0052
0053 enum
0054 {
0055 NumberOfDecayModes = 19
0056 };
0057
0058 public:
0059 G4ExcitedMesonConstructor(G4int nStates = 0, G4int isoSpin = 0);
0060 virtual ~G4ExcitedMesonConstructor() = default;
0061
0062 virtual void Construct(G4int indexOfState = -1);
0063
0064 protected:
0065 void ConstructMesons(G4int indexOfState, G4int indexOfType);
0066
0067 G4String GetName(G4int iIso3, G4int iState, G4int idxType);
0068 G4double GetCharge(G4int iIsoSpin3);
0069 G4int GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType);
0070 G4int GetQuarkContents(G4int iQ, G4int iIso3, G4int iType);
0071
0072 protected:
0073 G4DecayTable* CreateDecayTable(const G4String&, G4int, G4int, G4int);
0074
0075 G4DecayTable* AddKPiMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0076 G4int iType);
0077 G4DecayTable* AddKStarPiMode(G4DecayTable* table, const G4String& name, G4double br,
0078 G4int iIso3, G4int iType);
0079 G4DecayTable* AddKStar2PiMode(G4DecayTable* table, const G4String& name, G4double br,
0080 G4int iIso3, G4int iType);
0081 G4DecayTable* AddKRhoMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0082 G4int iType);
0083 G4DecayTable* AddKTwoPiMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0084 G4int iType);
0085 G4DecayTable* AddKOmegaMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0086 G4int iType);
0087 G4DecayTable* AddKEtaMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0088 G4int iType);
0089 G4DecayTable* AddPiGammaMode(G4DecayTable* table, const G4String& name, G4double br,
0090 G4int iIso3, G4int iIso);
0091 G4DecayTable* AddRhoGammaMode(G4DecayTable* table, const G4String& name, G4double br,
0092 G4int iIso3, G4int iIso);
0093 G4DecayTable* Add2PiMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0094 G4int iIso);
0095 G4DecayTable* AddPiRhoMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0096 G4int iIso);
0097 G4DecayTable* AddPiEtaMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0098 G4int iIso);
0099 G4DecayTable* AddPiF2Mode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0100 G4int iIso);
0101 G4DecayTable* AddPiF0Mode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0102 G4int iIso);
0103 G4DecayTable* AddPiA2Mode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0104 G4int iIso);
0105 G4DecayTable* Add3PiMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0106 G4int iIso);
0107 G4DecayTable* Add4PiMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0108 G4int iIso);
0109 G4DecayTable* AddKKStarMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0110 G4int iIso);
0111 G4DecayTable* Add2PiEtaMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0112 G4int iIso);
0113 G4DecayTable* AddRhoEtaMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0114 G4int iIso);
0115 G4DecayTable* Add2PiRhoMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0116 G4int iIso);
0117 G4DecayTable* Add2PiOmegaMode(G4DecayTable* table, const G4String& name, G4double br,
0118 G4int iIso3, G4int iIso);
0119 G4DecayTable* AddPiOmegaMode(G4DecayTable* table, const G4String& name, G4double br,
0120 G4int iIso3, G4int iIso);
0121 G4DecayTable* Add2EtaMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0122 G4int iIso);
0123 G4DecayTable* Add2KMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0124 G4int iIso);
0125 G4DecayTable* Add2KPiMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0126 G4int iIso);
0127
0128 G4bool Exist(G4int idxState, G4int idxType);
0129 G4double GetCharge(G4int iIsoSpin3, G4int idxType);
0130
0131 protected:
0132 enum
0133 {
0134 N11P1 = 0,
0135 N13P0 = 1,
0136 N13P1 = 2,
0137 N13P2 = 3,
0138 N11D2 = 4,
0139 N13D1 = 5,
0140 N13D3 = 6,
0141 N21S0 = 7,
0142 N23S1 = 8,
0143 N23P2 = 9
0144 };
0145
0146 enum
0147 {
0148 TPi = 0,
0149 TEta = 1,
0150 TEtaPrime = 2,
0151 TK = 3,
0152 TAntiK = 4
0153 };
0154
0155 const G4String type;
0156 const G4int leptonNumber{0};
0157 const G4int baryonNumber{0};
0158
0159 static const char* name[NMultiplets][NMesonTypes];
0160 static const G4double mass[NMultiplets][NMesonTypes];
0161 static const G4double massKdiff[NMultiplets];
0162 static const G4double width[NMultiplets][NMesonTypes];
0163 static const G4double widthKdiff[NMultiplets];
0164 static const G4int iIsoSpin[NMesonTypes];
0165 static const G4int iSpin[NMultiplets];
0166 static const G4int iParity[NMultiplets];
0167 static const G4int iGParity[NMultiplets][NMesonTypes];
0168 static const G4int iChargeConjugation[NMultiplets];
0169 static const G4int encodingOffset[NMultiplets];
0170
0171 enum
0172 {
0173 MPiGamma = 0,
0174 MRhoGamma = 1,
0175 M2Pi = 2,
0176 MPiRho = 3,
0177 M3Pi = 4,
0178 MPiEta = 5,
0179 M4Pi = 6,
0180 MKKStar = 7,
0181 M2PiEta = 8,
0182 MRhoEta = 9,
0183 M2PiRho = 10,
0184 M2PiOmega = 11,
0185 M2Eta = 12,
0186 M2K = 13,
0187 M2KPi = 14,
0188 MPiOmega = 15,
0189 MPiF2 = 16,
0190 MPiF0 = 17,
0191 MPiA2 = 18
0192 };
0193 enum
0194 {
0195 MKPi = 0,
0196 MKStarPi = 1,
0197 MKRho = 2,
0198 MKOmega = 3,
0199 MKStar2Pi = 4,
0200 MKTwoPi = 5,
0201 MKEta = 6
0202 };
0203
0204 static const G4double bRatio[NMultiplets][NMesonTypes][NumberOfDecayModes];
0205 };
0206
0207 inline G4String G4ExcitedMesonConstructor::GetName(G4int iIso3, G4int iState, G4int iType)
0208 {
0209 G4String particle = name[iState][iType];
0210 if (iType == TPi) {
0211 if (iIso3 == +2) {
0212 particle += "+";
0213 }
0214 else if (iIso3 == -2) {
0215 particle += "-";
0216 }
0217 else {
0218 particle += "0";
0219 }
0220 }
0221 else if (iType == TK) {
0222 if (iIso3 == +1) {
0223 particle += "+";
0224 }
0225 else if (iIso3 == -1) {
0226 particle += "0";
0227 }
0228 }
0229 else if (iType == TAntiK) {
0230 if (iIso3 == +1) {
0231 particle += "0";
0232 particle = "anti_" + particle;
0233 }
0234 else if (iIso3 == -1) {
0235 particle += "-";
0236 }
0237 }
0238 return particle;
0239 }
0240
0241 #endif