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