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 // 28 // ------------------------------------------- 29 // GEANT 4 class implementation file 30 // 31 // History: 32 // Gunter Folger, August/September 33 // Create class; algorithm previ 34 // ------------------------------------------- 35 36 #include "G4HadronBuilder.hh" 37 #include "G4SystemOfUnits.hh" 38 #include "Randomize.hh" 39 #include "G4HadronicException.hh" 40 #include "G4ParticleTable.hh" 41 42 //#define debug_Hbuilder 43 //#define debug_heavyHadrons 44 45 G4HadronBuilder::G4HadronBuilder(const std::ve 46 const std::vector<G4doubl 47 const std::vector<G4doubl 48 const G4doubl 49 { 50 mesonSpinMix = mesonMix; 51 barionSpinMix = barionMix; 52 scalarMesonMixings = scalarMesonMix; 53 vectorMesonMixings = vectorMesonMix; 54 ProbEta_c = Eta_cProb; 55 ProbEta_b = Eta_bProb; 56 } 57 58 //-------------------------------------------- 59 60 G4ParticleDefinition * G4HadronBuilder::Build( 61 { 62 if (black->GetParticleSubType()== "di_quark" 63 // Barion 64 Spin spin = (G4UniformRand() < barionSpin 65 return Barion(black,white,spin); 66 } else { 67 // Meson 68 G4int StrangeQ = 0; 69 if( std::abs(black->GetPDGEncoding()) >= 70 if( std::abs(white->GetPDGEncoding()) >= 71 Spin spin = (G4UniformRand() < meso 72 return Meson(black,white,spin); 73 } 74 } 75 76 //-------------------------------------------- 77 78 G4ParticleDefinition * G4HadronBuilder::BuildL 79 { 80 if ( black->GetParticleSubType()== "quark" & 81 return Meson(black,white, SpinZero); 82 } else { 83 // will return a SpinThreeHalf 84 return Barion(black,white, SpinHalf); 85 } 86 } 87 88 //-------------------------------------------- 89 90 G4ParticleDefinition * G4HadronBuilder::BuildH 91 { 92 if ( black->GetParticleSubType()== "quark" & 93 return Meson(black,white, SpinOne); 94 } else { 95 return Barion(black,white,SpinThreeHalf); 96 } 97 } 98 99 //-------------------------------------------- 100 101 G4ParticleDefinition * G4HadronBuilder::Meson( 102 G4ParticleDefinition * white, 103 { 104 #ifdef debug_Hbuilder 105 // Verify Input Charge 106 G4double charge = black->GetPDGCharge( 107 if (std::abs(charge) > 2 || std::abs(3. 108 { 109 G4cerr << " G4HadronBuilder::Build()" << 110 G4cerr << " Invalid total charge foun 111 << charge<< G4endl; 112 G4cerr << " PGDcode input quark1/quar 113 black->GetPDGEncoding() << " / "<< 114 white->GetPDGEncoding() << G4endl; 115 G4cerr << G4endl; 116 } 117 #endif 118 119 G4int id1 = black->GetPDGEncoding(); 120 G4int id2 = white->GetPDGEncoding(); 121 122 // G4int ifl1= std::max(std::abs(id1), 123 if ( std::abs(id1) < std::abs(id2) ) 124 { 125 G4int xchg = id1; 126 id1 = id2; 127 id2 = xchg; 128 } 129 130 G4int abs_id1 = std::abs(id1); 131 132 if ( abs_id1 > 5 ) 133 throw G4HadronicException(__FILE__, __LIN 134 135 G4int PDGEncoding=0; 136 137 if (id1 + id2 == 0) { 138 if ( abs_id1 < 4) { // light quark 139 G4double rmix = G4UniformRand(); 140 G4int imix = 2*std::abs(id1) - 1; 141 if (theSpin == SpinZero) { 142 PDGEncoding = 110*(1 + (G4int)(rmix 143 + (G4int)(rmix 144 ) + theSpin; 145 } else { 146 PDGEncoding = 110*(1 + (G4int)(rmix 147 + (G4int)(rmix + vectorMes 148 ) + theSpin; 149 } 150 } else { // for c and b quarks 151 152 PDGEncoding = abs_id1*100 + abs_ 153 154 if (PDGEncoding == 440) { 155 if ( G4UniformRand() < ProbEta 156 PDGEncoding +=1; 157 } else { 158 PDGEncoding +=3; 159 } 160 } 161 if (PDGEncoding == 550) { 162 if ( G4UniformRand() < ProbEta 163 PDGEncoding +=1; 164 } else { 165 PDGEncoding +=3; 166 } 167 } 168 } 169 } else { 170 PDGEncoding = 100 * std::abs(id1) + 10 * 171 G4bool IsUp = (std::abs(id1)&1) == 0; // 172 G4bool IsAnti = id1 < 0; // q 173 if ( (IsUp && IsAnti ) || (!IsUp && !IsAn 174 } 175 176 // ----------------------------------- 177 // Special treatment for charmed and b 178 // no excited charmed or bottom mesons, ther 179 // into existing charmed and bottom mesons i 180 // we use the corresponding ground state mes 181 // else, we prefer to conserve the electric 182 #ifdef debug_heavyHadrons 183 G4int initialPDGEncoding = PDGEncoding; 184 #endif 185 if ( std::abs( PDGEncoding ) == 1 186 ( PDGEncoding > 0 ? PDGEncoding = 411 : PD 187 else if ( std::abs( PDGEncoding ) == 1 188 ( PDGEncoding > 0 ? PDGEncoding = 421 : PD 189 else if ( std::abs( PDGEncoding ) == 4 190 ( PDGEncoding > 0 ? PDGEncoding = 411 : PD 191 else if ( std::abs( PDGEncoding ) == 4 192 ( PDGEncoding > 0 ? PDGEncoding = 421 : PD 193 else if ( std::abs( PDGEncoding ) == 1 194 ( PDGEncoding > 0 ? PDGEncoding = 411 : PD 195 else if ( std::abs( PDGEncoding ) == 1 196 ( PDGEncoding > 0 ? PDGEncoding = 421 : PD 197 else if ( std::abs( PDGEncoding ) == 2 198 ( PDGEncoding > 0 ? PDGEncoding = 411 : PD 199 else if ( std::abs( PDGEncoding ) == 2 200 ( PDGEncoding > 0 ? PDGEncoding = 421 : PD 201 else if ( std::abs( PDGEncoding ) == 4 202 ( PDGEncoding > 0 ? PDGEncoding = 411 : PD 203 else if ( std::abs( PDGEncoding ) == 4 204 ( PDGEncoding > 0 ? PDGEncoding = 421 : PD 205 else if ( std::abs( PDGEncoding ) == 1 206 ( PDGEncoding > 0 ? PDGEncoding = 431 : PD 207 else if ( std::abs( PDGEncoding ) == 4 208 ( PDGEncoding > 0 ? PDGEncoding = 431 : PD 209 else if ( std::abs( PDGEncoding ) == 1 210 ( PDGEncoding > 0 ? PDGEncoding = 431 : PD 211 else if ( std::abs( PDGEncoding ) == 2 212 ( PDGEncoding > 0 ? PDGEncoding = 431 : PD 213 else if ( std::abs( PDGEncoding ) == 4 214 ( PDGEncoding > 0 ? PDGEncoding = 431 : PD 215 else if ( std::abs( PDGEncoding ) == 216 else if ( std::abs( PDGEncoding ) == 217 else if ( std::abs( PDGEncoding ) == 218 else if ( std::abs( PDGEncoding ) == 219 else if ( std::abs( PDGEncoding ) == 220 else if ( std::abs( PDGEncoding ) == 221 else if ( std::abs( PDGEncoding ) == 9 222 else if ( std::abs( PDGEncoding ) == 9 223 else if ( std::abs( PDGEncoding ) == 9 224 else if ( std::abs( PDGEncoding ) == 225 else if ( std::abs( PDGEncoding ) == 226 // Bottom mesons 227 else if ( std::abs( PDGEncoding ) == 1 228 ( PDGEncoding > 0 ? PDGEncoding = 511 : PD 229 else if ( std::abs( PDGEncoding ) == 1 230 ( PDGEncoding > 0 ? PDGEncoding = 521 : PD 231 else if ( std::abs( PDGEncoding ) == 5 232 ( PDGEncoding > 0 ? PDGEncoding = 511 : PD 233 else if ( std::abs( PDGEncoding ) == 5 234 ( PDGEncoding > 0 ? PDGEncoding = 521 : PD 235 else if ( std::abs( PDGEncoding ) == 1 236 ( PDGEncoding > 0 ? PDGEncoding = 511 : PD 237 else if ( std::abs( PDGEncoding ) == 1 238 ( PDGEncoding > 0 ? PDGEncoding = 521 : PD 239 else if ( std::abs( PDGEncoding ) == 2 240 ( PDGEncoding > 0 ? PDGEncoding = 511 : PD 241 else if ( std::abs( PDGEncoding ) == 2 242 ( PDGEncoding > 0 ? PDGEncoding = 521 : PD 243 else if ( std::abs( PDGEncoding ) == 5 244 ( PDGEncoding > 0 ? PDGEncoding = 511 : PD 245 else if ( std::abs( PDGEncoding ) == 5 246 ( PDGEncoding > 0 ? PDGEncoding = 521 : PD 247 else if ( std::abs( PDGEncoding ) == 1 248 ( PDGEncoding > 0 ? PDGEncoding = 531 : PD 249 else if ( std::abs( PDGEncoding ) == 5 250 ( PDGEncoding > 0 ? PDGEncoding = 531 : PD 251 else if ( std::abs( PDGEncoding ) == 1 252 ( PDGEncoding > 0 ? PDGEncoding = 531 : PD 253 else if ( std::abs( PDGEncoding ) == 2 254 ( PDGEncoding > 0 ? PDGEncoding = 531 : PD 255 else if ( std::abs( PDGEncoding ) == 5 256 ( PDGEncoding > 0 ? PDGEncoding = 531 : PD 257 else if ( std::abs( PDGEncoding ) == 1 258 ( PDGEncoding > 0 ? PDGEncoding = 541 : PD 259 else if ( std::abs( PDGEncoding ) == 5 260 ( PDGEncoding > 0 ? PDGEncoding = 541 : PD 261 else if ( std::abs( PDGEncoding ) == 1 262 ( PDGEncoding > 0 ? PDGEncoding = 541 : PD 263 else if ( std::abs( PDGEncoding ) == 20543 ) 264 ( PDGEncoding > 0 ? PDGEncoding = 541 : PD 265 else if ( std::abs( PDGEncoding ) == 5 266 ( PDGEncoding > 0 ? PDGEncoding = 541 : PD 267 else if ( std::abs( PDGEncoding ) == 268 else if ( std::abs( PDGEncoding ) == 269 else if ( std::abs( PDGEncoding ) == 270 else if ( std::abs( PDGEncoding ) == 271 else if ( std::abs( PDGEncoding ) == 272 else if ( std::abs( PDGEncoding ) == 273 else if ( std::abs( PDGEncoding ) == 274 else if ( std::abs( PDGEncoding ) == 275 else if ( std::abs( PDGEncoding ) == 276 else if ( std::abs( PDGEncoding ) == 277 else if ( std::abs( PDGEncoding ) == 278 else if ( std::abs( PDGEncoding ) == 279 else if ( std::abs( PDGEncoding ) == 280 else if ( std::abs( PDGEncoding ) == 281 else if ( std::abs( PDGEncoding ) == 282 else if ( std::abs( PDGEncoding ) == 283 else if ( std::abs( PDGEncoding ) == 284 else if ( std::abs( PDGEncoding ) == 9 285 else if ( std::abs( PDGEncoding ) == 9 286 else if ( std::abs( PDGEncoding ) == 287 else if ( std::abs( PDGEncoding ) == 288 else if ( std::abs( PDGEncoding ) == 289 else if ( std::abs( PDGEncoding ) == 290 else if ( std::abs( PDGEncoding ) == 291 else if ( std::abs( PDGEncoding ) == 292 else if ( std::abs( PDGEncoding ) == 293 else if ( std::abs( PDGEncoding ) == 294 else if ( std::abs( PDGEncoding ) == 295 #ifdef debug_heavyHadrons 296 if ( initialPDGEncoding != PDGEncoding ) { 297 G4cout << "G4HadronBuilder::Meson : forcin 298 << initialPDGEncoding << " into pdgCode=" 299 } 300 #endif 301 // ----------------------------------- 302 303 G4ParticleDefinition * MesonDef= 304 G4ParticleTable::GetParticleTable()->FindP 305 306 #ifdef debug_Hbuilder 307 if (MesonDef == 0 ) { 308 G4cerr << " G4HadronBuilder - Warning: No 309 << PDGEncoding << G4endl; 310 } else if ( ( black->GetPDGCharge() + whit 311 - MesonDef->GetPDGCharge() ) > per 312 G4cerr << " G4HadronBuilder - Warnin 313 << " Quark1/2 = " 314 << black->GetParticleName() << " / " 315 << white->GetParticleName() 316 << " resulting Hadron " << MesonDef->Get 317 << G4endl; 318 } 319 #endif 320 321 return MesonDef; 322 } 323 324 //-------------------------------------------- 325 326 G4ParticleDefinition * G4HadronBuilder::Barion 327 G4ParticleDefinition * white, 328 { 329 #ifdef debug_Hbuilder 330 // Verify Input Charge 331 G4double charge = black->GetPDGCharge 332 if (std::abs(charge) > 2 || std::abs(3 333 { 334 G4cerr << " G4HadronBuilder::Build()" << 335 G4cerr << " Invalid total charge foun 336 << charge<< G4endl; 337 G4cerr << " PGDcode input quark1/quar 338 black->GetPDGEncoding() << " / "<< 339 white->GetPDGEncoding() << G4endl; 340 G4cerr << G4endl; 341 } 342 #endif 343 344 G4int id1 = black->GetPDGEncoding(); 345 G4int id2 = white->GetPDGEncoding(); 346 347 if ( std::abs(id1) < std::abs(id2) ) 348 { 349 G4int xchg = id1; 350 id1 = id2; 351 id2 = xchg; 352 } 353 354 if (std::abs(id1) < 1000 || std::abs(id2) > 355 throw G4HadronicException(__FILE__, __LIN 356 357 G4int ifl1= std::abs(id1)/1000; 358 G4int ifl2 = (std::abs(id1) - ifl1 * 1000)/1 359 G4int diquarkSpin = std::abs(id1)%10; 360 G4int ifl3 = id2; 361 if (id1 < 0) 362 { 363 ifl1 = - ifl1; 364 ifl2 = - ifl2; 365 } 366 //... Construct barion, distinguish Lambda a 367 G4int kfla = std::abs(ifl1); 368 G4int kflb = std::abs(ifl2); 369 G4int kflc = std::abs(ifl3); 370 371 G4int kfld = std::max(kfla,kflb); 372 kfld = std::max(kfld,kflc); 373 G4int kflf = std::min(kfla,kflb); 374 kflf = std::min(kflf,kflc); 375 376 G4int kfle = kfla + kflb + kflc - kfld - kfl 377 378 //... barion with content uuu or ddd or sss 379 theSpin = (kfla == kflb && kflb == kflc)? Sp 380 381 G4int kfll = 0; 382 if (kfld < 6) { 383 if (theSpin == SpinHalf && kfld > kfle && 384 // Spin J=1/2 and all three quar 385 // Two states exist: (uds -> lam 386 // - lambda: s(ud)0 s : 3122; 387 // - sigma0: s(ud)1 s : 3212 388 if (diquarkSpin == 1 ) { 389 if ( kfla == kfld) { // heaviest 390 kfll = 1; 391 } else { 392 kfll = (G4int)(0.25 + G4UniformR 393 } 394 } 395 if (diquarkSpin == 3 && kfla != kfld) 396 kfll = (G4int)(0.75 + G4UniformRan 397 } 398 } 399 400 G4int PDGEncoding; 401 if (kfll == 1) 402 PDGEncoding = 1000 * kfld + 100 * kflf + 403 else 404 PDGEncoding = 1000 * kfld + 100 * kfle + 405 406 if (id1 < 0) 407 PDGEncoding = -PDGEncoding; 408 409 // ----------------------------------- 410 // Special treatment for charmed and b 411 // neither excited charmed or bottom baryons 412 // heavy (c, b) constitutent quarks: 413 // Sigma_c* , Xi_c' , Xi_c* , Omega_c* , 414 // Xi_cc , Xi_cc* , Omega_cc , Omega_cc* , 415 // Sigma_b* , Xi_b' , Xi_b* , Omega_b*, 416 // Xi_bc , Xi_bc' , Xi_bc* , Omega_bc , Om 417 // Omega_bcc , Omega_bcc* , Xi_bb, Xi_bb* 418 // Omega_bbc , Omega_bbc* , Omega_bbb 419 // therefore we need to transform these into 420 // baryons in Geant4. Whenever possible, we 421 // baryons with the same quantum numbers; el 422 // electric charge rather than other flavor 423 #ifdef debug_heavyHadrons 424 G4int charmViolation = 0, bottomViolation = 425 G4int initialPDGEncoding = PDGEncoding; 426 #endif 427 if ( std::abs( PDGEncoding ) == 4 428 ( PDGEncoding > 0 ? PDGEncoding = 4222 : P 429 } else if ( std::abs( PDGEncoding ) == 4214 430 ( PDGEncoding > 0 ? PDGEncoding = 4212 : P 431 } else if ( std::abs( PDGEncoding ) == 4114 432 ( PDGEncoding > 0 ? PDGEncoding = 4112 : P 433 } else if ( std::abs( PDGEncoding ) == 4322 434 ( PDGEncoding > 0 ? PDGEncoding = 4232 : P 435 } else if ( std::abs( PDGEncoding ) == 4312 436 ( PDGEncoding > 0 ? PDGEncoding = 4132 : P 437 } else if ( std::abs( PDGEncoding ) == 4324 438 ( PDGEncoding > 0 ? PDGEncoding = 4232 : P 439 } else if ( std::abs( PDGEncoding ) == 4314 440 ( PDGEncoding > 0 ? PDGEncoding = 4132 : P 441 } else if ( std::abs( PDGEncoding ) == 4334 442 ( PDGEncoding > 0 ? PDGEncoding = 4332 : P 443 } else if ( std::abs( PDGEncoding ) == 4412 444 ( PDGEncoding > 0 ? PDGEncoding = 4232 : P 445 #ifdef debug_heavyHadrons 446 charmViolation = 1; 447 #endif 448 } else if ( std::abs( PDGEncoding ) == 449 ( PDGEncoding > 0 ? PDGEncoding = 4222 : P 450 #ifdef debug_heavyHadrons 451 charmViolation = 1; 452 #endif 453 } else if ( std::abs( PDGEncoding ) == 4414 454 ( PDGEncoding > 0 ? PDGEncoding = 4232 : P 455 #ifdef debug_heavyHadrons 456 charmViolation = 1; 457 #endif 458 } else if ( std::abs( PDGEncoding ) == 459 ( PDGEncoding > 0 ? PDGEncoding = 4222 : P 460 #ifdef debug_heavyHadrons 461 charmViolation = 1; 462 #endif 463 } else if ( std::abs( PDGEncoding ) == 4432 464 ( PDGEncoding > 0 ? PDGEncoding = 4232 : P 465 #ifdef debug_heavyHadrons 466 charmViolation = 1; 467 #endif 468 } else if ( std::abs( PDGEncoding ) == 4434 469 ( PDGEncoding > 0 ? PDGEncoding = 4232 : P 470 #ifdef debug_heavyHadrons 471 charmViolation = 1; 472 #endif 473 } else if ( std::abs( PDGEncoding ) == 474 ( PDGEncoding > 0 ? PDGEncoding = 4222 : P 475 #ifdef debug_heavyHadrons 476 charmViolation = 2; 477 #endif 478 // Bottom baryons 479 } else if ( std::abs( PDGEncoding ) == 480 ( PDGEncoding > 0 ? PDGEncoding = 5112 : P 481 } else if ( std::abs( PDGEncoding ) == 482 ( PDGEncoding > 0 ? PDGEncoding = 5212 : P 483 } else if ( std::abs( PDGEncoding ) == 484 ( PDGEncoding > 0 ? PDGEncoding = 5222 : P 485 } else if ( std::abs( PDGEncoding ) == 486 ( PDGEncoding > 0 ? PDGEncoding = 5132 : P 487 } else if ( std::abs( PDGEncoding ) == 488 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 489 } else if ( std::abs( PDGEncoding ) == 490 ( PDGEncoding > 0 ? PDGEncoding = 5132 : P 491 } else if ( std::abs( PDGEncoding ) == 492 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 493 } else if ( std::abs( PDGEncoding ) == 494 ( PDGEncoding > 0 ? PDGEncoding = 5332 : P 495 } else if ( std::abs( PDGEncoding ) == 496 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 497 #ifdef debug_heavyHadrons 498 charmViolation = 1; 499 #endif 500 } else if ( std::abs( PDGEncoding ) == 501 ( PDGEncoding > 0 ? PDGEncoding = 5222 : P 502 #ifdef debug_heavyHadrons 503 charmViolation = 1; 504 #endif 505 } else if ( std::abs( PDGEncoding ) == 506 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 507 #ifdef debug_heavyHadrons 508 charmViolation = 1; 509 #endif 510 } else if ( std::abs( PDGEncoding ) == 511 ( PDGEncoding > 0 ? PDGEncoding = 5222 : P 512 #ifdef debug_heavyHadrons 513 charmViolation = 1; 514 #endif 515 } else if ( std::abs( PDGEncoding ) == 516 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 517 #ifdef debug_heavyHadrons 518 charmViolation = 1; 519 #endif 520 } else if ( std::abs( PDGEncoding ) == 521 ( PDGEncoding > 0 ? PDGEncoding = 5222 : P 522 #ifdef debug_heavyHadrons 523 charmViolation = 1; 524 #endif 525 } else if ( std::abs( PDGEncoding ) == 526 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 527 #ifdef debug_heavyHadrons 528 charmViolation = 1; 529 #endif 530 } else if ( std::abs( PDGEncoding ) == 531 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 532 #ifdef debug_heavyHadrons 533 charmViolation = 1; 534 #endif 535 } else if ( std::abs( PDGEncoding ) == 536 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 537 #ifdef debug_heavyHadrons 538 charmViolation = 1; 539 #endif 540 } else if ( std::abs( PDGEncoding ) == 541 ( PDGEncoding > 0 ? PDGEncoding = 5222 : P 542 #ifdef debug_heavyHadrons 543 charmViolation = 2; 544 #endif 545 } else if ( std::abs( PDGEncoding ) == 546 ( PDGEncoding > 0 ? PDGEncoding = 5222 : P 547 #ifdef debug_heavyHadrons 548 charmViolation = 2; 549 #endif 550 } else if ( std::abs( PDGEncoding ) == 551 ( PDGEncoding > 0 ? PDGEncoding = 5132 : P 552 #ifdef debug_heavyHadrons 553 bottomViolation = 1; 554 #endif 555 } else if ( std::abs( PDGEncoding ) == 556 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 557 #ifdef debug_heavyHadrons 558 bottomViolation = 1; 559 #endif 560 } else if ( std::abs( PDGEncoding ) == 561 ( PDGEncoding > 0 ? PDGEncoding = 5132 : P 562 #ifdef debug_heavyHadrons 563 bottomViolation = 1; 564 #endif 565 } else if ( std::abs( PDGEncoding ) == 566 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 567 #ifdef debug_heavyHadrons 568 bottomViolation = 1; 569 #endif 570 } else if ( std::abs( PDGEncoding ) == 571 ( PDGEncoding > 0 ? PDGEncoding = 5332 : P 572 #ifdef debug_heavyHadrons 573 bottomViolation = 1; 574 #endif 575 } else if ( std::abs( PDGEncoding ) == 576 ( PDGEncoding > 0 ? PDGEncoding = 5332 : P 577 #ifdef debug_heavyHadrons 578 bottomViolation = 1; 579 #endif 580 } else if ( std::abs( PDGEncoding ) == 581 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 582 #ifdef debug_heavyHadrons 583 charmViolation = 1; bottomViolation = 1; 584 #endif 585 } else if ( std::abs( PDGEncoding ) == 586 ( PDGEncoding > 0 ? PDGEncoding = 5232 : P 587 #ifdef debug_heavyHadrons 588 charmViolation = 1; bottomViolation = 1; 589 #endif 590 } else if ( std::abs( PDGEncoding ) == 591 ( PDGEncoding > 0 ? PDGEncoding = 5332 : P 592 #ifdef debug_heavyHadrons 593 bottomViolation = 2; 594 #endif 595 } 596 #ifdef debug_heavyHadrons 597 if ( initialPDGEncoding != PDGEncoding ) { 598 G4cout << "G4HadronBuilder::Barion : forci 599 << initialPDGEncoding << " into pdgCode=" 600 if ( charmViolation != 0 || bottomViolat 601 G4cout << "\t --> VIOLATION of " << ( ch 602 << ( charmViolation != 0 && bot 603 << ( bottomViolation != 0 ? " BOT 604 } 605 } 606 #endif 607 // ----------------------------------- 608 609 G4ParticleDefinition * BarionDef= 610 G4ParticleTable::GetParticleTable()->FindP 611 612 #ifdef debug_Hbuilder 613 if (BarionDef == 0 ) { 614 G4cerr << " G4HadronBuilder - Warning: No 615 << PDGEncoding << G4endl; 616 } else if ( ( black->GetPDGCharge() + whit 617 - BarionDef->GetPDGCharge() ) > pe 618 G4cerr << " G4HadronBuilder - Warnin 619 << " DiQuark/Quark = " 620 << black->GetParticleName() << " / " 621 << white->GetParticleName() 622 << " resulting Hadron " << BarionDef->Ge 623 << G4endl; 624 } 625 #endif 626 627 return BarionDef; 628 } 629