16#include "TLorentzVector.h"
21#define PI (TMath::Pi())
35 TKinematics(
double eBeam,
const char* beam,
const char* targ,
const char* ejec =
nullptr,
const char* reco =
nullptr,
const char* name =
"");
39 TKinematics(
const char* beam,
const char* targ,
const char* ejec,
const char* reco,
double eBeam,
double ex3 = 0.0,
const char* name =
"");
43 void Final(
double angle,
int part);
45 void SetAngles(
double angle,
int part,
bool upper =
false);
47 TSpline3*
Evslab(
double thmin,
double thmax,
double size,
int part = 2);
48 TSpline3*
Evscm(
double thmin,
double thmax,
double size,
int part = 2);
49 TSpline3*
labvscm(
double thmin,
double thmax,
double size,
int part = 2)
const;
50 TSpline3*
cmvslab(
double thmin,
double thmax,
double size,
int part = 2)
const;
53 TGraph*
Evslab_graph(
double thmin,
double thmax,
double size,
int part = 2);
57 double GetBeamEnergy(
double LabAngle,
double LabEnergy)
const;
65 double ELab(
double angle_lab,
int part);
69 double GetM(
int i)
const {
return fM[i]; }
93 double GetV(
int i)
const {
return fV[i]; }
95 TSpline3*
Ruthvscm(
double thmin,
double thmax,
double size)
const;
96 TSpline3*
Ruthvslab(
double thmin,
double thmax,
double size,
int part)
const;
102 double Sigma_cm2lab(
double angle_cm,
double sigma_cm)
const;
103 double Sigma_lab2cm(
double angle_cm,
double sigma_lab)
const;
105 void Transform2cm(
double& angle,
double& errangle,
double& sigma,
double& errsigma)
const;
107 void SigmaErr_lab2cm(
double angle,
double err,
double& sigma,
double& errsigma)
const;
138 double Pcm_em(
double,
double)
const;
139 double P_tm(
double,
double)
const;
140 double E_tm(
double,
double)
const;
141 double T_em(
double,
double)
const;
143 double V_pe(
double,
double)
const;
double Angle_cm2lab(double vcm, double angle_cm) const
double Sigma_lab2cm(double angle_cm, double sigma_lab) const
double GetVcm(int i) const
double GetCmEnergy() const
double GetThetacm(int i) const
double GetExcEnergy(TLorentzVector recoil)
double NormalkinEnergy() const
double GetGammacm() const
void AngleErr_lab2cm(double angle, double &err) const
double GetMaxAngle(double vcm) const
double GetElab(int i) const
double GetEcm(int i) const
TSpline3 * Ruthvslab(double thmin, double thmax, double size, int part) const
double Angle_lab2cminverse(double vcm, double angle_lab, bool upper=true) const
TSpline3 * labvscm(double thmin, double thmax, double size, int part=2) const
TSpline3 * cmvslab(double thmin, double thmax, double size, int part=2) const
TSpline3 * Evscm(double thmin, double thmax, double size, int part=2)
bool CheckMaxAngle(double angle, int part) const
TKinematics(double eBeam, const char *beam, const char *targ, const char *ejec=nullptr, const char *reco=nullptr, const char *name="")
double Sigma_cm2lab(double angle_cm, double sigma_cm) const
double Pcm_em(double, double) const
double GetBetacm(int i) const
void Transform2cm(double &angle, double &sigma) const
double P_tm(double, double) const
double betacm_tm(double, double) const
double V_pe(double, double) const
double Rutherford(double angle_cm) const
void SigmaErr_lab2cm(double angle, double err, double &sigma, double &errsigma) const
double GetBeamEnergy(double LabAngle, double LabEnergy) const
double Steffen_cm2labinverse(double theta_cm, int part=2) const
double GetTcm(int i) const
TSpline3 * Ruthvscm(double thmin, double thmax, double size) const
TGraph * Evslab_graph(double thmin, double thmax, double size, int part=2)
TSpline3 * Steffen_labvscminverse(double thmin, double thmax, double size, int part=2) const
void SetAngles(double angle, int part, bool upper=false)
TSpline3 * Evslab(double thmin, double thmax, double size, int part=2)
void Final(double angle, int part)
double E_final(int) const
double GetTlab(int i) const
double E_tm(double, double) const
double Steffen_lab2cminverse(double theta_lab)
double T_final(int) const
double ELab(double angle_lab, int part)
double GetThetalab(int i) const
double T_em(double, double) const
double Angle_lab2cm(double vcm, double angle_lab) const