1 #ifndef __JAANET__JLORENTZBOOST__
2 #define __JAANET__JLORENTZBOOST__
21 #include "Math/Vector4D.h"
22 #include "Math/GenVector/Boost.h"
23 #include "Math/GenVector/LorentzVector.h"
34 namespace JPP {
using namespace JAANET; }
38 using ROOT::Math::Boost;
39 using ROOT::Math::LorentzVector;
72 const double beta2 = this->BetaVector().Mag2();
74 return 1.0 / sqrt(1.0 - beta2);
84 template<
class CoordSystem>
85 LorentzVector<CoordSystem>
operator()(
const LorentzVector<CoordSystem>& x4)
const
87 return static_cast<const Boost&
>(*this)(x4);
99 using namespace ROOT::Math;
102 const XYZTVector x1 = (*this)(x0);
118 const double mass)
const
121 using namespace ROOT::Math;
126 const XYZTVector x1 = (*this)(x0);
128 const PxPyPzEVector p0(Ekin * track.
getDX(), Ekin * track.
getDY(), Ekin * track.
getDZ(), track.
getE());
129 const PxPyPzEVector
p1 = (*this)(p0);
131 const JVector3D pos1(x1.X(), x1.Y(), x1.Z());
132 const JVersor3D dir1(
p1.X(),
p1.Y(),
p1.Z());
151 using namespace ROOT::Math;
160 const PxPyPzEVector p0(Ekin.
x, Ekin.
y, Ekin.
z, track.
E);
161 const PxPyPzEVector
p1 = (*this)(p0);
164 track.
dir =
Vec(p1.Px(), p1.Py(), p1.Pz());
196 const double dt = hit.
t - hit.
tdc;
202 hit.
t = vertex.
getT();
219 for (
T i = __begin;
i != __end; ++
i) {
234 (*this)(
event.mc_trks.begin(),
event.mc_trks.end());
235 (*this)(
event.mc_hits.begin(),
event.mc_hits.end());
236 (*this)(
event.trks.begin(),
event.trks.end());
237 (*this)(
event.hits.begin(),
event.hits.end());
257 return Boost(beta.
x, beta.
y, beta.
z);
260 THROW(
JValueOutOfRange,
"getBoostToCOM(): Given event does not correspond to a neutrino interaction.");
void operator()(Hit &hit) const
Lorentz boost operator.
void boostToCOM(Evt &event)
Boost event to the Center of Mass (COM) frame.
double t
track time [ns] (when the particle is at pos )
double getE0(const Evt &evt)
Get initial state energy of a neutrino interaction.
bool has_neutrino(const Evt &evt)
Test whether given event has an incoming neutrino.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
JLorentzBoost getBoostToCOM(const Evt &event)
Get Lorentz boost to the Center of Mass (COM) frame for a given neutrino interaction.
unsigned int tdc
hit tdc (=time in ns)
double getDistance(const JVector3D &pos) const
Get distance to point.
double E
Energy [GeV] (either MC truth or reconstructed)
void operator()(JTrack3E &track, const double mass) const
Lorentz boost operator.
double len() const
Get length.
JLorentzBoost()
Default constructor.
bool is_finalstate(const Trk &track)
Test whether given track corresponds to a final state particle.
LorentzVector< CoordSystem > operator()(const LorentzVector< CoordSystem > &x4) const
Lorentz boost operator.
The Vec class is a straightforward 3-d vector, which also works in pyroot.
void operator()(Evt &event) const
Lorentz boost operator.
double getKineticEnergy(const double E, const double m)
Get kinetic energy of particle with given mass.
double getE() const
Get energy.
double getDY() const
Get y direction.
double getDX() const
Get x direction.
do set_variable OUTPUT_DIRECTORY $WORKDIR T
void setE(const double E)
Set energy.
JPosition3D getPosition(const Vec &pos)
Get position.
double len
length, if applicable [m]
JLorentzBoost(const Boost &boost)
Copy constructor.
static const int TRK_ST_ININUCLEI
Initial state nuclei (gseagen)
double getY() const
Get y position.
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
Auxiliary class for performing Lorentz boosts.
bool is_initialstate(const Trk &track)
Test whether given track corresponds to an initial state particle.
void setT(const double time)
Set time.
Vec & normalize()
Normalise this vector.
int status
MC status code, see km3net-dataformat/definitions/trkmembers.csv for values.
Vec pos
postion [m] of the track at time t
void setDirection(const JDirection3D &dir)
Set direction.
const double getSpeedOfLight()
Get speed of light.
double getGamma() const
Retrieve gamma factor.
void operator()(Trk &track) const
Lorentz boost operator.
double t
hit time (from tdc+calibration or MC truth)
void operator()(T __begin, T __end) const
Lorentz boost operator.
double getX() const
Get x position.
Data structure for position in three dimensions.
Exception for accessing a value in a collection that is outside of its range.
void operator()(JVertex3D &vertex) const
Lorentz boost operator.
const Trk & get_neutrino(const Evt &evt)
Get incoming neutrino.
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
double getZ() const
Get z position.
double getDZ() const
Get z direction.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
void setPosition(const JVector3D &pos)
Set position.