48 #ifndef SIMB_MCTRAJECTORY_H 49 #define SIMB_MCTRAJECTORY_H 54 #include <TLorentzVector.h> 63 typedef std::vector< std::pair<TLorentzVector, TLorentzVector> >
list_type;
71 typedef std::vector< std::pair<size_t, unsigned char> >
ProcessMap;
84 const TLorentzVector& momentum );
87 const TLorentzVector&
Position(
const size_type )
const;
88 const TLorentzVector&
Momentum(
const size_type )
const;
89 double X(
const size_type i )
const;
90 double Y(
const size_type i )
const;
91 double Z(
const size_type i )
const;
92 double T(
const size_type i )
const;
93 double Px(
const size_type i )
const;
94 double Py(
const size_type i )
const;
95 double Pz(
const size_type i )
const;
96 double E(
const size_type i )
const;
106 const_iterator
begin()
const;
108 const_iterator
end()
const;
109 reverse_iterator
rbegin();
110 const_reverse_iterator
rbegin()
const;
111 reverse_iterator
rend();
112 const_reverse_iterator
rend()
const;
114 size_type
size()
const;
121 const value_type&
operator[](
const size_type i)
const;
122 const value_type&
at(
const size_type i)
const;
128 TLorentzVector
const& m );
129 void Add(TLorentzVector
const& p,
130 TLorentzVector
const& m );
131 void Add(TLorentzVector
const& p,
132 TLorentzVector
const& m,
133 std::string
const& process,
134 bool keepTransportation =
false);
136 unsigned char ProcessToKey(std::string
const& process)
const;
137 std::string
KeyToProcess(
unsigned char const& key)
const;
143 void Sparsify(
double margin = .1,
bool keep_second_to_last =
false);
182 const TLorentzVector& m )
186 const TLorentzVector& m ) {
push_back(p,m); }
190 #endif // SIMB_MCTRAJECTORY_H
void Add(TLorentzVector const &p, TLorentzVector const &m)
double Z(const size_type i) const
double X(const size_type i) const
void push_back(value_type const &v)
double E(const size_type i) const
reverse_iterator rbegin()
double Pz(const size_type i) const
const value_type & at(const size_type i) const
std::string KeyToProcess(unsigned char const &key) const
std::vector< std::pair< TLorentzVector, TLorentzVector > > list_type
unsigned char ProcessToKey(std::string const &process) const
list_type::value_type value_type
list_type::size_type size_type
list_type::difference_type difference_type
double Y(const size_type i) const
list_type::const_iterator const_iterator
ProcessMap fTrajectoryProcess
list_type::iterator iterator
const TLorentzVector & Position(const size_type) const
The accessor methods described above.
ProcessMap const & TrajectoryProcesses() const
list_type::reverse_iterator reverse_iterator
std::vector< std::pair< size_t, unsigned char > > ProcessMap
void swap(simb::MCTrajectory &other)
list_type::const_reverse_iterator const_reverse_iterator
void Sparsify(double margin=.1, bool keep_second_to_last=false)
double TotalLength() const
double T(const size_type i) const
double Px(const size_type i) const
const value_type & operator[](const size_type i) const
double Py(const size_type i) const
const TLorentzVector & Momentum(const size_type) const
friend std::ostream & operator<<(std::ostream &output, const MCTrajectory &)
list_type ftrajectory
The list of trajectory points.