- Timestamp:
- Dec 22, 2010, 3:52:27 PM (14 years ago)
- Location:
- trunk/source/processes/hadronic/models/parton_string/diffraction
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/parton_string/diffraction/History
r1340 r1347 1 $Id: History,v 1.3 3 2010/09/20 15:55:33vuzhinsk Exp $1 $Id: History,v 1.34 2010/11/15 10:10:16 vuzhinsk Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 15 15 * Please list in reverse chronological order (last date on top) 16 16 --------------------------------------------------------------- 17 15 Nov. 2010, V. Uzhinsky (hadr-string-diff-V09-03-04) 18 FTF with tuned parameters for pA and PiA interactions. 19 Quark exchange is tuned. 20 Low mass string fragmentation is improved. 21 Reggeon cascade parameters are tuned. 22 23 -------------------------------------------------------- 17 24 20 Sept. 2010, V, Uzhinsky (hadr-string-diff-V09-03-03) 18 25 FTF with new tuned parameters of nuclear destrustion is implemented. -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4DiffractiveSplitableHadron.hh
r1340 r1347 26 26 // 27 27 // $Id: G4DiffractiveSplitableHadron.hh,v 1.6 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh
r1340 r1347 26 26 // 27 27 // $Id: G4FTFModel.hh,v 1.11 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 // Class Description -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParameters.hh
r1340 r1347 27 27 #define G4FTFParameters_h 1 28 28 // 29 // $Id: G4FTFParameters.hh,v 1. 8 2010/09/20 15:50:46vuzhinsk Exp $30 // GEANT4 tag $Name: geant4-09-0 3-ref-09$29 // $Id: G4FTFParameters.hh,v 1.9 2010/11/15 10:05:19 vuzhinsk Exp $ 30 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 31 31 // 32 32 #include "G4Proton.hh" … … 35 35 36 36 public: 37 G4FTFParameters(const G4ParticleDefinition * , G4 doubletheA,38 G4 doubletheZ,37 G4FTFParameters(const G4ParticleDefinition * , G4int theA, 38 G4int theZ, 39 39 G4double s); 40 // G4FTFParameters(const G4ParticleDefinition * , G4double theA, 41 // G4double theZ, 42 // G4double s); 40 43 41 44 ~G4FTFParameters(); … … 63 66 void SetSlopeQuarkExchange(const G4double aValue); 64 67 void SetDeltaProbAtQuarkExchange(const G4double aValue); 68 void SetProbOfSameQuarkExchange(const G4double aValue); 65 69 66 70 void SetProjMinDiffMass(const G4double aValue); … … 112 116 G4double GetSlopeQuarkExchange(); 113 117 G4double GetDeltaProbAtQuarkExchange(); 118 G4double GetProbOfSameQuarkExchange(); 114 119 115 120 G4double GetProjMinDiffMass(); … … 161 166 G4double SlopeQuarkExchange; 162 167 G4double DeltaProbAtQuarkExchange; 168 G4double ProbOfSameQuarkExchange; 163 169 164 170 G4double ProjMinDiffMass; … … 236 242 inline void G4FTFParameters::SetDeltaProbAtQuarkExchange(const G4double aValue) 237 243 {DeltaProbAtQuarkExchange = aValue;} 244 inline void G4FTFParameters::SetProbOfSameQuarkExchange(const G4double aValue) 245 {ProbOfSameQuarkExchange = aValue;} 238 246 239 247 inline void G4FTFParameters::SetProjMinDiffMass(const G4double aValue) … … 331 339 inline G4double G4FTFParameters::GetMagQuarkExchange() {return MagQuarkExchange;} 332 340 inline G4double G4FTFParameters::GetSlopeQuarkExchange() {return SlopeQuarkExchange;} 333 inline G4double G4FTFParameters::GetDeltaProbAtQuarkExchange() 334 {returnDeltaProbAtQuarkExchange;}335 341 inline G4double G4FTFParameters::GetDeltaProbAtQuarkExchange(){return 342 DeltaProbAtQuarkExchange;} 343 inline G4double G4FTFParameters::GetProbOfSameQuarkExchange(){return ProbOfSameQuarkExchange;} 336 344 337 345 inline G4double G4FTFParameters::GetProjMinDiffMass() {return ProjMinDiffMass;} -
trunk/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParticipants.hh
r1340 r1347 26 26 // 27 27 // $Id: G4FTFParticipants.hh,v 1.7 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveExcitation.cc
r1340 r1347 25 25 // 26 26 // 27 // $Id: G4DiffractiveExcitation.cc,v 1.2 2 2010/09/20 15:50:46vuzhinsk Exp $27 // $Id: G4DiffractiveExcitation.cc,v 1.23 2010/11/15 10:02:38 vuzhinsk Exp $ 28 28 // ------------------------------------------------------------ 29 29 // GEANT 4 class implemetation file … … 163 163 164 164 G4double SqrtS=std::sqrt(S); 165 165 //G4cout<<"SqrtS < 2300*MeV "<<SqrtS<<G4endl; 166 166 if(absProjectilePDGcode > 1000 && (SqrtS < 2300*MeV || SqrtS < SumMasses)) 167 167 {target->SetStatus(2); return false;} // The model cannot work for … … 221 221 G4cout<<"Targ "<<M0target <<" "<<TargetDiffStateMinMass <<" "<<TargetNonDiffStateMinMass<<G4endl; 222 222 G4cout<<"SqrtS "<<SqrtS<<G4endl; 223 G4cout<<"Rapid "<<ProjectileRapidity<< " "<<TargetRapidity<<G4endl;223 G4cout<<"Rapid "<<ProjectileRapidity<<G4endl; //" "<<TargetRapidity<<G4endl; 224 224 */ 225 225 // Charge exchange can be possible for baryons ----------------- … … 230 230 G4double DeltaProbAtQuarkExchange=theParameters->GetDeltaProbAtQuarkExchange(); 231 231 232 //G4cout<<"Q exc "<<MagQuarkExchange<<" "<<SlopeQuarkExchange<<" "<<DeltaProbAtQuarkExchange<<G4endl;233 232 // G4double NucleonMass= 234 233 // (G4ParticleTable::GetParticleTable()->FindParticle(2112))->GetPDGMass(); … … 237 236 238 237 //G4cout<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity - TargetRapidity))<<G4endl; 238 239 //G4cout<<"Q exc Mag Slop Wdelta"<<MagQuarkExchange<<" "<<SlopeQuarkExchange<<" "<<DeltaProbAtQuarkExchange<<G4endl; 240 //G4cout<<"ProjectileRapidity "<<ProjectileRapidity<<G4endl; 239 241 //G4cout<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity))<<G4endl; 240 //G4cout<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity - 1.36))<<G4endl;241 242 //G4int Uzhi; G4cin>>Uzhi; 242 243 // Check for possible quark exchange ----------------------------------- … … 272 273 if(absProjectilePDGcode < 1000 ) 273 274 { // projectile is meson ----------------- 275 274 276 if(ProjQ1 > 0 ) // ProjQ1 is quark 275 277 { … … 300 302 TargExchangeQ = TargQ3; TargQ3=ProjExchangeQ; ProjQ2=TargExchangeQ; 301 303 } 302 303 304 } // End of if(ProjQ1 > 0 ) // ProjQ1 is quark 304 305 305 306 G4int aProjQ1=std::abs(ProjQ1); 306 307 G4int aProjQ2=std::abs(ProjQ2); 307 if(aProjQ1 == aProjQ2) {NewProjCode = 111;} // Pi0-meson 308 if(aProjQ1 == aProjQ2) {NewProjCode = 111;} // Pi0-meson 308 309 else // |ProjQ1| # |ProjQ2| 309 310 { 310 311 if(aProjQ1 > aProjQ2) {NewProjCode = aProjQ1*100+aProjQ2*10+1;} 311 312 else {NewProjCode = aProjQ2*100+aProjQ1*10+1;} 313 NewProjCode *=(ProjectilePDGcode/absProjectilePDGcode); 312 314 } 313 315 316 G4bool ProjExcited=false; 317 if(G4UniformRand() < 0.5) 318 { 319 NewProjCode +=2; // Excited Pi0-meson 320 ProjExcited=true; 321 } 322 //G4cout<<G4endl<<"NewProjCode "<<NewProjCode<<G4endl; 323 324 G4ParticleDefinition* TestParticle=0; 325 TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode); 326 if(TestParticle) 327 { 328 M0projectile= 329 (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass(); 330 M0projectile2 = M0projectile * M0projectile; 331 332 ProjectileDiffStateMinMass =M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV 333 ProjectileNonDiffStateMinMass=M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV 334 } else 335 {return false;} 336 337 //G4cout<<"New TrQ "<<TargQ1<<" "<<TargQ2<<" "<<TargQ3<<G4endl; 314 338 NewTargCode = NewNucleonId(TargQ1, TargQ2, TargQ3); 339 //G4cout<<"NewTargCode "<<NewTargCode<<G4endl; 315 340 316 341 if( (TargQ1 == TargQ2) && (TargQ1 == TargQ3) && 317 (SqrtS > M0projectile+DeltaMass)) {NewTargCode +=2;} //Create Delta isobar 318 319 else if( target->GetDefinition()->GetPDGiIsospin() == 3 ) //Delta was the target 320 { if(G4UniformRand() > DeltaProbAtQuarkExchange){NewTargCode +=2;} //Save Delta isobar 342 (SqrtS > M0projectile+DeltaMass)) {NewTargCode +=2; //Create Delta isobar 343 ProjExcited=true;} 344 else if( target->GetDefinition()->GetPDGiIsospin() == 3 ) //Delta was the target 345 { if(G4UniformRand() > DeltaProbAtQuarkExchange){NewTargCode +=2; //Save Delta isobar 346 ProjExcited=true;} 321 347 else {} // De-excite initial Delta isobar 322 348 } 323 349 324 else if((G4UniformRand() < DeltaProbAtQuarkExchange) && //Nucleon was the target 350 // else if((!CreateDelta) && 351 else if((!ProjExcited) && 352 (G4UniformRand() < DeltaProbAtQuarkExchange) && //Nucleon was the target 325 353 (SqrtS > M0projectile+DeltaMass)) {NewTargCode +=2;} //Create Delta isobar 354 // else if( CreateDelta) {NewTargCode +=2;} 326 355 else {} //Save initial nucleon 356 327 357 // target->SetDefinition( // Fix 15.12.09 328 358 // G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode));// Fix 15.12.09 359 360 //G4cout<<"NewTargCode "<<NewTargCode<<G4endl; 361 //G4int Uzhi; G4cin>>Uzhi; 362 TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode); 363 if(TestParticle) 364 { 365 M0target= 366 (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass(); 367 M0target2 = M0target * M0target; 368 369 TargetDiffStateMinMass =M0target+220.*MeV; //220 MeV=m_pi+80 MeV; 370 TargetNonDiffStateMinMass=M0target+220.*MeV; //220 MeV=m_pi+80 MeV; 371 } else 372 {return false;} 329 373 } else 330 374 { // projectile is baryon ---------------- 331 G4double Same=0.; //0.3; //0.5; 375 //========================================================================= 376 G4double Same=theParameters->GetProbOfSameQuarkExchange(); //0.3; //0.5; 0. 332 377 G4bool ProjDeltaHasCreated(false); 333 378 G4bool TargDeltaHasCreated(false); … … 485 530 } // End of if projectile is baryon --------------------------- 486 531 532 //G4cout<<"At end// NewProjCode "<<NewProjCode<<G4endl; 533 //G4cout<<"At end// NewTargCode "<<NewTargCode<<G4endl; 487 534 488 535 // If we assume that final state hadrons after the charge exchange will be 489 536 // in the ground states, we have to put ---------------------------------- 490 491 /* 492 // if(M0projectile < 493 // (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass()) 494 if(ProjDeltaHasCreated) 495 { 496 M0projectile= 497 (G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass(); 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 502 } 503 504 // if(M0target < 505 // (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass()) 506 if(TargDeltaHasCreated) 507 { 508 M0target= 509 (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass(); 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; 514 } 515 */ 537 //G4cout<<"M0pr M0tr SqS "<<M0projectile<<" "<<M0target<<" "<<SqrtS<<G4endl; 538 516 539 PZcms2=(S*S+M0projectile2*M0projectile2+M0target2*M0target2- 517 540 2*S*M0projectile2 - 2*S*M0target2 - 2*M0projectile2*M0target2) 518 541 /4./S; 519 //G4cout<<"PZcms2 1 "<<PZcms2<<G4endl ;542 //G4cout<<"PZcms2 1 "<<PZcms2<<G4endl<<G4endl; 520 543 if(PZcms2 < 0) {return false;} // It can be if energy is not sufficient for Delta 521 544 //---------------------------------------------------------- … … 536 559 // ---------------------------------------------------------- 537 560 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; 547 Pprojectile.transform(toLab); 548 Ptarget.transform(toLab); 549 550 projectile->SetTimeOfCreation(target->GetTimeOfCreation()); 551 projectile->SetPosition(target->GetPosition()); 552 553 projectile->Set4Momentum(Pprojectile); 554 target->Set4Momentum(Ptarget); 555 556 G4bool Result= theElastic->ElasticScattering (projectile,target,theParameters); 557 return Result; 558 } // end of if(G4UniformRand() > Wexcit) 561 if(absProjectilePDGcode < 1000) 562 { // For projectile meson 563 G4double Wexcit=1.-2.256*std::exp(-0.6*ProjectileRapidity); 564 Wexcit=0.; 565 if(G4UniformRand() > Wexcit) 566 { // Make elastic scattering 567 //G4cout<<"Make elastic scattering of new hadrons"<<G4endl; 568 Pprojectile.transform(toLab); 569 Ptarget.transform(toLab); 570 571 projectile->SetTimeOfCreation(target->GetTimeOfCreation()); 572 projectile->SetPosition(target->GetPosition()); 573 574 projectile->Set4Momentum(Pprojectile); 575 target->Set4Momentum(Ptarget); 576 577 G4bool Result= theElastic->ElasticScattering (projectile,target,theParameters); 578 return Result; 579 } // end of if(Make elastic scattering for projectile meson?) 580 } else 581 { // For projectile baryon 582 G4double Wexcit=1.-2.256*std::exp(-0.6*ProjectileRapidity); 583 //Wexcit=0.; 584 if(G4UniformRand() > Wexcit) 585 { // Make elastic scattering 586 //G4cout<<"Make elastic scattering of new hadrons"<<G4endl; 587 Pprojectile.transform(toLab); 588 Ptarget.transform(toLab); 589 590 projectile->SetTimeOfCreation(target->GetTimeOfCreation()); 591 projectile->SetPosition(target->GetPosition()); 592 593 projectile->Set4Momentum(Pprojectile); 594 target->Set4Momentum(Ptarget); 595 596 G4bool Result= theElastic->ElasticScattering (projectile,target,theParameters); 597 return Result; 598 } // end of if(Make elastic scattering for projectile baryon?) 599 } 600 //G4cout<<"Make excitation of new hadrons"<<G4endl; 559 601 } // End of charge exchange part ------------------------------ 560 602 … … 569 611 G4cout<<"Prob ProjDiff TargDiff "<<ProbProjectileDiffraction<<" "<<ProbTargetDiffraction<<" "<<ProbOfDiffraction<<G4endl; 570 612 G4cout<<"Pr Y "<<Pprojectile.rapidity()<<" Tr Y "<<Ptarget.rapidity()<<G4endl; 571 //G4int Uzhi; G4cin>>Uzhi;613 G4int Uzhi; G4cin>>Uzhi; 572 614 */ 573 615 /* -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveSplitableHadron.cc
r1340 r1347 26 26 // 27 27 // $Id: G4DiffractiveSplitableHadron.cc,v 1.9 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFModel.cc
r1340 r1347 25 25 // 26 26 // 27 // $Id: G4FTFModel.cc,v 1.3 6 2010/09/20 15:50:46vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$27 // $Id: G4FTFModel.cc,v 1.37 2010/11/15 10:02:38 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 … … 99 99 { 100 100 theProjectile = aProjectile; 101 //G4cout<<"FTF init Pro "<<theProjectile.GetMass()<<" "<<theProjectile.GetMomentum()<<G4endl; 102 //G4cout<<"FTF init A Z "<<aNucleus.GetA_asInt()<<" "<<aNucleus.GetZ_asInt()<<G4endl; 103 //G4cout<<" "<<aNucleus.GetN()<<" "<<aNucleus.GetZ()<<G4endl; 104 //G4int Uzhi; G4cin>>Uzhi; 101 105 102 106 theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt()); 103 107 //G4cout<<"End nucl init"<<G4endl; 104 108 // ----------- N-mass number Z-charge ------------------------- 105 109 … … 111 115 if( theParameters != 0 ) delete theParameters; 112 116 theParameters = new G4FTFParameters(theProjectile.GetDefinition(), 113 aNucleus.Get N(),aNucleus.GetZ(),117 aNucleus.GetA_asInt(),aNucleus.GetZ_asInt(), 114 118 s); 119 // theParameters = new G4FTFParameters(theProjectile.GetDefinition(), 120 // aNucleus.GetN(),aNucleus.GetZ(), 121 // s); 115 122 116 123 //theParameters->SetProbabilityOfElasticScatt(0.); … … 298 305 G4int ResidualMassNumber=theNucleus->GetMassNumber(); 299 306 G4int ResidualCharge =theNucleus->GetCharge(); 307 300 308 ResidualExcitationEnergy=0.; 301 309 G4LorentzVector PnuclearResidual(0.,0.,0.,0.); … … 340 348 341 349 // ResidualMass +=ResidualExcitationEnergy; // Will be given after checks 342 //G4cout<<"SumMasses End ResidualMass "<<SumMasses<<" "<<ResidualMass<<G4endl;350 //G4cout<<"SumMasses And ResidualMass "<<SumMasses<<" "<<ResidualMass<<G4endl; 343 351 SumMasses += ResidualMass; 344 352 //G4cout<<"SumMasses + ResM "<<SumMasses<<G4endl; … … 548 556 Pprojectile.transform(toLab); // The work with the projectile 549 557 primary->Set4Momentum(Pprojectile); // is finished at the moment. 558 //G4cout<<"Final proj mom "<<primary->Get4Momentum()<<G4endl; 550 559 551 560 //------------------------------------------------------------- … … 578 587 } // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ ) 579 588 589 //G4cout<<"ResidualMassNumber and Mom "<<ResidualMassNumber<<" "<<Residual3Momentum<<G4endl; 580 590 G4double Mt2Residual=sqr(ResidualMass) + 581 591 sqr(Residual3Momentum.x())+sqr(Residual3Momentum.y()); 582 583 G4double PzResidual=-WminusTarget*Residual3Momentum.z()/2. + 592 //========================== 593 //G4cout<<"WminusTarget Residual3Momentum.z() "<<WminusTarget<<" "<<Residual3Momentum.z()<<G4endl; 594 G4double PzResidual=0.; 595 G4double EResidual =0.; 596 if(ResidualMassNumber != 0) 597 { 598 PzResidual=-WminusTarget*Residual3Momentum.z()/2. + 584 599 Mt2Residual/(2.*WminusTarget*Residual3Momentum.z()); 585 G4doubleEResidual = WminusTarget*Residual3Momentum.z()/2. +600 EResidual = WminusTarget*Residual3Momentum.z()/2. + 586 601 Mt2Residual/(2.*WminusTarget*Residual3Momentum.z()); 587 602 } 603 //========================== 588 604 Residual4Momentum.setPx(Residual3Momentum.x()); 589 605 Residual4Momentum.setPy(Residual3Momentum.y()); 590 606 Residual4Momentum.setPz(PzResidual); 591 607 Residual4Momentum.setE(EResidual); 592 608 //G4cout<<"Residual4Momentum "<<Residual4Momentum<<G4endl; 593 609 Residual4Momentum.transform(toLab); 594 610 //------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParameters.cc
r1340 r1347 25 25 // 26 26 // 27 // $Id: G4FTFParameters.cc,v 1.1 4 2010/09/20 15:50:46vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$27 // $Id: G4FTFParameters.cc,v 1.15 2010/11/15 10:02:38 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 … … 42 42 //********************************************************************************************** 43 43 44 //G4FTFParameters::G4FTFParameters(const G4ParticleDefinition * particle, 45 // G4double theA, 46 // G4double theZ, 47 // G4double s) 44 48 G4FTFParameters::G4FTFParameters(const G4ParticleDefinition * particle, 45 G4 doubletheA,46 G4 doubletheZ,49 G4int theA, 50 G4int theZ, 47 51 G4double s) 48 52 { … … 62 66 G4double sqrLogPlab = LogPlab * LogPlab; 63 67 64 G4int NumberOfTargetProtons = (G4int) theZ; 65 G4int NumberOfTargetNeutrons = (G4int) theA- (G4int) theZ; 68 G4int NumberOfTargetProtons = theZ; 69 G4int NumberOfTargetNeutrons = theA-theZ; 70 // G4int NumberOfTargetProtons = (G4int) theZ; 71 // G4int NumberOfTargetNeutrons = (G4int) theA- (G4int) theZ; 66 72 G4int NumberOfTargetNucleons = NumberOfTargetProtons + NumberOfTargetNeutrons; 67 73 68 74 G4double Xtotal, Xelastic; 69 75 70 if( absPDGcode > 1000 ) //------Projectile is baryon --------76 if( PDGcode > 1000 ) //------Projectile is baryon -------- 71 77 { 72 78 G4double XtotPP = 48.0 + 0. *std::pow(Plab, 0. ) + 0.522*sqrLogPlab - 4.51*LogPlab; … … 75 81 G4double XelPP = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab; 76 82 G4double XelPN = 11.9 + 26.9*std::pow(Plab,-1.21) + 0.169*sqrLogPlab - 1.85*LogPlab; 83 84 Xtotal = ( NumberOfTargetProtons * XtotPP + 85 NumberOfTargetNeutrons * XtotPN ) / NumberOfTargetNucleons; 86 Xelastic = ( NumberOfTargetProtons * XelPP + 87 NumberOfTargetNeutrons * XelPN ) / NumberOfTargetNucleons; 88 } 89 else if( PDGcode < -1000 ) //------Projectile is anti_baryon -------- 90 { 91 G4double XtotPP = 38.4 + 77.6*std::pow(Plab,-0.64) + 0.26*sqrLogPlab - 1.2*LogPlab; 92 G4double XtotPN = 0. + 133.6*std::pow(Plab,-0.70) + 1.22*sqrLogPlab +13.7*LogPlab; 93 94 G4double XelPP = 10.2 + 52.7*std::pow(Plab,-1.16) + 0.125*sqrLogPlab - 1.28*LogPlab; 95 G4double XelPN = 36.5 + 0. *std::pow(Plab, 0. ) + 0. *sqrLogPlab -11.9 *LogPlab; 77 96 78 97 Xtotal = ( NumberOfTargetProtons * XtotPP + … … 184 203 // Xtotal and Xelastic in mb 185 204 205 // For Pi- P interactions only! 206 if(std::abs(Plab-1.4) < 0.05) {Xtotal=3.500599e+01; Xelastic= 1.150032e+01;} 207 if(std::abs(Plab-1.5) < 0.05) {Xtotal=3.450591e+01; Xelastic= 1.050038e+01;} 208 if(std::abs(Plab-1.6) < 0.05) {Xtotal=3.430576e+01; Xelastic= 9.800433e+00;} 209 if(std::abs(Plab-1.7) < 0.05) {Xtotal=3.455560e+01; Xelastic= 9.300436e+00;} 210 if(std::abs(Plab-1.8) < 0.05) {Xtotal=3.480545e+01; Xelastic= 8.800438e+00;} 211 if(std::abs(Plab-2.0) < 0.05) {Xtotal=3.570503e+01; Xelastic= 8.200370e+00;} 212 if(std::abs(Plab-2.2) < 0.05) {Xtotal=3.530495e+01; Xelastic= 7.800362e+00;} 213 if(std::abs(Plab-2.5) < 0.05) {Xtotal=3.410484e+01; Xelastic= 7.350320e+00;} 214 if(std::abs(Plab-2.75) < 0.05){Xtotal=3.280479e+01; Xelastic= 7.050273e+00;} 215 if(std::abs(Plab-3.0) < 0.05) {Xtotal=3.180473e+01; Xelastic= 6.800258e+00;} 216 if(std::abs(Plab-4.0) < 0.05) {Xtotal=2.910441e+01; Xelastic= 6.100229e+00;} 217 if(std::abs(Plab-5.0) < 0.05) {Xtotal=2.820372e+01; Xelastic= 5.700275e+00;} 218 if(std::abs(Plab-6.0) < 0.05) {Xtotal=2.760367e+01; Xelastic= 5.400255e+00;} 219 if(std::abs(Plab-7.0) < 0.05) {Xtotal=2.725366e+01; Xelastic= 5.150256e+00;} 220 if(std::abs(Plab-8.0) < 0.05) {Xtotal=2.690365e+01; Xelastic= 4.900258e+00;} 221 if(std::abs(Plab-10.0) < 0.05){Xtotal=2.660342e+01; Xelastic= 4.600237e+00;} 222 if(std::abs(Plab-12.0) < 0.05){Xtotal=2.632341e+01; Xelastic= 4.480229e+00;} 223 if(std::abs(Plab-14.0) < 0.05){Xtotal=2.604340e+01; Xelastic= 4.360221e+00;} 224 if(std::abs(Plab-20.0) < 0.05){Xtotal=2.520337e+01; Xelastic= 4.000197e+00;} 225 if(std::abs(Plab-30.0) < 0.05){Xtotal=2.505334e+01; Xelastic= 3.912679e+00;} 226 // 186 227 //----------- Geometrical parameters ------------------------------------------------ 187 228 SetTotalCrossSection(Xtotal); … … 189 230 SetInelasticCrossSection(Xtotal-Xelastic); 190 231 191 //G4cout<<" Xtotal, Xelastic "<<Xtotal<<" "<<Xelastic<<G4endl;232 //G4cout<<"Plab Xtotal, Xelastic Xinel "<<Plab<<" "<<Xtotal<<" "<<Xelastic<<Xtotal-Xelastic)<<G4endl; 192 233 // // Interactions with elastic and inelastic collisions 193 234 SetProbabilityOfElasticScatt(Xtotal, Xelastic); … … 212 253 213 254 //----------- Parameters of excitations --------------------------------------------- 214 if( absPDGcode > 1000 ) //------Projectile is baryon --------255 if( PDGcode > 1000 ) //------Projectile is baryon -------- 215 256 { 216 257 SetMagQuarkExchange(1.84);//(3.63); 217 258 SetSlopeQuarkExchange(0.7);//(1.2); 218 259 SetDeltaProbAtQuarkExchange(0.); 260 if(NumberOfTargetNucleons > 26) {SetProbOfSameQuarkExchange(1.);} 261 else {SetProbOfSameQuarkExchange(0.);} 262 263 SetProjMinDiffMass(1.16); // GeV 264 SetProjMinNonDiffMass(1.16); // GeV 265 SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab));// 0.5 266 267 SetTarMinDiffMass(1.16); // GeV 268 SetTarMinNonDiffMass(1.16); // GeV 269 SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab));// 0.5 270 271 SetAveragePt2(0.15); // 0.15 GeV^2 272 } 273 if( PDGcode < -1000 ) //------Projectile is anti_baryon -------- 274 { 275 SetMagQuarkExchange(0.); 276 SetSlopeQuarkExchange(0.); 277 SetDeltaProbAtQuarkExchange(0.); 278 SetProbOfSameQuarkExchange(0.); 219 279 220 280 SetProjMinDiffMass(1.16); // GeV 221 281 SetProjMinNonDiffMass(1.16); // GeV 222 223 SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab));// 0.5 282 SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab));// 0.5 224 283 225 284 SetTarMinDiffMass(1.16); // GeV 226 285 SetTarMinNonDiffMass(1.16); // GeV 227 228 SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab));// 0.5 286 SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab));// 0.5 229 287 230 288 SetAveragePt2(0.15); // 0.15 GeV^2 … … 232 290 else if( absPDGcode == 211 || PDGcode == 111) //------Projectile is Pion ----------- 233 291 { 234 SetMagQuarkExchange( 120.); // 210.235 SetSlopeQuarkExchange(2. 0);236 SetDeltaProbAtQuarkExchange(0. 6);292 SetMagQuarkExchange(240.); 293 SetSlopeQuarkExchange(2.); 294 SetDeltaProbAtQuarkExchange(0.56); //(0.35); 237 295 238 296 SetProjMinDiffMass(0.5); // GeV 239 SetProjMinNonDiffMass(0.3); // GeV 240 SetProbabilityOfProjDiff(0.*0.62*std::pow(s/GeV/GeV,-0.51)); // 40/32 X-dif/X-inel 241 242 SetTarMinDiffMass(1.1); // GeV 243 SetTarMinNonDiffMass(1.1); // GeV 244 245 SetProbabilityOfTarDiff(2.*0.62*std::pow(s/GeV/GeV,-0.51)); // 40/32 X-dif/X-inel 297 SetProjMinNonDiffMass(0.5); // GeV 0.3 298 SetProbabilityOfProjDiff(0.);//(0.*0.62*std::pow(s/GeV/GeV,-0.51)); // 40/32 X-dif/X-inel 299 300 SetTarMinDiffMass(1.16); // GeV 301 SetTarMinNonDiffMass(1.16); // GeV 302 // SetProbabilityOfTarDiff(1.);//(2.*0.62*std::pow(s/GeV/GeV,-0.51)); 303 // SetProbabilityOfTarDiff(2.6*std::exp(-0.46*Ylab)); 304 SetProbabilityOfTarDiff(0.8*std::exp(-0.6*(Ylab-3.))); 246 305 247 306 SetAveragePt2(0.3); // GeV^2 … … 295 354 SetMaxNumberOfCollisions(1000.,1.); //(Plab,2.); //3.); ############################## 296 355 297 SetCofNuclearDestruction(0.3); //1.0); // for meson projectile298 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 projectile305 { 306 // Set MaxNumberOfCollisions(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 356 // SetCofNuclearDestruction(0.); //1.0); // for meson projectile 357 // SetCofNuclearDestruction(1.*std::exp(4.*(Ylab-2.1))/(1.+std::exp(4.*(Ylab-2.1)))); 358 //G4cout<<Ylab<<" "<<0.62*std::exp(4.*(Ylab-4.5))/(1.+std::exp(4.*(Ylab-4.5)))<<G4endl; 359 //G4int Uzhi; G4cin>>Uzhi; 360 361 // SetMaxNumberOfCollisions(Plab,2.); //4.); // ############################## 362 363 SetCofNuclearDestruction(1.*std::exp(4.*(Ylab-2.1))/(1.+std::exp(4.*(Ylab-2.1)))); //0.62 1.0 364 //------------------------------------------ 365 // SetDofNuclearDestruction(0.4); 366 // SetPt2ofNuclearDestruction(0.17*GeV*GeV); 367 // SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV); 368 369 // SetExcitationEnergyPerWoundedNucleon(100*MeV); 311 370 SetDofNuclearDestruction(0.4); 312 371 SetPt2ofNuclearDestruction((0.035+ … … 315 374 316 375 SetExcitationEnergyPerWoundedNucleon(75.*MeV); 376 } else // for baryon projectile 377 { 378 SetMaxNumberOfCollisions(Plab,2.); //4.); // ############################## 379 380 SetCofNuclearDestruction(1.*std::exp(4.*(Ylab-2.1))/(1.+std::exp(4.*(Ylab-2.1)))); //0.62 1.0 381 //G4cout<<Ylab<<" "<<0.62*std::exp(4.*(Ylab-2.1))/(1.+std::exp(4.*(Ylab-2.1)))<<G4endl; 382 //G4int Uzhi; G4cin>>Uzhi; 383 384 SetDofNuclearDestruction(0.4); 385 SetPt2ofNuclearDestruction((0.035+ 386 0.04*std::exp(4.*(Ylab-2.5))/(1.+std::exp(4.*(Ylab-2.5))))*GeV*GeV); //0.09 387 SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV); 388 389 SetExcitationEnergyPerWoundedNucleon(75.*MeV); 317 390 } 318 391 … … 322 395 //SetPt2ofNuclearDestruction((0.035+0.1*std::exp(4.*(Ylab-3.))/(1.+std::exp(4.*(Ylab-3.))))*GeV*GeV); 323 396 397 //SetMagQuarkExchange(120.); // 210. PipP 398 //SetSlopeQuarkExchange(2.0); 399 //SetDeltaProbAtQuarkExchange(0.6); 400 //SetProjMinDiffMass(0.7); // GeV 1.1 401 //SetProjMinNonDiffMass(0.7); // GeV 402 //SetProbabilityOfProjDiff(0.85*std::pow(s/GeV/GeV,-0.5)); // 40/32 X-dif/X-inel 403 //SetTarMinDiffMass(1.1); // GeV 404 //SetTarMinNonDiffMass(1.1); // GeV 405 //SetProbabilityOfTarDiff(0.85*std::pow(s/GeV/GeV,-0.5)); // 40/32 X-dif/X-inel 406 // 407 //SetAveragePt2(0.3); // GeV^2 408 //------------------------------------ 324 409 //SetProbabilityOfElasticScatt(1.,1.); //(Xtotal, Xelastic); 325 410 //SetProbabilityOfProjDiff(1.*0.62*std::pow(s/GeV/GeV,-0.51)); // 0->1 … … 328 413 //SetAvaragePt2ofElasticScattering(0.); 329 414 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); 415 //SetMaxNumberOfCollisions(4.*(Plab+0.01),Plab); //6.); // ############################## 416 //SetCofNuclearDestruction(0.2); //(0.4); 417 //SetExcitationEnergyPerWoundedNucleon(0.*MeV); //(75.*MeV); 418 //SetDofNuclearDestruction(0.4); //(0.4); 419 //SetPt2ofNuclearDestruction(0.1*GeV*GeV); //(0.168*GeV*GeV); 334 420 335 421 } -
trunk/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParticipants.cc
r1340 r1347 26 26 // 27 27 // $Id: G4FTFParticipants.cc,v 1.17 2010/09/20 15:50:46 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3-ref-09$28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 // ------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.