G4LundStringFragmentation Class Reference

#include <G4LundStringFragmentation.hh>

Inheritance diagram for G4LundStringFragmentation:

G4VLongitudinalStringDecay

Public Member Functions

 G4LundStringFragmentation ()
virtual ~G4LundStringFragmentation ()
virtual G4KineticTrackVectorFragmentString (const G4ExcitedString &theString)

Detailed Description

Definition at line 42 of file G4LundStringFragmentation.hh.


Constructor & Destructor Documentation

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]

Definition at line 402 of file G4LundStringFragmentation.cc.

00403 {}


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:27 2013 for Geant4 by  doxygen 1.4.7