44 aDataFile >> theAngularDistributionType >> targetMass;
45 aDataFile >> frameFlag;
46 if(theAngularDistributionType == 0 )
50 else if(theAngularDistributionType==1)
58 G4int tempdep, nLegendre;
60 for (i=0; i<nEnergy; i++)
62 aDataFile >> temp >> energy >> tempdep >> nLegendre;
64 theCoefficients->
Init(i, energy, nLegendre);
67 for(ii=0; ii<nLegendre; ii++)
70 theCoefficients->
SetCoeff(i, ii+1, coeff);
74 else if (theAngularDistributionType==2)
83 for(
G4int i=0; i<nEnergy; i++)
85 aDataFile >> temp >> energy >> tempdep;
87 theProbArray->
SetT(i, temp);
88 theProbArray->
SetX(i, energy);
89 theProbArray->
InitData(i, aDataFile);
95 G4cout <<
"unknown distribution found for Angular: "<< theAngularDistributionType <<
G4endl;
96 throw G4HadronicException(__FILE__, __LINE__,
"unknown distribution needs implementation!!!");
127 boosted.
Lorentz(*fCache.
Get().theProjectileRP, *fCache.
Get().theTarget);
138 else if(theAngularDistributionType == 1) {cosTh = theCoefficients->
SampleMax(kineticEnergy);}
139 else if(theAngularDistributionType == 2) {cosTh = theProbArray->
Sample(kineticEnergy);}
141 G4cout <<
"unknown distribution found for Angular: "<< theAngularDistributionType <<
G4endl;
142 throw G4HadronicException(__FILE__, __LINE__,
"unknown distribution needs implementation!!!");
148 G4ThreeVector temp(en*sinth*std::cos(phi), en*sinth*std::sin(phi), en*std::cos(theta) );
151 else if(frameFlag == 2)
154 boostedN.
Lorentz(*fCache.
Get().theProjectileRP, *fCache.
Get().theTarget);
166 else if(theAngularDistributionType == 1) {cosTh = theCoefficients->
SampleMax(kineticEnergy);}
167 else if(theAngularDistributionType == 2) {cosTh = theProbArray->
Sample(kineticEnergy);}
169 G4cout <<
"unknown distribution found for Angular: "<< theAngularDistributionType <<
G4endl;
170 throw G4HadronicException(__FILE__, __LINE__,
"unknown distribution needs implementation!!!");
201 G4ThreeVector temp(sinth*std::cos(phi), sinth*std::sin(phi), std::cos(theta) );
254 G4double kinE = (A1+1-A1prim)/(A1+1)/(A1+1)*(A1*kineticEnergy+(1+A1)*QValue);
258 if ( mom2 > 0.0 ) mom = std::sqrt( mom2 );
266 boostedT.
Lorentz(*fCache.
Get().theTarget, *fCache.
Get().theTarget);
276 G4double cmsMom = std::sqrt(the3trafo*the3trafo);
277 G4double sqrts = std::sqrt((totE-cmsMom)*(totE+cmsMom));
281 aHadron.
Lorentz(aHadron, trafo);
286 throw G4HadronicException(__FILE__, __LINE__,
"Tried to sample non isotropic neutron angular");
288 aHadron.
Lorentz(aHadron, -1.*(*fCache.
Get().theTarget));
void Init(G4int i, G4double e, G4int n)
G4double GetTotalMomentum() const
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)
void InitInterpolation(G4int i, std::istream &aDataFile)
void SetKineticEnergy(const G4double en)
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4double SampleMax(G4double energy)
void InitInterpolation(std::istream &aDataFile)
static constexpr double twopi
void SetMass(const G4double mas)
G4GLOB_DLL std::ostream G4cout
void SampleAndUpdate(G4ReactionProduct &anIncidentParticle)
G4double Sample(G4double x)
void SetTotalEnergy(const G4double en)
static constexpr double eV
G4double GetKineticEnergy() const
void SetTemperature(G4int i, G4double temp)
void SetX(G4int i, G4double x)
G4double GetTotalEnergy() const
G4double energy(const ThreeVector &p, const G4double m)
void SetCoeff(G4int i, G4int l, G4double coeff)
void InitData(G4int i, std::istream &aDataFile, G4double unit=1.)
G4ThreeVector GetMomentum() const
void SetT(G4int i, G4double x)
void Init(std::istream &aDataFile)