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 #include "G4SPBaryon.hh" 26 #include "G4SPBaryon.hh" 27 #include "Randomize.hh" 27 #include "Randomize.hh" 28 #include "G4ParticleTable.hh" 28 #include "G4ParticleTable.hh" 29 29 30 // correcting numbers, HPW Dec 1999 30 // correcting numbers, HPW Dec 1999 31 31 32 G4int G4SPBaryon::FindQuark(G4int diQuark) con 32 G4int G4SPBaryon::FindQuark(G4int diQuark) const 33 { 33 { 34 G4double sum = GetProbability(diQuark); << 34 G4double sum = GetProbability(diQuark); 35 G4double random = G4UniformRand(); << 35 G4double random = G4UniformRand(); 36 G4double running = 0; << 36 G4double running = 0; 37 G4int Quark(0); << 37 G4int Quark(0); 38 typedef std::vector<G4SPPartonInfo *>::const << 38 typedef std::vector<G4SPPartonInfo *>::const_iterator iter; 39 iter i; << 39 iter i; 40 for (i = thePartonInfo.begin(); i!=theParton << 40 for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) 41 { << 41 { 42 if (std::abs((*i)->GetDiQuark()) == std::a << 42 if (std::abs((*i)->GetDiQuark()) == std::abs(diQuark)) 43 { << 43 { 44 running += (*i)->GetProbability(); << 44 running += (*i)->GetProbability(); 45 if (running/sum >= random) << 45 if (running/sum >= random) 46 { << 46 { 47 Quark = (*i)->GetQuark(); << 47 Quark = (*i)->GetQuark(); 48 break; << 48 break; 49 } << 49 } 50 } << 50 } 51 } << 51 } 52 return Quark; << 52 return Quark; 53 } 53 } 54 54 55 << 56 G4double G4SPBaryon::GetProbability(G4int diQu 55 G4double G4SPBaryon::GetProbability(G4int diQuark) const 57 { 56 { 58 G4double sum = 0; << 57 G4double sum = 0; 59 typedef std::vector<G4SPPartonInfo *>::const << 58 typedef std::vector<G4SPPartonInfo *>::const_iterator iter; 60 iter i; << 59 iter i; 61 for (i = thePartonInfo.begin(); i!=theParton << 60 for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) 62 { << 61 { 63 if (std::abs((*i)->GetDiQuark()) == std::a << 62 if (std::abs((*i)->GetDiQuark()) == std::abs(diQuark)) 64 { << 63 { 65 sum += (*i)->GetProbability(); << 64 sum += (*i)->GetProbability(); 66 } << 65 } 67 } << 66 } 68 return sum; << 67 return sum; 69 } 68 } 70 69 71 << 72 G4int G4SPBaryon:: 70 G4int G4SPBaryon:: 73 MatchDiQuarkAndGetQuark(const G4SPBaryon & aBa 71 MatchDiQuarkAndGetQuark(const G4SPBaryon & aBaryon, G4int & aDiQuark) const 74 { 72 { 75 G4int result=0; << 73 G4int result=0; 76 typedef std::vector<G4SPPartonInfo *>::const << 74 typedef std::vector<G4SPPartonInfo *>::const_iterator iter; 77 iter i; << 75 iter i; 78 G4double running = 0; << 76 G4double running = 0; 79 G4double total = 0; << 77 G4double total = 0; 80 for (i = thePartonInfo.begin(); i!=theParton << 78 for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) 81 { << 79 { 82 total += aBaryon.GetProbability((*i)->GetD << 80 total += aBaryon.GetProbability((*i)->GetDiQuark()); 83 } << 81 } 84 G4double random = G4UniformRand(); << 82 G4double random = G4UniformRand()*total; 85 for(i = thePartonInfo.begin(); i!=thePartonI << 83 for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) 86 { << 84 { 87 running += aBaryon.GetProbability((*i)->Ge << 85 running += aBaryon.GetProbability((*i)->GetDiQuark()); 88 if (random<running/total) << 86 if(random/total<running) 89 { << 87 { 90 result = (*i)->GetQuark(); // (diquark << 88 result = (*i)->GetQuark(); // (diquark annihilated) 91 aDiQuark = (*i)->GetDiQuark(); << 89 aDiQuark = (*i)->GetDiQuark(); 92 break; << 90 break; 93 } << 91 } 94 } << 92 } 95 return result; << 93 return result; 96 } 94 } 97 95 98 << 99 void G4SPBaryon:: 96 void G4SPBaryon:: 100 SampleQuarkAndDiquark(G4int & quark, G4int & d 97 SampleQuarkAndDiquark(G4int & quark, G4int & diQuark) const 101 { 98 { 102 typedef std::vector<G4SPPartonInfo *>::const << 99 typedef std::vector<G4SPPartonInfo *>::const_iterator iter; 103 << 100 G4double random = G4UniformRand(); 104 G4double random = G4UniformRand(); << 101 G4double sum = 0; 105 G4double sum = 0; << 102 iter i; 106 iter i; << 103 for(i=thePartonInfo.begin() ; i!=thePartonInfo.end(); i++) 107 << 104 { 108 for (i=thePartonInfo.begin() ; i!=thePartonI << 105 sum += (*i)->GetProbability(); 109 { << 106 if (sum > random) 110 sum += (*i)->GetProbability(); << 107 { 111 if (sum > random) << 108 if (theDefinition->GetPDGEncoding() < 0) 112 { << 109 { 113 if (theDefinition->GetPDGEncoding() < 0) << 110 quark = (*i)->GetDiQuark(); 114 { << 111 diQuark = (*i)->GetQuark(); 115 quark = (*i)->GetDiQuark(); << 112 } 116 diQuark = (*i)->GetQuark(); << 113 else 117 } << 114 { 118 else << 115 quark = (*i)->GetQuark(); 119 { << 116 diQuark = (*i)->GetDiQuark(); 120 quark = (*i)->GetQuark(); << 117 } 121 diQuark = (*i)->GetDiQuark(); << 118 break; 122 } << 119 } 123 break; << 120 } 124 } << 125 } << 126 } 121 } 127 122 128 << 129 void G4SPBaryon:: 123 void G4SPBaryon:: 130 FindDiquark(G4int quark, G4int & diQuark) cons 124 FindDiquark(G4int quark, G4int & diQuark) const 131 { 125 { 132 typedef std::vector<G4SPPartonInfo *>::const << 126 typedef std::vector<G4SPPartonInfo *>::const_iterator iter; 133 G4double sum = 0; << 127 G4double sum = 0; 134 iter i; << 128 iter i; 135 for (i=thePartonInfo.begin() ; i!=thePartonI << 129 for(i=thePartonInfo.begin() ; i!=thePartonInfo.end(); i++) 136 { << 130 { 137 if (std::abs((*i)->GetQuark()) == std::abs << 131 if (std::abs((*i)->GetQuark()) == std::abs(quark)) 138 { << 132 { 139 sum += (*i)->GetProbability(); << 133 sum += (*i)->GetProbability(); 140 } << 134 } 141 } << 135 } 142 G4double random = G4UniformRand(); << 136 G4double random = G4UniformRand(); 143 G4double running = 0; << 137 G4double running = 0; 144 for (i=thePartonInfo.begin() ; i!=thePartonI << 138 for(i=thePartonInfo.begin() ; i!=thePartonInfo.end(); i++) 145 if (std::abs((*i)->GetQuark()) == std::abs << 139 { 146 { << 140 if (std::abs((*i)->GetQuark()) == std::abs(quark)) 147 running += (*i)->GetProbability(); << 141 { 148 if (running/sum >= random) << 142 running += (*i)->GetProbability(); 149 { << 143 if (running/sum >= random) 150 diQuark = (*i)->GetDiQuark(); << 144 { 151 break; << 145 diQuark = (*i)->GetDiQuark(); 152 } << 146 break; 153 } << 147 } 154 } << 148 } >> 149 } 155 } 150 } 156 151 157 152 158 G4SPBaryon:: 153 G4SPBaryon:: 159 G4SPBaryon(G4Proton * aProton) 154 G4SPBaryon(G4Proton * aProton) 160 { 155 { 161 theDefinition = aProton; << 156 theDefinition = aProton; 162 thePartonInfo.push_back(new G4SPPartonInfo(2 << 157 thePartonInfo.push_back(new G4SPPartonInfo(2203, 1, 1./3.)); // uu_1, d 163 thePartonInfo.push_back(new G4SPPartonInfo(2 << 158 thePartonInfo.push_back(new G4SPPartonInfo(2103, 2, 1./6.)); // ud_1, u 164 thePartonInfo.push_back(new G4SPPartonInfo(2 << 159 thePartonInfo.push_back(new G4SPPartonInfo(2101, 2, 1./2.)); // ud_0, u 165 } 160 } 166 161 167 G4SPBaryon:: 162 G4SPBaryon:: 168 G4SPBaryon(G4AntiProton * aAntiProton) 163 G4SPBaryon(G4AntiProton * aAntiProton) 169 { 164 { 170 theDefinition = aAntiProton; << 165 theDefinition = aAntiProton; 171 thePartonInfo.push_back(new G4SPPartonInfo(- << 166 thePartonInfo.push_back(new G4SPPartonInfo(-2203, -1, 1./3.)); 172 thePartonInfo.push_back(new G4SPPartonInfo(- << 167 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -2, 1./6.)); 173 thePartonInfo.push_back(new G4SPPartonInfo(- << 168 thePartonInfo.push_back(new G4SPPartonInfo(-2101, -2, 1./2.)); 174 } 169 } 175 170 176 << 177 G4SPBaryon:: 171 G4SPBaryon:: 178 G4SPBaryon(G4Neutron * aNeutron) 172 G4SPBaryon(G4Neutron * aNeutron) 179 { 173 { 180 theDefinition = aNeutron; << 174 theDefinition = aNeutron; 181 thePartonInfo.push_back(new G4SPPartonInfo(2 << 175 thePartonInfo.push_back(new G4SPPartonInfo(2103, 1, 1./6.)); // ud_1, d 182 thePartonInfo.push_back(new G4SPPartonInfo(2 << 176 thePartonInfo.push_back(new G4SPPartonInfo(2101, 1, 1./2.)); // ud_0, d 183 thePartonInfo.push_back(new G4SPPartonInfo(1 << 177 thePartonInfo.push_back(new G4SPPartonInfo(1103, 2, 1./3.)); // dd_1, u 184 } 178 } 185 179 186 G4SPBaryon:: 180 G4SPBaryon:: 187 G4SPBaryon(G4AntiNeutron * aAntiNeutron) 181 G4SPBaryon(G4AntiNeutron * aAntiNeutron) 188 { 182 { 189 theDefinition = aAntiNeutron; << 183 theDefinition = aAntiNeutron; 190 thePartonInfo.push_back(new G4SPPartonInfo(- << 184 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -1, 1./6.)); 191 thePartonInfo.push_back(new G4SPPartonInfo(- << 185 thePartonInfo.push_back(new G4SPPartonInfo(-2101, -1, 1./2.)); 192 thePartonInfo.push_back(new G4SPPartonInfo(- << 186 thePartonInfo.push_back(new G4SPPartonInfo(-1103, -2, 1./3.)); 193 } 187 } 194 188 195 << 196 G4SPBaryon:: 189 G4SPBaryon:: 197 G4SPBaryon(G4Lambda * aLambda) 190 G4SPBaryon(G4Lambda * aLambda) 198 { 191 { 199 theDefinition = aLambda; << 192 theDefinition = aLambda; 200 thePartonInfo.push_back(new G4SPPartonInfo(2 << 193 thePartonInfo.push_back(new G4SPPartonInfo(2103, 3, 1./3.)); // ud_1, s 201 thePartonInfo.push_back(new G4SPPartonInfo(3 << 194 thePartonInfo.push_back(new G4SPPartonInfo(3203, 1, 1./4.)); // su_1, d 202 thePartonInfo.push_back(new G4SPPartonInfo(3 << 195 thePartonInfo.push_back(new G4SPPartonInfo(3201, 1, 1./12.)); // su_0, d 203 thePartonInfo.push_back(new G4SPPartonInfo(3 << 196 thePartonInfo.push_back(new G4SPPartonInfo(3103, 2, 1./4.)); // sd_1, u 204 thePartonInfo.push_back(new G4SPPartonInfo(3 << 197 thePartonInfo.push_back(new G4SPPartonInfo(3101, 2, 1./12.)); // sd_0, u 205 } 198 } 206 199 207 G4SPBaryon:: 200 G4SPBaryon:: 208 G4SPBaryon(G4AntiLambda * aAntiLambda) 201 G4SPBaryon(G4AntiLambda * aAntiLambda) 209 { 202 { 210 theDefinition = aAntiLambda; << 203 theDefinition = aAntiLambda; 211 thePartonInfo.push_back(new G4SPPartonInfo(- << 204 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -3, 1./3.)); 212 thePartonInfo.push_back(new G4SPPartonInfo(- << 205 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -1, 1./4.)); 213 thePartonInfo.push_back(new G4SPPartonInfo(- << 206 thePartonInfo.push_back(new G4SPPartonInfo(-3201, -1, 1./12.)); 214 thePartonInfo.push_back(new G4SPPartonInfo(- << 207 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -2, 1./4.)); 215 thePartonInfo.push_back(new G4SPPartonInfo(- << 208 thePartonInfo.push_back(new G4SPPartonInfo(-3101, -2, 1./12.)); 216 } 209 } 217 210 218 << 219 G4SPBaryon:: 211 G4SPBaryon:: 220 G4SPBaryon(G4SigmaPlus * aSigmaPlus) 212 G4SPBaryon(G4SigmaPlus * aSigmaPlus) 221 { 213 { 222 theDefinition = aSigmaPlus; << 214 theDefinition = aSigmaPlus; 223 thePartonInfo.push_back(new G4SPPartonInfo(2 << 215 thePartonInfo.push_back(new G4SPPartonInfo(2203, 3, 1./3.)); 224 thePartonInfo.push_back(new G4SPPartonInfo(3 << 216 thePartonInfo.push_back(new G4SPPartonInfo(3203, 2, 1./6.)); 225 thePartonInfo.push_back(new G4SPPartonInfo(3 << 217 thePartonInfo.push_back(new G4SPPartonInfo(3201, 2, 1./2.)); 226 } 218 } 227 219 228 G4SPBaryon:: 220 G4SPBaryon:: 229 G4SPBaryon(G4AntiSigmaPlus * aAntiSigmaPlus) 221 G4SPBaryon(G4AntiSigmaPlus * aAntiSigmaPlus) 230 { 222 { 231 theDefinition = aAntiSigmaPlus; << 223 theDefinition = aAntiSigmaPlus; 232 thePartonInfo.push_back(new G4SPPartonInfo(- << 224 thePartonInfo.push_back(new G4SPPartonInfo(-2203, -3, 1./3.)); 233 thePartonInfo.push_back(new G4SPPartonInfo(- << 225 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -2, 1./6.)); 234 thePartonInfo.push_back(new G4SPPartonInfo(- << 226 thePartonInfo.push_back(new G4SPPartonInfo(-3201, -2, 1./2.)); 235 } 227 } 236 228 237 << 238 G4SPBaryon:: 229 G4SPBaryon:: 239 G4SPBaryon(G4SigmaZero * aSigmaZero) 230 G4SPBaryon(G4SigmaZero * aSigmaZero) 240 { 231 { 241 theDefinition = aSigmaZero; << 232 theDefinition = aSigmaZero; 242 thePartonInfo.push_back(new G4SPPartonInfo(2 << 233 thePartonInfo.push_back(new G4SPPartonInfo(2103, 3, 1./3.)); 243 thePartonInfo.push_back(new G4SPPartonInfo(3 << 234 thePartonInfo.push_back(new G4SPPartonInfo(3203, 1, 1./12.)); 244 thePartonInfo.push_back(new G4SPPartonInfo(3 << 235 thePartonInfo.push_back(new G4SPPartonInfo(3201, 1, 1./4.)); 245 thePartonInfo.push_back(new G4SPPartonInfo(3 << 236 thePartonInfo.push_back(new G4SPPartonInfo(3103, 2, 1./12.)); 246 thePartonInfo.push_back(new G4SPPartonInfo(3 << 237 thePartonInfo.push_back(new G4SPPartonInfo(3101, 2, 1./4.)); 247 } 238 } 248 239 249 G4SPBaryon:: 240 G4SPBaryon:: 250 G4SPBaryon(G4AntiSigmaZero * aAntiSigmaZero) 241 G4SPBaryon(G4AntiSigmaZero * aAntiSigmaZero) 251 { 242 { 252 theDefinition = aAntiSigmaZero; << 243 theDefinition = aAntiSigmaZero; 253 thePartonInfo.push_back(new G4SPPartonInfo(- << 244 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -3, 1./3.)); 254 thePartonInfo.push_back(new G4SPPartonInfo(- << 245 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -1, 1./12.)); 255 thePartonInfo.push_back(new G4SPPartonInfo(- << 246 thePartonInfo.push_back(new G4SPPartonInfo(-3201, -1, 1./4.)); 256 thePartonInfo.push_back(new G4SPPartonInfo(- << 247 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -2, 1./12.)); 257 thePartonInfo.push_back(new G4SPPartonInfo(- << 248 thePartonInfo.push_back(new G4SPPartonInfo(-3101, -2, 1./4.)); 258 } 249 } 259 250 260 << 261 G4SPBaryon:: 251 G4SPBaryon:: 262 G4SPBaryon(G4SigmaMinus * aSigmaMinus) 252 G4SPBaryon(G4SigmaMinus * aSigmaMinus) 263 { 253 { 264 theDefinition = aSigmaMinus; << 254 theDefinition = aSigmaMinus; 265 thePartonInfo.push_back(new G4SPPartonInfo(1 << 255 thePartonInfo.push_back(new G4SPPartonInfo(1103, 3, 1./3.)); 266 thePartonInfo.push_back(new G4SPPartonInfo(3 << 256 thePartonInfo.push_back(new G4SPPartonInfo(3103, 1, 1./6.)); 267 thePartonInfo.push_back(new G4SPPartonInfo(3 << 257 thePartonInfo.push_back(new G4SPPartonInfo(3101, 1, 1./2.)); 268 } 258 } 269 259 270 G4SPBaryon:: 260 G4SPBaryon:: 271 G4SPBaryon(G4AntiSigmaMinus * aAntiSigmaMinus) 261 G4SPBaryon(G4AntiSigmaMinus * aAntiSigmaMinus) 272 { 262 { 273 theDefinition = aAntiSigmaMinus; << 263 theDefinition = aAntiSigmaMinus; 274 thePartonInfo.push_back(new G4SPPartonInfo(- << 264 thePartonInfo.push_back(new G4SPPartonInfo(-1103, -3, 1./3.)); 275 thePartonInfo.push_back(new G4SPPartonInfo(- << 265 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -1, 1./6.)); 276 thePartonInfo.push_back(new G4SPPartonInfo(- << 266 thePartonInfo.push_back(new G4SPPartonInfo(-3101, -1, 1./2.)); 277 } 267 } 278 268 279 << 280 G4SPBaryon:: 269 G4SPBaryon:: 281 G4SPBaryon(G4XiZero * aXiZero) << 270 G4SPBaryon(G4XiMinus * aXiMinus) 282 { 271 { 283 theDefinition = aXiZero; << 272 theDefinition = aXiMinus; 284 thePartonInfo.push_back(new G4SPPartonInfo(3 << 273 thePartonInfo.push_back(new G4SPPartonInfo(3103, 3, 1./6.)); 285 thePartonInfo.push_back(new G4SPPartonInfo(3 << 274 thePartonInfo.push_back(new G4SPPartonInfo(3101, 3, 1./2.)); 286 thePartonInfo.push_back(new G4SPPartonInfo(3 << 275 thePartonInfo.push_back(new G4SPPartonInfo(3303, 1, 1./3.)); 287 } 276 } 288 277 289 G4SPBaryon:: 278 G4SPBaryon:: 290 G4SPBaryon(G4AntiXiZero * aAntiXiZero) << 279 G4SPBaryon(G4AntiXiMinus * aAntiXiMinus) 291 { 280 { 292 theDefinition = aAntiXiZero; << 281 theDefinition = aAntiXiMinus; 293 thePartonInfo.push_back(new G4SPPartonInfo(- << 282 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -3, 1./6.)); 294 thePartonInfo.push_back(new G4SPPartonInfo(- << 283 thePartonInfo.push_back(new G4SPPartonInfo(-3101, -3, 1./2.)); 295 thePartonInfo.push_back(new G4SPPartonInfo(- << 284 thePartonInfo.push_back(new G4SPPartonInfo(-3303, -1, 1./3.)); 296 } 285 } 297 286 298 << 299 G4SPBaryon:: 287 G4SPBaryon:: 300 G4SPBaryon(G4XiMinus * aXiMinus) << 288 G4SPBaryon(G4XiZero * aXiZero) 301 { 289 { 302 theDefinition = aXiMinus; << 290 theDefinition = aXiZero; 303 thePartonInfo.push_back(new G4SPPartonInfo(3 << 291 thePartonInfo.push_back(new G4SPPartonInfo(3203, 3, 1./6.)); 304 thePartonInfo.push_back(new G4SPPartonInfo(3 << 292 thePartonInfo.push_back(new G4SPPartonInfo(3201, 3, 1./2.)); 305 thePartonInfo.push_back(new G4SPPartonInfo(3 << 293 thePartonInfo.push_back(new G4SPPartonInfo(3303, 2, 1./3.)); 306 } 294 } 307 295 308 G4SPBaryon:: 296 G4SPBaryon:: 309 G4SPBaryon(G4AntiXiMinus * aAntiXiMinus) << 297 G4SPBaryon(G4AntiXiZero * aAntiXiZero) 310 { 298 { 311 theDefinition = aAntiXiMinus; << 299 theDefinition = aAntiXiZero; 312 thePartonInfo.push_back(new G4SPPartonInfo(- << 300 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -3, 1./6.)); 313 thePartonInfo.push_back(new G4SPPartonInfo(- << 301 thePartonInfo.push_back(new G4SPPartonInfo(-3201, -3, 1./2.)); 314 thePartonInfo.push_back(new G4SPPartonInfo(- << 302 thePartonInfo.push_back(new G4SPPartonInfo(-3303, -2, 1./3.)); 315 } 303 } 316 304 317 << 318 G4SPBaryon:: 305 G4SPBaryon:: 319 G4SPBaryon(G4OmegaMinus * anOmegaMinus) 306 G4SPBaryon(G4OmegaMinus * anOmegaMinus) 320 { 307 { 321 theDefinition = anOmegaMinus; << 308 theDefinition = anOmegaMinus; 322 thePartonInfo.push_back(new G4SPPartonInfo(3 << 309 thePartonInfo.push_back(new G4SPPartonInfo(3303, 3, 1.)); 323 } 310 } 324 311 >> 312 325 G4SPBaryon:: 313 G4SPBaryon:: 326 G4SPBaryon(G4AntiOmegaMinus * anAntiOmegaMinus 314 G4SPBaryon(G4AntiOmegaMinus * anAntiOmegaMinus) 327 { 315 { 328 theDefinition = anAntiOmegaMinus; << 316 theDefinition = anAntiOmegaMinus; 329 thePartonInfo.push_back(new G4SPPartonInfo(- << 317 thePartonInfo.push_back(new G4SPPartonInfo(-3303, -3, 1.)); 330 } 318 } 331 319 332 << 333 // non static particles 320 // non static particles 334 G4SPBaryon:: 321 G4SPBaryon:: 335 G4SPBaryon(G4ParticleDefinition * aDefinition) 322 G4SPBaryon(G4ParticleDefinition * aDefinition) 336 { 323 { 337 theDefinition = aDefinition; << 324 theDefinition = aDefinition; 338 if (theDefinition == G4ParticleTable::GetPar << 325 if(theDefinition == 339 { << 326 G4ParticleTable::GetParticleTable()->FindParticle(2224))// D++ 340 thePartonInfo.push_back(new G4SPPartonInfo << 327 { 341 } << 328 thePartonInfo.push_back(new G4SPPartonInfo(2203, 2, 1.)); 342 else if (theDefinition == G4ParticleTable::G << 329 } 343 { << 330 else if(theDefinition == 344 thePartonInfo.push_back(new G4SPPartonInfo << 331 G4ParticleTable::GetParticleTable()->FindParticle(-2224))// anti D++ 345 } << 332 { 346 else if (theDefinition == G4ParticleTable::G << 333 thePartonInfo.push_back(new G4SPPartonInfo(-2203, -2, 1.)); 347 { << 334 } 348 thePartonInfo.push_back(new G4SPPartonInfo << 335 else if(theDefinition == 349 thePartonInfo.push_back(new G4SPPartonInfo << 336 G4ParticleTable::GetParticleTable()->FindParticle(2214))// D+ 350 } << 337 { 351 else if (theDefinition == G4ParticleTable::G << 338 thePartonInfo.push_back(new G4SPPartonInfo(2203, 1, 1./3.)); 352 { << 339 thePartonInfo.push_back(new G4SPPartonInfo(2103, 2, 2./3.)); 353 thePartonInfo.push_back(new G4SPPartonInfo << 340 } 354 thePartonInfo.push_back(new G4SPPartonInfo << 341 else if(theDefinition == 355 } << 342 G4ParticleTable::GetParticleTable()->FindParticle(-2214))// anti D+ 356 else if (theDefinition == G4ParticleTable::G << 343 { 357 { << 344 thePartonInfo.push_back(new G4SPPartonInfo(-2203, -1, 1./3.)); 358 thePartonInfo.push_back(new G4SPPartonInfo << 345 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -2, 2./3.)); 359 thePartonInfo.push_back(new G4SPPartonInfo << 346 } 360 } << 347 else if(theDefinition == 361 else if (theDefinition == G4ParticleTable::G << 348 G4ParticleTable::GetParticleTable()->FindParticle(2114))// D0 362 { << 349 { 363 thePartonInfo.push_back(new G4SPPartonInfo << 350 thePartonInfo.push_back(new G4SPPartonInfo(2103, 1, 2./3.)); 364 thePartonInfo.push_back(new G4SPPartonInfo << 351 thePartonInfo.push_back(new G4SPPartonInfo(2103, 2, 1./3.)); 365 } << 352 } 366 else if (theDefinition == G4ParticleTable::G << 353 else if(theDefinition == 367 { << 354 G4ParticleTable::GetParticleTable()->FindParticle(-2114))// anti D0 368 thePartonInfo.push_back(new G4SPPartonInfo << 355 { 369 } << 356 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -1, 2./3.)); 370 else if (theDefinition == G4ParticleTable::G << 357 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -2, 1./3.)); 371 { << 358 } 372 thePartonInfo.push_back(new G4SPPartonInfo << 359 else if(theDefinition == 373 } << 360 G4ParticleTable::GetParticleTable()->FindParticle(1114))// D- >> 361 { >> 362 thePartonInfo.push_back(new G4SPPartonInfo(1103, 1, 1.)); >> 363 } >> 364 else if(theDefinition == >> 365 G4ParticleTable::GetParticleTable()->FindParticle(-1114))// anti D- >> 366 { >> 367 thePartonInfo.push_back(new G4SPPartonInfo(-1103, -1, 1.)); >> 368 } >> 369 else if(theDefinition == >> 370 G4ParticleTable::GetParticleTable()->FindParticle(3224))// S*+ >> 371 { >> 372 thePartonInfo.push_back(new G4SPPartonInfo(2203, 3, 1./3.)); >> 373 thePartonInfo.push_back(new G4SPPartonInfo(3203, 2, 2./3.)); >> 374 } >> 375 else if(theDefinition == >> 376 G4ParticleTable::GetParticleTable()->FindParticle(-3224))// anti S*+ >> 377 { >> 378 thePartonInfo.push_back(new G4SPPartonInfo(-2203, -3, 1./3.)); >> 379 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -2, 2./3.)); >> 380 } >> 381 else if(theDefinition == >> 382 G4ParticleTable::GetParticleTable()->FindParticle(3214))// S*0 >> 383 { >> 384 thePartonInfo.push_back(new G4SPPartonInfo(2103, 3, 1./3.)); >> 385 thePartonInfo.push_back(new G4SPPartonInfo(3203, 1, 1./3.)); >> 386 thePartonInfo.push_back(new G4SPPartonInfo(3103, 2, 1./3.)); >> 387 } >> 388 else if(theDefinition == >> 389 G4ParticleTable::GetParticleTable()->FindParticle(-3214))// anti S*0 >> 390 { >> 391 thePartonInfo.push_back(new G4SPPartonInfo(-2103, -3, 1./3.)); >> 392 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -1, 1./3.)); >> 393 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -2, 1./3.)); >> 394 } >> 395 else if(theDefinition == >> 396 G4ParticleTable::GetParticleTable()->FindParticle(3114))// S*- >> 397 { >> 398 thePartonInfo.push_back(new G4SPPartonInfo(1103, 3, 1./3.)); >> 399 thePartonInfo.push_back(new G4SPPartonInfo(3103, 1, 2./3.)); >> 400 } >> 401 else if(theDefinition == >> 402 G4ParticleTable::GetParticleTable()->FindParticle(-3224))// anti S*- >> 403 { >> 404 thePartonInfo.push_back(new G4SPPartonInfo(-1103, -3, 1./3.)); >> 405 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -1, 2./3.)); >> 406 } >> 407 else if(theDefinition == >> 408 G4ParticleTable::GetParticleTable()->FindParticle(3324))// Xi*0 >> 409 { >> 410 thePartonInfo.push_back(new G4SPPartonInfo(3203, 3, 1./3.)); >> 411 thePartonInfo.push_back(new G4SPPartonInfo(3303, 2, 2./3.)); >> 412 } >> 413 else if(theDefinition == >> 414 G4ParticleTable::GetParticleTable()->FindParticle(-3324))// anti Xi*0 >> 415 { >> 416 thePartonInfo.push_back(new G4SPPartonInfo(-3203, -3, 1./3.)); >> 417 thePartonInfo.push_back(new G4SPPartonInfo(-3303, -2, 2./3.)); >> 418 } >> 419 else if(theDefinition == >> 420 G4ParticleTable::GetParticleTable()->FindParticle(3314))// Xi*- >> 421 { >> 422 thePartonInfo.push_back(new G4SPPartonInfo(3103, 3, 2./3.)); >> 423 thePartonInfo.push_back(new G4SPPartonInfo(3303, 1, 1./3.)); >> 424 } >> 425 else if(theDefinition == >> 426 G4ParticleTable::GetParticleTable()->FindParticle(-3314))// anti Xi*- >> 427 { >> 428 thePartonInfo.push_back(new G4SPPartonInfo(-3103, -3, 2./3.)); >> 429 thePartonInfo.push_back(new G4SPPartonInfo(-3303, -1, 1./3.)); >> 430 } 374 } 431 } 375 432 376 << 377 G4SPBaryon::~G4SPBaryon() 433 G4SPBaryon::~G4SPBaryon() 378 { 434 { 379 for (unsigned int i=0;i<thePartonInfo.size() << 435 for(unsigned int i=0;i<thePartonInfo.size(); i++) delete thePartonInfo[i]; 380 } << 381 << 382 << 383 // Extension to charmed and bottom baryons and << 384 // G4SPPartonInfo(G4int diq, G4int q, G4dou << 385 << 386 G4SPBaryon::G4SPBaryon(G4LambdacPlus * aLambda << 387 // lambda_c+(udc) treated as lambda(uds) wit << 388 theDefinition = aLambdacPlus; << 389 thePartonInfo.push_back(new G4SPPartonInfo(2 << 390 thePartonInfo.push_back(new G4SPPartonInfo(4 << 391 thePartonInfo.push_back(new G4SPPartonInfo(4 << 392 thePartonInfo.push_back(new G4SPPartonInfo(4 << 393 thePartonInfo.push_back(new G4SPPartonInfo(4 << 394 } << 395 << 396 G4SPBaryon::G4SPBaryon(G4AntiLambdacPlus * aAn << 397 theDefinition = aAntiLambdacPlus; << 398 thePartonInfo.push_back(new G4SPPartonInfo(- << 399 thePartonInfo.push_back(new G4SPPartonInfo(- << 400 thePartonInfo.push_back(new G4SPPartonInfo(- << 401 thePartonInfo.push_back(new G4SPPartonInfo(- << 402 thePartonInfo.push_back(new G4SPPartonInfo(- << 403 } << 404 << 405 << 406 G4SPBaryon::G4SPBaryon(G4SigmacPlusPlus * aSig << 407 // sigma_c++(uuc) treated as sigma+(uus) wit << 408 theDefinition = aSigmacPlusPlus; << 409 thePartonInfo.push_back(new G4SPPartonInfo(2 << 410 thePartonInfo.push_back(new G4SPPartonInfo(4 << 411 thePartonInfo.push_back(new G4SPPartonInfo(4 << 412 } << 413 << 414 G4SPBaryon::G4SPBaryon(G4AntiSigmacPlusPlus * << 415 theDefinition = aAntiSigmacPlusPlus; << 416 thePartonInfo.push_back(new G4SPPartonInfo(- << 417 thePartonInfo.push_back(new G4SPPartonInfo(- << 418 thePartonInfo.push_back(new G4SPPartonInfo(- << 419 } << 420 << 421 << 422 G4SPBaryon::G4SPBaryon(G4SigmacPlus * aSigmacP << 423 // sigma_c+(udc) treated as sigma0(uds) with << 424 theDefinition = aSigmacPlus; << 425 thePartonInfo.push_back(new G4SPPartonInfo(2 << 426 thePartonInfo.push_back(new G4SPPartonInfo(4 << 427 thePartonInfo.push_back(new G4SPPartonInfo(4 << 428 thePartonInfo.push_back(new G4SPPartonInfo(4 << 429 thePartonInfo.push_back(new G4SPPartonInfo(4 << 430 } << 431 << 432 G4SPBaryon::G4SPBaryon(G4AntiSigmacPlus * aAnt << 433 theDefinition = aAntiSigmacPlus; << 434 thePartonInfo.push_back(new G4SPPartonInfo(- << 435 thePartonInfo.push_back(new G4SPPartonInfo(- << 436 thePartonInfo.push_back(new G4SPPartonInfo(- << 437 thePartonInfo.push_back(new G4SPPartonInfo(- << 438 thePartonInfo.push_back(new G4SPPartonInfo(- << 439 } << 440 << 441 << 442 G4SPBaryon::G4SPBaryon(G4SigmacZero * aSigmacZ << 443 // sigma_c0(ddc) treated as sigma-(dds) repl << 444 theDefinition = aSigmacZero; << 445 thePartonInfo.push_back(new G4SPPartonInfo(1 << 446 thePartonInfo.push_back(new G4SPPartonInfo(4 << 447 thePartonInfo.push_back(new G4SPPartonInfo(4 << 448 } << 449 << 450 G4SPBaryon::G4SPBaryon(G4AntiSigmacZero * aAnt << 451 theDefinition = aAntiSigmacZero; << 452 thePartonInfo.push_back(new G4SPPartonInfo(- << 453 thePartonInfo.push_back(new G4SPPartonInfo(- << 454 thePartonInfo.push_back(new G4SPPartonInfo(- << 455 } << 456 << 457 << 458 G4SPBaryon::G4SPBaryon(G4XicPlus * aXicPlus) { << 459 // xi_c+(usc) treated as xi0(uss) replacing << 460 theDefinition = aXicPlus; << 461 thePartonInfo.push_back(new G4SPPartonInfo(3 << 462 thePartonInfo.push_back(new G4SPPartonInfo(3 << 463 thePartonInfo.push_back(new G4SPPartonInfo(4 << 464 } << 465 << 466 G4SPBaryon::G4SPBaryon(G4AntiXicPlus * aAntiXi << 467 theDefinition = aAntiXicPlus; << 468 thePartonInfo.push_back(new G4SPPartonInfo(- << 469 thePartonInfo.push_back(new G4SPPartonInfo(- << 470 thePartonInfo.push_back(new G4SPPartonInfo(- << 471 } << 472 << 473 << 474 G4SPBaryon::G4SPBaryon(G4XicZero * aXicZero) { << 475 // xi_c0(dsc) treated as xi-(dss) replacing << 476 theDefinition = aXicZero; << 477 thePartonInfo.push_back(new G4SPPartonInfo(3 << 478 thePartonInfo.push_back(new G4SPPartonInfo(3 << 479 thePartonInfo.push_back(new G4SPPartonInfo(4 << 480 } << 481 << 482 G4SPBaryon::G4SPBaryon(G4AntiXicZero * aAntiXi << 483 theDefinition = aAntiXicZero; << 484 thePartonInfo.push_back(new G4SPPartonInfo(- << 485 thePartonInfo.push_back(new G4SPPartonInfo(- << 486 thePartonInfo.push_back(new G4SPPartonInfo(- << 487 } << 488 << 489 << 490 G4SPBaryon::G4SPBaryon(G4OmegacZero * aOmegacZ << 491 // omega_c0(ssc) treated as omega-(sss) with << 492 theDefinition = aOmegacZero; << 493 thePartonInfo.push_back(new G4SPPartonInfo(3 << 494 } << 495 << 496 G4SPBaryon::G4SPBaryon(G4AntiOmegacZero * aAnt << 497 theDefinition = aAntiOmegacZero; << 498 thePartonInfo.push_back(new G4SPPartonInfo(- << 499 } << 500 << 501 << 502 G4SPBaryon::G4SPBaryon(G4Lambdab * aLambdab) { << 503 // lambda_b(udb) treated as lambda-(uds) rep << 504 theDefinition = aLambdab; << 505 thePartonInfo.push_back(new G4SPPartonInfo(2 << 506 thePartonInfo.push_back(new G4SPPartonInfo(5 << 507 thePartonInfo.push_back(new G4SPPartonInfo(5 << 508 thePartonInfo.push_back(new G4SPPartonInfo(5 << 509 thePartonInfo.push_back(new G4SPPartonInfo(5 << 510 } << 511 << 512 G4SPBaryon::G4SPBaryon(G4AntiLambdab * aAntiLa << 513 theDefinition = aAntiLambdab; << 514 thePartonInfo.push_back(new G4SPPartonInfo(- << 515 thePartonInfo.push_back(new G4SPPartonInfo(- << 516 thePartonInfo.push_back(new G4SPPartonInfo(- << 517 thePartonInfo.push_back(new G4SPPartonInfo(- << 518 thePartonInfo.push_back(new G4SPPartonInfo(- << 519 } << 520 << 521 << 522 G4SPBaryon::G4SPBaryon(G4SigmabPlus * aSigmabP << 523 // sigma_b+(uub) treated as sigma+(uus) repl << 524 theDefinition = aSigmabPlus; << 525 thePartonInfo.push_back(new G4SPPartonInfo(2 << 526 thePartonInfo.push_back(new G4SPPartonInfo(5 << 527 thePartonInfo.push_back(new G4SPPartonInfo(5 << 528 } << 529 << 530 G4SPBaryon::G4SPBaryon(G4AntiSigmabPlus * aAnt << 531 theDefinition = aAntiSigmabPlus; << 532 thePartonInfo.push_back(new G4SPPartonInfo(- << 533 thePartonInfo.push_back(new G4SPPartonInfo(- << 534 thePartonInfo.push_back(new G4SPPartonInfo(- << 535 } << 536 << 537 << 538 G4SPBaryon::G4SPBaryon(G4SigmabZero * aSigmabZ << 539 // sigma_b0(udb) treated as sigma0(uds) repl << 540 theDefinition = aSigmabZero; << 541 thePartonInfo.push_back(new G4SPPartonInfo(2 << 542 thePartonInfo.push_back(new G4SPPartonInfo(5 << 543 thePartonInfo.push_back(new G4SPPartonInfo(5 << 544 thePartonInfo.push_back(new G4SPPartonInfo(5 << 545 thePartonInfo.push_back(new G4SPPartonInfo(5 << 546 } << 547 << 548 G4SPBaryon::G4SPBaryon(G4AntiSigmabZero * aAnt << 549 theDefinition = aAntiSigmabZero; << 550 thePartonInfo.push_back(new G4SPPartonInfo(- << 551 thePartonInfo.push_back(new G4SPPartonInfo(- << 552 thePartonInfo.push_back(new G4SPPartonInfo(- << 553 thePartonInfo.push_back(new G4SPPartonInfo(- << 554 thePartonInfo.push_back(new G4SPPartonInfo(- << 555 } << 556 << 557 << 558 G4SPBaryon::G4SPBaryon(G4SigmabMinus * aSigmab << 559 // sigma_b-(ddb) treated as sigma-(dds) repl << 560 theDefinition = aSigmabMinus; << 561 thePartonInfo.push_back(new G4SPPartonInfo(1 << 562 thePartonInfo.push_back(new G4SPPartonInfo(5 << 563 thePartonInfo.push_back(new G4SPPartonInfo(5 << 564 } << 565 << 566 G4SPBaryon::G4SPBaryon(G4AntiSigmabMinus * aAn << 567 theDefinition = aAntiSigmabMinus; << 568 thePartonInfo.push_back(new G4SPPartonInfo(- << 569 thePartonInfo.push_back(new G4SPPartonInfo(- << 570 thePartonInfo.push_back(new G4SPPartonInfo(- << 571 } << 572 << 573 << 574 G4SPBaryon::G4SPBaryon(G4XibZero * aXibZero) { << 575 // xi_b0(usb) treated as xi0(uss) replacing << 576 theDefinition = aXibZero; << 577 thePartonInfo.push_back(new G4SPPartonInfo(3 << 578 thePartonInfo.push_back(new G4SPPartonInfo(3 << 579 thePartonInfo.push_back(new G4SPPartonInfo(5 << 580 } << 581 << 582 G4SPBaryon::G4SPBaryon(G4AntiXibZero * aAntiXi << 583 theDefinition = aAntiXibZero; << 584 thePartonInfo.push_back(new G4SPPartonInfo(- << 585 thePartonInfo.push_back(new G4SPPartonInfo(- << 586 thePartonInfo.push_back(new G4SPPartonInfo(- << 587 } << 588 << 589 << 590 G4SPBaryon::G4SPBaryon(G4XibMinus * aXibMinus) << 591 // xi_b-(dsb) treated as xi-(dss) replacing << 592 theDefinition = aXibMinus; << 593 thePartonInfo.push_back(new G4SPPartonInfo(3 << 594 thePartonInfo.push_back(new G4SPPartonInfo(3 << 595 thePartonInfo.push_back(new G4SPPartonInfo(5 << 596 } << 597 << 598 G4SPBaryon::G4SPBaryon(G4AntiXibMinus * aAntiX << 599 theDefinition = aAntiXibMinus; << 600 thePartonInfo.push_back(new G4SPPartonInfo(- << 601 thePartonInfo.push_back(new G4SPPartonInfo(- << 602 thePartonInfo.push_back(new G4SPPartonInfo(- << 603 } << 604 << 605 << 606 G4SPBaryon::G4SPBaryon(G4OmegabMinus * aOmegab << 607 // omega_b-(ssb) treated as omega-(sss) repl << 608 theDefinition = aOmegabMinus; << 609 thePartonInfo.push_back(new G4SPPartonInfo(3 << 610 } << 611 << 612 G4SPBaryon::G4SPBaryon(G4AntiOmegabMinus * aAn << 613 theDefinition = aAntiOmegabMinus; << 614 thePartonInfo.push_back(new G4SPPartonInfo(- << 615 } 436 } 616 437