#include <G4LundStringFragmentation.hh>
Inheritance diagram for G4LundStringFragmentation:
Public Member Functions | |
G4LundStringFragmentation () | |
virtual | ~G4LundStringFragmentation () |
virtual G4KineticTrackVector * | FragmentString (const G4ExcitedString &theString) |
Definition at line 42 of file G4LundStringFragmentation.hh.
G4LundStringFragmentation::G4LundStringFragmentation | ( | ) |
Definition at line 46 of file G4LundStringFragmentation.cc.
References G4VLongitudinalStringDecay::pspin_barion, G4VLongitudinalStringDecay::pspin_meson, G4VLongitudinalStringDecay::scalarMesonMix, G4VLongitudinalStringDecay::SetDiquarkBreakProbability(), G4VLongitudinalStringDecay::SetDiquarkSuppression(), G4VLongitudinalStringDecay::SetStrangenessSuppression(), G4VLongitudinalStringDecay::SetStringTensionParameter(), G4VLongitudinalStringDecay::SmoothParam, G4VLongitudinalStringDecay::StrangeSuppress, and G4VLongitudinalStringDecay::vectorMesonMix.
00047 { 00048 // ------ For estimation of a minimal string mass --------------- 00049 Mass_of_light_quark =140.*MeV; 00050 Mass_of_heavy_quark =500.*MeV; 00051 Mass_of_string_junction=720.*MeV; 00052 // ------ An estimated minimal string mass ---------------------- 00053 MinimalStringMass = 0.; 00054 MinimalStringMass2 = 0.; 00055 // ------ Minimal invariant mass used at a string fragmentation - 00056 WminLUND = 0.45*GeV; //0.23*GeV; // Uzhi 0.7 -> 0.23 3.8.10 //0.8 1.5 00057 // ------ Smooth parameter used at a string fragmentation for --- 00058 // ------ smearinr sharp mass cut-off --------------------------- 00059 SmoothParam = 0.2; 00060 00061 // SetStringTensionParameter(0.25); 00062 SetStringTensionParameter(1.); 00063 SetDiquarkSuppression(0.087); // Uzhi 18.05.2012 00064 SetDiquarkBreakProbability(0.05); 00065 SetStrangenessSuppression(0.47); // Uzhi 18.05.2012 00066 00067 // For treating of small string decays 00068 for(G4int i=0; i<3; i++) 00069 { for(G4int j=0; j<3; j++) 00070 { for(G4int k=0; k<6; k++) 00071 { Meson[i][j][k]=0; MesonWeight[i][j][k]=0.; 00072 } 00073 } 00074 } 00075 //-------------------------- 00076 Meson[0][0][0]=111; // dbar-d Pi0 00077 MesonWeight[0][0][0]=(1.-pspin_meson)*(1.-scalarMesonMix[0]); 00078 00079 Meson[0][0][1]=221; // dbar-d Eta 00080 MesonWeight[0][0][1]=(1.-pspin_meson)*(scalarMesonMix[0]-scalarMesonMix[1]); 00081 00082 Meson[0][0][2]=331; // dbar-d EtaPrime 00083 MesonWeight[0][0][2]=(1.-pspin_meson)*(scalarMesonMix[1]); 00084 00085 Meson[0][0][3]=113; // dbar-d Rho0 00086 MesonWeight[0][0][3]=pspin_meson*(1.-vectorMesonMix[0]); 00087 00088 Meson[0][0][4]=223; // dbar-d Omega 00089 MesonWeight[0][0][4]=pspin_meson*(vectorMesonMix[0]); 00090 //-------------------------- 00091 00092 Meson[0][1][0]=211; // dbar-u Pi+ 00093 MesonWeight[0][1][0]=(1.-pspin_meson); 00094 00095 Meson[0][1][1]=213; // dbar-u Rho+ 00096 MesonWeight[0][1][1]=pspin_meson; 00097 //-------------------------- 00098 00099 Meson[0][2][0]=311; // dbar-s K0bar 00100 MesonWeight[0][2][0]=(1.-pspin_meson); 00101 00102 Meson[0][2][1]=313; // dbar-s K*0bar 00103 MesonWeight[0][2][1]=pspin_meson; 00104 //-------------------------- 00105 //-------------------------- 00106 Meson[1][0][0]=211; // ubar-d Pi- 00107 MesonWeight[1][0][0]=(1.-pspin_meson); 00108 00109 Meson[1][0][1]=213; // ubar-d Rho- 00110 MesonWeight[1][0][1]=pspin_meson; 00111 //-------------------------- 00112 00113 Meson[1][1][0]=111; // ubar-u Pi0 00114 MesonWeight[1][1][0]=(1.-pspin_meson)*(1.-scalarMesonMix[0]); 00115 00116 Meson[1][1][1]=221; // ubar-u Eta 00117 MesonWeight[1][1][1]=(1.-pspin_meson)*(scalarMesonMix[0]-scalarMesonMix[1]); 00118 00119 Meson[1][1][2]=331; // ubar-u EtaPrime 00120 MesonWeight[1][1][2]=(1.-pspin_meson)*(scalarMesonMix[1]); 00121 00122 Meson[1][1][3]=113; // ubar-u Rho0 00123 MesonWeight[1][1][3]=pspin_meson*(1.-vectorMesonMix[0]); 00124 00125 Meson[1][1][4]=223; // ubar-u Omega 00126 MesonWeight[1][1][4]=pspin_meson*(scalarMesonMix[0]); 00127 //-------------------------- 00128 00129 Meson[1][2][0]=321; // ubar-s K- 00130 MesonWeight[1][2][0]=(1.-pspin_meson); 00131 00132 Meson[1][2][1]=323; // ubar-s K*-bar - 00133 MesonWeight[1][2][1]=pspin_meson; 00134 //-------------------------- 00135 //-------------------------- 00136 00137 Meson[2][0][0]=311; // sbar-d K0 00138 MesonWeight[2][0][0]=(1.-pspin_meson); 00139 00140 Meson[2][0][1]=313; // sbar-d K*0 00141 MesonWeight[2][0][1]=pspin_meson; 00142 //-------------------------- 00143 00144 Meson[2][1][0]=321; // sbar-u K+ 00145 MesonWeight[2][1][0]=(1.-pspin_meson); 00146 00147 Meson[2][1][1]=323; // sbar-u K*+ 00148 MesonWeight[2][1][1]=pspin_meson; 00149 //-------------------------- 00150 00151 Meson[2][2][0]=221; // sbar-s Eta 00152 MesonWeight[2][2][0]=(1.-pspin_meson)*(1.-scalarMesonMix[5]); 00153 00154 Meson[2][2][1]=331; // sbar-s EtaPrime 00155 MesonWeight[2][2][1]=(1.-pspin_meson)*(1.-scalarMesonMix[5]); 00156 00157 Meson[2][2][3]=333; // sbar-s EtaPrime 00158 MesonWeight[2][2][3]=pspin_meson*(vectorMesonMix[5]); 00159 //-------------------------- 00160 00161 for(G4int i=0; i<3; i++) 00162 { for(G4int j=0; j<3; j++) 00163 { for(G4int k=0; k<3; k++) 00164 { for(G4int l=0; l<4; l++) 00165 { Baryon[i][j][k][l]=0; BaryonWeight[i][j][k][l]=0.;} 00166 } 00167 } 00168 } 00169 00170 G4double pspin_barion_in=pspin_barion; 00171 //pspin_barion=0.75; 00172 //--------------------------------------- 00173 Baryon[0][0][0][0]=1114; // Delta- 00174 BaryonWeight[0][0][0][0]=1.; 00175 00176 //--------------------------------------- 00177 Baryon[0][0][1][0]=2112; // neutron 00178 BaryonWeight[0][0][1][0]=1.-pspin_barion; 00179 00180 Baryon[0][0][1][1]=2114; // Delta0 00181 BaryonWeight[0][0][1][1]=pspin_barion; 00182 00183 //--------------------------------------- 00184 Baryon[0][0][2][0]=3112; // Sigma- 00185 BaryonWeight[0][0][2][0]=1.-pspin_barion; 00186 00187 Baryon[0][0][2][1]=3114; // Sigma*- 00188 BaryonWeight[0][0][2][1]=pspin_barion; 00189 00190 //--------------------------------------- 00191 Baryon[0][1][0][0]=2112; // neutron 00192 BaryonWeight[0][1][0][0]=1.-pspin_barion; 00193 00194 Baryon[0][1][0][1]=2114; // Delta0 00195 BaryonWeight[0][1][0][1]=pspin_barion; 00196 00197 //--------------------------------------- 00198 Baryon[0][1][1][0]=2212; // proton 00199 BaryonWeight[0][1][1][0]=1.-pspin_barion; 00200 00201 Baryon[0][1][1][1]=2214; // Delta+ 00202 BaryonWeight[0][1][1][1]=pspin_barion; 00203 00204 //--------------------------------------- 00205 Baryon[0][1][2][0]=3122; // Lambda 00206 BaryonWeight[0][1][2][0]=(1.-pspin_barion)*0.5; 00207 00208 Baryon[0][1][2][1]=3212; // Sigma0 00209 BaryonWeight[0][1][2][2]=(1.-pspin_barion)*0.5; 00210 00211 Baryon[0][1][2][2]=3214; // Sigma*0 00212 BaryonWeight[0][1][2][2]=pspin_barion; 00213 00214 //--------------------------------------- 00215 Baryon[0][2][0][0]=3112; // Sigma- 00216 BaryonWeight[0][2][0][0]=1.-pspin_barion; 00217 00218 Baryon[0][2][0][1]=3114; // Sigma*- 00219 BaryonWeight[0][2][0][1]=pspin_barion; 00220 00221 //--------------------------------------- 00222 Baryon[0][2][1][0]=3122; // Lambda 00223 BaryonWeight[0][2][1][0]=(1.-pspin_barion)*0.5; 00224 00225 Baryon[0][2][1][1]=3212; // Sigma0 00226 BaryonWeight[0][2][1][1]=(1.-pspin_barion)*0.5; 00227 00228 Baryon[0][2][1][2]=3214; // Sigma*0 00229 BaryonWeight[0][2][1][2]=pspin_barion; 00230 00231 //--------------------------------------- 00232 Baryon[0][2][2][0]=3312; // Theta- 00233 BaryonWeight[0][2][2][0]=1.-pspin_barion; 00234 00235 Baryon[0][2][2][1]=3314; // Theta*- 00236 BaryonWeight[0][2][2][1]=pspin_barion; 00237 00238 //--------------------------------------- 00239 //--------------------------------------- 00240 Baryon[1][0][0][0]=2112; // neutron 00241 BaryonWeight[1][0][0][0]=1.-pspin_barion; 00242 00243 Baryon[1][0][0][1]=2114; // Delta0 00244 BaryonWeight[1][0][0][1]=pspin_barion; 00245 00246 //--------------------------------------- 00247 Baryon[1][0][1][0]=2212; // proton 00248 BaryonWeight[1][0][1][0]=1.-pspin_barion; 00249 00250 Baryon[1][0][1][1]=2214; // Delta+ 00251 BaryonWeight[1][0][1][1]=pspin_barion; 00252 00253 //--------------------------------------- 00254 Baryon[1][0][2][0]=3122; // Lambda 00255 BaryonWeight[1][0][2][0]=(1.-pspin_barion)*0.5; 00256 00257 Baryon[1][0][2][1]=3212; // Sigma0 00258 BaryonWeight[1][0][2][1]=(1.-pspin_barion)*0.5; 00259 00260 Baryon[1][0][2][2]=3214; // Sigma*0 00261 BaryonWeight[1][0][2][2]=pspin_barion; 00262 00263 //--------------------------------------- 00264 Baryon[1][1][0][0]=2212; // proton 00265 BaryonWeight[1][1][0][0]=1.-pspin_barion; 00266 00267 Baryon[1][1][0][1]=2214; // Delta+ 00268 BaryonWeight[1][1][0][1]=pspin_barion; 00269 00270 //--------------------------------------- 00271 Baryon[1][1][1][0]=2224; // Delta++ 00272 BaryonWeight[1][1][1][0]=1.; 00273 00274 //--------------------------------------- 00275 Baryon[1][1][2][0]=3222; // Sigma+ 00276 BaryonWeight[1][1][2][0]=1.-pspin_barion; 00277 00278 Baryon[1][1][2][1]=3224; // Sigma*+ 00279 BaryonWeight[1][1][2][1]=pspin_barion; 00280 00281 //--------------------------------------- 00282 Baryon[1][2][0][0]=3122; // Lambda 00283 BaryonWeight[1][2][0][0]=(1.-pspin_barion)*0.5; 00284 00285 Baryon[1][2][0][1]=3212; // Sigma0 00286 BaryonWeight[1][2][0][1]=(1.-pspin_barion)*0.5; 00287 00288 Baryon[1][2][0][2]=3214; // Sigma*0 00289 BaryonWeight[1][2][0][2]=pspin_barion; 00290 00291 //--------------------------------------- 00292 Baryon[1][2][1][0]=3222; // Sigma+ 00293 BaryonWeight[1][2][1][0]=1.-pspin_barion; 00294 00295 Baryon[1][2][1][1]=3224; // Sigma*+ 00296 BaryonWeight[1][2][1][1]=pspin_barion; 00297 00298 //--------------------------------------- 00299 Baryon[1][2][2][0]=3322; // Theta0 00300 BaryonWeight[1][2][2][0]=1.-pspin_barion; 00301 00302 Baryon[1][2][2][1]=3324; // Theta*0 00303 BaryonWeight[1][2][2][1]=pspin_barion; 00304 00305 //--------------------------------------- 00306 //--------------------------------------- 00307 Baryon[2][0][0][0]=3112; // Sigma- 00308 BaryonWeight[2][0][0][0]=1.-pspin_barion; 00309 00310 Baryon[2][0][0][1]=3114; // Sigma*- 00311 BaryonWeight[2][0][0][1]=pspin_barion; 00312 00313 //--------------------------------------- 00314 Baryon[2][0][1][0]=3122; // Lambda 00315 BaryonWeight[2][0][1][0]=(1.-pspin_barion)*0.5; 00316 00317 Baryon[2][0][1][1]=3212; // Sigma0 00318 BaryonWeight[2][0][1][1]=(1.-pspin_barion)*0.5; 00319 00320 Baryon[2][0][1][2]=3214; // Sigma*0 00321 BaryonWeight[2][0][1][2]=pspin_barion; 00322 00323 //--------------------------------------- 00324 Baryon[2][0][2][0]=3312; // Sigma- 00325 BaryonWeight[2][0][2][0]=1.-pspin_barion; 00326 00327 Baryon[2][0][2][1]=3314; // Sigma*- 00328 BaryonWeight[2][0][2][1]=pspin_barion; 00329 00330 //--------------------------------------- 00331 Baryon[2][1][0][0]=3122; // Lambda 00332 BaryonWeight[2][1][0][0]=(1.-pspin_barion)*0.5; 00333 00334 Baryon[2][1][0][1]=3212; // Sigma0 00335 BaryonWeight[2][1][0][1]=(1.-pspin_barion)*0.5; 00336 00337 Baryon[2][1][0][2]=3214; // Sigma*0 00338 BaryonWeight[2][1][0][2]=pspin_barion; 00339 00340 //--------------------------------------- 00341 Baryon[2][1][1][0]=3222; // Sigma+ 00342 BaryonWeight[2][1][1][0]=1.-pspin_barion; 00343 00344 Baryon[2][1][1][1]=3224; // Sigma*+ 00345 BaryonWeight[2][1][1][1]=pspin_barion; 00346 00347 //--------------------------------------- 00348 Baryon[2][1][2][0]=3322; // Theta0 00349 BaryonWeight[2][1][2][0]=1.-pspin_barion; 00350 00351 Baryon[2][1][2][1]=3324; // Theta*0 00352 BaryonWeight[2][1][2][2]=pspin_barion; 00353 00354 //--------------------------------------- 00355 Baryon[2][2][0][0]=3312; // Theta- 00356 BaryonWeight[2][2][0][0]=1.-pspin_barion; 00357 00358 Baryon[2][2][0][1]=3314; // Theta*- 00359 BaryonWeight[2][2][0][1]=pspin_barion; 00360 00361 //--------------------------------------- 00362 Baryon[2][2][1][0]=3322; // Theta0 00363 BaryonWeight[2][2][1][0]=1.-pspin_barion; 00364 00365 Baryon[2][2][1][1]=3324; // Theta*0 00366 BaryonWeight[2][2][1][1]=pspin_barion; 00367 00368 //--------------------------------------- 00369 Baryon[2][2][2][0]=3334; // Omega 00370 BaryonWeight[2][2][2][0]=1.; 00371 00372 //--------------------------------------- 00373 pspin_barion=pspin_barion_in; 00374 /* 00375 for(G4int i=0; i<3; i++) 00376 { for(G4int j=0; j<3; j++) 00377 { for(G4int k=0; k<3; k++) 00378 { for(G4int l=0; l<4; l++) 00379 { G4cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<Baryon[i][j][k][l]<<G4endl;} 00380 } 00381 } 00382 } 00383 G4int Uzhi; 00384 G4cin>>Uzhi; 00385 */ 00386 //StrangeSuppress=0.38; 00387 Prob_QQbar[0]=StrangeSuppress; // Probability of ddbar production 00388 Prob_QQbar[1]=StrangeSuppress; // Probability of uubar production 00389 Prob_QQbar[2]=StrangeSuppress/(2.+StrangeSuppress);//(1.-2.*StrangeSuppress); // Probability of ssbar production 00390 00391 //A.R. 25-Jul-2012 : Coverity fix. 00392 for ( G4int i=0 ; i<35 ; i++ ) { 00393 FS_LeftHadron[i] = 0; 00394 FS_RightHadron[i] = 0; 00395 FS_Weight[i] = 0.0; 00396 } 00397 NumberOf_FS = 0; 00398 00399 }
G4LundStringFragmentation::~G4LundStringFragmentation | ( | ) | [virtual] |
G4KineticTrackVector * G4LundStringFragmentation::FragmentString | ( | const G4ExcitedString & | theString | ) | [virtual] |
Implements G4VLongitudinalStringDecay.
Definition at line 492 of file G4LundStringFragmentation.cc.
References C1, G4VLongitudinalStringDecay::CalculateHadronTimePosition(), G4VLongitudinalStringDecay::CPExcited(), G4ExcitedString::Get4Momentum(), G4ExcitedString::GetPosition(), G4ExcitedString::GetTimeOfCreation(), G4VLongitudinalStringDecay::LightFragmentationTest(), G4VLongitudinalStringDecay::PastInitPhase, G4VLongitudinalStringDecay::SetMassCut(), and G4ExcitedString::TransformToAlignedCms().
00494 { 00495 // Can no longer modify Parameters for Fragmentation. 00496 PastInitPhase=true; 00497 00498 SetMassCut(160.*MeV); // For LightFragmentationTest it is required 00499 // that no one pi-meson can be produced. 00500 00501 G4FragmentingString aString(theString); 00502 SetMinimalStringMass(&aString); 00503 00504 G4KineticTrackVector * LeftVector(0); 00505 00506 if(!IsFragmentable(&aString)) // produce 1 hadron 00507 { 00508 //G4cout<<"Non fragmentable"<<G4endl; 00509 SetMassCut(1000.*MeV); 00510 LeftVector=LightFragmentationTest(&theString); 00511 SetMassCut(160.*MeV); 00512 } // end of if(!IsFragmentable(&aString)) 00513 00514 if ( LeftVector != 0 ) { 00515 // Uzhi insert 6.05.08 start 00516 LeftVector->operator[](0)->SetFormationTime(theString.GetTimeOfCreation()); 00517 LeftVector->operator[](0)->SetPosition(theString.GetPosition()); 00518 if(LeftVector->size() > 1) 00519 { 00520 // 2 hadrons created from qq-qqbar are stored 00521 LeftVector->operator[](1)->SetFormationTime(theString.GetTimeOfCreation()); 00522 LeftVector->operator[](1)->SetPosition(theString.GetPosition()); 00523 } 00524 return LeftVector; 00525 } 00526 00527 // The string can fragment. At least two particles can be produced. 00528 LeftVector =new G4KineticTrackVector; 00529 G4KineticTrackVector * RightVector=new G4KineticTrackVector; 00530 00531 G4ExcitedString *theStringInCMS=CPExcited(theString); 00532 G4LorentzRotation toCms=theStringInCMS->TransformToAlignedCms(); 00533 00534 G4bool success = Loop_toFragmentString(theStringInCMS, LeftVector, RightVector); 00535 00536 delete theStringInCMS; 00537 00538 if ( ! success ) 00539 { 00540 std::for_each(LeftVector->begin(), LeftVector->end(), DeleteKineticTrack()); 00541 LeftVector->clear(); 00542 std::for_each(RightVector->begin(), RightVector->end(), DeleteKineticTrack()); 00543 delete RightVector; 00544 return LeftVector; 00545 } 00546 00547 // Join Left- and RightVector into LeftVector in correct order. 00548 while(!RightVector->empty()) 00549 { 00550 LeftVector->push_back(RightVector->back()); 00551 RightVector->erase(RightVector->end()-1); 00552 } 00553 delete RightVector; 00554 00555 CalculateHadronTimePosition(theString.Get4Momentum().mag(), LeftVector); 00556 00557 G4LorentzRotation toObserverFrame(toCms.inverse()); 00558 00559 G4double TimeOftheStringCreation=theString.GetTimeOfCreation(); 00560 G4ThreeVector PositionOftheStringCreation(theString.GetPosition()); 00561 00562 //G4cout<<"# prod hadrons "<<LeftVector->size()<<G4endl; 00563 for(size_t C1 = 0; C1 < LeftVector->size(); C1++) 00564 { 00565 G4KineticTrack* Hadron = LeftVector->operator[](C1); 00566 G4LorentzVector Momentum = Hadron->Get4Momentum(); 00567 //G4cout<<"Hadron "<<Hadron->GetDefinition()->GetParticleName()<<" "<<Momentum<<G4endl; 00568 Momentum = toObserverFrame*Momentum; 00569 Hadron->Set4Momentum(Momentum); 00570 00571 G4LorentzVector Coordinate(Hadron->GetPosition(), Hadron->GetFormationTime()); 00572 Momentum = toObserverFrame*Coordinate; 00573 Hadron->SetFormationTime(TimeOftheStringCreation + Momentum.e() - fermi/c_light); 00574 G4ThreeVector aPosition(Momentum.vect()); 00575 Hadron->SetPosition(PositionOftheStringCreation+aPosition); 00576 }; 00577 00578 return LeftVector; 00579 }