34#ifndef G4KineticTrack_h
35#define G4KineticTrack_h 1
137 void SetnChannels(
const G4int aChannel);
139 void SetActualWidth(
G4double* anActualWidth);
141 G4double EvaluateTotalActualWidth();
150 G4double IntegrateCMMomentum2()
const;
197 G4int theCreatorModel;
200 G4int theParentResonanceID;
223 return theDefinition;
228 theDefinition = aDefinition;
233 return theFormationTime;
238 theFormationTime = aFormationTime;
248 thePosition = aPosition;
253 return theTotal4Momentum;
265 theTotal4Momentum=a4Momentum;
266 the4Momentum = theTotal4Momentum;
276 if (
sqr(aEnergy) > mass2 )
278 newP = std::sqrt(
sqr(aEnergy) - mass2 );
281 aEnergy=std::sqrt(mass2);
298 the4Momentum = aMomentum;
299 theTotal4Momentum=the4Momentum+theFermi3Momentum;
303 theTotal4Momentum.
setE(std::sqrt(mass2+p2));
312 if (
sqr(aEnergy) > mass2 )
314 newP = std::sqrt(
sqr(aEnergy) - mass2 );
317 aEnergy=std::sqrt(mass2);
332 return std::sqrt(std::abs(the4Momentum.
mag2()));
340inline void G4KineticTrack::SetnChannels(
const G4int numberOfChannels)
342 nChannels = numberOfChannels;
347 return theActualWidth;
350inline void G4KineticTrack::SetActualWidth(
G4double* anActualWidth)
352 theActualWidth = anActualWidth;
357inline G4double G4KineticTrack::EvaluateTotalActualWidth()
361 for (index = nChannels - 1; index >= 0; index--)
363 theTotalActualWidth += theActualWidth[index];
365 return theTotalActualWidth;
370 G4double theTotalActualWidth = this->EvaluateTotalActualWidth();
371 G4double tau = CLHEP::hbar_Planck * (-1.0 / theTotalActualWidth);
373 return theResidualLifetime*the4Momentum.
gamma();
380 if((m_ij[0]+m_ij[1])<mass)
381 theCMMomentum = 1 / (2 * mass) *
382 std::sqrt (((mass * mass) - (m_ij[0] + m_ij[1]) * (m_ij[0] + m_ij[1])) *
383 ((mass * mass) - (m_ij[0] - m_ij[1]) * (m_ij[0] - m_ij[1])));
387 return theCMMomentum;
393 return (Gamma/((mass-rmass)*(mass-rmass)+Gamma*Gamma/4.))/Norm;
408 if(!theNucleon)
return true;
415 return theStateToNucleus;
422 theStateToNucleus=new_state;
429 theProjectilePotential = aPotential;
434 return theProjectilePotential;
440 theCreatorModel = id;
445 return theCreatorModel;
451 return theParentResonanceDef;
457 theParentResonanceDef = parentDef;
463 return theParentResonanceID;
469 theParentResonanceID = parentID;
G4double G4Log(G4double x)
CLHEP::HepLorentzVector G4LorentzVector
G4double GetFormationTime() const
CascadeState SetState(const CascadeState new_state)
G4double GetProjectilePotential() const
void SetPosition(const G4ThreeVector aPosition)
G4int GetParentResonanceID() const
G4KineticTrackVector * Decay()
G4KineticTrack & operator=(const G4KineticTrack &right)
void SetCreatorModelID(G4int id)
G4int GetCreatorModelID() const
CascadeState GetState() const
void SetNucleon(G4Nucleon *aN)
G4bool operator!=(const G4KineticTrack &right) const
void SetProjectilePotential(const G4double aPotential)
void Set4Momentum(const G4LorentzVector &a4Momentum)
G4int GetnChannels() const
const G4ThreeVector & GetPosition() const
void SetTrackingMomentum(const G4LorentzVector &a4Momentum)
const G4ParticleDefinition * GetDefinition() const
G4bool operator==(const G4KineticTrack &right) const
G4bool IsParticipant() const
void SetDefinition(const G4ParticleDefinition *aDefinition)
const G4LorentzVector & GetTrackingMomentum() const
void SetParentResonanceID(const G4int parentID)
G4double * GetActualWidth() const
void UpdateTrackingMomentum(G4double aEnergy)
void SetFormationTime(G4double aFormationTime)
void Update4Momentum(G4double aEnergy)
G4double SampleResidualLifetime()
const G4ParticleDefinition * GetParentResonanceDef() const
G4double BrWig(const G4double Gamma, const G4double rmass, const G4double mass) const
const G4LorentzVector & Get4Momentum() const
G4double GetActualMass() const
void SetParentResonanceDef(const G4ParticleDefinition *parent)
void Hit(G4VSplitableHadron *aHit)