diff --git a/NPLib/Physics/NPNucleus.cxx b/NPLib/Physics/NPNucleus.cxx index fe4da01a5bd47d51f35c405d8f61f95d58643f8f..57e59fbf05966ee59b71232c1259411a8d666938 100644 --- a/NPLib/Physics/NPNucleus.cxx +++ b/NPLib/Physics/NPNucleus.cxx @@ -58,6 +58,7 @@ Nucleus::Nucleus() fSpinParity= ""; fSpin= 0; fParity= ""; + fLifeTime = -1; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -166,6 +167,51 @@ void Nucleus::Extract(const char* line) string s_excess = ligne.substr(18,10); fMassExcess = atof(s_excess.data()); + // life time + string s_lt_units = ligne.substr(69,3); + string s_LifeTime = ligne.substr(57,12); + // Remove space + s_LifeTime.erase( std::remove_if( s_LifeTime.begin(), s_LifeTime.end(), ::isspace ), s_LifeTime.end() ); + s_lt_units.erase( std::remove_if( s_lt_units.begin(), s_lt_units.end(), ::isspace ), s_lt_units.end() ); + + if(s_LifeTime=="stbl") + fLifeTime=-1; + else + fLifeTime=atof(s_LifeTime.data()); + + if(s_lt_units=="ms") + fLifeTime*=1e-3; + else if(s_lt_units=="us") + fLifeTime*=1e-6; + else if(s_lt_units=="ns") + fLifeTime*=1e-9; + else if(s_lt_units=="ps") + fLifeTime*=1e-12; + else if(s_lt_units=="fs") + fLifeTime*=1e-15; + else if(s_lt_units=="as") + fLifeTime*=1e-18; + else if(s_lt_units=="zs") + fLifeTime*=1e-21; + else if(s_lt_units=="zs") + fLifeTime*=1e-23; + else if(s_lt_units=="m") + fLifeTime*=60; + else if(s_lt_units=="h") + fLifeTime*=3600; + else if(s_lt_units=="d") + fLifeTime*=3600*24; + else if(s_lt_units=="y") + fLifeTime*=3600*24*365.25; + else if(s_lt_units=="ky") + fLifeTime*=3600*24*365.25*1e3; + else if(s_lt_units=="My") + fLifeTime*=3600*24*365.25*1e6; + else if(s_lt_units=="Gy") + fLifeTime*=3600*24*365.25*1e9; + else if(s_lt_units=="Py") + fLifeTime*=3600*24*365.25*1e12; + // spin and parity string s_spinparity = ligne.substr(79,14); fSpinParity = s_spinparity.data(); diff --git a/NPLib/Physics/NPNucleus.h b/NPLib/Physics/NPNucleus.h index 886b492787a1471d74f95887c9245ecc1c242625..e70800e2f5aaec206741fc80e0f82d8ff9f54709 100644 --- a/NPLib/Physics/NPNucleus.h +++ b/NPLib/Physics/NPNucleus.h @@ -58,7 +58,9 @@ namespace NPL { const char* fSpinParity; // Nucleus spin and parity double fSpin; // Nucleus spin const char* fParity; // Nucleus parity - //kinematic properties + double fLifeTime; // life time + + //kinematic properties double fKineticEnergy; double fBeta; double fGamma; @@ -93,6 +95,7 @@ namespace NPL { const char* GetSpinParity() const {return fSpinParity;} double GetSpin() const {return fSpin;} const char* GetParity() const {return fParity;} + double GetLifeTime() const {return fLifeTime;} double GetEnergy() const {return fKineticEnergy;} double GetBrho() const {return fBrho;} double GetTimeOfFlight() const {return fTimeOfFlight;} @@ -107,6 +110,7 @@ namespace NPL { void SetSpinParity(const char* spinparity) {fSpinParity = spinparity;} void SetSpin(double spin) {fSpin = spin;} void SetParity(const char* parity) {fParity = parity;} + void SetLifeTime(double LifeTime) {fLifeTime=LifeTime;} void SetKineticEnergy(double energy) {fKineticEnergy = energy; EnergyToBrho(); EnergyToTof(); EnergyToBeta(); BetaToGamma();BetaToVelocity();} void SetBrho(double brho) {fBrho = brho; BrhoToEnergy(); BrhoToTof(); EnergyToBeta(); BetaToGamma();BetaToVelocity();} void SetTimeOfFlight(double tof) {fTimeOfFlight = tof; TofToEnergy(); TofToBrho(); EnergyToBeta(); BetaToGamma();BetaToVelocity();}