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.