18 #ifndef _GHEP_PARTICLE_H_
19 #define _GHEP_PARTICLE_H_
25 #include <TLorentzVector.h>
37 ostream &
operator << (ostream & stream,
const GHepParticle & p);
43 using TObject::Compare;
51 int mother1,
int mother2,
int daughter1,
int daughter2,
52 const TLorentzVector & p,
const TLorentzVector & v);
55 int mother1,
int mother2,
int daughter1,
int daughter2,
56 double px,
double py,
double pz,
double E,
57 double x,
double y,
double z,
double t);
73 string Name (
void)
const;
74 double Mass (
void)
const;
75 double Charge (
void)
const;
78 const TLorentzVector *
P4 (
void)
const {
return fP4; }
79 const TLorentzVector *
X4 (
void)
const {
return fX4; }
80 TLorentzVector *
P4 (
void) {
return fP4; }
81 TLorentzVector *
X4 (
void) {
return fX4; }
84 TLorentzVector *
GetP4 (
void)
const;
85 TLorentzVector *
GetX4 (
void)
const;
88 double Px (
void)
const {
return (
fP4) ?
fP4->Px() : 0; }
89 double Py (
void)
const {
return (
fP4) ?
fP4->Py() : 0; }
90 double Pz (
void)
const {
return (
fP4) ?
fP4->Pz() : 0; }
91 double E (
void)
const {
return (
fP4) ?
fP4->Energy() : 0; }
92 double Energy (
void)
const {
return this->
E(); }
93 double KinE (
bool mass_from_pdg =
false)
const;
94 double Vx (
void)
const {
return (
fX4) ?
fX4->X() : 0; }
95 double Vy (
void)
const {
return (
fX4) ?
fX4->Y() : 0; }
96 double Vz (
void)
const {
return (
fX4) ?
fX4->Z() : 0; }
97 double Vt (
void)
const {
return (
fX4) ?
fX4->T() : 0; }
140 void SetMomentum (
double px,
double py,
double pz,
double E);
141 void SetPosition (
double x,
double y,
double z,
double t);
143 void SetPx (
double px);
144 void SetPy (
double py);
145 void SetPz (
double pz);
159 void Clear (Option_t * option);
161 void Print (ostream & stream)
const;
162 void Print (Option_t * opt)
const;
194 #endif // _GHEP_PARTICLE_H_
void SetFirstMother(int m)
int RescatterCode(void) const
TLorentzVector * GetX4(void) const
bool IsOnMassShell(void) const
double E(void) const
Get energy.
double fRemovalEnergy
removal energy for bound nucleons (GeV)
const TLorentzVector * P4(void) const
int FirstDaughter(void) const
double PolzPolarAngle(void) const
int fLastDaughter
last daughter idx
int fPdgCode
particle PDG code
static constexpr double s
void AssertIsKnownParticle(void) const
void SetBound(bool bound)
void SetMomentum(const TLorentzVector &p4)
double RemovalEnergy(void) const
Get removal energy.
GHepParticle & operator=(const GHepParticle &p)
double Mass(void) const
Mass that corresponds to the PDG code.
void SetPolarization(double theta, double phi)
int fFirstMother
first mother idx
double fPolzPhi
azimuthal polarization angle (rad)
TLorentzVector * P4(void)
bool fIsBound
'is it a bound particle?' flag
GHepStatus_t fStatus
particle status
double Pz(void) const
Get Pz.
GHepStatus_t Status(void) const
double Energy(void) const
Get energy.
int fFirstDaughter
first daughter idx
double Px(void) const
Get Px.
bool CompareMomentum(const GHepParticle *p) const
bool Compare(const GHepParticle *p) const
int LastMother(void) const
double Vt(void) const
Get production time.
int FirstMother(void) const
string Name(void) const
Name that corresponds to the PDG code.
void Clear(Option_t *option)
TLorentzVector * fP4
momentum 4-vector (GeV)
void SetPosition(const TLorentzVector &v4)
int LastDaughter(void) const
bool operator==(const GHepParticle &p) const
void SetLastDaughter(int d)
int fRescatterCode
rescattering code
bool HasDaughters(void) const
void SetRescatterCode(int code)
void Copy(const GHepParticle &particle)
TLorentzVector * GetP4(void) const
bool ComparePdgCodes(const GHepParticle *p) const
void Print(ostream &stream) const
TLorentzVector * X4(void)
double Charge(void) const
Chrg that corresponds to the PDG code.
bool PolzIsSet(void) const
bool IsOffMassShell(void) const
void GetPolarization(TVector3 &polz)
bool CompareStatusCodes(const GHepParticle *p) const
void SetRemovalEnergy(double Erm)
TLorentzVector * fX4
position 4-vector (in the target nucleus coordinate system / x,y,z in fm / t from the moment of the p...
bool CompareFamily(const GHepParticle *p) const
double KinE(bool mass_from_pdg=false) const
Get kinetic energy.
void SetLastMother(int m)
double Vz(void) const
Get production z.
const TLorentzVector * X4(void) const
ostream & operator<<(ostream &stream, const AlgConfigPool &config_pool)
void SetStatus(GHepStatus_t s)
int fLastMother
last mother idx
friend ostream & operator<<(ostream &stream, const GHepParticle &p)
double fPolzTheta
polar polarization angle (rad)
double Vy(void) const
Get production y.
double PolzAzimuthAngle(void) const
void SetFirstDaughter(int d)
static constexpr double m
STDHEP-like event record entry that can fit a particle or a nucleus.
enum genie::EGHepStatus GHepStatus_t
double Vx(void) const
Get production x.
double Py(void) const
Get Py.