Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // ------------------------------------------- 27 // GEANT 4 class implementation file 28 // 29 // History: first implementation, based o 30 // 10 oct 1998 H.Kurashige 31 // ------------------------------------------- 32 #ifndef G4ExcitedMesonConstructor_h 33 #define G4ExcitedMesonConstructor_h 1 34 35 #include "globals.hh" 36 class G4DecayTable; 37 38 class G4ExcitedMesonConstructor 39 { 40 // This class is a utility class for const 41 // short lived particles 42 public: 43 enum 44 { 45 NMultiplets = 10 46 }; 47 48 enum 49 { 50 NMesonTypes = 5 51 }; 52 53 enum 54 { 55 NumberOfDecayModes = 19 56 }; 57 58 public: 59 G4ExcitedMesonConstructor(G4int nStates = 60 virtual ~G4ExcitedMesonConstructor() = def 61 62 virtual void Construct(G4int indexOfState 63 64 protected: 65 void ConstructMesons(G4int indexOfState, G 66 67 G4String GetName(G4int iIso3, G4int iState 68 G4double GetCharge(G4int iIsoSpin3); 69 G4int GetEncoding(G4int iIsoSpin3, G4int i 70 G4int GetQuarkContents(G4int iQ, G4int iIs 71 72 protected: 73 G4DecayTable* CreateDecayTable(const G4Str 74 75 G4DecayTable* AddKPiMode(G4DecayTable* tab 76 G4int iType); 77 G4DecayTable* AddKStarPiMode(G4DecayTable* 78 G4int iIso3, 79 G4DecayTable* AddKStar2PiMode(G4DecayTable 80 G4int iIso3, 81 G4DecayTable* AddKRhoMode(G4DecayTable* ta 82 G4int iType); 83 G4DecayTable* AddKTwoPiMode(G4DecayTable* 84 G4int iType); 85 G4DecayTable* AddKOmegaMode(G4DecayTable* 86 G4int iType); 87 G4DecayTable* AddKEtaMode(G4DecayTable* ta 88 G4int iType); 89 G4DecayTable* AddPiGammaMode(G4DecayTable* 90 G4int iIso3, 91 G4DecayTable* AddRhoGammaMode(G4DecayTable 92 G4int iIso3, 93 G4DecayTable* Add2PiMode(G4DecayTable* tab 94 G4int iIso); 95 G4DecayTable* AddPiRhoMode(G4DecayTable* t 96 G4int iIso); 97 G4DecayTable* AddPiEtaMode(G4DecayTable* t 98 G4int iIso); 99 G4DecayTable* AddPiF2Mode(G4DecayTable* ta 100 G4int iIso); 101 G4DecayTable* AddPiF0Mode(G4DecayTable* ta 102 G4int iIso); 103 G4DecayTable* AddPiA2Mode(G4DecayTable* ta 104 G4int iIso); 105 G4DecayTable* Add3PiMode(G4DecayTable* tab 106 G4int iIso); 107 G4DecayTable* Add4PiMode(G4DecayTable* tab 108 G4int iIso); 109 G4DecayTable* AddKKStarMode(G4DecayTable* 110 G4int iIso); 111 G4DecayTable* Add2PiEtaMode(G4DecayTable* 112 G4int iIso); 113 G4DecayTable* AddRhoEtaMode(G4DecayTable* 114 G4int iIso); 115 G4DecayTable* Add2PiRhoMode(G4DecayTable* 116 G4int iIso); 117 G4DecayTable* Add2PiOmegaMode(G4DecayTable 118 G4int iIso3, 119 G4DecayTable* AddPiOmegaMode(G4DecayTable* 120 G4int iIso3, 121 G4DecayTable* Add2EtaMode(G4DecayTable* ta 122 G4int iIso); 123 G4DecayTable* Add2KMode(G4DecayTable* tabl 124 G4int iIso); 125 G4DecayTable* Add2KPiMode(G4DecayTable* ta 126 G4int iIso); 127 128 G4bool Exist(G4int idxState, G4int idxType 129 G4double GetCharge(G4int iIsoSpin3, G4int 130 131 protected: 132 enum 133 { 134 N11P1 = 0, 135 N13P0 = 1, 136 N13P1 = 2, 137 N13P2 = 3, 138 N11D2 = 4, 139 N13D1 = 5, 140 N13D3 = 6, 141 N21S0 = 7, 142 N23S1 = 8, 143 N23P2 = 9 144 }; 145 146 enum 147 { 148 TPi = 0, 149 TEta = 1, 150 TEtaPrime = 2, 151 TK = 3, 152 TAntiK = 4 153 }; 154 155 const G4String type; 156 const G4int leptonNumber{0}; 157 const G4int baryonNumber{0}; 158 159 static const char* name[NMultiplets][NMeso 160 static const G4double mass[NMultiplets][NM 161 static const G4double massKdiff[NMultiplet 162 static const G4double width[NMultiplets][N 163 static const G4double widthKdiff[NMultiple 164 static const G4int iIsoSpin[NMesonTypes]; 165 static const G4int iSpin[NMultiplets]; 166 static const G4int iParity[NMultiplets]; 167 static const G4int iGParity[NMultiplets][N 168 static const G4int iChargeConjugation[NMul 169 static const G4int encodingOffset[NMultipl 170 171 enum 172 { 173 MPiGamma = 0, 174 MRhoGamma = 1, 175 M2Pi = 2, 176 MPiRho = 3, 177 M3Pi = 4, 178 MPiEta = 5, 179 M4Pi = 6, 180 MKKStar = 7, 181 M2PiEta = 8, 182 MRhoEta = 9, 183 M2PiRho = 10, 184 M2PiOmega = 11, 185 M2Eta = 12, 186 M2K = 13, 187 M2KPi = 14, 188 MPiOmega = 15, 189 MPiF2 = 16, 190 MPiF0 = 17, 191 MPiA2 = 18 192 }; 193 enum 194 { 195 MKPi = 0, 196 MKStarPi = 1, 197 MKRho = 2, 198 MKOmega = 3, 199 MKStar2Pi = 4, 200 MKTwoPi = 5, 201 MKEta = 6 202 }; 203 204 static const G4double bRatio[NMultiplets][ 205 }; 206 207 inline G4String G4ExcitedMesonConstructor::Get 208 { 209 G4String particle = name[iState][iType]; 210 if (iType == TPi) { 211 if (iIso3 == +2) { 212 particle += "+"; 213 } 214 else if (iIso3 == -2) { 215 particle += "-"; 216 } 217 else { 218 particle += "0"; 219 } 220 } 221 else if (iType == TK) { 222 if (iIso3 == +1) { 223 particle += "+"; 224 } 225 else if (iIso3 == -1) { 226 particle += "0"; 227 } 228 } 229 else if (iType == TAntiK) { 230 if (iIso3 == +1) { 231 particle += "0"; 232 particle = "anti_" + particle; 233 } 234 else if (iIso3 == -1) { 235 particle += "-"; 236 } 237 } 238 return particle; 239 } 240 241 #endif 242