Changeset 1340 for trunk/source/processes/hadronic/models/parton_string
- Timestamp:
- Nov 5, 2010, 3:45:55 PM (14 years ago)
- Location:
- trunk/source/processes/hadronic/models/parton_string
- Files:
-
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/parton_string/diffraction/History
r1337 r1340 1 $Id: History,v 1.3 1 2010/06/14 16:28:32 gcosmoExp $1 $Id: History,v 1.33 2010/09/20 15:55:33 vuzhinsk Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 15 15 * Please list in reverse chronological order (last date on top) 16 16 --------------------------------------------------------------- 17 20 Sept. 2010, V, Uzhinsky (hadr-string-diff-V09-03-03) 18 FTF with new tuned parameters of nuclear destrustion is implemented. 19 The parameters were tuned using HARP-CDP data on p+Cu interactions. 20 They will be re-tuned for heavy nuclei a little bit. 21 22 ---------------------------------------------------- 23 8 Sept 2010 G.Folger (hadr-string-diff-V09-03-02) 24 G4FTFModel.cc: use integer interace of G4Nucleus 17 25 18 26 14 Jun 2010 G.Cosmo (hadr-string-diff-V09-03-01) -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4DiffractiveSplitableHadron.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4DiffractiveSplitableHadron.hh,v 1. 5 2009/08/03 13:14:19vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4DiffractiveSplitableHadron.hh,v 1.6 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4FTFModel.hh,v 1.1 0 2009/10/25 10:50:54vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4FTFModel.hh,v 1.11 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // Class Description -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParameters.hh
r1337 r1340 27 27 #define G4FTFParameters_h 1 28 28 // 29 // $Id: G4FTFParameters.hh,v 1. 7 2009/10/25 10:50:54vuzhinsk Exp $30 // GEANT4 tag $Name: geant4-09-0 4-beta-01$29 // $Id: G4FTFParameters.hh,v 1.8 2010/09/20 15:50:46 vuzhinsk Exp $ 30 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 31 31 // 32 32 #include "G4Proton.hh" … … 81 81 82 82 // --------- Set parameters of nuclear destruction-------------------- 83 void SetMaxNumberOfCollisions(const G4double aValue, const G4double bValue); 84 void SetProbOfInteraction(const G4double aValue); 85 83 86 void SetCofNuclearDestruction(const G4double aValue); 84 87 void SetR2ofNuclearDestruction(const G4double aValue); … … 125 128 126 129 // --------- Get parameters of nuclear destruction--------------------- 130 G4double GetMaxNumberOfCollisions(); 131 G4double GetProbOfInteraction(); 132 127 133 G4double GetCofNuclearDestruction(); 128 134 G4double GetR2ofNuclearDestruction(); … … 171 177 172 178 // --------- Parameters of nuclear destruction------------------------ 179 G4double MaxNumberOfCollisions; 180 G4double ProbOfInelInteraction; 181 173 182 G4double CofNuclearDestruction; // Cnd of nuclear destruction 174 183 G4double R2ofNuclearDestruction; // R2nd … … 260 269 261 270 // --------- Set parameters of nuclear destruction-------------------- 271 inline void G4FTFParameters::SetMaxNumberOfCollisions(const G4double Plab, 272 const G4double Pbound) 273 { 274 if(Plab > Pbound) 275 { 276 MaxNumberOfCollisions = Plab/Pbound; 277 SetProbOfInteraction(-1.); 278 } else 279 { 280 // MaxNumberOfCollisions = -1.; 281 // SetProbOfInteraction(std::exp(0.25*(Plab-Pbound))); 282 MaxNumberOfCollisions = 1; 283 SetProbOfInteraction(-1.); 284 } 285 } 286 inline void G4FTFParameters::SetProbOfInteraction(const G4double aValue) 287 {ProbOfInelInteraction = aValue;} 288 262 289 inline void G4FTFParameters::SetCofNuclearDestruction(const G4double aValue) 263 290 {CofNuclearDestruction = aValue;} … … 325 352 326 353 // --------- Get parameters of nuclear destruction--------------------- 354 inline G4double G4FTFParameters::GetMaxNumberOfCollisions(){return MaxNumberOfCollisions;} 355 inline G4double G4FTFParameters::GetProbOfInteraction() {return ProbOfInelInteraction;} 356 327 357 inline G4double G4FTFParameters::GetCofNuclearDestruction(){return CofNuclearDestruction;} 328 358 inline G4double G4FTFParameters::GetR2ofNuclearDestruction(){return R2ofNuclearDestruction;} -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParticipants.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4FTFParticipants.hh,v 1. 6 2009/08/03 13:14:19vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4FTFParticipants.hh,v 1.7 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveExcitation.cc
r1228 r1340 25 25 // 26 26 // 27 // $Id: G4DiffractiveExcitation.cc,v 1.2 1 2009/12/15 19:14:31vuzhinsk Exp $27 // $Id: G4DiffractiveExcitation.cc,v 1.22 2010/09/20 15:50:46 vuzhinsk Exp $ 28 28 // ------------------------------------------------------------ 29 29 // GEANT 4 class implemetation file … … 108 108 G4int TargetPDGcode=target->GetDefinition()->GetPDGEncoding(); 109 109 G4int absTargetPDGcode=std::abs(TargetPDGcode); 110 //G4cout<<"Excit "<<ProjectilePDGcode<<" "<<TargetPDGcode<<G4endl; 110 111 111 112 G4LorentzVector Ptarget=target->Get4Momentum(); … … 113 114 G4double M0target = Ptarget.mag(); 114 115 115 116 // G4double TargetRapidity = Ptarget.rapidity(); 116 117 117 118 if(M0target < target->GetDefinition()->GetPDGMass()) … … 129 130 G4double AveragePt2=theParameters->GetAveragePt2(); 130 131 131 G4double ProbOfDiffraction=ProbProjectileDiffraction +132 ProbTargetDiffraction;132 // G4double ProbOfDiffraction=ProbProjectileDiffraction + 133 // ProbTargetDiffraction; 133 134 134 135 G4double SumMasses=M0projectile+M0target+200.*MeV; … … 162 163 163 164 G4double SqrtS=std::sqrt(S); 164 165 165 166 if(absProjectilePDGcode > 1000 && (SqrtS < 2300*MeV || SqrtS < SumMasses)) 166 167 {target->SetStatus(2); return false;} // The model cannot work for … … 215 216 216 217 G4double maxPtSquare; // = PZcms2; 217 218 /* 219 G4cout<<"Start --------------------"<<G4endl; 220 G4cout<<"Proj "<<M0projectile<<" "<<ProjectileDiffStateMinMass<<" "<<ProjectileNonDiffStateMinMass<<G4endl; 221 G4cout<<"Targ "<<M0target <<" "<<TargetDiffStateMinMass <<" "<<TargetNonDiffStateMinMass<<G4endl; 222 G4cout<<"SqrtS "<<SqrtS<<G4endl; 223 G4cout<<"Rapid "<<ProjectileRapidity<<" "<<TargetRapidity<<G4endl; 224 */ 218 225 // Charge exchange can be possible for baryons ----------------- 219 226 … … 223 230 G4double DeltaProbAtQuarkExchange=theParameters->GetDeltaProbAtQuarkExchange(); 224 231 232 //G4cout<<"Q exc "<<MagQuarkExchange<<" "<<SlopeQuarkExchange<<" "<<DeltaProbAtQuarkExchange<<G4endl; 225 233 // G4double NucleonMass= 226 234 // (G4ParticleTable::GetParticleTable()->FindParticle(2112))->GetPDGMass(); … … 228 236 (G4ParticleTable::GetParticleTable()->FindParticle(2224))->GetPDGMass(); 229 237 230 // Check for possible quark excjane ----------------------------------- 238 //G4cout<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity - TargetRapidity))<<G4endl; 239 //G4cout<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity))<<G4endl; 240 //G4cout<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity - 1.36))<<G4endl; 241 //G4int Uzhi; G4cin>>Uzhi; 242 // Check for possible quark exchange ----------------------------------- 243 231 244 if(G4UniformRand() < MagQuarkExchange* 232 std::exp(-SlopeQuarkExchange* (ProjectileRapidity - TargetRapidity)))245 std::exp(-SlopeQuarkExchange*ProjectileRapidity)) //TargetRapidity))) 1.45 233 246 { 247 // std::exp(-SlopeQuarkExchange*(ProjectileRapidity - 1.36))) //TargetRapidity))) 1.45 248 //G4cout<<"Q exchange"<<G4endl; 234 249 G4int NewProjCode(0), NewTargCode(0); 235 250 … … 249 264 UnpackBaryon(TargetPDGcode, TargQ1, TargQ2, TargQ3); 250 265 266 //G4cout<<ProjQ1<<" "<<ProjQ2<<" "<<ProjQ3<<G4endl; 267 //G4cout<<TargQ1<<" "<<TargQ2<<" "<<TargQ3<<G4endl; 251 268 // Sampling of exchanged quarks ------------------- 252 269 G4int ProjExchangeQ(0); … … 326 343 {ProjExchangeQ = ProjQ3;} 327 344 345 //G4cout<<"ProjExchangeQ "<<ProjExchangeQ<<G4endl; 328 346 if((ProjExchangeQ != TargQ1)||(G4UniformRand()<Same)) 329 347 { … … 338 356 } 339 357 358 //G4cout<<"ProjExchangeQ "<<ProjExchangeQ<<G4endl; 359 //G4cout<<"TargExchangeQ "<<TargExchangeQ<<G4endl; 340 360 if( Ksi < 0.333333 ) 341 361 {ProjQ1=ProjExchangeQ;} … … 376 396 377 397 NewProjCode = NewNucleonId(ProjQ1, ProjQ2, ProjQ3); // ***************************** 398 399 //G4cout<<"ProjQ1, ProjQ2, ProjQ3 "<<ProjQ1<<" "<<ProjQ2<<" "<<ProjQ3<<" "<<NewProjCode<<G4endl; 400 401 G4int TestParticleID=NewProjCode; 402 G4ParticleDefinition* TestParticle=0; 403 G4double TestParticleMass=DBL_MAX; 404 405 TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode); 406 if(TestParticle) TestParticleMass=TestParticle->GetPDGMass(); 378 407 379 408 if((ProjQ1==ProjQ2) && (ProjQ1==ProjQ3)) {NewProjCode +=2; ProjDeltaHasCreated=true;} … … 390 419 } 391 420 421 G4ParticleDefinition* NewTestParticle= 422 G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode); 423 //G4cout<<"TestParticleMass NewTestParticle->GetPDGMass() "<<TestParticleMass<<" "<< NewTestParticle->GetPDGMass()<<G4endl; 424 //if(TestParticleMass < NewTestParticle->GetPDGMass()) {NewProjCode=TestParticleID;} 425 426 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= 427 392 428 NewTargCode = NewNucleonId(TargQ1, TargQ2, TargQ3); // ***************************** 429 430 //G4cout<<"TargQ1, TargQ2, TargQ3 "<<TargQ1<<" "<<TargQ2<<" "<<TargQ3<<" "<<NewTargCode<<G4endl; 431 432 TestParticleID=NewTargCode; 433 TestParticleMass=DBL_MAX; 434 435 TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode); 436 if(TestParticle) TestParticleMass=TestParticle->GetPDGMass(); 393 437 394 438 if((TargQ1==TargQ2) && (TargQ1==TargQ3)) {NewTargCode +=2; TargDeltaHasCreated=true;} … … 405 449 } 406 450 451 NewTestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode); 452 //G4cout<<"TestParticleMass NewTestParticle->GetPDGMass() "<<TestParticleMass<<" "<< NewTestParticle->GetPDGMass()<<G4endl; 453 //if(TestParticleMass < NewTestParticle->GetPDGMass()) {NewTargCode=TestParticleID;} 454 455 //G4cout<<"NewProjCode NewTargCode "<<NewProjCode<<" "<<NewTargCode<<G4endl; 456 //G4int Uzhi; G4cin>>Uzhi; 457 407 458 if((absProjectilePDGcode == NewProjCode) && (absTargetPDGcode == NewTargCode)) 408 459 { // Nothing was changed! It is not right!? 409 460 } 410 461 // Forming baryons -------------------------------------------------- 411 462 if(ProjDeltaHasCreated) {ProbProjectileDiffraction=1.; ProbTargetDiffraction=0.;} 463 if(TargDeltaHasCreated) {ProbProjectileDiffraction=0.; ProbTargetDiffraction=1.;} 464 if(ProjDeltaHasCreated) 465 { 466 M0projectile= 467 (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass(); 468 M0projectile2 = M0projectile * M0projectile; 469 470 ProjectileDiffStateMinMass =M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV 471 ProjectileNonDiffStateMinMass=M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV 472 } 473 474 // if(M0target < 475 // (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass()) 476 if(TargDeltaHasCreated) 477 { 478 M0target= 479 (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass(); 480 M0target2 = M0target * M0target; 481 482 TargetDiffStateMinMass =M0target+210.*MeV; //210 MeV=m_pi+70 MeV; 483 TargetNonDiffStateMinMass=M0target+210.*MeV; //210 MeV=m_pi+70 MeV; 484 } 412 485 } // End of if projectile is baryon --------------------------- 413 486 … … 416 489 // in the ground states, we have to put ---------------------------------- 417 490 418 if(M0projectile < 419 (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass()) 491 /* 492 // if(M0projectile < 493 // (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass()) 494 if(ProjDeltaHasCreated) 420 495 { 421 496 M0projectile= 422 497 (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass(); 423 498 M0projectile2 = M0projectile * M0projectile; 499 500 ProjectileDiffStateMinMass =M0projectile+160.*MeV; //160 MeV=m_pi+20 MeV 501 ProjectileNonDiffStateMinMass=M0projectile+160.*MeV; //160 MeV=m_pi+20 MeV 424 502 } 425 503 426 if(M0target < 427 (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass()) 504 // if(M0target < 505 // (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass()) 506 if(TargDeltaHasCreated) 428 507 { 429 508 M0target= 430 509 (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass(); 431 510 M0target2 = M0target * M0target; 511 512 TargetDiffStateMinMass =M0target+160.*MeV; //160 MeV=m_pi+20 MeV; 513 TargetNonDiffStateMinMass=M0target+160.*MeV; //160 MeV=m_pi+20 MeV; 432 514 } 433 515 */ 434 516 PZcms2=(S*S+M0projectile2*M0projectile2+M0target2*M0target2- 435 517 2*S*M0projectile2 - 2*S*M0target2 - 2*M0projectile2*M0target2) 436 518 /4./S; 437 519 //G4cout<<"PZcms2 1 "<<PZcms2<<G4endl; 438 520 if(PZcms2 < 0) {return false;} // It can be if energy is not sufficient for Delta 439 521 //---------------------------------------------------------- … … 452 534 Ptarget.setE(std::sqrt(M0target2+PZcms2)); 453 535 454 { 536 // ---------------------------------------------------------- 537 538 // G4double Wexcit=1.-1.97*std::exp(-0.5*ProjectileRapidity); 539 G4double Wexcit=1.-2.256*std::exp(-0.6*ProjectileRapidity); 540 541 //G4cout<<ProjectileRapidity<<" "<<1.72*std::exp(-0.4*ProjectileRapidity)<<" "<<std::exp(0.4*ProjectileRapidity)<<G4endl; 542 //G4int Uzhi;G4cin>>Uzhi; 543 //Wexcit=0.; 544 if(G4UniformRand() > Wexcit) 545 { // Make elastic scattering 546 //G4cout<<"Make elastic scattering"<<G4endl; 455 547 Pprojectile.transform(toLab); 456 548 Ptarget.transform(toLab); … … 463 555 464 556 G4bool Result= theElastic->ElasticScattering (projectile,target,theParameters); 465 466 557 return Result; 467 } 558 } // end of if(G4UniformRand() > Wexcit) 468 559 } // End of charge exchange part ------------------------------ 469 560 470 561 // ------------------------------------------------------------------ 562 G4double ProbOfDiffraction=ProbProjectileDiffraction + ProbTargetDiffraction; 563 /* 564 G4cout<<"Excite --------------------"<<G4endl; 565 G4cout<<"Proj "<<M0projectile<<" "<<ProjectileDiffStateMinMass<<" "<<ProjectileNonDiffStateMinMass<<G4endl; 566 G4cout<<"Targ "<<M0target <<" "<<TargetDiffStateMinMass <<" "<<TargetNonDiffStateMinMass<<G4endl; 567 G4cout<<"SqrtS "<<SqrtS<<G4endl; 568 569 G4cout<<"Prob ProjDiff TargDiff "<<ProbProjectileDiffraction<<" "<<ProbTargetDiffraction<<" "<<ProbOfDiffraction<<G4endl; 570 G4cout<<"Pr Y "<<Pprojectile.rapidity()<<" Tr Y "<<Ptarget.rapidity()<<G4endl; 571 //G4int Uzhi; G4cin>>Uzhi; 572 */ 573 /* 574 if(ProjectileNonDiffStateMinMass + TargetNonDiffStateMinMass > SqrtS) // 24.07.10 575 { 576 if(ProbOfDiffraction!=0.) 577 { 578 ProbProjectileDiffraction/=ProbOfDiffraction; 579 ProbOfDiffraction=1.; 580 } else {return false;} 581 } 582 583 */ 584 471 585 if(ProbOfDiffraction!=0.) 472 586 { … … 478 592 } 479 593 594 //G4cout<<"Prob ProjDiff TargDiff "<<ProbProjectileDiffraction<<" "<<ProbTargetDiffraction<<" "<<ProbOfDiffraction<<G4endl; 595 480 596 G4double ProjectileDiffStateMinMass2 = ProjectileDiffStateMinMass * 481 597 ProjectileDiffStateMinMass; … … 500 616 501 617 G4int whilecount=0; 618 502 619 // Choose a process --------------------------- 503 620 … … 506 623 if(G4UniformRand() < ProbProjectileDiffraction) 507 624 { //-------- projectile diffraction --------------- 625 //G4cout<<"projectile diffraction"<<G4endl; 626 508 627 do { 509 628 // Generate pt … … 512 631 // << ", loop count/ maxPtSquare : " 513 632 // << whilecount << " / " << maxPtSquare << G4endl; 633 634 // whilecount++; 514 635 if (whilecount > 1000 ) 515 636 { … … 517 638 target->SetStatus(2); return false; // Ignore this interaction 518 639 }; 640 519 641 // --------------- Check that the interaction is possible ----------- 520 642 ProjMassT2=ProjectileDiffStateMinMass2; … … 523 645 TargMassT2=M0target2; 524 646 TargMassT =M0target; 525 647 //G4cout<<"Masses "<<ProjMassT<<" "<<TargMassT<<" "<<SqrtS<<" "<<ProjMassT+TargMassT<<G4endl; 526 648 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2- 527 649 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2) 528 650 /4./S; 529 651 652 //G4cout<<"PZcms2 PrD"<<PZcms2<<G4endl; 530 653 if(PZcms2 < 0 ) 531 654 { … … 556 679 PMinusNew=ChooseP(PMinusMin, PMinusMax); 557 680 // PMinusNew=1./sqrt(1./PMinusMin-G4UniformRand()*(1./PMinusMin-1./PMinusMax)); 681 //PMinusNew=1./sqr(1./std::sqrt(PMinusMin)-G4UniformRand()*(1./std::sqrt(PMinusMin)-1./std::sqrt(PMinusMax))); 558 682 559 683 TMinusNew=SqrtS-PMinusNew; … … 564 688 Qmomentum.setPz( (Qplus-Qminus)/2 ); 565 689 Qmomentum.setE( (Qplus+Qminus)/2 ); 566 } while ( 567 ((Pprojectile+Qmomentum).mag2() < ProjectileDiffStateMinMass2) || //No without excitation 568 ((Ptarget -Qmomentum).mag2() < M0target2 )); 690 691 } while ((Pprojectile+Qmomentum).mag2() < ProjectileDiffStateMinMass2); //|| 692 //Repeat the sampling because there was not any excitation 693 //((Ptarget -Qmomentum).mag2() < M0target2 )) ); 569 694 } 570 695 else 571 696 { // -------------- Target diffraction ---------------- 697 698 //G4cout<<"Target diffraction"<<G4endl; 572 699 do { 573 700 // Generate pt … … 576 703 // << ", loop count/ maxPtSquare : " 577 704 // << whilecount << " / " << maxPtSquare << G4endl; 705 706 // whilecount++; 578 707 if (whilecount > 1000 ) 579 708 { … … 581 710 target->SetStatus(2); return false; // Ignore this interaction 582 711 }; 712 //G4cout<<"Qm while "<<Qmomentum<<" "<<whilecount<<G4endl; 583 713 // --------------- Check that the interaction is possible ----------- 584 714 ProjMassT2=M0projectile2; … … 592 722 /4./S; 593 723 724 //G4cout<<"PZcms2 TrD <0 "<<PZcms2<<" return"<<G4endl; 594 725 if(PZcms2 < 0 ) 595 726 { … … 600 731 601 732 Qmomentum=G4LorentzVector(GaussianPt(AveragePt2,maxPtSquare),0); 733 734 //G4cout<<"Qm while "<<Qmomentum<<" "<<whilecount<<G4endl; 602 735 Pt2=G4ThreeVector(Qmomentum.vect()).mag2(); 603 736 … … 612 745 /4./S; 613 746 747 //G4cout<<"PZcms2 <0 "<<PZcms2<<" continue"<<G4endl; 614 748 if(PZcms2 < 0 ) continue; 615 749 PZcms =std::sqrt(PZcms2); … … 619 753 620 754 TPlusNew=ChooseP(TPlusMin, TPlusMax); 755 //TPlusNew=1./sqr(1./std::sqrt(TPlusMin)-G4UniformRand()*(1./std::sqrt(TPlusMin)-1./std::sqrt(TPlusMax))); 621 756 622 757 //TPlusNew=TPlusMax; … … 630 765 Qmomentum.setE( (Qplus+Qminus)/2 ); 631 766 632 } while ( 633 ((Pprojectile+Qmomentum).mag2() < M0projectile2 ) || //No without excitation 634 ((Ptarget -Qmomentum).mag2() < TargetDiffStateMinMass2)); 635 } 767 /* 768 G4cout<<(Pprojectile+Qmomentum).mag()<<" "<<M0projectile<<G4endl; 769 G4bool First=(Pprojectile+Qmomentum).mag2() < M0projectile2; 770 G4cout<<First<<G4endl; 771 772 G4cout<<(Ptarget -Qmomentum).mag()<<" "<<TargetDiffStateMinMass<<" "<<TargetDiffStateMinMass2<<G4endl; 773 G4bool Seco=(Ptarget -Qmomentum).mag2() < TargetDiffStateMinMass2; 774 G4cout<<Seco<<G4endl; 775 */ 776 777 } while ((Ptarget -Qmomentum).mag2() < TargetDiffStateMinMass2); 778 // Repeat the sampling because there was not any excitation 779 // (((Pprojectile+Qmomentum).mag2() < M0projectile2 ) || //No without excitation 780 // ((Ptarget -Qmomentum).mag2() < TargetDiffStateMinMass2)) ); 781 //G4cout<<"Go out"<<G4endl; 782 } // End of if(G4UniformRand() < ProbProjectileDiffraction) 636 783 } 637 784 else //----------- Non-diffraction process ------------ 638 785 { 786 787 //G4cout<<"Non-diffraction process"<<G4endl; 639 788 do { 640 789 // Generate pt … … 643 792 // << ", loop count/ maxPtSquare : " 644 793 // << whilecount << " / " << maxPtSquare << G4endl; 794 795 // whilecount++; 645 796 if (whilecount > 1000 ) 646 797 { … … 677 828 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2) 678 829 /4./S; 830 //G4cout<<"PZcms2 ND"<<PZcms2<<G4endl; 679 831 680 832 if(PZcms2 < 0 ) continue; … … 698 850 Qmomentum.setPz( (Qplus-Qminus)/2 ); 699 851 Qmomentum.setE( (Qplus+Qminus)/2 ); 700 852 /* 853 G4cout<<(Pprojectile+Qmomentum).mag2()<<" "<<ProjectileNonDiffStateMinMass2<<G4endl; 854 G4cout<<(Ptarget -Qmomentum).mag2()<<" "<<TargetNonDiffStateMinMass2<<G4endl; 855 G4int Uzhi; G4cin>>Uzhi; 856 */ 701 857 } while ( 702 858 ((Pprojectile+Qmomentum).mag2() < ProjectileNonDiffStateMinMass2) || //No double Diffraction 703 859 ((Ptarget -Qmomentum).mag2() < TargetNonDiffStateMinMass2 )); 704 } 705 706 Pprojectile += Qmomentum; 707 Ptarget -= Qmomentum; 860 } 861 862 Pprojectile += Qmomentum; 863 Ptarget -= Qmomentum; 864 865 //G4cout<<"Pr Y "<<Pprojectile.rapidity()<<" Tr Y "<<Ptarget.rapidity()<<G4endl; 708 866 709 867 // Transform back and update SplitableHadron Participant. 710 711 868 Pprojectile.transform(toLab); 869 Ptarget.transform(toLab); 712 870 713 871 // Calculation of the creation time --------------------- 714 715 872 projectile->SetTimeOfCreation(target->GetTimeOfCreation()); 873 projectile->SetPosition(target->GetPosition()); 716 874 // Creation time and position of target nucleon were determined at 717 875 // ReggeonCascade() of G4FTFModel 718 876 // ------------------------------------------------------ 719 877 720 projectile->Set4Momentum(Pprojectile); 721 target->Set4Momentum(Ptarget); 722 723 projectile->IncrementCollisionCount(1); 724 target->IncrementCollisionCount(1); 725 726 return true; 878 //G4cout<<"Mproj "<<Pprojectile.mag()<<G4endl; 879 //G4cout<<"Mtarg "<<Ptarget.mag()<<G4endl; 880 projectile->Set4Momentum(Pprojectile); 881 target->Set4Momentum(Ptarget); 882 883 projectile->IncrementCollisionCount(1); 884 target->IncrementCollisionCount(1); 885 886 return true; 727 887 } 728 888 -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveSplitableHadron.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4DiffractiveSplitableHadron.cc,v 1. 8 2009/07/31 11:03:00vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4DiffractiveSplitableHadron.cc,v 1.9 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFModel.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4FTFModel.cc,v 1.3 4 2009/12/15 19:14:31vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4FTFModel.cc,v 1.36 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 … … 99 99 { 100 100 theProjectile = aProjectile; 101 theParticipants.Init(aNucleus.GetN(),aNucleus.GetZ()); 101 102 theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt()); 103 102 104 // ----------- N-mass number Z-charge ------------------------- 103 105 … … 113 115 114 116 //theParameters->SetProbabilityOfElasticScatt(0.); 117 //G4cout<<theParameters->GetProbabilityOfElasticScatt()<<G4endl; 118 //G4int Uzhi; G4cin>>Uzhi; 115 119 // To turn on/off (1/0) elastic scattering 116 120 … … 125 129 { 126 130 G4ExcitedStringVector * theStrings(0); 127 131 //G4cout<<"GetString"<<G4endl; 128 132 theParticipants.GetList(theProjectile,theParameters); 129 133 //G4cout<<"Reggeon"<<G4endl; 130 134 ReggeonCascade(); 131 135 … … 133 137 if( PutOnMassShell() ) 134 138 { 139 //G4cout<<"PutOn mass Shell OK"<<G4endl; 135 140 if( ExciteParticipants() ) 136 141 { 142 //G4cout<<"Excite partic OK"<<G4endl; 137 143 theStrings = BuildStrings(); 138 144 //G4cout<<"Build String OK"<<G4endl; 139 145 GetResidualNucleus(); 140 146 … … 194 200 TheInvolvedNucleon[NumberOfInvolvedNucleon]=TargetNucleon; 195 201 NumberOfInvolvedNucleon++; 196 202 //G4cout<<"Prim NumberOfInvolvedNucleon "<<NumberOfInvolvedNucleon<<G4endl; 197 203 G4double XofWoundedNucleon = TargetNucleon->GetPosition().x(); 198 204 G4double YofWoundedNucleon = TargetNucleon->GetPosition().y(); … … 214 220 TheInvolvedNucleon[NumberOfInvolvedNucleon]=Neighbour; 215 221 NumberOfInvolvedNucleon++; 222 //G4cout<<"Seco NumberOfInvolvedNucleon "<<NumberOfInvolvedNucleon<<G4endl; 216 223 217 224 G4VSplitableHadron *targetSplitable; … … 274 281 G4LorentzVector Pprojectile=primary->Get4Momentum(); 275 282 283 //G4cout<<"Pprojectile "<<Pprojectile<<G4endl; 276 284 // To get original projectile particle 277 285 … … 284 292 G4double SumMasses = Mprojectile + 20.*MeV; // 13.12.09 285 293 // Separation energy for projectile 286 294 //G4cout<<"SumMasses Pr "<<SumMasses<<G4endl; 287 295 //--------------- Target nucleus ------------------------------ 288 296 G4V3DNucleus *theNucleus = GetWoundedNucleus(); … … 305 313 SumMasses += aNucleon->GetDefinition()->GetPDGMass(); 306 314 SumMasses += 20.*MeV; // 13.12.09 Separation energy for a nucleon 315 //G4cout<<"SumMasses Tr "<<SumMasses<<G4endl; 307 316 ResidualMassNumber--; 308 317 ResidualCharge-=(G4int) aNucleon->GetDefinition()->GetPDGCharge(); … … 316 325 317 326 Psum += PnuclearResidual; 318 327 //G4cout<<"ResidualCharge ,ResidualMassNumber "<<ResidualCharge<<" "<<ResidualMassNumber<<G4endl; 319 328 G4double ResidualMass(0.); 320 329 if(ResidualMassNumber == 0) … … 331 340 332 341 // ResidualMass +=ResidualExcitationEnergy; // Will be given after checks 342 //G4cout<<"SumMasses End ResidualMass "<<SumMasses<<" "<<ResidualMass<<G4endl; 333 343 SumMasses += ResidualMass; 334 344 //G4cout<<"SumMasses + ResM "<<SumMasses<<G4endl; 345 //G4cout<<"Psum "<<Psum<<G4endl; 335 346 //------------------------------------------------------------- 336 347 … … 338 349 G4double S=Psum.mag2(); 339 350 351 //G4cout<<"SqrtS < SumMasses "<<SqrtS<<" "<<SumMasses<<G4endl; 340 352 if(SqrtS < SumMasses) {return false;} // It is impossible to simulate 341 353 // after putting nuclear nucleons … … 346 358 ResidualMass +=ResidualExcitationEnergy; 347 359 SumMasses +=ResidualExcitationEnergy; 348 360 //G4cout<<"ResidualMass "<<ResidualMass<<" "<<SumMasses<<G4endl; 349 361 //------------------------------------------------------------- 350 362 // Sampling of nucleons what are transfered to delta-isobars -- … … 373 385 } // end of if(theNucleus.GetMassNumber() != 1) 374 386 //------------------------------------------------------------- 387 375 388 G4LorentzRotation toCms(-1*Psum.boostVector()); 376 389 G4LorentzVector Ptmp=toCms*Pprojectile; … … 393 406 G4double AveragePt2 = theParameters->GetPt2ofNuclearDestruction(); 394 407 G4double maxPtSquare = theParameters->GetMaxPt2ofNuclearDestruction(); 395 408 //G4cout<<"Dcor "<<Dcor<<" AveragePt2 "<<AveragePt2<<G4endl; 396 409 G4double M2target(0.); 397 410 G4double WminusTarget(0.); … … 409 422 410 423 NumberOfTries++; 424 //G4cout<<"NumberOfTries "<<NumberOfTries<<G4endl; 411 425 if(NumberOfTries == 100*(NumberOfTries/100)) // 100 412 426 { // At large number of tries it would be better to reduce the values … … 439 453 440 454 G4LorentzVector tmp(tmpPt.x(),tmpPt.y(),Xminus,0.); 455 //G4cout<<"Inv i mom "<<i<<" "<<tmp<<G4endl; 441 456 aNucleon->SetMomentum(tmp); 442 457 } // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ ) … … 447 462 G4double DeltaXminus(0.); 448 463 464 //G4cout<<"ResidualMassNumber "<<ResidualMassNumber<<" "<<PtSum<<G4endl; 449 465 if(ResidualMassNumber == 0) 450 466 { … … 457 473 DeltaXminus = -1./theNucleus->GetMassNumber(); 458 474 } 459 475 //G4cout<<"Dx y xmin "<<DeltaX<<" "<<DeltaY<<" "<<DeltaXminus<<G4endl; 460 476 XminusSum=1.; 461 477 M2target =0.; … … 467 483 Xminus = aNucleon->Get4Momentum().pz() - DeltaXminus; 468 484 XminusSum-=Xminus; 469 470 if((Xminus <= 0.) || (Xminus > 1.) || 471 (XminusSum <=0.) || (XminusSum > 1.)) {InerSuccess=false; break;} 472 485 //G4cout<<" i X-sum "<<i<<" "<<Xminus<<" "<<XminusSum<<G4endl; 486 if(ResidualMassNumber == 0) // Uzhi 5.07.10 487 { 488 if((Xminus <= 0.) || (Xminus > 1.)) {InerSuccess=false; break;} 489 } else 490 { 491 if((Xminus <= 0.) || (Xminus > 1.) || 492 (XminusSum <=0.) || (XminusSum > 1.)) {InerSuccess=false; break;} 493 } // Uzhi 5.07.10 494 473 495 G4double Px=aNucleon->Get4Momentum().px() - DeltaX; 474 496 G4double Py=aNucleon->Get4Momentum().py() - DeltaY; … … 482 504 } // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ ) 483 505 506 //G4cout<<"Rescale O.K."<<G4endl; 507 484 508 if(InerSuccess && (ResidualMassNumber != 0)) 485 509 { 486 510 M2target +=(ResidualMass*ResidualMass + PtSum.mag2())/XminusSum; 487 511 } 512 //G4cout<<"InerSuccess "<<InerSuccess<<G4endl; 513 //G4int Uzhi;G4cin>>Uzhi; 488 514 } while(!InerSuccess); 489 515 } while (SqrtS < Mprojectile + std::sqrt(M2target)); … … 495 521 WminusTarget=(S-M2projectile+M2target+std::sqrt(DecayMomentum2))/2./SqrtS; 496 522 WplusProjectile=SqrtS - M2target/WminusTarget; 523 //G4cout<<"DecayMomentum2 "<<DecayMomentum2<<G4endl; 497 524 //------------------------------------------------------------- 498 525 for(G4int i=0; i < NumberOfInvolvedNucleon; i++ ) … … 511 538 if( E+Pz > WplusProjectile ){OuterSuccess=false; break;} 512 539 } // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ ) 540 //G4int Uzhi;G4cin>>Uzhi; 513 541 } while(!OuterSuccess); 514 542 … … 575 603 Successfull=false; 576 604 theParticipants.StartLoop(); 605 606 G4int MaxNumOfInelCollisions=G4int(theParameters->GetMaxNumberOfCollisions()); 607 G4double NumberOfInel(0.); 608 // 609 if(MaxNumOfInelCollisions > 0) 610 { // Plab > Pbound, Normal application of FTF is possible 611 G4double ProbMaxNumber=theParameters->GetMaxNumberOfCollisions()-MaxNumOfInelCollisions; 612 if(G4UniformRand() < ProbMaxNumber) {MaxNumOfInelCollisions++;} 613 NumberOfInel=MaxNumOfInelCollisions; 614 } else 615 { // Plab < Pbound, Normal application of FTF is impossible, low energy corrections 616 if(theParticipants.theNucleus->GetMassNumber() > 1) 617 { 618 NumberOfInel = theParameters->GetProbOfInteraction(); 619 MaxNumOfInelCollisions = 1; 620 } else 621 { // Special case for hadron-nucleon interactions 622 NumberOfInel = 1.; 623 MaxNumOfInelCollisions = 1; 624 } 625 } // end of if(MaxNumOfInelCollisions > 0) 626 // 577 627 while (theParticipants.Next()) 578 628 { … … 581 631 G4VSplitableHadron * projectile=collision.GetProjectile(); 582 632 G4VSplitableHadron * target=collision.GetTarget(); 583 633 //G4cout<<"ProbabilityOfElasticScatt "<<theParameters->GetProbabilityOfElasticScatt()<<G4endl; 584 634 if(G4UniformRand()< theParameters->GetProbabilityOfElasticScatt()) 585 635 { // Elastic scattering ------------------------- 636 //G4cout<<"Elastic FTF"<<G4endl; 586 637 if(theElastic->ElasticScattering(projectile, target, theParameters)) 587 638 { … … 595 646 else 596 647 { // Inelastic scattering ---------------------- 648 /* 597 649 if(theExcitation->ExciteParticipants(projectile, target, 598 650 theParameters, theElastic)) … … 604 656 target->SetStatus(2); 605 657 } 658 */ 659 //G4cout<<"InElastic FTF"<<G4endl; 660 if(G4UniformRand()< NumberOfInel/MaxNumOfInelCollisions) 661 { 662 if(theExcitation->ExciteParticipants(projectile, target, 663 theParameters, theElastic)) 664 { 665 Successfull = Successfull || true; 666 NumberOfInel--; 667 } else 668 { 669 Successfull = Successfull || false; 670 target->SetStatus(2); 671 } 672 } else // If NumOfInel 673 { 674 if(theElastic->ElasticScattering(projectile, target, theParameters)) 675 { 676 Successfull = Successfull || true; 677 } else 678 { 679 Successfull = Successfull || false; 680 target->SetStatus(2); 681 } 682 } // end if NumOfInel 606 683 } 607 684 } // end of while (theParticipants.Next()) … … 624 701 625 702 theParticipants.StartLoop(); // restart a loop 626 703 // 627 704 while ( theParticipants.Next() ) 628 705 { … … 634 711 primaries.push_back(interaction.GetProjectile()); 635 712 } 636 713 637 714 unsigned int ahadron; 638 715 for ( ahadron=0; ahadron < primaries.size() ; ahadron++) … … 650 727 if(SecondString != 0) strings->push_back(SecondString); 651 728 } 652 729 // 653 730 for (G4int ahadron=0; ahadron < NumberOfInvolvedNucleon ; ahadron++) 654 731 { … … 669 746 std::for_each(primaries.begin(), primaries.end(), DeleteVSplitableHadron()); 670 747 primaries.clear(); 671 672 748 return strings; 673 749 } -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParameters.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4FTFParameters.cc,v 1.1 3 2009/12/16 17:51:15 gunterExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4FTFParameters.cc,v 1.14 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 … … 56 56 G4double Plab = std::sqrt(Elab * Elab - ProjectileMass*ProjectileMass); 57 57 58 G4double Ylab=0.5*std::log((Elab+Plab)/(Elab-Plab)); 59 60 Plab/=GeV; // Uzhi 8.07.10 58 61 G4double LogPlab = std::log( Plab ); 59 62 G4double sqrLogPlab = LogPlab * LogPlab; … … 186 189 SetInelasticCrossSection(Xtotal-Xelastic); 187 190 191 //G4cout<<"Xtotal, Xelastic "<<Xtotal<<" "<<Xelastic<<G4endl; 188 192 // // Interactions with elastic and inelastic collisions 189 193 SetProbabilityOfElasticScatt(Xtotal, Xelastic); … … 196 200 197 201 //----------------------------------------------------------------------------------- 202 198 203 SetSlope( Xtotal*Xtotal/16./pi/Xelastic/0.3894 ); // Slope parameter of elastic scattering 199 204 // (GeV/c)^(-2)) … … 209 214 if( absPDGcode > 1000 ) //------Projectile is baryon -------- 210 215 { 211 SetMagQuarkExchange(3.4); //3.8); 212 SetSlopeQuarkExchange(1.2); 213 SetDeltaProbAtQuarkExchange(0.1); //(0.1*4.); 214 215 SetProjMinDiffMass(1.1); // GeV 216 SetProjMinNonDiffMass(1.1); // GeV 217 SetProbabilityOfProjDiff(0.76*std::pow(s/GeV/GeV,-0.35)); 218 219 SetTarMinDiffMass(1.1); // GeV 220 SetTarMinNonDiffMass(1.1); // GeV 221 SetProbabilityOfTarDiff(0.76*std::pow(s/GeV/GeV,-0.35)); 222 223 SetAveragePt2(0.3); // GeV^2 216 SetMagQuarkExchange(1.84);//(3.63); 217 SetSlopeQuarkExchange(0.7);//(1.2); 218 SetDeltaProbAtQuarkExchange(0.); 219 220 SetProjMinDiffMass(1.16); // GeV 221 SetProjMinNonDiffMass(1.16); // GeV 222 223 SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab));// 0.5 224 225 SetTarMinDiffMass(1.16); // GeV 226 SetTarMinNonDiffMass(1.16); // GeV 227 228 SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab));// 0.5 229 230 SetAveragePt2(0.15); // 0.15 GeV^2 224 231 } 225 232 else if( absPDGcode == 211 || PDGcode == 111) //------Projectile is Pion ----------- … … 286 293 if( absPDGcode < 1000 ) 287 294 { 288 SetCofNuclearDestruction(1.); //1.0); // for meson projectile 289 } else if( theA > 20. ) 295 SetMaxNumberOfCollisions(1000.,1.); //(Plab,2.); //3.); ############################## 296 297 SetCofNuclearDestruction(0.3); //1.0); // for meson projectile 298 299 SetDofNuclearDestruction(0.4); 300 SetPt2ofNuclearDestruction(0.17*GeV*GeV); 301 SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV); 302 303 SetExcitationEnergyPerWoundedNucleon(100*MeV); 304 } else // for baryon projectile 290 305 { 291 SetCofNuclearDestruction(0.2); //2); // for baryon projectile and heavy target 292 } else 293 { 294 SetCofNuclearDestruction(0.2); //1.0); // for baryon projectile and light target 306 // SetMaxNumberOfCollisions(Plab,0.1); //6.); // ############################## 307 SetMaxNumberOfCollisions(Plab,4.); //6.); // ############################## 308 309 SetCofNuclearDestruction(0.62*std::exp(4.*(Ylab-2.1))/(1.+std::exp(4.*(Ylab-2.1)))); 310 311 SetDofNuclearDestruction(0.4); 312 SetPt2ofNuclearDestruction((0.035+ 313 0.04*std::exp(4.*(Ylab-2.5))/(1.+std::exp(4.*(Ylab-2.5))))*GeV*GeV); //0.09 314 SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV); 315 316 SetExcitationEnergyPerWoundedNucleon(75.*MeV); 295 317 } 296 318 297 319 SetR2ofNuclearDestruction(1.5*fermi*fermi); 298 320 299 SetExcitationEnergyPerWoundedNucleon(100*MeV); 300 301 SetDofNuclearDestruction(0.4); 302 SetPt2ofNuclearDestruction(0.17*GeV*GeV); 303 SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV); 321 //SetCofNuclearDestruction(0.47*std::exp(2.*(Ylab-2.5))/(1.+std::exp(2.*(Ylab-2.5)))); 322 //SetPt2ofNuclearDestruction((0.035+0.1*std::exp(4.*(Ylab-3.))/(1.+std::exp(4.*(Ylab-3.))))*GeV*GeV); 323 324 //SetProbabilityOfElasticScatt(1.,1.); //(Xtotal, Xelastic); 325 //SetProbabilityOfProjDiff(1.*0.62*std::pow(s/GeV/GeV,-0.51)); // 0->1 326 //SetProbabilityOfTarDiff(4.*0.62*std::pow(s/GeV/GeV,-0.51)); // 2->4 327 //SetAveragePt2(0.3); //(0.15); 328 //SetAvaragePt2ofElasticScattering(0.); 329 330 //SetCofNuclearDestruction(0.6); //(0.4); 331 SetExcitationEnergyPerWoundedNucleon(75.*MeV); //(75.*MeV); 332 //SetDofNuclearDestruction(0.6); //(0.4); 333 //SetPt2ofNuclearDestruction(0.12*GeV*GeV); //(0.168*GeV*GeV); 334 304 335 } 305 336 //********************************************************************************************** -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParticipants.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4FTFParticipants.cc,v 1.1 6 2009/11/25 09:14:03vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4FTFParticipants.cc,v 1.17 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ------------------------------------------------------------ -
trunk/source/processes/hadronic/models/parton_string/hadronization/History
r1337 r1340 1 $Id: History,v 1.1 3 2010/06/22 07:29:35gcosmo Exp $1 $Id: History,v 1.17 2010/09/28 09:03:07 gcosmo Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 15 15 * Please list in reverse chronological order (last date on top) 16 16 --------------------------------------------------------------- 17 18 22-September-2010 V. Uzhinsky (had-hadronization-V09-03-01) 19 -------------------------------------------------------------- 20 - Warning messages are erased in G4LundStringFragmentation.cc 21 22 20-September-2010 V. Uzhinsky 23 ------------------------------ 24 - Phase space restrictions are introduced at small mass string 25 fragmentation. 26 27 5-August-2010 V. Uzhinsky 28 -------------------------- 29 - Small re-organization is done in G4ExcitedStringDecay.hh. Inline 30 methods were moved to G4ExcitedStringDecay.cc. 31 32 - An action is introduced in FragmentStrings. It acts when 33 EnergyAndMomentumCorrector can not be done due to large sum masses 34 of produced hadrons. This led to energy-momentum violation. Now 35 string fragmentation is repeted 100 times in a bad case. 17 36 18 37 21-June-2010 V. Uzhinsky (had-hadronization-V09-03-00) -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4ExcitedStringDecay.hh,v 1.1 2 2010/06/21 17:50:48vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4ExcitedStringDecay.hh,v 1.13 2010/08/05 08:44:37 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4ExcitedStringDecay_h … … 42 42 G4ExcitedStringDecay(); 43 43 G4ExcitedStringDecay(G4VLongitudinalStringDecay * aStringDecay); 44 ~G4ExcitedStringDecay();44 virtual ~G4ExcitedStringDecay(); 45 45 46 46 private: … … 62 62 }; 63 63 64 inline65 G4KineticTrackVector *G4ExcitedStringDecay::66 FragmentString(const G4ExcitedString &theString)67 {68 if ( theStringDecay == NULL )69 theStringDecay=new G4LundStringFragmentation();70 71 return theStringDecay->FragmentString(theString);72 }73 74 75 inline76 G4KineticTrackVector *G4ExcitedStringDecay::77 FragmentStrings(const G4ExcitedStringVector * theStrings)78 {79 G4KineticTrackVector * theResult = new G4KineticTrackVector;80 81 G4LorentzVector KTsum(0.,0.,0.,0.);82 G4LorentzVector KTsecondaries(0.,0.,0.,0.);83 G4bool NeedEnergyCorrector=false;84 85 for ( unsigned int astring=0; astring < theStrings->size(); astring++)86 {87 KTsum+= theStrings->operator[](astring)->Get4Momentum();88 89 if( !(KTsum.e()<1) && !(KTsum.e()>-1) )90 {91 throw G4HadronicException(__FILE__, __LINE__,92 "G4ExcitedStringDecay::FragmentStrings received nan string...");93 }94 G4KineticTrackVector * generatedKineticTracks = NULL;95 96 if ( theStrings->operator[](astring)->IsExcited() )97 {98 generatedKineticTracks=FragmentString(*theStrings->operator[](astring));99 } else {100 generatedKineticTracks = new G4KineticTrackVector;101 generatedKineticTracks->push_back(theStrings->operator[](astring)->GetKineticTrack());102 }103 104 if (generatedKineticTracks == NULL)105 {106 G4cerr << "G4VPartonStringModel:No KineticTracks produced" << G4endl;107 continue;108 }109 110 G4LorentzVector KTsum1(0.,0.,0.,0.);111 for ( unsigned int aTrack=0; aTrack<generatedKineticTracks->size();aTrack++)112 {113 theResult->push_back(generatedKineticTracks->operator[](aTrack));114 KTsum1+= (*generatedKineticTracks)[aTrack]->Get4Momentum();115 }116 KTsecondaries+=KTsum1;117 118 if ( KTsum1.e() > 0 && std::abs((KTsum1.e()-theStrings->operator[](astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion )119 {120 //--debug-- G4cout << "String secondaries(" <<generatedKineticTracks->size()<< ") momentum: "121 //--debug-- << theStrings->operator[](astring)->Get4Momentum() << " " << KTsum1 << G4endl;122 NeedEnergyCorrector=true;123 }124 125 // clean up126 delete generatedKineticTracks;127 }128 //--DEBUG G4cout << "Strings/secs total 4 momentum " << KTsum << " " <<KTsecondaries << G4endl;129 130 G4bool success=true;131 if ( NeedEnergyCorrector ) success=EnergyAndMomentumCorrector(theResult, KTsum);132 133 134 #ifdef debug_ExcitedStringDecay135 G4LorentzVector KTsum1=0;136 for ( unsigned int aTrack=0; aTrack<theResult->size();aTrack++)137 {138 G4cout << " corrected tracks .. " << (*theResult)[aTrack]->GetDefinition()->GetParticleName()139 <<" " << (*theResult)[aTrack]->Get4Momentum() << G4endl;140 KTsum1+= (*theResult)[aTrack]->Get4Momentum();141 }142 G4cout << "Needcorrector/success " << NeedEnergyCorrector << "/" << success << ", Corrected total 4 momentum " << KTsum1 << G4endl;143 if ( ! success ) G4cout << "failed to correct E/p" << G4endl;144 #endif145 146 return theResult;147 }148 149 64 #endif 150 65 -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4FragmentingString.hh,v 1. 4 2007/12/20 15:38:06vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4FragmentingString.hh,v 1.5 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4HadronBuilder.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4HadronBuilder.hh,v 1. 5 2009/05/18 09:43:40 gunterExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4HadronBuilder.hh,v 1.6 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4LundStringFragmentation.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4LundStringFragmentation.hh,v 1. 6 2008/04/25 14:20:14vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$ Maxim Komogorov27 // $Id: G4LundStringFragmentation.hh,v 1.7 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ Maxim Komogorov 29 29 // 30 30 // ----------------------------------------------------------------------------- … … 78 78 G4ParticleDefinition* pHadron, 79 79 G4double Px, G4double Py); 80 80 81 G4double lambda(G4double s, G4double m1_Sqr, G4double m2_Sqr); 82 81 83 private: 82 84 // ------ For estimation of a minimal string mass --------------- … … 89 91 // ------ Minimal invariant mass used at a string fragmentation - 90 92 G4double WminLUND; 93 94 G4int Meson[3][3][6]; 95 G4double MesonWeight[3][3][6]; 96 97 G4int Baryon[3][3][3][4]; 98 G4double BaryonWeight[3][3][3][4]; 99 100 G4double Prob_QQbar[3]; 91 101 }; 92 102 -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4QGSMFragmentation.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4QGSMFragmentation.hh,v 1. 5 2007/12/20 15:38:07vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4QGSMFragmentation.hh,v 1.6 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4VKinkyStringDecay.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4VKinkyStringDecay.hh,v 1. 3 2006/06/29 20:54:53 gunterExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4VKinkyStringDecay.hh,v 1.4 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // Maxim Komogorov 30 30 // -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4VLongitudinalStringDecay.hh,v 1. 7 2009/05/22 16:35:47 gunterExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4VLongitudinalStringDecay.hh,v 1.8 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // Maxim Komogorov 30 30 // -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4ExcitedStringDecay.cc
r1337 r1340 61 61 } 62 62 63 G4bool G4ExcitedStringDecay:: 64 EnergyAndMomentumCorrector(G4KineticTrackVector* Output, G4LorentzVector& TotalCollisionMom) 63 G4KineticTrackVector *G4ExcitedStringDecay::FragmentString 64 (const G4ExcitedString &theString) 65 { 66 if ( theStringDecay == NULL ) 67 68 theStringDecay=new G4LundStringFragmentation(); 69 70 return theStringDecay->FragmentString(theString); 71 } 72 73 G4KineticTrackVector *G4ExcitedStringDecay::FragmentStrings 74 (const G4ExcitedStringVector * theStrings) 75 { 76 G4LorentzVector KTsum(0.,0.,0.,0.); 77 for ( unsigned int astring=0; astring < theStrings->size(); astring++) 78 { 79 KTsum+= theStrings->operator[](astring)->Get4Momentum(); 80 81 if( !(KTsum.e()<1) && !(KTsum.e()>-1) ) 82 { 83 throw G4HadronicException(__FILE__, __LINE__, 84 "G4ExcitedStringDecay::FragmentStrings received nan string..."); 85 } 86 } 87 88 G4KineticTrackVector * theResult = new G4KineticTrackVector; 89 G4int attempts(0); 90 G4bool success=false; 91 do { 92 93 std::for_each(theResult->begin() , theResult->end() , DeleteKineticTrack()); 94 theResult->clear(); 95 96 attempts++; 97 G4LorentzVector KTsecondaries(0.,0.,0.,0.); 98 G4bool NeedEnergyCorrector=false; 99 100 for ( unsigned int astring=0; astring < theStrings->size(); astring++) 101 { 102 //G4cout<<G4endl<<"String No "<<astring+1<<" "<<theStrings->operator[](astring)->Get4Momentum().mag()<<G4endl; 103 104 G4KineticTrackVector * generatedKineticTracks = NULL; 105 106 if ( theStrings->operator[](astring)->IsExcited() ) 107 { 108 generatedKineticTracks=FragmentString(*theStrings->operator[](astring)); 109 } else { 110 generatedKineticTracks = new G4KineticTrackVector; 111 generatedKineticTracks->push_back(theStrings->operator[](astring)->GetKineticTrack()); 112 } 113 114 if (generatedKineticTracks == NULL) 115 { 116 G4cerr << "G4VPartonStringModel:No KineticTracks produced" << G4endl; 117 continue; 118 } 119 120 G4LorentzVector KTsum1(0.,0.,0.,0.); 121 for ( unsigned int aTrack=0; aTrack<generatedKineticTracks->size();aTrack++) 122 { 123 //G4cout<<" Prod part "<<(*generatedKineticTracks)[aTrack]->GetDefinition()->GetParticleName()<<" "<<(*generatedKineticTracks)[aTrack]->Get4Momentum()<<G4endl; 124 theResult->push_back(generatedKineticTracks->operator[](aTrack)); 125 KTsum1+= (*generatedKineticTracks)[aTrack]->Get4Momentum(); 126 } 127 KTsecondaries+=KTsum1; 128 129 if ( KTsum1.e() > 0 && std::abs((KTsum1.e()-theStrings->operator[](astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion ) 130 { 131 //--debug-- G4cout << "String secondaries(" <<generatedKineticTracks->size()<< ") momentum: " 132 //--debug-- << theStrings->operator[](astring)->Get4Momentum() << " " << KTsum1 << G4endl; 133 NeedEnergyCorrector=true; 134 } 135 136 // clean up 137 delete generatedKineticTracks; 138 } 139 //--DEBUG G4cout << "Strings/secs total 4 momentum " << KTsum << " " <<KTsecondaries << G4endl; 140 141 success=true; 142 if ( NeedEnergyCorrector ) success=EnergyAndMomentumCorrector(theResult, KTsum); 143 144 } while(!success && (attempts < 100)); 145 146 #ifdef debug_ExcitedStringDecay 147 G4LorentzVector KTsum1=0; 148 for ( unsigned int aTrack=0; aTrack<theResult->size();aTrack++) 149 { 150 G4cout << " corrected tracks .. " << (*theResult)[aTrack]->GetDefinition()->GetParticleName() 151 <<" " << (*theResult)[aTrack]->Get4Momentum() << G4endl; 152 KTsum1+= (*theResult)[aTrack]->Get4Momentum(); 153 } 154 G4cout << "Needcorrector/success " << NeedEnergyCorrector << "/" << success << ", Corrected total 4 momentum " << KTsum1 << G4endl; 155 if ( ! success ) G4cout << "failed to correct E/p" << G4endl; 156 #endif 157 158 return theResult; 159 } 160 161 G4bool G4ExcitedStringDecay::EnergyAndMomentumCorrector 162 (G4KineticTrackVector* Output, G4LorentzVector& TotalCollisionMom) 65 163 { 66 164 const int nAttemptScale = 500; … … 71 169 G4double SumMass = 0; 72 170 G4double TotalCollisionMass = TotalCollisionMom.m(); 171 73 172 if( !(TotalCollisionMass<1) && !(TotalCollisionMass>-1) ) 74 173 { … … 77 176 } 78 177 178 //G4cout<<G4endl<<"EnergyAndMomentumCorrector "<<Output->size()<<G4endl; 79 179 // Calculate sum hadron 4-momenta and summing hadron mass 80 180 unsigned int cHadron; … … 92 192 } 93 193 } 194 195 //G4cout<<"SumMass TotalCollisionMass "<<SumMass<<" "<<TotalCollisionMass<<G4endl; 94 196 95 197 // Cannot correct a single particle -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4HadronBuilder.cc,v 1.1 0 2009/05/22 16:34:31 gunterExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4HadronBuilder.cc,v 1.11 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4LundStringFragmentation.cc,v 1.2 0 2010/06/21 17:50:48vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$ 1.827 // $Id: G4LundStringFragmentation.cc,v 1.23 2010/09/22 12:36:37 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 1.8 29 29 // 30 30 // ----------------------------------------------------------------------------- … … 53 53 MinimalStringMass2 = 0.; 54 54 // ------ Minimal invariant mass used at a string fragmentation - 55 WminLUND = 0. 7*GeV; // Uzhi0.8 1.555 WminLUND = 0.45*GeV; //0.23*GeV; // Uzhi 0.7 -> 0.23 3.8.10 //0.8 1.5 56 56 // ------ Smooth parameter used at a string fragmentation for --- 57 57 // ------ smearinr sharp mass cut-off --------------------------- … … 60 60 // SetStringTensionParameter(0.25); 61 61 SetStringTensionParameter(1.); 62 63 SetDiquarkBreakProbability(0.05); // Vova Aug. 22 64 65 // For treating of small string decays 66 for(G4int i=0; i<3; i++) 67 { for(G4int j=0; j<3; j++) 68 { for(G4int k=0; k<6; k++) 69 { Meson[i][j][k]=0; MesonWeight[i][j][k]=0.; 70 } 71 } 72 } 73 //-------------------------- 74 Meson[0][0][0]=111; // dbar-d Pi0 75 MesonWeight[0][0][0]=pspin_meson*(1.-scalarMesonMix[0]); 76 77 Meson[0][0][1]=221; // dbar-d Eta 78 MesonWeight[0][0][1]=pspin_meson*(scalarMesonMix[0]-scalarMesonMix[1]); 79 80 Meson[0][0][2]=331; // dbar-d EtaPrime 81 MesonWeight[0][0][2]=pspin_meson*(scalarMesonMix[1]); 82 83 Meson[0][0][3]=113; // dbar-d Rho0 84 MesonWeight[0][0][3]=(1.-pspin_meson)*(1.-vectorMesonMix[0]); 85 86 Meson[0][0][4]=223; // dbar-d Omega 87 MesonWeight[0][0][4]=(1.-pspin_meson)*(vectorMesonMix[0]); 88 //-------------------------- 89 90 Meson[0][1][0]=211; // dbar-u Pi+ 91 MesonWeight[0][1][0]=pspin_meson; 92 93 Meson[0][1][1]=213; // dbar-u Rho+ 94 MesonWeight[0][1][1]=(1.-pspin_meson); 95 //-------------------------- 96 97 Meson[0][2][0]=311; // dbar-s K0bar 98 MesonWeight[0][2][0]=pspin_meson; 99 100 Meson[0][2][1]=313; // dbar-s K*0bar 101 MesonWeight[0][2][1]=(1.-pspin_meson); 102 //-------------------------- 103 //-------------------------- 104 Meson[1][0][0]=211; // ubar-d Pi- 105 MesonWeight[1][0][0]=pspin_meson; 106 107 Meson[1][0][1]=213; // ubar-d Rho- 108 MesonWeight[1][0][1]=(1.-pspin_meson); 109 //-------------------------- 110 111 Meson[1][1][0]=111; // ubar-u Pi0 112 MesonWeight[1][1][0]=pspin_meson*(1.-scalarMesonMix[0]); 113 114 Meson[1][1][1]=221; // ubar-u Eta 115 MesonWeight[1][1][1]=pspin_meson*(scalarMesonMix[0]-scalarMesonMix[1]); 116 117 Meson[1][1][2]=331; // ubar-u EtaPrime 118 MesonWeight[1][1][2]=pspin_meson*(scalarMesonMix[1]); 119 120 Meson[1][1][3]=113; // ubar-u Rho0 121 MesonWeight[1][1][3]=(1.-pspin_meson)*(1.-vectorMesonMix[0]); 122 123 Meson[1][1][4]=223; // ubar-u Omega 124 MesonWeight[1][1][4]=(1.-pspin_meson)*(scalarMesonMix[0]); 125 //-------------------------- 126 127 Meson[1][2][0]=321; // ubar-s K- 128 MesonWeight[1][2][0]=pspin_meson; 129 130 Meson[1][2][1]=323; // ubar-s K*-bar - 131 MesonWeight[1][2][1]=(1.-pspin_meson); 132 //-------------------------- 133 //-------------------------- 134 135 Meson[2][0][0]=311; // sbar-d K0 136 MesonWeight[2][0][0]=pspin_meson; 137 138 Meson[2][0][1]=313; // sbar-d K*0 139 MesonWeight[2][0][1]=(1.-pspin_meson); 140 //-------------------------- 141 142 Meson[2][1][0]=321; // sbar-u K+ 143 MesonWeight[2][1][0]=pspin_meson; 144 145 Meson[2][1][1]=323; // sbar-u K*+ 146 MesonWeight[2][1][1]=(1.-pspin_meson); 147 //-------------------------- 148 149 Meson[2][2][0]=221; // sbar-s Eta 150 MesonWeight[2][2][0]=pspin_meson*(1.-scalarMesonMix[5]); 151 152 Meson[2][2][1]=331; // sbar-s EtaPrime 153 MesonWeight[2][2][1]=pspin_meson*(1.-scalarMesonMix[5]); 154 155 Meson[2][2][3]=333; // sbar-s EtaPrime 156 MesonWeight[2][2][3]=(1.-pspin_meson)*(vectorMesonMix[5]); 157 //-------------------------- 158 159 for(G4int i=0; i<3; i++) 160 { for(G4int j=0; j<3; j++) 161 { for(G4int k=0; k<3; k++) 162 { for(G4int l=0; l<4; l++) 163 { Baryon[i][j][k][l]=0; BaryonWeight[i][j][k][l]=0.;} 164 } 165 } 166 } 167 168 //--------------------------------------- 169 Baryon[0][0][0][0]=1114; // Delta- 170 BaryonWeight[0][0][0][0]=1.; 171 172 //--------------------------------------- 173 Baryon[0][0][1][0]=2112; // neutron 174 BaryonWeight[0][0][1][0]=pspin_barion; 175 176 Baryon[0][0][1][1]=2114; // Delta0 177 BaryonWeight[0][0][1][1]=(1.-pspin_barion); 178 179 //--------------------------------------- 180 Baryon[0][0][2][0]=3112; // Sigma- 181 BaryonWeight[0][0][2][0]=pspin_barion; 182 183 Baryon[0][0][2][1]=3114; // Sigma*- 184 BaryonWeight[0][0][2][1]=(1.-pspin_barion); 185 186 //--------------------------------------- 187 Baryon[0][1][0][0]=2112; // neutron 188 BaryonWeight[0][1][0][0]=pspin_barion; 189 190 Baryon[0][1][0][1]=2114; // Delta0 191 BaryonWeight[0][1][0][1]=(1.-pspin_barion); 192 193 //--------------------------------------- 194 Baryon[0][1][1][0]=2212; // proton 195 BaryonWeight[0][1][1][0]=pspin_barion; 196 197 Baryon[0][1][1][1]=2214; // Delta+ 198 BaryonWeight[0][1][1][1]=(1.-pspin_barion); 199 200 //--------------------------------------- 201 Baryon[0][1][2][0]=3122; // Lambda 202 BaryonWeight[0][1][2][0]=pspin_barion*0.5; 203 204 Baryon[0][1][2][1]=3212; // Sigma0 205 BaryonWeight[0][1][2][2]=pspin_barion*0.5; 206 207 Baryon[0][1][2][2]=3214; // Sigma*0 208 BaryonWeight[0][1][2][2]=(1.-pspin_barion); 209 210 //--------------------------------------- 211 Baryon[0][2][0][0]=3112; // Sigma- 212 BaryonWeight[0][2][0][0]=pspin_barion; 213 214 Baryon[0][2][0][1]=3114; // Sigma*- 215 BaryonWeight[0][2][0][1]=(1.-pspin_barion); 216 217 //--------------------------------------- 218 Baryon[0][2][1][0]=3122; // Lambda 219 BaryonWeight[0][2][1][0]=pspin_barion*0.5; 220 221 Baryon[0][2][1][1]=3212; // Sigma0 222 BaryonWeight[0][2][1][1]=pspin_barion*0.5; 223 224 Baryon[0][2][1][2]=3214; // Sigma*0 225 BaryonWeight[0][2][1][2]=(1.-pspin_barion); 226 227 //--------------------------------------- 228 Baryon[0][2][2][0]=3312; // Theta- 229 BaryonWeight[0][2][2][0]=pspin_barion; 230 231 Baryon[0][2][2][1]=3314; // Theta*- 232 BaryonWeight[0][2][2][1]=(1.-pspin_barion); 233 234 //--------------------------------------- 235 //--------------------------------------- 236 Baryon[1][0][0][0]=2112; // neutron 237 BaryonWeight[1][0][0][0]=pspin_barion; 238 239 Baryon[1][0][0][1]=2114; // Delta0 240 BaryonWeight[1][0][0][1]=(1.-pspin_barion); 241 242 //--------------------------------------- 243 Baryon[1][0][1][0]=2212; // proton 244 BaryonWeight[1][0][1][0]=pspin_barion; 245 246 Baryon[1][0][1][1]=2214; // Delta+ 247 BaryonWeight[1][0][1][1]=(1.-pspin_barion); 248 249 //--------------------------------------- 250 Baryon[1][0][2][0]=3122; // Lambda 251 BaryonWeight[1][0][2][0]=pspin_barion*0.5; 252 253 Baryon[1][0][2][1]=3212; // Sigma0 254 BaryonWeight[1][0][2][1]=pspin_barion*0.5; 255 256 Baryon[1][0][2][2]=3214; // Sigma*0 257 BaryonWeight[1][0][2][2]=(1.-pspin_barion); 258 259 //--------------------------------------- 260 Baryon[1][1][0][0]=2212; // proton 261 BaryonWeight[1][1][0][0]=pspin_barion; 262 263 Baryon[1][1][0][1]=2214; // Delta+ 264 BaryonWeight[1][1][0][1]=(1.-pspin_barion); 265 266 //--------------------------------------- 267 Baryon[1][1][1][0]=2224; // Delta++ 268 BaryonWeight[1][1][1][0]=1.; 269 270 //--------------------------------------- 271 Baryon[1][1][2][0]=3222; // Sigma+ 272 BaryonWeight[1][1][2][0]=pspin_barion; 273 274 Baryon[1][1][2][1]=3224; // Sigma*+ 275 BaryonWeight[1][1][2][1]=(1.-pspin_barion); 276 277 //--------------------------------------- 278 Baryon[1][2][0][0]=3122; // Lambda 279 BaryonWeight[1][2][0][0]=pspin_barion*0.5; 280 281 Baryon[1][2][0][1]=3212; // Sigma0 282 BaryonWeight[1][2][0][1]=pspin_barion*0.5; 283 284 Baryon[1][2][0][2]=3214; // Sigma*0 285 BaryonWeight[1][2][0][2]=(1.-pspin_barion); 286 287 //--------------------------------------- 288 Baryon[1][2][1][0]=3222; // Sigma+ 289 BaryonWeight[1][2][1][0]=pspin_barion; 290 291 Baryon[1][2][1][1]=3224; // Sigma*+ 292 BaryonWeight[1][2][1][1]=(1.-pspin_barion); 293 294 //--------------------------------------- 295 Baryon[1][2][2][0]=3322; // Theta0 296 BaryonWeight[1][2][2][0]=pspin_barion; 297 298 Baryon[1][2][2][1]=3324; // Theta*0 299 BaryonWeight[1][2][2][1]=(1.-pspin_barion); 300 301 //--------------------------------------- 302 //--------------------------------------- 303 Baryon[2][0][0][0]=3112; // Sigma- 304 BaryonWeight[2][0][0][0]=pspin_barion; 305 306 Baryon[2][0][0][1]=3114; // Sigma*- 307 BaryonWeight[2][0][0][1]=(1.-pspin_barion); 308 309 //--------------------------------------- 310 Baryon[2][0][1][0]=3122; // Lambda 311 BaryonWeight[2][0][1][0]=pspin_barion*0.5; 312 313 Baryon[2][0][1][1]=3212; // Sigma0 314 BaryonWeight[2][0][1][1]=pspin_barion*0.5; 315 316 Baryon[2][0][1][2]=3214; // Sigma*0 317 BaryonWeight[2][0][1][2]=(1.-pspin_barion); 318 319 //--------------------------------------- 320 Baryon[2][0][2][0]=3312; // Sigma- 321 BaryonWeight[2][0][2][0]=pspin_barion; 322 323 Baryon[2][0][2][1]=3314; // Sigma*- 324 BaryonWeight[2][0][2][1]=(1.-pspin_barion); 325 326 //--------------------------------------- 327 Baryon[2][1][0][0]=3122; // Lambda 328 BaryonWeight[2][1][0][0]=pspin_barion*0.5; 329 330 Baryon[2][1][0][1]=3212; // Sigma0 331 BaryonWeight[2][1][0][1]=pspin_barion*0.5; 332 333 Baryon[2][1][0][2]=3214; // Sigma*0 334 BaryonWeight[2][1][0][2]=(1.-pspin_barion); 335 336 //--------------------------------------- 337 Baryon[2][1][1][0]=3222; // Sigma+ 338 BaryonWeight[2][1][1][0]=pspin_barion; 339 340 Baryon[2][1][1][1]=3224; // Sigma*+ 341 BaryonWeight[2][1][1][1]=(1.-pspin_barion); 342 343 //--------------------------------------- 344 Baryon[2][1][2][0]=3322; // Theta0 345 BaryonWeight[2][1][2][0]=pspin_barion; 346 347 Baryon[2][1][2][1]=3324; // Theta*0 348 BaryonWeight[2][1][2][2]=(1.-pspin_barion); 349 350 //--------------------------------------- 351 Baryon[2][2][0][0]=3312; // Theta- 352 BaryonWeight[2][2][0][0]=pspin_barion; 353 354 Baryon[2][2][0][1]=3314; // Theta*- 355 BaryonWeight[2][2][0][1]=(1.-pspin_barion); 356 357 //--------------------------------------- 358 Baryon[2][2][1][0]=3322; // Theta0 359 BaryonWeight[2][2][1][0]=pspin_barion; 360 361 Baryon[2][2][1][1]=3324; // Theta*0 362 BaryonWeight[2][2][1][1]=(1.-pspin_barion); 363 364 //--------------------------------------- 365 Baryon[2][2][2][0]=3334; // Omega 366 BaryonWeight[2][2][2][0]=1.; 367 368 //--------------------------------------- 369 /* 370 for(G4int i=0; i<3; i++) 371 { for(G4int j=0; j<3; j++) 372 { for(G4int k=0; k<3; k++) 373 { for(G4int l=0; l<4; l++) 374 { G4cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<Baryon[i][j][k][l]<<G4endl;} 375 } 376 } 377 } 378 G4int Uzhi; 379 G4cin>>Uzhi; 380 */ 381 //StrangeSuppress=0.38; 382 Prob_QQbar[0]=StrangeSuppress; // Probability of ddbar production 383 Prob_QQbar[1]=StrangeSuppress; // Probability of uubar production 384 Prob_QQbar[2]=StrangeSuppress/(2.+StrangeSuppress);//(1.-2.*StrangeSuppress); // Probability of ssbar production 62 385 } 63 386 … … 160 483 // Can no longer modify Parameters for Fragmentation. 161 484 PastInitPhase=true; 485 //SetVectorMesonProbability(1.); 486 //SetSpinThreeHalfBarionProbability(1.); 162 487 163 488 // check if string has enough mass to fragment... … … 165 490 SetMassCut(160.*MeV); // For LightFragmentationTest it is required 166 491 // that no one pi-meson can be produced 492 // 493 //G4cout<<G4endl<<"G4LundStringFragmentation::"<<G4endl; 494 //G4cout<<"FragmentString Position"<<theString.GetPosition()/fermi<<" "<<theString.GetTimeOfCreation()/fermi<<G4endl; 495 //G4cout<<"FragmentString Momentum"<<theString.Get4Momentum()<<theString.Get4Momentum().mag()<<G4endl; 496 // 497 G4FragmentingString aString(theString); 498 SetMinimalStringMass(&aString); 499 167 500 /* 168 G4cout<<G4endl<<"G4LundStringFragmentation::"<<G4endl; 169 G4cout<<"FragmentString Position"<<theString.GetPosition()/fermi<<" "<< 170 theString.GetTimeOfCreation()/fermi<<G4endl; 171 G4cout<<"FragmentString Momentum"<<theString.Get4Momentum()<<theString.Get4Momentum().mag()<<G4endl; 501 G4cout<<"St Frag "<<MinimalStringMass<<" "<<WminLUND<<" "<<(1.-SmoothParam)<<" "<< theString.Get4Momentum().mag()<<G4endl; 502 G4cout<<(MinimalStringMass+WminLUND)*(1.-SmoothParam)<<" "<<theString.Get4Momentum().mag()<<G4endl; 503 504 if((MinimalStringMass+WminLUND)*(1.-SmoothParam) > theString.Get4Momentum().mag()) 505 {SetMassCut(1000.*MeV);} 506 else {SetMassCut(160.*MeV);} 172 507 */ 173 G4FragmentingString aString(theString); 174 SetMinimalStringMass(&aString); 175 176 if((MinimalStringMass+WminLUND)*(1.-SmoothParam) > theString.Get4Momentum().mag()) 177 {SetMassCut(1000.*MeV);} 178 // V.U. 20.06.10 in order to put un correspondence LightFragTest and MinStrMass 179 180 G4KineticTrackVector * LeftVector=LightFragmentationTest(&theString); 508 // V.U. 20.06.10 in order to put in correspondence LightFragTest and MinStrMass 509 510 G4KineticTrackVector * LeftVector(0); 511 // G4KineticTrackVector * LeftVector=LightFragmentationTest(&theString); 512 //G4cout<<"Min Str Mass "<<MinimalStringMass<<G4endl; 513 if(!IsFragmentable(&aString)) // produce 1 hadron 514 { 515 //G4cout<<"Non fragmentable"<<G4endl; 516 SetMassCut(1000.*MeV); 517 LeftVector=LightFragmentationTest(&theString); 518 SetMassCut(160.*MeV); 519 520 521 //G4cout<<"Prod hadron "<<LeftVector->operator[](0)->GetDefinition()->GetParticleName()<<G4endl; 522 /* 523 if(LeftVector->size() == 1) 524 { 525 if(! (std::abs(LeftVector->operator[](0)->GetDefinition()->GetPDGMass()- 526 theString.Get4Momentum().mag()) < 100*MeV)) 527 { // produce a particle with arbitrary isospin 528 G4cout<<" produce a particle with arbitrary isospin"<<G4endl; 529 530 pDefPair hadrons((G4ParticleDefinition *)0,(G4ParticleDefinition *)0); 531 Pcreate build=&G4HadronBuilder::Build; 532 FragmentationMass(&aString,build,&hadrons); // 0->1 533 G4cout<<"Hadron PDG "<<hadrons.first->GetPDGEncoding()<<G4endl; 534 if ( hadrons.second ==0 ) 535 {// Substitute string by light hadron, Note that Energy is not conserved here! 536 // Cleaning up the previously produced hadrons ------------------------------ 537 std::for_each(LeftVector->begin() , LeftVector->end() , DeleteKineticTrack()); 538 LeftVector->clear(); 539 540 G4ThreeVector Mom3 = aString.Get4Momentum().vect(); 541 G4LorentzVector Mom(Mom3,std::sqrt(Mom3.mag2() + sqr(hadrons.first->GetPDGMass()))); 542 LeftVector->push_back(new G4KineticTrack(hadrons.first, 0, 543 theString.GetPosition(), 544 Mom)); 545 } // end of if ( hadrons.second ==0 ) 546 } // end of produce a particle with arbitrary isospin 547 548 } // end of if(LeftVector->size() == 1) 549 */ 550 } // end of if(!IsFragmentable(&aString)) 181 551 182 552 if ( LeftVector != 0 ) { … … 207 577 //--------------------- The string can fragment ------------------------------- 208 578 //--------------- At least two particles can be produced ---------------------- 579 //G4cout<<"Fragmentable"<<G4endl; 209 580 LeftVector =new G4KineticTrackVector; 210 581 G4KineticTrackVector * RightVector=new G4KineticTrackVector; … … 218 589 { // If the string fragmentation do not be happend, repeat the fragmentation--- 219 590 G4FragmentingString *currentString=new G4FragmentingString(*theStringInCMS); 220 591 //G4cout<<"Main loop start whilecounter "<<attempt<<G4endl; 221 592 // Cleaning up the previously produced hadrons ------------------------------ 222 593 std::for_each(LeftVector->begin() , LeftVector->end() , DeleteKineticTrack()); … … 228 599 // Main fragmentation loop until the string will not be able to fragment ---- 229 600 inner_sucess=true; // set false on failure.. 601 230 602 while (! StopFragmenting(currentString) ) 231 603 { // Split current string into hadron + new string 604 232 605 G4FragmentingString *newString=0; // used as output from SplitUp... 233 606 234 607 G4KineticTrack * Hadron=Splitup(currentString,newString); 608 //G4cout<<"SplitUp------"<<Hadron<<G4endl; 235 609 236 610 if ( Hadron != 0 ) // Store the hadron 237 611 { 612 //G4cout<<"Hadron prod at fragm. "<<Hadron->GetDefinition()->GetParticleName()<<G4endl; 238 613 if ( currentString->GetDecayDirection() > 0 ) 239 614 LeftVector->push_back(Hadron); … … 245 620 }; 246 621 // Split remaining string into 2 final Hadrons ------------------------ 622 //G4cout<<"Split Last"<<G4endl; 247 623 if ( inner_sucess && 248 624 SplitLast(currentString,LeftVector, RightVector) ) … … 282 658 G4ThreeVector PositionOftheStringCreation(theString.GetPosition()); 283 659 660 //G4cout<<"# prod hadrons "<<LeftVector->size()<<G4endl; 284 661 for(size_t C1 = 0; C1 < LeftVector->size(); C1++) 285 662 { 286 663 G4KineticTrack* Hadron = LeftVector->operator[](C1); 287 664 G4LorentzVector Momentum = Hadron->Get4Momentum(); 665 //G4cout<<"Hadron "<<Hadron->GetDefinition()->GetParticleName()<<" "<<Momentum<<G4endl; 288 666 Momentum = toObserverFrame*Momentum; 289 667 Hadron->Set4Momentum(Momentum); … … 306 684 { 307 685 SetMinimalStringMass(string); 308 return sqr(MinimalStringMass + WminLUND) < string->Get4Momentum().mag2(); 686 // return sqr(MinimalStringMass + WminLUND) < string->Get4Momentum().mag2(); 687 return MinimalStringMass < string->Get4Momentum().mag(); // 21.07.2010 309 688 } 310 689 … … 314 693 SetMinimalStringMass(string); 315 694 316 //G4cout<<"StopFragm MinMass "<<MinimalStringMass<<" String Mass "<<std::sqrt(string->Get4Momentum().mag2())<<G4endl; 317 //G4cout<<"WminLUND "<<WminLUND<<" SmoothParam "<<SmoothParam<<" "<<string->Mass()<<G4endl; 695 /* 696 G4cout<<"StopFragm MinMass "<<MinimalStringMass<<" String Mass "<<string->Get4Momentum().mag()<<G4endl; 697 G4cout<<"WminLUND "<<WminLUND<<" SmoothParam "<<SmoothParam<<" "<<string->Mass()<<G4endl; 698 //G4cout<<std::exp(-(string->Mass()*string->Mass()-MinimalStringMass2)/WminLUND/WminLUND)<<G4endl; 699 //G4int Uzhi; G4cin>>Uzhi; 700 */ 701 // 318 702 return (MinimalStringMass + WminLUND)* 319 703 (1 + SmoothParam * (1.-2*G4UniformRand())) > 320 704 string->Mass(); 705 // 706 // return G4UniformRand() < std::exp(-(string->Mass()*string->Mass()-MinimalStringMass2)/WminLUND/WminLUND); 321 707 } 322 708 … … 327 713 { 328 714 //... perform last cluster decay 329 715 //G4cout<<"Split last-----------------------------------------"<<G4endl; 330 716 G4LorentzVector Str4Mom=string->Get4Momentum(); 331 717 332 718 G4ThreeVector ClusterVel =string->Get4Momentum().boostVector(); 333 719 334 G4double ResidualMass = string->Mass(); 335 336 G4ParticleDefinition * LeftHadron, * RightHadron; 337 338 G4int cClusterInterrupt = 0; 339 do 720 G4double StringMass = string->Mass(); 721 G4double StringMassSqr= sqr(StringMass); 722 723 G4ParticleDefinition * LeftHadron(0), * RightHadron(0); 724 G4double LeftHadronMass(0.), RightHadronMass(0.); 725 726 G4ParticleDefinition * FS_LeftHadron[25], * FS_RightHadron[25]; 727 G4double FS_Weight[25]; 728 G4int NumberOf_FS=0; 729 730 for(G4int i=0; i<25; i++) {FS_Weight[i]=0.;} 731 //*********************************************** 732 //G4cout<<"StrMass "<<StringMass<<" q "<<string->GetLeftParton()->GetParticleName()<<" "<<string->GetRightParton()->GetParticleName()<<" StringMassSqr "<<StringMassSqr<<G4endl; 733 734 735 string->SetLeftPartonStable(); // to query quark contents.. 736 737 if (string->FourQuarkString() ) 340 738 { 739 // The string is qq-qqbar type. Diquarks are on the string ends 740 G4int cClusterInterrupt = 0; 741 do 742 { 743 //G4cout<<"cClusterInterrupt "<<cClusterInterrupt<<G4endl; 341 744 if (cClusterInterrupt++ >= ClusterLoopInterrupt) 342 745 { 343 746 return false; 344 747 } 345 G4ParticleDefinition * quark = NULL; 346 string->SetLeftPartonStable(); // to query quark contents.. 347 348 if (!string->FourQuarkString() ) 748 749 G4int LeftQuark1= string->GetLeftParton()->GetPDGEncoding()/1000; 750 G4int LeftQuark2=(string->GetLeftParton()->GetPDGEncoding()/100)%10; 751 752 G4int RightQuark1= string->GetRightParton()->GetPDGEncoding()/1000; 753 G4int RightQuark2=(string->GetRightParton()->GetPDGEncoding()/100)%10; 754 755 if(G4UniformRand()<0.5) 349 756 { 350 // The string is q-qbar, or q-qq, or qbar-qqbar type 351 if (string->DecayIsQuark() && string->StableIsQuark() ) 352 { 353 //... there are quarks on cluster ends 354 LeftHadron= QuarkSplitup(string->GetLeftParton(), quark); 355 } else 356 { 357 //... there is a Diquark on one of the cluster ends 358 G4int IsParticle; 359 360 if ( string->StableIsQuark() ) 361 { 362 IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? -1 : +1; 363 } else 364 { 365 IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? +1 : -1; 366 } 367 368 pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted 369 quark = QuarkPair.second; 370 371 LeftHadron=hadronizer->Build(QuarkPair.first, string->GetLeftParton()); 372 } 373 374 RightHadron = hadronizer->Build(string->GetRightParton(), quark); 757 LeftHadron =hadronizer->Build(FindParticle( LeftQuark1), 758 FindParticle(RightQuark1)); 759 RightHadron=hadronizer->Build(FindParticle( LeftQuark2), 760 FindParticle(RightQuark2)); 375 761 } else 376 762 { 377 // The string is qq-qqbar type. Diquarks are on the string ends 378 G4int LiftQuark1= string->GetLeftParton()->GetPDGEncoding()/1000; 379 G4int LiftQuark2=(string->GetLeftParton()->GetPDGEncoding()/100)%10; 380 381 G4int RightQuark1= string->GetRightParton()->GetPDGEncoding()/1000; 382 G4int RightQuark2=(string->GetRightParton()->GetPDGEncoding()/100)%10; 383 384 if(G4UniformRand()<0.5) 385 { 386 LeftHadron =hadronizer->Build(FindParticle( LiftQuark1), 387 FindParticle(RightQuark1)); 388 RightHadron=hadronizer->Build(FindParticle( LiftQuark2), 389 FindParticle(RightQuark2)); 390 } else 391 { 392 LeftHadron =hadronizer->Build(FindParticle( LiftQuark1), 393 FindParticle(RightQuark2)); 394 RightHadron=hadronizer->Build(FindParticle( LiftQuark2), 395 FindParticle(RightQuark1)); 396 } 763 LeftHadron =hadronizer->Build(FindParticle( LeftQuark1), 764 FindParticle(RightQuark2)); 765 RightHadron=hadronizer->Build(FindParticle( LeftQuark2), 766 FindParticle(RightQuark1)); 397 767 } 398 768 399 769 //... repeat procedure, if mass of cluster is too low to produce hadrons 400 770 //... ClusterMassCut = 0.15*GeV model parameter 401 } 402 while (ResidualMass <= LeftHadron->GetPDGMass() + RightHadron->GetPDGMass()); 403 404 //... compute hadron momenta and energies 771 } 772 while ((StringMass <= LeftHadron->GetPDGMass() + RightHadron->GetPDGMass())); 773 774 } // End of if (string->FourQuarkString() ) 775 776 //*********************************************** 777 778 if (!string->FourQuarkString()) 779 { 780 if (string->DecayIsQuark() && string->StableIsQuark() ) 781 {//... there are quarks on cluster ends 782 //G4cout<<"Q Q string"<<G4endl; 783 G4ParticleDefinition * Quark; 784 G4ParticleDefinition * Anti_Quark; 785 786 if(string->GetLeftParton()->GetPDGEncoding()>0) 787 { 788 Quark =string->GetLeftParton(); 789 Anti_Quark=string->GetRightParton(); 790 } else 791 { 792 Quark =string->GetRightParton(); 793 Anti_Quark=string->GetLeftParton(); 794 } 795 796 G4int IDquark =Quark->GetPDGEncoding(); 797 G4int AbsIDquark =std::abs(IDquark); 798 G4int IDanti_quark =Anti_Quark->GetPDGEncoding(); 799 G4int AbsIDanti_quark=std::abs(IDanti_quark); 800 801 NumberOf_FS=0; 802 for(G4int ProdQ=1; ProdQ < 4; ProdQ++) 803 { 804 G4int SignQ=-1; 805 if(IDquark == 2) SignQ= 1; 806 if((IDquark == 1) && (ProdQ == 3)) SignQ= 1; // K0 807 if((IDquark == 3) && (ProdQ == 1)) SignQ=-1; // K0bar 808 if(IDquark == ProdQ) SignQ= 1; 809 810 G4int SignAQ= 1; 811 if(IDanti_quark == -2) SignAQ=-1; 812 if((IDanti_quark ==-1) && (ProdQ == 3)) SignAQ=-1; // K0bar 813 if((IDanti_quark ==-3) && (ProdQ == 1)) SignAQ= 1; // K0 814 if(AbsIDanti_quark == ProdQ) SignAQ= 1; 815 816 G4int StateQ=0; 817 do // while(Meson[AbsIDquark-1][ProdQ-1][StateQ]<>0); 818 { 819 LeftHadron=G4ParticleTable::GetParticleTable()->FindParticle(SignQ* 820 Meson[AbsIDquark-1][ProdQ-1][StateQ]); 821 LeftHadronMass=LeftHadron->GetPDGMass(); 822 StateQ++; 823 824 G4int StateAQ=0; 825 do // while(Meson[AbsIDanti_quark-1][ProdQ-1][StateAQ]<>0); 826 { 827 RightHadron=G4ParticleTable::GetParticleTable()->FindParticle(SignAQ* 828 Meson[AbsIDanti_quark-1][ProdQ-1][StateAQ]); 829 RightHadronMass=RightHadron->GetPDGMass(); 830 StateAQ++; 831 832 if(StringMass >= LeftHadronMass + RightHadronMass) 833 { 834 G4double FS_Psqr=lambda(StringMassSqr,sqr(LeftHadronMass), 835 sqr(RightHadronMass)); 836 FS_Weight[NumberOf_FS]=std::sqrt(FS_Psqr)* 837 MesonWeight[AbsIDquark-1][ProdQ-1][StateQ]* 838 MesonWeight[AbsIDanti_quark-1][ProdQ-1][StateAQ]* 839 Prob_QQbar[ProdQ-1]; 840 841 FS_LeftHadron[NumberOf_FS] = LeftHadron; 842 FS_RightHadron[NumberOf_FS]= RightHadron; 843 NumberOf_FS++; 844 if(NumberOf_FS > 24) 845 {G4int Uzhi; G4cout<<"QQbar string #_FS "<<NumberOf_FS<<G4endl; G4cin>>Uzhi;} 846 } // End of if(StringMass >= LeftHadronMass + RightHadronMass) 847 } while(Meson[AbsIDanti_quark-1][ProdQ-1][StateAQ]!=0); 848 } while(Meson[AbsIDquark-1][ProdQ-1][StateQ]!=0); 849 } // End of for(G4int ProdQ=1; ProdQ < 4; ProdQ++) 850 // 851 } else //--------------------------------------------- 852 { //... there is a Diquark on one of the cluster ends 853 //G4cout<<"DiQ Q string"<<G4endl; 854 G4ParticleDefinition * Di_Quark; 855 G4ParticleDefinition * Quark; 856 857 if(string->GetLeftParton()->GetParticleSubType()== "quark") 858 { 859 Quark =string->GetLeftParton(); 860 Di_Quark=string->GetRightParton(); 861 } else 862 { 863 Quark =string->GetRightParton(); 864 Di_Quark=string->GetLeftParton(); 865 } 866 867 G4int IDquark =Quark->GetPDGEncoding(); 868 G4int AbsIDquark =std::abs(IDquark); 869 G4int IDdi_quark =Di_Quark->GetPDGEncoding(); 870 G4int AbsIDdi_quark=std::abs(IDdi_quark); 871 G4int Di_q1=AbsIDdi_quark/1000; 872 G4int Di_q2=(AbsIDdi_quark-Di_q1*1000)/100; 873 //G4cout<<"IDs "<<IDdi_quark<<" "<<IDquark<<G4endl; 874 875 G4int SignDiQ= 1; 876 if(IDdi_quark < 0) SignDiQ=-1; 877 878 NumberOf_FS=0; 879 for(G4int ProdQ=1; ProdQ < 4; ProdQ++) 880 { 881 G4int SignQ; 882 if(IDquark > 0) 883 { SignQ=-1; 884 if(IDquark == 2) SignQ= 1; 885 if((IDquark == 1) && (ProdQ == 3)) SignQ= 1; // K0 886 if((IDquark == 3) && (ProdQ == 1)) SignQ=-1; // K0bar 887 } else 888 { 889 SignQ= 1; 890 if(IDquark == -2) SignQ=-1; 891 if((IDquark ==-1) && (ProdQ == 3)) SignQ=-1; // K0bar 892 if((IDquark ==-3) && (ProdQ == 1)) SignQ= 1; // K0 893 } 894 895 if(AbsIDquark == ProdQ) SignQ= 1; 896 897 //G4cout<<G4endl; 898 //G4cout<<"-------------------------------------------"<<G4endl; 899 //G4cout<<"Insert QQbar "<<ProdQ<<" Sign "<<SignQ<<G4endl; 900 901 G4int StateQ=0; 902 do // while(Meson[AbsIDquark-1][ProdQ-1][StateQ]<>0); 903 { 904 //G4cout<<G4endl<<"AbsIDquark ProdQ StateQ "<<MesonWeight[AbsIDquark-1][ProdQ-1][StateQ]<<" "<<AbsIDquark<<" "<<ProdQ<<" "<<StateQ<<G4endl; 905 //G4cout<<G4endl<<"AbsIDquark ProdQ StateQ "<<SignQ*Meson[AbsIDquark-1][ProdQ-1][StateQ]<<" "<<AbsIDquark<<" "<<ProdQ<<" "<<StateQ<<G4endl; 906 LeftHadron=G4ParticleTable::GetParticleTable()->FindParticle(SignQ* 907 Meson[AbsIDquark-1][ProdQ-1][StateQ]); 908 LeftHadronMass=LeftHadron->GetPDGMass(); 909 910 //G4cout<<"Meson "<<LeftHadron->GetParticleName()<<G4endl; 911 912 G4int StateDiQ=0; 913 do // while(Baryon[Di_q1-1][Di_q2-1][ProdQ-1][StateDiQ]<>0); 914 { 915 //G4cout<<G4endl<<"Di_q1 Di_q2 ProdQ StateDiQ "<<BaryonWeight[Di_q1-1][Di_q2-1][ProdQ-1][StateDiQ]<<" "<<Di_q1-1<<" "<<Di_q2-1<<" "<<ProdQ-1<<" "<<StateDiQ<<G4endl; 916 RightHadron=G4ParticleTable::GetParticleTable()->FindParticle(SignDiQ* 917 Baryon[Di_q1-1][Di_q2-1][ProdQ-1][StateDiQ]); 918 RightHadronMass=RightHadron->GetPDGMass(); 919 920 //G4cout<<"Baryon "<<RightHadron->GetParticleName()<<G4endl; 921 922 //G4cout<<"StringMass LeftHadronMass RightHadronMass "<<StringMass<<" "<<LeftHadronMass<<" "<< RightHadronMass<<G4endl; 923 924 if(StringMass >= LeftHadronMass + RightHadronMass) 925 { 926 G4double FS_Psqr=lambda(StringMassSqr,sqr(LeftHadronMass), 927 sqr(RightHadronMass)); 928 FS_Weight[NumberOf_FS]=std::sqrt(FS_Psqr)* 929 MesonWeight[AbsIDquark-1][ProdQ-1][StateQ]* 930 BaryonWeight[Di_q1-1][Di_q2-1][ProdQ-1][StateDiQ]* 931 Prob_QQbar[ProdQ-1]; 932 933 FS_LeftHadron[NumberOf_FS] = LeftHadron; 934 FS_RightHadron[NumberOf_FS]= RightHadron; 935 936 //G4cout<<"State "<<NumberOf_FS<<" "<<std::sqrt(FS_Psqr/4./StringMassSqr)<<" "<<std::sqrt(FS_Psqr)<<" "<<FS_Weight[NumberOf_FS]<<G4endl; 937 //G4cout<<"++++++++++++++++++++++++++++++++"<<G4endl; 938 NumberOf_FS++; 939 940 if(NumberOf_FS > 24) 941 {G4int Uzhi; G4cout<<"QQbar string #_FS "<<NumberOf_FS<<G4endl; G4cin>>Uzhi;} 942 } // End of if(StringMass >= LeftHadronMass + RightHadronMass) 943 944 StateDiQ++; 945 //G4cout<<Baryon[Di_q1-1][Di_q2-1][ProdQ-1][StateDiQ]<<" "<<Di_q1-1<<" "<<Di_q2-1<<" "<<ProdQ-1<<" "<<StateDiQ<<G4endl; 946 } while(Baryon[Di_q1-1][Di_q2-1][ProdQ-1][StateDiQ]!=0); 947 948 StateQ++; 949 } while(Meson[AbsIDquark-1][ProdQ-1][StateQ]!=0); 950 } // End of for(G4int ProdQ=1; ProdQ < 4; ProdQ++) 951 } 952 //==================================== 953 954 if(NumberOf_FS == 0) return false; 955 //G4cout<<"NumberOf_FS "<<NumberOf_FS<<G4endl; 956 G4double SumWeights=0.; 957 for(G4int i=0; i<NumberOf_FS; i++) {SumWeights+=FS_Weight[i];} 958 959 G4double ksi=G4UniformRand(); 960 G4double Sum=0.; 961 G4int SampledState(0); 962 963 for(G4int i=0; i<NumberOf_FS; i++) 964 { 965 Sum+=(FS_Weight[i]/SumWeights); 966 SampledState=i; 967 if(Sum >= ksi) break; 968 } 969 970 LeftHadron =FS_LeftHadron[SampledState]; 971 RightHadron=FS_RightHadron[SampledState]; 972 973 //G4cout<<"Selected "<<SampledState<<" "<<LeftHadron->GetParticleName()<<" "<<RightHadron->GetParticleName()<<G4endl; 974 975 } // End of if(!string->FourQuarkString()) 405 976 406 977 G4LorentzVector LeftMom, RightMom; … … 409 980 Sample4Momentum(&LeftMom, LeftHadron->GetPDGMass(), 410 981 &RightMom, RightHadron->GetPDGMass(), 411 ResidualMass);982 StringMass); 412 983 413 984 LeftMom.boost(ClusterVel); … … 429 1000 G4double MassMt2, AntiMassMt2; 430 1001 G4double AvailablePz, AvailablePz2; 431 432 if(Mass > 930. || AntiMass > 930.) // If there is a baryon 1002 1003 //G4cout<<"Masses "<<InitialMass<<" "<<Mass<<" "<<AntiMass<<G4endl; 1004 // 1005 1006 if((Mass > 930. || AntiMass > 930.)) //If there is a baryon 433 1007 { 434 // ----------------- Isotripic decay ------------------------------------1008 // ----------------- Isotropic decay ------------------------------------ 435 1009 G4double r_val = sqr(InitialMass*InitialMass - Mass*Mass - AntiMass*AntiMass) - 436 1010 sqr(2.*Mass*AntiMass); 437 1011 G4double Pabs = (r_val > 0.)? std::sqrt(r_val)/(2.*InitialMass) : 0; 1012 //G4cout<<"P for isotr decay "<<Pabs<<G4endl; 438 1013 439 1014 //... sample unit vector 440 G4double pz = 1015 G4double pz =1. - 2.*G4UniformRand(); 441 1016 G4double st = std::sqrt(1. - pz * pz)*Pabs; 442 1017 G4double phi = 2.*pi*G4UniformRand(); … … 450 1025 AntiMom->setPx(-px); AntiMom->setPy(-py); AntiMom->setPz(-pz); 451 1026 AntiMom->setE (std::sqrt(Pabs*Pabs + AntiMass*AntiMass)); 1027 //G4int Uzhi; G4cin>>Uzhi; 452 1028 } 453 1029 else 1030 // 454 1031 { 455 1032 do … … 461 1038 G4double termN = 2*termD + 4*Mass*Mass + 4*AntiMass*AntiMass; 462 1039 G4double pt2max=(termD*termD - termab )/ termN ; 1040 //G4cout<<"Anis "<<pt2max<<" "<<(termD*termD-termab)/(4.*InitialMass*InitialMass)<<G4endl; 463 1041 464 1042 Pt=SampleQuarkPt(std::sqrt(pt2max)); Pt.setZ(0); G4double Pt2=Pt.mag2(); 465 1043 //G4cout<<"Sampl pt2 "<<Pt2<<G4endl; 466 1044 MassMt2 = Mass * Mass + Pt2; 467 1045 AntiMassMt2= AntiMass * AntiMass + Pt2; … … 491 1069 G4FragmentingString * string, G4FragmentingString * newString) 492 1070 { 1071 //G4cout<<"Start SplitEandP "<<G4endl; 493 1072 G4LorentzVector String4Momentum=string->Get4Momentum(); 494 1073 G4double StringMT2=string->Get4Momentum().mt2(); … … 496 1075 G4double HadronMass = pHadron->GetPDGMass(); 497 1076 498 SetMinimalStringMass(newString); 1077 SetMinimalStringMass(newString); 1078 //G4cout<<"HadM MinimalStringMassLeft StringM "<<HadronMass<<" "<<MinimalStringMass<<" "<<String4Momentum.mag()<<G4endl; 1079 1080 if(HadronMass + MinimalStringMass > String4Momentum.mag()) {return 0;}// have to start all over! 499 1081 String4Momentum.setPz(0.); 500 1082 G4ThreeVector StringPt=String4Momentum.vect(); … … 517 1099 G4double Pz2 = (sqr(StringMT2 - HadronMassT2 - ResidualMassT2) - 518 1100 4*HadronMassT2 * ResidualMassT2)/4./StringMT2; 519 1101 //G4cout<<"Pz2 "<<Pz2<<G4endl; 520 1102 if(Pz2 < 0 ) {return 0;} // have to start all over! 521 1103 … … 526 1108 G4double zMax = (std::sqrt(HadronMassT2+Pz2) + Pz)/std::sqrt(StringMT2); 527 1109 1110 //G4cout<<"if (zMin >= zMax) return 0 "<<zMin<<" "<<zMax<<G4endl; 528 1111 if (zMin >= zMax) return 0; // have to start all over! 529 1112 … … 531 1114 string->GetDecayParton()->GetPDGEncoding(), pHadron, 532 1115 HadronPt.x(), HadronPt.y()); 533 1116 //G4cout<<"z "<<z<<G4endl; 534 1117 //... now compute hadron longitudinal momentum and energy 535 1118 // longitudinal hadron momentum component HadronPz … … 543 1126 544 1127 G4LorentzVector * a4Momentum= new G4LorentzVector(HadronPt,HadronE); 545 1128 //G4cout<<"Out SplitEandP "<<G4endl; 546 1129 return a4Momentum; 547 1130 } … … 596 1179 return z; 597 1180 } 1181 1182 //------------------------------------------------------------------------ 1183 G4double G4LundStringFragmentation::lambda(G4double s, G4double m1_Sqr, G4double m2_Sqr) 1184 { 1185 G4double lam = sqr(s - m1_Sqr - m2_Sqr) - 4.*m1_Sqr*m2_Sqr; 1186 return lam; 1187 } 1188 -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4QGSMFragmentation.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4QGSMFragmentation.cc,v 1. 9 2008/06/23 08:35:55vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4QGSMFragmentation.cc,v 1.10 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4VKinkyStringDecay.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4VKinkyStringDecay.cc,v 1. 4 2008/04/25 14:20:14vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4VKinkyStringDecay.cc,v 1.5 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // Maxim Komogorov 30 30 // -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4VLongitudinalStringDecay.cc,v 1.2 0 2010/06/21 17:50:48vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4VLongitudinalStringDecay.cc,v 1.22 2010/09/20 12:46:23 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- … … 71 71 72 72 // Changable Parameters below. 73 SigmaQT = 0.5 * GeV; 73 SigmaQT = 0.5 * GeV; // 0.5 74 74 75 75 StrangeSuppress = 0.44; // 27 % strange quarks produced, ie. u:d:s=1:1:0.27 … … 250 250 Hadron1 = (minMassHadronizer->*build)(string->GetLeftParton(), 251 251 string->GetRightParton()); 252 //G4cout<<"Hadron1 "<<Hadron1->GetParticleName()<<G4endl; 252 253 mass= (Hadron1)->GetPDGMass(); 253 254 } else … … 323 324 G4FragmentingString *&newString) 324 325 { 326 //G4cout<<"Start SplitUP"<<G4endl; 325 327 //... random choice of string end to use for creating the hadron (decay) 326 328 SideOfDecay = (G4UniformRand() < 0.5)? 1: -1; … … 341 343 HadronDefinition= DiQuarkSplitup(string->GetDecayParton(), newStringEnd); 342 344 } 345 346 //G4cout<<"New had "<<HadronDefinition->GetParticleName()<<G4endl; 343 347 // create new String from old, ie. keep Left and Right order, but replace decay 344 348 345 349 newString=new G4FragmentingString(*string,newStringEnd); // To store possible 346 350 // quark containt of new string 351 //G4cout<<"SplitEandP "<<G4endl; 347 352 G4LorentzVector* HadronMomentum=SplitEandP(HadronDefinition, string, newString); 348 353 … … 360 365 delete HadronMomentum; 361 366 } 367 //G4cout<<"End SplitUP"<<G4endl; 362 368 return Hadron; 363 369 } -
trunk/source/processes/hadronic/models/parton_string/management/History
r1196 r1340 1 $Id: History,v 1. 7 2009/07/17 12:41:20 vuzhinskExp $1 $Id: History,v 1.9 2010/09/08 16:57:50 gunter Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 15 15 * Please list in reverse chronological order (last date on top) 16 16 --------------------------------------------------------------- 17 18 8-Sept-2010, G.Folger (had-partonstring-mgt-V09-03-00) 19 use integer interface of G4Nucleus for A&Z 20 21 6 Dec. 2009, V. Uzhinsky (had-partonstring-mgt-V09-02-02) 22 Repeatation of string fragmentation if 23 energy corr. can not be done is implemented. 24 17 25 17-July-2009 V. Uzhinsky (had-partonstring-mgt-V09-02-01) 18 26 A Status of nuclear nucleon involved in an interaction is introdused. -
trunk/source/processes/hadronic/models/parton_string/management/include/G4EventGenerator.hh
r1337 r1340 26 26 // 27 27 // $Id: G4EventGenerator.hh,v 1.3 2006/06/29 20:55:13 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4EventGenerator_h -
trunk/source/processes/hadronic/models/parton_string/management/include/G4InteractionCode.hh
r1337 r1340 26 26 // 27 27 // $Id: G4InteractionCode.hh,v 1.3 2006/06/29 20:55:15 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4InteractionCode_h -
trunk/source/processes/hadronic/models/parton_string/management/include/G4InteractionContent.hh
r1337 r1340 26 26 // 27 27 // $Id: G4InteractionContent.hh,v 1.5 2009/07/17 12:36:41 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/management/include/G4PomeronCrossSection.hh
r1337 r1340 28 28 // 29 29 // $Id: G4PomeronCrossSection.hh,v 1.3 2006/06/29 20:55:19 gunter Exp $ 30 // GEANT4 tag $Name: geant4-09-0 4-beta-01$30 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 31 31 // 32 32 #include "G4Proton.hh" -
trunk/source/processes/hadronic/models/parton_string/management/include/G4StringModel.hh
r1337 r1340 26 26 // 27 27 // $Id: G4StringModel.hh,v 1.3 2006/06/29 20:55:23 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4StringModel_h -
trunk/source/processes/hadronic/models/parton_string/management/include/G4VParticipants.hh
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4VParticipants.hh,v 1. 6 2009/11/19 14:23:09gunter Exp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4VParticipants.hh,v 1.7 2010/09/08 16:58:04 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 … … 59 59 int operator!=(const G4VParticipants &right) const; 60 60 61 void Init(G4 double theZ, G4doubletheA);61 void Init(G4int theZ, G4int theA); 62 62 63 63 void SetNucleus(G4V3DNucleus * aNucleus); … … 86 86 } 87 87 88 inline void G4VParticipants::Init(G4 double theA, G4doubletheZ)88 inline void G4VParticipants::Init(G4int theA, G4int theZ) 89 89 { 90 90 if ( theNucleus == NULL ) theNucleus = new G4Fancy3DNucleus(); -
trunk/source/processes/hadronic/models/parton_string/management/include/G4VPartonStringModel.hh
r1337 r1340 26 26 // 27 27 // $Id: G4VPartonStringModel.hh,v 1.3 2006/06/29 20:55:27 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4VPartonStringModel_h -
trunk/source/processes/hadronic/models/parton_string/management/include/G4VSplitableHadron.hh
r1337 r1340 26 26 // 27 27 // $Id: G4VSplitableHadron.hh,v 1.6 2009/07/17 12:36:41 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/management/include/G4VStringFragmentation.hh
r1337 r1340 26 26 // 27 27 // $Id: G4VStringFragmentation.hh,v 1.3 2006/06/29 20:55:31 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4VStringFragmentation_h -
trunk/source/processes/hadronic/models/parton_string/management/include/G4VertexCode.hh
r1337 r1340 26 26 // 27 27 // $Id: G4VertexCode.hh,v 1.3 2006/06/29 20:55:33 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 #ifndef G4VertexCode_h -
trunk/source/processes/hadronic/models/parton_string/management/src/G4EventGenerator.cc
r1337 r1340 26 26 // 27 27 // $Id: G4EventGenerator.cc,v 1.4 2006/06/29 20:55:37 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // G4EventGenerator -
trunk/source/processes/hadronic/models/parton_string/management/src/G4InteractionContent.cc
r1337 r1340 26 26 // 27 27 // $Id: G4InteractionContent.cc,v 1.4 2006/06/29 20:55:39 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ------------------------------------------------------------ -
trunk/source/processes/hadronic/models/parton_string/management/src/G4PomeronCrossSection.cc
r1337 r1340 26 26 // 27 27 // $Id: G4PomeronCrossSection.cc,v 1.6 2006/11/07 12:51:39 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/management/src/G4StringModel.cc
r1337 r1340 26 26 // 27 27 // $Id: G4StringModel.cc,v 1.4 2006/06/29 20:55:45 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // G4StringModel -
trunk/source/processes/hadronic/models/parton_string/management/src/G4VParticipants.cc
r1337 r1340 26 26 // 27 27 // $Id: G4VParticipants.cc,v 1.3 2006/06/29 20:55:47 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // ------------------------------------------------------------ -
trunk/source/processes/hadronic/models/parton_string/management/src/G4VPartonStringModel.cc
r1337 r1340 26 26 // 27 27 // $Id: G4VPartonStringModel.cc,v 1.6 2009/10/05 12:52:48 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 //// ------------------------------------------------------------ -
trunk/source/processes/hadronic/models/parton_string/management/src/G4VSplitableHadron.cc
r1337 r1340 26 26 // 27 27 // $Id: G4VSplitableHadron.cc,v 1.7 2009/07/17 12:36:41 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/management/src/G4VStringFragmentation.cc
r1337 r1340 26 26 // 27 27 // $Id: G4VStringFragmentation.cc,v 1.4 2006/06/29 20:55:53 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // G4VStringFragmentation -
trunk/source/processes/hadronic/models/parton_string/qgsm/History
r1315 r1340 1 $Id: History,v 1. 9 2010/03/12 15:58:21gunter Exp $1 $Id: History,v 1.10 2010/09/08 15:51:28 gunter Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 15 15 * Please list in reverse chronological order (last date on top) 16 16 --------------------------------------------------------------- 17 18 19 8 Sep 2010, G.Folger (hadr-qgsm-V09-03-01) 20 ----------------------------------------------------- 21 - G4QGSModel.icc: use integer (A,Z) interface of nucleus 17 22 18 23 12-Mar-2010, G.Folger (hadr-qgsm-V09-03-00) -
trunk/source/processes/hadronic/models/parton_string/qgsm/include/G4QGSModel.icc
r819 r1340 46 46 { 47 47 // clean-up and consistency with design, HPW Feb 1999 48 theParticipants.Init(aNucleus.Get N(),aNucleus.GetZ());48 theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt()); 49 49 theCurrentVelocity.setX(0); 50 50 theCurrentVelocity.setY(0);
Note: See TracChangeset
for help on using the changeset viewer.