11 #ifndef SIMB_MCPARTICLE_H 12 #define SIMB_MCPARTICLE_H 20 #include "TLorentzVector.h" 59 const std::string process,
60 const int mother = -1,
61 const double mass = s_uninitialized,
62 const int status = 1);
120 const TLorentzVector&
Position(
const int i = 0 )
const;
121 double Vx(
const int i = 0)
const;
122 double Vy(
const int i = 0)
const;
123 double Vz(
const int i = 0)
const;
124 double T(
const int i = 0)
const;
132 const TLorentzVector&
Momentum(
const int i = 0 )
const;
133 double Px(
const int i = 0)
const;
134 double Py(
const int i = 0)
const;
135 double Pz(
const int i = 0)
const;
136 double E(
const int i = 0)
const;
137 double P(
const int i = 0)
const;
138 double Pt(
const int i = 0)
const;
142 double EndPx()
const;
143 double EndPy()
const;
144 double EndPz()
const;
156 void SetGvtx(TLorentzVector v);
161 TLorentzVector
GetGvtx()
const;
181 TLorentzVector
const& momentum );
183 TLorentzVector
const& momentum,
184 std::string
const& process);
210 #include <functional> 239 - std::pow(
fmass,2.)); }
262 TLorentzVector
const& momentum )
265 TLorentzVector
const& momentum,
266 std::string
const& process)
296 return (*lhs) < (*rhs);
302 #endif // SIMB_MCPARTICLE_H
double E(const int i=0) const
void Add(TLorentzVector const &p, TLorentzVector const &m)
unsigned int NumberTrajectoryPoints() const
const TVector3 & Polarization() const
void SparsifyTrajectory()
const TLorentzVector & Position(const int i=0) const
void AddDaughter(const int trackID)
double Py(const int i=0) const
friend std::ostream & operator<<(std::ostream &output, const simb::MCParticle &)
void AddTrajectoryPoint(TLorentzVector const &position, TLorentzVector const &momentum)
const TLorentzVector & EndPosition() const
static const int s_uninitialized
int FirstDaughter() const
const simb::MCTrajectory & Trajectory() const
double fmass
Mass; from PDG unless overridden Should be in GeV.
double Px(const int i=0) const
std::string fendprocess
end process for the particle
std::string Process() const
TLorentzVector GetGvtx() const
int NumberDaughters() const
int Daughter(const int i) const
void Sparsify(double margin=.1)
bool operator()(const simb::MCParticle *lhs, const simb::MCParticle *rhs)
double Pt(const int i=0) const
void SetPolarization(const TVector3 &p)
int frescatter
rescatter code
std::string EndProcess() const
MCParticle()
Don't write this as ROOT output.
double P(const int i=0) const
daughters_type fdaughters
Sorted list of daughters of this particle.
double T(const int i=0) const
bool operator<(const simb::MCParticle &other) const
std::string fprocess
Detector-simulation physics process that created the particle.
const TLorentzVector & Position(const size_type) const
The accessor methods described above.
std::set< int > daughters_type
void SetWeight(double wt)
void SetEndProcess(std::string s)
simb::MCTrajectory ftrajectory
particle trajectory (position,momentum)
double Vx(const int i=0) const
double fWeight
Assigned weight to this particle for MC tests.
const TLorentzVector & Momentum(const int i=0) const
double Pz(const int i=0) const
double Vz(const int i=0) const
int fstatus
Status code from generator, geant, etc.
TVector3 fpolarization
Polarization.
void SetRescatter(int code)
const TLorentzVector & Momentum(const size_type) const
const TLorentzVector & EndMomentum() const
MCParticle & operator=(const MCParticle &)=default
double Vy(const int i=0) const