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