57 JParser<> zap(
"Example program to verify generator data.");
61 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
67 catch(
const exception &error) {
68 FATAL(error.what() << endl);
75 TH1D h0 (
"h0",
"Fractional energy conservation",
77 TH1D h1 (
"h1",
"Fractional momentum conservation",
79 TH1D job(
"job",
"Particle types",
80 10001, -5000.5, +5000.5);
82 TH1D hv(
"hv",
"Visible energy as fraction of initial state energy",
84 TH1D ha(
"ha",
"Angle between neutrino-direction and visible-energy-weighted direction",
87 TH1D hn(
"hn",
"Number of muons per event",
89 TH1D he(
"he",
"Muon energies",
91 TH2D hp(
"hp",
"Muon positions",
102 while (inputFile.hasNext()) {
104 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
106 const Evt*
event = inputFile.next();
109 job.Fill((
double) track->type);
114 const Trk& neutrino =
event->mc_trks[0];
119 const double E0 =
getE0(*event);
120 const double E1 =
getE1(*event);
126 cout << endl <<
"--------------------------------------------------------" << endl;
127 cout <<
"event: " << setw(8) <<
event->mc_id <<
" energy [GeV] momentum (x, y, z) [GeV] distance [m]" << endl;
129 for (
size_t i = 0; i !=
event->mc_trks.size(); ++i) {
131 const Trk& track =
event->mc_trks[i];
134 cout << setw(32) << left << showpos << particle.
name <<
' ' <<
FIXED(7,3) << track.
E <<
" " <<
FIXED(7,3) << track.
E * track.
dir <<
" " <<
FIXED(7,3) << (track.
pos - neutrino.
pos).len() << endl;
136 cout << setw(32) << left <<
"balance:" <<
' ' <<
FIXED(7,3) << E0 - E1 <<
" " <<
FIXED(7,3) << P0 - P1 << endl;
139 hv.Fill(Evis.
len() / E0);
142 h0.Fill((E0 - E1)/E0);
143 h1.Fill((P0 - P1).len()/P0.
len());
158 hn.Fill((Double_t) n);
Vec getP1(const Evt &evt)
Get momentum vector of the final state of a neutrino interaction.
Data structure for vector in two dimensions.
Utility class to parse command line options.
std::string name
name of particle
Data structure for circle in two dimensions.
double getE0(const Evt &evt)
Get initial state energy of a neutrino interaction.
double getDot(const JNeutrinoDirection &first, const JNeutrinoDirection &second)
Dot product.
bool has_neutrino(const Evt &evt)
Test whether given event has an incoming neutrino.
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon.
double getE1(const Evt &evt)
Get final state energy of a neutrino interaction.
Auxiliary data structure for floating point format specification.
double E
Energy [GeV] (either MC truth or reconstructed)
double len() const
Get length.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
bool is_neutrino(const Trk &track)
Test whether given track is a neutrino.
Auxiliary class for defining the range of iterations of objects.
The Vec class is a straightforward 3-d vector, which also works in pyroot.
JDirection3D getDirection(const Vec &dir)
Get direction.
T & getInstance(const T &object)
Get static instance from temporary object.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
set_variable E_E log10(E_{fit}/E_{#mu})"
int type
MC: particle type in PDG encoding.
Auxiliary class to handle particle name, codes and mass.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
Vec pos
postion [m] of the track at time t
General purpose class for object reading from a list of file names.
const JLimit & getLimit() const
Get limit.
Vec getP0(const Evt &evt)
Get momentum vector of the initial state of a neutrino interaction.
Vec getVisibleEnergy(const Trk &track, const JCylinder3D &can)
Get the visible energy of a track.
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
#define DEBUG(A)
Message macros.
The cylinder used for photon tracking.