34 #define INCLXX_IN_GEANT4_MODE 1
48 :particle1(p1), particle2(p2)
87 apt = (800.0/pl)*(800.0/pl);
90 G4double aaa = (1 + apt) * (1 - std::exp(-btmax))/b;
96 argu = std::exp(-4.0 * argu);
99 G4double aac = cpt * (1.0 - argu)/alphac;
102 z = std::exp(-4.0 * psq *alphac);
104 y = 1.0 - ranres*(1.0 -
z);
105 T = std::log(y)/alphac;
111 if(std::abs(ctet) > 1.0) ctet =
Math::sign(ctet);
112 G4double stet = std::sqrt(1.0 - ctet*ctet);
122 if(xx >= (zz * 1.0e-8)) {
127 ez[0] = p.
getX() / pnorm;
128 ez[1] = p.
getY() / pnorm;
129 ez[2] = p.
getZ() / pnorm;
132 ex[0] = p.
getY() / yn;
133 ex[1] = -p.
getX() / yn;
140 G4double pX = (ex[0]*cfi*stet + ey[0]*sfi*stet + ez[0]*ctet) * pnorm;
141 G4double pY = (ex[1]*cfi*stet + ey[1]*sfi*stet + ez[1]*ctet) * pnorm;
142 G4double pZ = (ex[2]*cfi*stet + ey[2]*sfi*stet + ez[2]*ctet) * pnorm;
165 apt = std::pow(800.0/pl, 2);
167 if(iexpi == 1 || rndm > 1.0/(1.0 + apt)) {
void fillFinalState(FinalState *fs)
virtual ~ElasticChannel()
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
const G4INCL::ThreeVector & getMomentum() const
Get the momentum vector.
ElasticChannel(Particle *p1, Particle *p2)
G4double mag2() const
Get the square of the length.
Final state of an interaction.
G4double calculateNNAngularSlope(G4double energyCM, G4int iso)
Calculate the slope of the NN DDXS.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4INCL::ParticleType getType() const
Get the particle type.
void setType(ParticleType t)
G4double shoot()
Generate flat distribution of random numbers.
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
G4int sign(const T t)
A simple sign function that allows us to port fortran code to c++ more easily.
const G4double effectiveNucleonMass
void addModifiedParticle(Particle *p)
virtual void setMomentum(const G4INCL::ThreeVector &momentum)
Set the momentum vector.