Ignore:
Timestamp:
Apr 6, 2009, 12:30:29 PM (15 years ago)
Author:
garnier
Message:

update processes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPDiscreteTwoBody.cc

    r819 r962  
    2828// A prototype of the low energy neutron transport model.
    2929//
     30//080612 Bug fix contribution from Benoit Pirard and Laurent Desorgher (Univ. Bern) #2,3
     31//080709 Bug fix Sampling Legendre expansion by T. Koi   
     32//
    3033#include "G4NeutronHPDiscreteTwoBody.hh"
    3134#include "G4Gamma.hh"
     
    9295     if(theCoeff[it].GetRepresentation()==0)
    9396     {
     97//TK Legendre expansion
    9498       G4NeutronHPLegendreStore theStore(1);
    9599       theStore.SetCoeff(0, theCoeff);
    96100       theStore.SetManager(theManager);
    97        cosTh = theStore.SampleMax(anEnergy);
     101       //cosTh = theStore.SampleMax(anEnergy);
     102       //080612TK contribution from Benoit Pirard and Laurent Desorgher (Univ. Bern) #3
     103       cosTh = theStore.SampleDiscreteTwoBody(anEnergy);
    98104     }
    99105     else if(theCoeff[it].GetRepresentation()==12) // means LINLIN
     
    136142       if(theCoeff[it].GetRepresentation()==0)
    137143       {
     144//TK Legendre expansion
    138145         G4NeutronHPLegendreStore theStore(2);
    139146         theStore.SetCoeff(0, &(theCoeff[it-1]));
     
    142149         aManager.Init(theManager.GetScheme(it), 2);
    143150         theStore.SetManager(aManager);
    144          cosTh = theStore.SampleMax(anEnergy);
     151         //cosTh = theStore.SampleMax(anEnergy);
     152//080709 TKDB
     153         cosTh = theStore.SampleDiscreteTwoBody(anEnergy);
    145154       }
    146155       else if(theCoeff[it].GetRepresentation()==12) // LINLIN
     
    198207         cosTh = theStore.Sample();
    199208       }
    200        else if(theCoeff[it].GetRepresentation()==14)
     209       else if(theCoeff[it].GetRepresentation()==14) //TK LOG_LIN
    201210       {
    202211         G4NeutronHPVector theBuff1;
     
    266275// now get the energy from kinematics and Q-value.
    267276
    268    G4double restEnergy = anEnergy+GetQValue();
     277   //G4double restEnergy = anEnergy+GetQValue();
    269278   
    270279// assumed to be in CMS @@@@@@@@@@@@@@@@@
    271280
    272    G4double residualMass =   GetTarget()->GetMass() + GetNeutron()->GetMass()
    273                            - result->GetMass() - GetQValue();
    274    G4double kinE = restEnergy/(1+result->GetMass()/residualMass); // non relativistic @@
     281   //080612TK contribution from Benoit Pirard and Laurent Desorgher (Univ. Bern) #2
     282   //G4double residualMass =   GetTarget()->GetMass() + GetNeutron()->GetMass()
     283   //                        - result->GetMass() - GetQValue();
     284   //G4double kinE = restEnergy/(1+result->GetMass()/residualMass); // non relativistic @@
     285   G4double A1     =  GetTarget()->GetMass()/GetNeutron()->GetMass();
     286   G4double A1prim =  result->GetMass()/GetNeutron()->GetMass();
     287   G4double E1     =  (A1+1)*(A1+1)/A1/A1*anEnergy;
     288   G4double kinE = (A1+1-A1prim)/(A1+1)/(A1+1)*(A1*E1+(1+A1)*GetQValue());
     289
    275290   result->SetKineticEnergy(kinE); // non relativistic @@
    276291   G4double phi = twopi*G4UniformRand();
Note: See TracChangeset for help on using the changeset viewer.