1#ifndef __JSIRENE__JVISIBLEENERGYTOOLKIT__ 
    2#define __JSIRENE__JVISIBLEENERGYTOOLKIT__ 
   52    const double R_Earth = R_EARTH_KM * 1e3; 
 
 
   81    if (is_finalstate(track)) {
 
   83      const bool isMuon = is_muon(track);
 
   95        const double Lmuon = gWater.getX(track.
E, MASS_MUON / getSinThetaC());
 
   96        const double Leff  = (min(Lmuon, max(intersection.second, 0.0)) -
 
   97                              min(Lmuon, max(intersection.first,  0.0)));
 
  102        const double Emidpoint = gWater.getE(track.
E, Lmuon/2.0);
 
  104        const double dEb = gWater.getEb(track.
E, Leff);
 
  105        const double dEc = Leff / geanc();
 
  106        const double dEd = Leff * getDeltaRaysFromMuon(Emidpoint);
 
  108        Evis = dEb + dEc + dEd;
 
  111                 can.is_inside(getPosition(track))) {
 
  113        Evis = 
pythia(track.
type, getKineticEnergy(track));
 
 
  145                                 std::vector<Trk>::const_iterator __end,
 
  152    for (vector<Trk>::const_iterator track = __begin; track != __end; ++track) {
 
 
  170                                    std::vector<Trk>::const_iterator __end,
 
  175    Vec Evis(0.0, 0.0, 0.0);
 
  177    for (vector<Trk>::const_iterator track = __begin; track != __end; ++track) {
 
 
  230    const Trk& leading_lepton = get_leading_lepton(event);
 
  232    if (is_finalstate(leading_lepton)) {
 
  235      for (vector<Trk>::const_iterator track = event.
mc_trks.cbegin(); track != event.
mc_trks.cend(); ++track) {
 
  236        if (is_finalstate(*track) && track->
mother_id == leading_lepton.
id) { 
 
 
  259    Vec Evis(0.0, 0.0, 0.0);        
 
  261    const Trk& leading_lepton = get_leading_lepton(event);
 
  263    if (is_finalstate(leading_lepton)) {
 
  266      for (vector<Trk>::const_iterator track = event.
mc_trks.cbegin(); track != event.
mc_trks.cend(); ++track) {
 
  267        if (is_finalstate(*track) && track->
mother_id == leading_lepton.
id) { 
 
 
Definition of particle types.
 
Data structure for circle in two dimensions.
 
Data structure for vector in two dimensions.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
const JCylinder3D getMaximumContainmentVolume()
Forward function declarations.
 
double getVisibleEnergyLeadingLepton(const Trk &, const JCylinder3D &)
 
Vec getVisibleEnergyVectorLeadingLepton(const Evt &event, const JCylinder3D &can=getMaximumContainmentVolume())
Get visible energy vector of the leading lepton of a neutrino interaction.
 
double getVisibleEnergy(const Trk &, const JCylinder3D &)
Get the visible energy of a track.
 
static const JPythia pythia
Function object for relative light yield as a function of GEANT particle code.
 
Vec getVisibleEnergyVector(const Trk &track, const JCylinder3D &can=getMaximumContainmentVolume())
Get the visible energy vector of a track.
 
const char *const energy_lost_in_can
 
This file contains converted Fortran code from km3.
 
bool haveusr(const std::string &key) const
Check availability of user data of the item with given key.
 
double getusr(const std::string &key) const
Get user data item with given key.
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
 
std::vector< Trk > mc_trks
MC: list of MC truth tracks.
 
static const JPDB & getInstance()
Get particle data book.
 
The cylinder used for photon tracking.
 
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
 
int type
MC: particle type in PDG encoding.
 
double E
Energy [GeV] (either MC truth or reconstructed)
 
int mother_id
MC id of the parent particle.
 
The Vec class is a straightforward 3-d vector, which also works in pyroot.