- Timestamp:
- Sep 30, 2010, 2:47:17 PM (14 years ago)
- Location:
- trunk/source/processes/hadronic/models/parton_string/hadronization
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/parton_string/hadronization/History
r1196 r1337 1 $Id: History,v 1.10 2009/07/17 12:30:45 vuzhinskExp $1 $Id: History,v 1.13 2010/06/22 07:29:35 gcosmo Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 15 15 * Please list in reverse chronological order (last date on top) 16 16 --------------------------------------------------------------- 17 17-July-2009 V. Uzhinsky (had-hadronization-V09-02-03) 18 Some small optimization are done. 19 --------------------------------------------------------------------- 17 18 21-June-2010 V. Uzhinsky (had-hadronization-V09-03-00) 19 -------------------------------------------------------------- 20 - Lund string fragmentation is improved. The inselfconsistency 21 between LightFragmentationTest and Lund fragmentation is erased. 22 Energy conservation in FTF is recovered. 23 24 6-December-2010 V. Uzhinsky, (had-hadronization-V09-02-04) 25 -------------------------------------------------------------- 26 - Lund string fragm. improved, start fragmentation. 27 28 17-July-2009 V. Uzhinsky (had-hadronization-V09-02-03) 29 -------------------------------------------------------------- 30 - Some small optimization are done. 31 20 32 9-July-2009 V. Uzhinsky (had-hadronization-V09-02-02) 21 -------------------------------------------------------------- -------33 -------------------------------------------------------------- 22 34 - Bug was fixed in G4VLongitudinalStringDecay.cc at calculation of 23 35 formation/creation time, c_light was inserted. … … 25 37 G4LundStringFragmentation.cc 26 38 39 22-May-2009 Gunter Folger (had-hadronization-V09-02-01) 27 40 -------------------------------------------------------------- 28 22-May-2009 Gunter Folger (had-hadronization-V09-02-01)29 41 - remove temporary workaround - fix is now in QGS 30 42 - change pt sampling in G4LundStringFragmentation to avoid near endless … … 34 46 to SampleQuarkPt() 35 47 36 37 48 18-May-2009 Gunter Folger (had-hadronization-V09-02-00) 38 49 --------------------------------------------------------------------- 39 50 - reset formatting changes by MK with tags hadr-prtn-hadr-V09-02-xx 40 51 - temporary workaround for wrong PDG codes created on wrong input from QGS 41 52 when used for e.g. antiproton. 42 53 43 54 2-May 2007 Gunter Folger (had-hadronization-V08-02-03) 44 55 --------------------------------------------------------------------- 45 - G4ExcitedStringDecay.hh: protect againt divide by 0 when KTsum1.e() 46 is 0. 56 - G4ExcitedStringDecay.hh: protect againt divide by 0 when KTsum1.e() is 0. 47 57 48 58 24-April 2007 Gunter Folger (had-hadronization-V08-02-02) 49 59 --------------------------------------------------------------------- 50 - Seperate FTF and QGS fragmentation dir methods where V.Uzhinsky 51 modified the algorithm for FTF. 52 60 - Seperate FTF and QGS fragmentation dir methods where V.Uzhinsky 61 modified the algorithm for FTF. 53 62 54 2-March 2007 G .Folger(had-hadronization-V08-02-01)63 2-March 2007 Gunter Folger (had-hadronization-V08-02-01) 55 64 --------------------------------------------------------------------- 56 65 - G4ExcitedStringDecay::EnergyAndMomentumCorrector no longer causes Exception 57 66 when no converging. Add more info when failing. Return correct status. 58 67 68 24-Jan 2007 Gunter Folger (had-hadronization-V08-02-00) 69 -------------------------------------------------------------- 70 - G4ExcitedStringDecay::EnergyAndMomentumCorrector : 71 Correct bug which did stop correction even if not yet converged; 72 check on convergence must check that scale-1 is close to 0, 73 and not less than 0 59 74 60 24-Jan 2007 GF: tag had-hadronization-V08-02-00 61 G4ExcitedStringDecay::EnergyAndMomentumCorrector : 62 Correct bug which did stop correction even if not yet converged; 63 check on convergence must check that scale-1 is close to 0, 64 and not less than 0 65 26-May 2006 GF: Fix ( finally?) the charge check in G4HadronBuilder.cc 66 75 26-May 2006 Gunter Folger 76 -------------------------------------------------------------- 77 - Fix ( finally?) the charge check in G4HadronBuilder.cc -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh
r1228 r1337 25 25 // 26 26 // 27 // $Id: G4ExcitedStringDecay.hh,v 1.1 0 2009/10/05 12:52:48 vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 3$27 // $Id: G4ExcitedStringDecay.hh,v 1.12 2010/06/21 17:50:48 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 #ifndef G4ExcitedStringDecay_h … … 72 72 } 73 73 74 74 75 inline 75 76 G4KineticTrackVector *G4ExcitedStringDecay:: … … 78 79 G4KineticTrackVector * theResult = new G4KineticTrackVector; 79 80 80 G4LorentzVector KTsum ;81 G4LorentzVector KTsecondaries ;81 G4LorentzVector KTsum(0.,0.,0.,0.); 82 G4LorentzVector KTsecondaries(0.,0.,0.,0.); 82 83 G4bool NeedEnergyCorrector=false; 83 //G4cout<<"Number of strings "<<theStrings->size()<<G4endl; // Vova 84 84 85 for ( unsigned int astring=0; astring < theStrings->size(); astring++) 85 86 { 86 //G4cout<<"String# "<<astring<<" 4mom "<<theStrings->operator[](astring)->Get4Momentum()<<G4endl; // Vova87 87 KTsum+= theStrings->operator[](astring)->Get4Momentum(); 88 //G4cout<<"KTsum "<<KTsum<<G4endl; 88 89 89 if( !(KTsum.e()<1) && !(KTsum.e()>-1) ) 90 90 { … … 108 108 } 109 109 110 //G4cout<<" prod had "<<generatedKineticTracks->size()<<G4endl; // Vova 111 G4LorentzVector KTsum1; 110 G4LorentzVector KTsum1(0.,0.,0.,0.); 112 111 for ( unsigned int aTrack=0; aTrack<generatedKineticTracks->size();aTrack++) 113 112 { … … 115 114 KTsum1+= (*generatedKineticTracks)[aTrack]->Get4Momentum(); 116 115 } 117 118 116 KTsecondaries+=KTsum1; 119 117 … … 124 122 NeedEnergyCorrector=true; 125 123 } 124 126 125 // clean up 127 126 delete generatedKineticTracks; -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh
r1228 r1337 26 26 // 27 27 // $Id: G4FragmentingString.hh,v 1.4 2007/12/20 15:38:06 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4HadronBuilder.hh
r1228 r1337 26 26 // 27 27 // $Id: G4HadronBuilder.hh,v 1.5 2009/05/18 09:43:40 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4LundStringFragmentation.hh
r1228 r1337 26 26 // 27 27 // $Id: G4LundStringFragmentation.hh,v 1.6 2008/04/25 14:20:14 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$ Maxim Komogorov28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ Maxim Komogorov 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4QGSMFragmentation.hh
r1228 r1337 26 26 // 27 27 // $Id: G4QGSMFragmentation.hh,v 1.5 2007/12/20 15:38:07 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4VKinkyStringDecay.hh
r1228 r1337 26 26 // 27 27 // $Id: G4VKinkyStringDecay.hh,v 1.3 2006/06/29 20:54:53 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // Maxim Komogorov 30 30 // -
trunk/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh
r1228 r1337 26 26 // 27 27 // $Id: G4VLongitudinalStringDecay.hh,v 1.7 2009/05/22 16:35:47 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // Maxim Komogorov 30 30 // -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4ExcitedStringDecay.cc
r1196 r1337 76 76 throw G4HadronicException(__FILE__, __LINE__, "G4ExcitedStringDecay received nan mass..."); 77 77 } 78 78 79 // Calculate sum hadron 4-momenta and summing hadron mass 79 80 unsigned int cHadron; … … 91 92 } 92 93 } 94 93 95 // Cannot correct a single particle 94 96 if (Output->size() < 2) return FALSE; 95 97 96 98 if (SumMass > TotalCollisionMass) return FALSE; 97 99 SumMass = SumMom.m2(); … … 148 150 Beta = TotalCollisionMom.boostVector(); 149 151 Output->Boost(Beta); 150 /* // Uzhi 151 G4cout<<"Number of produced hadrons // correct E and P "<<Output->size()<<G4endl; // Uzhi 152 for(cHadron = 0; cHadron < Output->size(); cHadron++) 153 { 154 G4cout<<cHadron<<" "<<Output->operator[](cHadron)->Get4Momentum()<<" "<<Output->operator[](cHadron)->Get4Momentum().mag()<<Output->operator[](cHadron)->GetDefinition()->GetParticleName()<<G4endl; 155 } 156 */ // Uzhi 152 157 153 return success; 158 154 } -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4FragmentingString.cc
r962 r1337 80 80 if ( old.decaying == Left ) 81 81 { 82 //G4cout<<" Left "<<G4endl;83 //G4cout<<"Pt right "<<Ptright<<G4endl;84 //G4cout<<"Pt left "<<Ptleft <<G4endl;85 82 RightParton= old.RightParton; 86 83 Ptright = old.Ptright; … … 88 85 Ptleft = old.Ptleft - momentum->vect(); 89 86 Ptleft.setZ(0.); 90 //G4cout<<"Pt right "<<Ptright<<G4endl;91 //G4cout<<"Pt left "<<Ptleft <<G4endl;92 87 } else if ( old.decaying == Right ) 93 88 { 94 //G4cout<<" Right "<<G4endl;95 //G4cout<<"Pt right "<<Ptright<<G4endl;96 //G4cout<<"Pt left "<<Ptleft <<G4endl;97 89 RightParton = newdecay; 98 90 Ptright = old.Ptright - momentum->vect(); … … 100 92 LeftParton = old.LeftParton; 101 93 Ptleft = old.Ptleft; 102 //G4cout<<"Pt right "<<Ptright<<G4endl;103 //G4cout<<"Pt left "<<Ptleft <<G4endl;104 94 } else 105 95 { … … 116 106 //--------------------------------------------------------------------------------- 117 107 118 G4FragmentingString::G4FragmentingString(const G4FragmentingString &old, // Uzhi119 G4ParticleDefinition * newdecay) // Uzhi120 { // Uzhi121 decaying=None; // Uzhi122 if ( old.decaying == Left ) // Uzhi123 { // Uzhi124 RightParton= old.RightParton; // Uzhi125 LeftParton = newdecay; // Uzhi126 } else if ( old.decaying == Right ) // Uzhi127 { // Uzhi128 RightParton = newdecay; // Uzhi129 LeftParton = old.LeftParton; // Uzhi130 } else // Uzhi108 G4FragmentingString::G4FragmentingString(const G4FragmentingString &old, 109 G4ParticleDefinition * newdecay) 110 { 111 decaying=None; 112 if ( old.decaying == Left ) 113 { 114 RightParton= old.RightParton; 115 LeftParton = newdecay; 116 } else if ( old.decaying == Right ) 117 { 118 RightParton = newdecay; 119 LeftParton = old.LeftParton; 120 } else 131 121 { 132 122 throw G4HadronicException(__FILE__, __LINE__, "G4FragmentingString::G4FragmentingString: no decay Direction defined"); -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc
r1228 r1337 26 26 // 27 27 // $Id: G4HadronBuilder.cc,v 1.10 2009/05/22 16:34:31 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc
r1228 r1337 25 25 // 26 26 // 27 // $Id: G4LundStringFragmentation.cc,v 1. 18 2009/10/05 12:52:48 vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 3$ 1.827 // $Id: G4LundStringFragmentation.cc,v 1.20 2010/06/21 17:50:48 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 1.8 29 29 // 30 30 // ----------------------------------------------------------------------------- … … 58 58 SmoothParam = 0.2; 59 59 60 // SetStringTensionParameter(0.25); // Uzhi 20 June 0861 SetStringTensionParameter(1.); // Uzhi 20 June 0960 // SetStringTensionParameter(0.25); 61 SetStringTensionParameter(1.); 62 62 } 63 63 … … 90 90 91 91 //-------------------------------------------------------------------------------------- 92 void G4LundStringFragmentation::SetMinimalStringMass(const G4FragmentingString * const string) // Uzhi 93 { 94 /* 95 G4cout<<"In SetMinMass -------------------"<<std::sqrt(string->Mass2())<<G4endl; 96 G4cout<<string->GetLeftParton()->GetPDGEncoding()<<" "<< 97 string->GetRightParton()->GetPDGEncoding()<<G4endl; 98 */ 92 void G4LundStringFragmentation::SetMinimalStringMass(const G4FragmentingString * const string) 93 { 99 94 G4double EstimatedMass=0.; 100 95 G4int Number_of_quarks=0; … … 150 145 MinimalStringMass=EstimatedMass; 151 146 SetMinimalStringMass2(EstimatedMass); 152 //G4cout<<"Out SetMinimalStringMass "<<MinimalStringMass<<G4endl;153 147 } 154 148 … … 164 158 const G4ExcitedString& theString) 165 159 { 166 167 //G4cout<<"In FragmentString"<<G4endl;168 169 160 // Can no longer modify Parameters for Fragmentation. 170 161 PastInitPhase=true; 171 162 172 163 // check if string has enough mass to fragment... 173 164 … … 180 171 G4cout<<"FragmentString Momentum"<<theString.Get4Momentum()<<theString.Get4Momentum().mag()<<G4endl; 181 172 */ 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 182 180 G4KineticTrackVector * LeftVector=LightFragmentationTest(&theString); 181 183 182 if ( LeftVector != 0 ) { 184 //G4cout<<"Return single hadron insted of string"<<G4endl;185 183 // Uzhi insert 6.05.08 start 186 184 if(LeftVector->size() == 1){ … … 197 195 LeftVector->operator[](0)->SetPosition(aPosition); 198 196 */ 199 //G4cout<<"Single hadron "<<LeftVector->operator[](0)->Get4Momentum()<<" "<<LeftVector->operator[](0)->Get4Momentum().mag()<<G4endl;200 197 } else { // 2 hadrons created from qq-qqbar are stored 198 201 199 LeftVector->operator[](0)->SetFormationTime(theString.GetTimeOfCreation()); 202 200 LeftVector->operator[](0)->SetPosition(theString.GetPosition()); … … 204 202 LeftVector->operator[](1)->SetPosition(theString.GetPosition()); 205 203 } 206 // Uzhi insert 6.05.08 end207 204 return LeftVector; 208 205 } … … 210 207 //--------------------- The string can fragment ------------------------------- 211 208 //--------------- At least two particles can be produced ---------------------- 212 213 209 LeftVector =new G4KineticTrackVector; 214 210 G4KineticTrackVector * RightVector=new G4KineticTrackVector; … … 223 219 G4FragmentingString *currentString=new G4FragmentingString(*theStringInCMS); 224 220 225 //G4cout<<"FragmentString cur M2 "<<std::sqrt(currentString->Mass2())<<G4endl;226 221 // Cleaning up the previously produced hadrons ------------------------------ 227 222 std::for_each(LeftVector->begin() , LeftVector->end() , DeleteKineticTrack()); … … 237 232 G4FragmentingString *newString=0; // used as output from SplitUp... 238 233 239 //G4cout<<"FragmentString to Splitup ===================================="<<G4endl;240 //G4cout<<"++++++++++++++++++++++++++ Enter num--------------------------"<<G4endl;241 //G4int Uzhi; G4cin>>Uzhi; // Uzhi242 243 234 G4KineticTrack * Hadron=Splitup(currentString,newString); 244 //G4cout<<" Hadron "<<Hadron<<G4endl;245 235 246 236 if ( Hadron != 0 ) // Store the hadron … … 255 245 }; 256 246 // Split remaining string into 2 final Hadrons ------------------------ 257 //G4cout<<"FragmentString to SplitLast if inner_sucess#0"<<inner_sucess<<G4endl;258 247 if ( inner_sucess && 259 248 SplitLast(currentString,LeftVector, RightVector) ) … … 283 272 delete RightVector; 284 273 285 //G4cout<<"CalculateHadronTimePosition"<<G4endl;286 287 274 CalculateHadronTimePosition(theString.Get4Momentum().mag(), LeftVector); 288 275 … … 294 281 G4double TimeOftheStringCreation=theString.GetTimeOfCreation(); 295 282 G4ThreeVector PositionOftheStringCreation(theString.GetPosition()); 296 // Uzhi 11.07.09 297 //G4cout<<" String T Pos"<<TimeOftheStringCreation<<' '<<PositionOftheStringCreation<<G4endl; 298 /* // For large formation time open * 299 G4double TimeOftheStringCreation=theString.GetTimeOfCreation()+100*fermi; 300 G4ThreeVector PositionOftheStringCreation(theString.GetPosition().x(), 301 theString.GetPosition().y(), 302 theString.GetPosition().z()+100*fermi); 303 */ 304 305 /* 306 if(theString.GetPosition().y() > 100.*fermi){ 307 // It is a projectile-like string ------------------------------------- 308 G4double Zmin=theString.GetPosition().y()-1000.*fermi; 309 G4double Zmax=theString.GetPosition().z(); 310 TimeOftheStringCreation= 311 (Zmax-Zmin)*theString.Get4Momentum().e()/theString.Get4Momentum().z(); 312 313 G4ThreeVector aPosition(0.,0.,Zmax); 314 PositionOftheStringCreation=aPosition; 315 } 316 */ 317 318 //G4cout<<"Lund Frag # hadrons"<<LeftVector->size()<<G4endl; // Uzhi 11.07.09 283 319 284 for(size_t C1 = 0; C1 < LeftVector->size(); C1++) 320 285 { … … 326 291 G4LorentzVector Coordinate(Hadron->GetPosition(), Hadron->GetFormationTime()); 327 292 Momentum = toObserverFrame*Coordinate; 328 Hadron->SetFormationTime(TimeOftheStringCreation+Momentum.e() // Uzhi 11.07.09329 -fermi/c_light); // Uzhi 11.07.09293 Hadron->SetFormationTime(TimeOftheStringCreation+Momentum.e() 294 -fermi/c_light); 330 295 G4ThreeVector aPosition(Momentum.vect()); 331 296 // Hadron->SetPosition(theString.GetPosition()+aPosition); 332 297 Hadron->SetPosition(PositionOftheStringCreation+aPosition); 333 //G4cout<<"Hadron "<<C1<<" "<<Hadron->GetPosition()/fermi<<" "<<Hadron->GetFormationTime()/fermi<<G4endl;334 /* // Uzhi 11.07.09335 G4cout<<C1<<' '<<Hadron->GetDefinition()->GetParticleName()<<G4endl;336 G4cout<<Hadron->GetDefinition()->GetPDGMass()<<' '337 <<Hadron->Get4Momentum()<<G4endl;338 G4cout<<Hadron->GetFormationTime()<<' '339 <<Hadron->GetPosition()<<' '340 <<Hadron->GetPosition().z()/fermi<<G4endl;341 */ // Uzhi342 298 }; 343 299 344 //G4cout<<"Out FragmentString"<<G4endl;345 300 return LeftVector; 346 301 … … 350 305 G4bool G4LundStringFragmentation::IsFragmentable(const G4FragmentingString * const string) 351 306 { 352 //G4cout<<"In IsFragmentable"<<G4endl; 353 SetMinimalStringMass(string); // Uzhi 354 //G4cout<<"Out IsFragmentable MinMass"<<MinimalStringMass<<" String Mass"<<std::sqrt(string->Get4Momentum().mag2())<<G4endl; 355 return sqr(MinimalStringMass + WminLUND) < string->Get4Momentum().mag2(); // Uzhi 356 357 // return sqr(FragmentationMass(string)+MassCut) < // Uzhi 358 // string->Mass2(); // Uzhi 307 SetMinimalStringMass(string); 308 return sqr(MinimalStringMass + WminLUND) < string->Get4Momentum().mag2(); 359 309 } 360 310 … … 362 312 G4bool G4LundStringFragmentation::StopFragmenting(const G4FragmentingString * const string) 363 313 { 364 //G4cout<<"StopFragmenting"<<G4endl;365 366 314 SetMinimalStringMass(string); 367 315 368 316 //G4cout<<"StopFragm MinMass "<<MinimalStringMass<<" String Mass "<<std::sqrt(string->Get4Momentum().mag2())<<G4endl; 369 317 //G4cout<<"WminLUND "<<WminLUND<<" SmoothParam "<<SmoothParam<<" "<<string->Mass()<<G4endl; 370 318 return (MinimalStringMass + WminLUND)* 371 319 (1 + SmoothParam * (1.-2*G4UniformRand())) > … … 379 327 { 380 328 //... perform last cluster decay 381 /* 382 G4cout<<"SplitLast String mass "<<string->Mass()<<G4endl; 383 G4cout<<string->GetLeftParton()->GetPDGEncoding()<<" "<<G4endl; 384 G4cout<<string->GetRightParton()->GetPDGEncoding()<<" "<<G4endl; 385 */ 329 386 330 G4LorentzVector Str4Mom=string->Get4Momentum(); 387 //G4cout<<"String 4 momentum "<<Str4Mom<<G4endl; 331 388 332 G4ThreeVector ClusterVel =string->Get4Momentum().boostVector(); 389 333 … … 395 339 do 396 340 { 397 //G4cout<<" Cicle "<<cClusterInterrupt<<" "<< ClusterLoopInterrupt<<G4endl;398 399 341 if (cClusterInterrupt++ >= ClusterLoopInterrupt) 400 342 { … … 454 396 } 455 397 } 456 /* 457 G4cout<<"SplitLast Left Right hadrons "<<LeftHadron->GetPDGEncoding()<<" "<<RightHadron->GetPDGEncoding()<<G4endl; 458 G4cout<<"SplitLast Left Right hadrons "<<LeftHadron->GetPDGMass()<<" "<<RightHadron->GetPDGMass()<<G4endl; 459 G4cout<<"Sum H mass Str Mass "<<LeftHadron->GetPDGMass() + RightHadron->GetPDGMass()<<" "<<ResidualMass<<G4endl; 460 */ 398 461 399 //... repeat procedure, if mass of cluster is too low to produce hadrons 462 400 //... ClusterMassCut = 0.15*GeV model parameter 463 464 401 } 465 while (ResidualMass <= LeftHadron->GetPDGMass() + RightHadron->GetPDGMass()); // UzhiVOVA402 while (ResidualMass <= LeftHadron->GetPDGMass() + RightHadron->GetPDGMass()); 466 403 467 404 //... compute hadron momenta and energies … … 480 417 RightVector->push_back(new G4KineticTrack(RightHadron, 0, Pos, RightMom)); 481 418 482 //G4cout<<"Out SplitLast "<<G4endl;483 419 return true; 484 420 … … 493 429 G4double MassMt2, AntiMassMt2; 494 430 G4double AvailablePz, AvailablePz2; 495 496 //G4cout<<"Sample4Momentum "<<G4endl;497 //G4cout<<"Sample4Momentum Mass"<<Mass<<" "<<AntiMass<<" "<<InitialMass<<G4endl;498 431 499 432 if(Mass > 930. || AntiMass > 930.) // If there is a baryon … … 528 461 G4double termN = 2*termD + 4*Mass*Mass + 4*AntiMass*AntiMass; 529 462 G4double pt2max=(termD*termD - termab )/ termN ; 530 531 // G4cout << " termD, ab, N " << termD << " " << termab << " " << termN 532 // << " pt2max= " << pt2max ; 533 463 534 464 Pt=SampleQuarkPt(std::sqrt(pt2max)); Pt.setZ(0); G4double Pt2=Pt.mag2(); 535 536 537 // G4cout << " sampled Pt2 = " << Pt2 << " " << pt2max-Pt2 << G4endl;538 // end.. GF539 540 //G4cout<<"Sample4Momentum Pt x y "<<Pt.getX()<<" "<<Pt.getY()<<G4endl;541 465 542 466 MassMt2 = Mass * Mass + Pt2; 543 467 AntiMassMt2= AntiMass * AntiMass + Pt2; 544 545 //G4cout<<"Mts "<<MassMt2<<" "<<AntiMassMt2<<" "<<InitialMass*InitialMass<<G4endl;546 468 547 469 AvailablePz2= sqr(InitialMass*InitialMass - MassMt2 - AntiMassMt2) - … … 552 474 AvailablePz2 /=(4.*InitialMass*InitialMass); 553 475 AvailablePz = std::sqrt(AvailablePz2); 554 555 //G4cout<<"AvailablePz "<<AvailablePz<<G4endl;556 476 557 477 G4double Px=Pt.getX(); 558 478 G4double Py=Pt.getY(); 559 479 560 //if(Mass > AntiMass){AvailablePz=-AvailablePz;} // May30 // Uzhi561 562 480 Mom->setPx(Px); Mom->setPy(Py); Mom->setPz(AvailablePz); 563 481 Mom->setE(std::sqrt(MassMt2+AvailablePz2)); 564 482 565 //G4cout<<" 1 part "<<Px<<" "<<Py<<" "<<AvailablePz<<" "<<std::sqrt(MassMt2+AvailablePz2)<<G4endl;566 567 483 AntiMom->setPx(-Px); AntiMom->setPy(-Py); AntiMom->setPz(-AvailablePz); 568 484 AntiMom->setE (std::sqrt(AntiMassMt2+AvailablePz2)); 569 570 //G4cout<<" 2 part "<<-Px<<" "<<-Py<<" "<<-AvailablePz<<" "<<std::sqrt(AntiMassMt2+AvailablePz2)<<G4endl;571 485 } 572 573 //G4cout<<"Out Sample4Momentum "<<G4endl;574 486 } 575 487 … … 579 491 G4FragmentingString * string, G4FragmentingString * newString) 580 492 { 581 /*582 G4cout<<"SplitEandP "<<G4endl;583 G4cout<<"SplitEandP string mass "<<string->Mass()<<G4endl;584 G4cout<<string->GetLeftParton()->GetPDGEncoding()<<" "585 <<string->GetRightParton()->GetPDGEncoding()<<" "<<G4endl;586 G4cout<<G4endl;587 G4cout<<newString->GetLeftParton()->GetPDGEncoding()<<" "<<G4endl;588 G4cout<<newString->GetRightParton()->GetPDGEncoding()<<" "<<G4endl;589 */590 493 G4LorentzVector String4Momentum=string->Get4Momentum(); 591 494 G4double StringMT2=string->Get4Momentum().mt2(); 592 //G4cout<<"StringMt2 "<<StringMT2<<G4endl;593 495 594 496 G4double HadronMass = pHadron->GetPDGMass(); 595 //G4cout<<"Hadron mass "<<HadronMass<<" "<<pHadron->GetParticleName()<<G4endl;596 497 597 498 SetMinimalStringMass(newString); 598 499 String4Momentum.setPz(0.); 599 500 G4ThreeVector StringPt=String4Momentum.vect(); 600 //G4cout<<"StringPt "<<StringPt<<G4endl<<G4endl;601 //G4cout<<"Min string mass "<<MinimalStringMass<<G4endl;602 501 603 502 // calculate and assign hadron transverse momentum component HadronPx and HadronPy … … 607 506 G4ThreeVector HadronPt = thePt +string->DecayPt(); 608 507 HadronPt.setZ(0); 609 //G4cout<<"Hadron Pt"<<HadronPt<<G4endl;610 508 611 509 G4ThreeVector RemSysPt = StringPt - HadronPt; 612 //G4cout<<"RemSys Pt"<<RemSysPt<<G4endl;613 510 614 511 //... sample z to define hadron longitudinal momentum and energy … … 618 515 G4double ResidualMassT2=sqr(MinimalStringMass) + RemSysPt.mag2(); 619 516 620 //G4cout<<"Mt h res str "<<std::sqrt(HadronMassT2)<<" "<<std::sqrt(ResidualMassT2)<<" srt mass"<<StringMT2<<G4endl;621 622 517 G4double Pz2 = (sqr(StringMT2 - HadronMassT2 - ResidualMassT2) - 623 518 4*HadronMassT2 * ResidualMassT2)/4./StringMT2; 624 625 //G4cout<<"Pz**2 "<<Pz2<<G4endl;626 519 627 520 if(Pz2 < 0 ) {return 0;} // have to start all over! … … 632 525 G4double zMin = (std::sqrt(HadronMassT2+Pz2) - Pz)/std::sqrt(StringMT2); 633 526 G4double zMax = (std::sqrt(HadronMassT2+Pz2) + Pz)/std::sqrt(StringMT2); 634 635 //G4cout<<"Zmin max "<<zMin<<" "<<zMax<<G4endl; // Uzhi636 527 637 528 if (zMin >= zMax) return 0; // have to start all over! … … 652 543 653 544 G4LorentzVector * a4Momentum= new G4LorentzVector(HadronPt,HadronE); 654 655 //G4cout<<"Hadron Pt"<<HadronPt<<G4endl;656 //G4cout<<"Out of SplitEandP Pz E "<<HadronPt.getZ()<<" "<<HadronE<<G4endl;657 545 658 546 return a4Momentum; … … 694 582 { 695 583 // ---------------- Di-quark fragmentation ---------------------- 696 //G4cout<<"Di-quark"<<G4endl; // Vova697 584 alund=0.7/GeV/GeV; // 0.7 2.0 698 585 G4double zOfMaxyf=alund*Mt2/(alund*Mt2 + 1.); … … 707 594 }; 708 595 709 //G4cout<<" test z "<<std::pow(2.,3.)<<" "<<z<<G4endl;710 596 return z; 711 597 } -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4QGSMFragmentation.cc
r1228 r1337 26 26 // 27 27 // $Id: G4QGSMFragmentation.cc,v 1.9 2008/06/23 08:35:55 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4VKinkyStringDecay.cc
r1228 r1337 26 26 // 27 27 // $Id: G4VKinkyStringDecay.cc,v 1.4 2008/04/25 14:20:14 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // Maxim Komogorov 30 30 // -
trunk/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc
r1228 r1337 25 25 // 26 26 // 27 // $Id: G4VLongitudinalStringDecay.cc,v 1. 18 2009/08/03 13:21:25vuzhinsk Exp $28 // GEANT4 tag $Name: geant4-09-0 3$27 // $Id: G4VLongitudinalStringDecay.cc,v 1.20 2010/06/21 17:50:48 vuzhinsk Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 29 // 30 30 // ----------------------------------------------------------------------------- … … 179 179 << string->Get4Momentum().m() << G4endl; 180 180 #endif 181 G4cout << "VlongSF Warning replacing string by single hadron " <<G4endl;182 G4cout << hadrons.first->GetParticleName() << " string .. " <<G4endl;183 G4cout << string->Get4Momentum() << " " << string->Get4Momentum().m() << G4endl;184 181 */ 185 182 G4ThreeVector Mom3 = string->Get4Momentum().vect(); … … 201 198 << string->Get4Momentum().m() << G4endl; 202 199 #endif 203 204 // Uzhi Formation time in the case???205 200 206 201 G4LorentzVector Mom1, Mom2; … … 328 323 G4FragmentingString *&newString) 329 324 { 330 //G4cout<<"In G4VLong String Dec######################"<<G4endl;331 332 325 //... random choice of string end to use for creating the hadron (decay) 333 326 SideOfDecay = (G4UniformRand() < 0.5)? 1: -1; … … 354 347 G4LorentzVector* HadronMomentum=SplitEandP(HadronDefinition, string, newString); 355 348 356 delete newString; newString=0; // Uzhi 20.06.08349 delete newString; newString=0; 357 350 358 351 G4KineticTrack * Hadron =0; … … 365 358 HadronMomentum); 366 359 367 //G4cout<<"Out G4VLong String Dec######################"<<G4endl;368 //G4cout<<"newString 4Mom"<<newString->Get4Momentum()<<G4endl;369 //G4cout<<"newString Pl "<<newString->LightConePlus()<<G4endl;370 //G4cout<<"newString Mi "<<newString->LightConeMinus()<<G4endl;371 //G4cout<<"newString Pts "<<newString->StablePt()<<G4endl;372 //G4cout<<"newString Ptd "<<newString->DecayPt()<<G4endl;373 //G4cout<<"newString M2 "<<newString->Mass2()<<G4endl;374 //G4cout<<"newString M2 "<<newString->Mass()<<G4endl;375 360 delete HadronMomentum; 376 361 } … … 474 459 475 460 //----------------------------------------------------------------------------- 476 477 // G4ThreeVector G4VLongitudinalStringDecay::SampleQuarkPt()478 // {479 // G4double width_param= 2.0 * GeV*GeV;480 // G4double R = G4UniformRand();481 // G4double Pt = std::sqrt(width_param*R/(1-R));482 // G4double phi = 2.*pi*G4UniformRand();483 // return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);484 // }485 486 461 G4ThreeVector G4VLongitudinalStringDecay::SampleQuarkPt(G4double ptMax) 487 462 { … … 505 480 506 481 // `yo-yo` formation time 507 // const G4double kappa = 1.0 * GeV/fermi/4.; // Uzhi String tension 1.06.08 508 G4double kappa = GetStringTensionParameter(); 509 //G4cout<<"Kappa "<<kappa<<G4endl; // Uzhi 20.06.08 510 //G4int Uzhi; G4cin>>Uzhi; // Uzhi 20.06.08 511 //G4cout<<"Number of hadrons "<<Hadrons->size()<<G4endl; // Vova 482 // const G4double kappa = 1.0 * GeV/fermi/4.; 483 G4double kappa = GetStringTensionParameter(); 512 484 for(size_t c1 = 0; c1 < Hadrons->size(); c1++) 513 485 { … … 522 494 G4double HadronPz = Hadrons->operator[](c1)->Get4Momentum().pz(); 523 495 Hadrons->operator[](c1)->SetFormationTime( 524 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light); //Uzhi1.07.09c_light496 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light); 525 497 526 498 G4ThreeVector aPosition(0, 0, … … 528 500 Hadrons->operator[](c1)->SetPosition(aPosition); 529 501 530 /*531 G4cout<<"kappa "<<kappa<<G4endl;532 G4cout<<c1<<" Partic time, position Old "<<533 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)<<' '<<534 (theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa)<<G4endl;535 536 G4cout<<c1<<" Partic time, position New "<<537 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light<<' '<<538 (theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa)<<G4endl;539 540 G4cout<<"fermi "<<fermi<<" 1/fermi "<<1./fermi<<' '<<"1*fermi/c "<<1.*fermi/c_light<<G4endl;541 G4int Uzhi; G4cin>>Uzhi; // Uzhi 20.06.08542 */543 502 } 544 503 } 545 504 546 505 //----------------------------------------------------------------------------- 547 548 /*549 void G4VLongitudinalStringDecay::CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector* Hadrons)550 {551 // 'constituent' formation time552 const G4double kappa = 1.0 * GeV/fermi;553 for(G4int c1 = 0; c1 < Hadrons->length(); c1++)554 {555 G4double SumPz = 0;556 G4double SumE = 0;557 for(G4int c2 = 0; c2 <= c1; c2++)558 {559 SumPz += Hadrons->at(c2)->Get4Momentum().pz();560 SumE += Hadrons->at(c2)->Get4Momentum().e();561 }562 Hadrons->at(c1)->SetFormationTime((theInitialStringMass - 2.*SumPz)/(2.*kappa));563 G4ThreeVector aPosition(0, 0, (theInitialStringMass - 2.*SumE)/(2.*kappa));564 Hadrons->at(c1)->SetPosition(aPosition);565 }566 c1 = Hadrons->length()-1;567 Hadrons->at(c1)->SetFormationTime(Hadrons->at(c1-1)->GetFormationTime());568 Hadrons->at(c1)->SetPosition(Hadrons->at(c1-1)->GetPosition());569 }570 */571 572 573 //*****************************************************************************574 506 575 507 void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum(G4double aValue)
Note: See TracChangeset
for help on using the changeset viewer.