4#include "KVLevelScheme.h"
5#include "KVFileReader.h"
33 fCompNuc->SetExcitEnergy(0);
39 fFuncErel->SetNpx(5000);
80 if (npars == 0)
break;
130 ll->
set(
ex, jpi, gam);
141 cout <<
" n." <<
" Jpi" <<
" E" <<
" T1/2" << endl;
145 cout <<
Form(
"%3d", ii) <<
".";
175 if (unit.
EqualTo(
"EV")) gam *= 1
e-3;
176 else if (unit.
EqualTo(
"KEV")) gam *= 1;
177 else if (unit.
EqualTo(
"MEV")) gam *= 1e3;
178 else if (unit.
Contains(
"S")) gam *= 1
e-6;
194 if (jpi.
EqualTo(
"GE"))
return 0;
280 if (jpi.
EqualTo(
"GE"))
return 0;
287 else if (jpi.
Contains(
"-")) pi = -1;
327 double e1 = (m2 / (m1 + m2)) * erel;
328 double e2 = (m1 / (m1 + m2)) * erel;
373 if (!
fLevels.
GetSize()) cout <<
"KVLevelScheme::GetRandomParticles: please initialize the level scheme firts..." << endl;
402 for (
int ic = 0; ic < 20; ic++) cols[ic] = 0;
406 for (
int ic = 0; ic <
TMath::Max(ii, 20); ic++) {
410 if (icol + 1 >
ncol)
ncol = icol + 1;
441 for (
int ic = 0; ic < 20; ic++) cols[ic] = 0;
446 for (
int ic = 0; ic <
TMath::Max(ii, 20); ic++) {
507 lq =
new TLine(0.5, qa * 1000, 0.5 +
dx * (
ncol - 1), qa * 1000);
523 a.SetExcitEnergy(
ex / 1000.);
528 lq =
new TLine(0.5, qa * 1000, 0.5 +
dx * (
ncol - 1), qa * 1000);
552 if (!strcmp(outnuc,
"")) outnuc =
"1H";
winID h TVirtualViewer3D TVirtualGLPainter p
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
Excited state of atomic nucleus.
void set(Double_t ee, Double_t ww, Double_t jj, Int_t pi)
Double_t eval(Double_t excit)
Handle reading columns of numeric data in text files.
ReadStatus ReadLine(const KVString &pattern="")
Double_t GetDoubleReadPar(Int_t pos) const
Int_t GetIntReadPar(Int_t pos) const
Int_t GetNparRead() const
KVString GetReadPar(Int_t pos) const
Bool_t OpenFileToRead(const KVString &filename)
Tool to simulate nucleus multi-particle decay.
Int_t GetLevelParity(int il)
double EvaluateErel(double *x, double *p)
void SetDrawStyle(double deMin=300., double fullWidth=1.3, double lineWidth=0.6, int textSize=22)
const char * GetEGammaStr(int il)
void DrawThreshold(const char *symb, Option_t *option="", double ex=0.)
double GetThreshold(const char *outnuc="")
static void GetParticlesFromExci(KVNucleus *n1, KVNucleus *n2, double erel, bool randAngle=0, TVector3 *vsrc=0)
virtual ~KVLevelScheme()
Destructor.
static void GetParticlesFromErel(KVNucleus *n1, KVNucleus *n2, double erel, bool randAngle=0, TVector3 *vsrc=0)
Double_t GetLevelEnergy(int il)
Int_t GetLevelSpin(int il)
void SetDecayProduct(KVNucleus *nuc, double excit_energy=0)
void Draw(Option_t *option="")
void ReadLevels(const char *file)
double getWidth(double gam, TString unit)
double Evaluate(double *x, double *p)
const char * GetJPiStr(int il)
void AddResonance(Double_t ex, const char *jpi, const char *gam)
void GetRandomParticles(KVNucleus *n1, KVNucleus *n2, double T, bool randAngle=0, TVector3 *vsrc=0)
double func(double xx, double tt)
Double_t GetLevelWidth(int il)
Description of properties and kinematics of atomic nuclei.
const Char_t * GetSymbol(Option_t *opt="") const
void SetExcitEnergy(Double_t e)
Double_t GetExcitEnergy() const
Int_t GetZ() const
Return the number of proton / atomic number.
void SetTheta(Double_t theta)
void SetVelocity(const TVector3 &)
Set velocity of particle (in cm/ns units)
void SetKE(Double_t ecin)
void SetFrame(const Char_t *frame, const KVFrameTransform &)
KVParticle const * GetFrame(const Char_t *frame, Bool_t warn_and_return_null_if_unknown=kTRUE) const
TVector3 GetVelocity() const
returns velocity vector in cm/ns units
virtual void AddLast(TObject *obj)
virtual Int_t GetSize() const
virtual TObject * At(Int_t idx) const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void RemoveAllExtraWhiteSpace()
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
virtual void SetLabelSize(Float_t size=0.04)
virtual void SetNdivisions(Int_t n1, Int_t n2, Int_t n3, Bool_t optim=kTRUE)
virtual void SetBottomMargin(Float_t bottommargin)
virtual void SetLeftMargin(Float_t leftmargin)
virtual void SetRightMargin(Float_t rightmargin)
virtual void SetTopMargin(Float_t topmargin)
virtual void SetTextAlign(Short_t align=11)
virtual void SetTextFont(Font_t tfont=62)
virtual void SetTextSize(Float_t tsize=1)
virtual void SetLimits(Double_t xmin, Double_t xmax)
void SetWindowSize(UInt_t ww, UInt_t wh)
virtual Double_t GetRandom(Double_t xmin, Double_t xmax, TRandom *rng=nullptr, Option_t *opt=nullptr)
virtual void SetParameter(const TString &name, Double_t value)
void Draw(Option_t *option="") override
virtual void Draw(Option_t *option="")
void SetTickx(Int_t value=1) override
void SetTicky(Int_t value=1) override
TRotation & SetXEulerAngles(Double_t phi, Double_t theta, Double_t psi)
const char * Data() const
Bool_t EqualTo(const char *cs, ECaseCompare cmp=kExact) const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TString & ReplaceAll(const char *s1, const char *s2)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
void SetOptStat(Int_t stat=1)
virtual void SetNDC(Bool_t isNDC=kTRUE)
double max(double x, double y)
Double_t Max(Double_t a, Double_t b)