50 template<
class JHit_t>
69 const char*
const muon_t =
"muon";
86 typedef JTriggeredFileScanner_t::multi_pointer_type multi_pointer_type;
89 JLimit_t& numberOfEvents = inputFile.getLimit();
91 size_t numberOfPrefits;
102 JParser<> zap(
"Example program to histogram fit results.");
112 zap[
'O'] =
make_field(option) =
"LINE",
"LOGE",
"LINN",
"LOGN";
118 catch(
const exception& error) {
127 catch(
const exception& error) {
151 TH1D hx(
"hx",
NULL, 70, -3.0, +2.3);
172 if (option ==
"LINN") {
174 const double xmin = log((
double) 3);
175 const double xmax = log((
double) 300);
177 for (
double x = xmin,
dx = (xmax - xmin) / 20; x <= xmax; x +=
dx) {
178 X.push_back((
int)
exp(x));
181 }
else if (option ==
"LOGN") {
183 const double xmin =
log10((
double) 3);
184 const double xmax =
log10((
double) 400);
186 for (
double x = xmin,
dx = (xmax - xmin) / 20; x <= xmax; x +=
dx) {
210 while (inputFile.hasNext()) {
214 multi_pointer_type ps = inputFile.next();
248 if (muon == event->mc_trks.end()) {
260 const double E =
event->mc_trks[0].E;
263 if (option ==
"LINN")
265 else if (option ==
"LOGN")
276 if (evt->begin() == __end) {
282 if (numberOfPrefits > 0) {
284 JEvt::iterator
__q = __end;
286 advance(__end = evt->begin(), min(numberOfPrefits, (
size_t)
distance(evt->begin(),
__q)));
301 }
else if (
primary == neutrino_t) {
313 bool ok = (
Efit >= Emin_GeV);
331 hx.Fill(max(
log10(
beta), hx.GetXaxis()->GetXmin()));
344 hd.Fill((
tb.getPosition() -
ta.getPosition()).getLength());
370 ht.Fill(
tb.getT() -
ta.getT());
372 E_0.Fill(volume.
getX(E,
true));
384 NOTICE(
"Number of events input " <<
setw(8) << right <<
job.GetBinContent(1) <<
endl);
385 NOTICE(
"Number of events with muon " <<
setw(8) << right <<
job.GetBinContent(3) <<
endl);
386 NOTICE(
"Number of events with fit " <<
setw(8) << right <<
job.GetBinContent(4) <<
endl);
387 NOTICE(
"Number of events selected " <<
setw(8) << right <<
job.GetBinContent(5) <<
endl);
388 NOTICE(
"Number of events with neutrino " <<
setw(8) << right <<
job.GetBinContent(6) <<
endl);
389 NOTICE(
"Number of events contained " <<
setw(8) << right <<
job.GetBinContent(7) <<
endl);
395 for (
double q : {0.50, 0.90, 0.99}) {
General purpose messaging.
#define DEBUG(A)
Message macros.
int main(int argc, char **argv)
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
ROOT TTree parameter settings of various packages.
Synchronously read DAQ events and Monte Carlo events (and optionally other events).
Data structure for vector in two dimensions.
double getLengthSquared() const
Get length squared.
Data structure for position in three dimensions.
Template definition of a multi-dimensional oscillation probability interpolation table.
Auxiliary class to evaluate atmospheric muon hypothesis.
Auxiliary class to compare fit results with respect to a reference direction (e.g....
Auxiliary class to convert DAQ hit time to/from Monte Carlo hit time.
static const int JENERGY_ENERGY
uncorrected energy [GeV] see JRECONSTRUCTION::JMuonEnergy
static const int JSTART_LENGTH_METRES
distance between projected positions on the track of optical modules for which the response does not ...
Vec getOrigin(const JHead &header)
Get origin.
JDirection3D getDirection(const Vec &dir)
Get direction.
JTrack3E getTrack(const Trk &track)
Get track.
JCylinder3D getCylinder(const JHead &header)
Get cylinder corresponding to the positions of generated tracks (i.e.
bool has_neutrino(const Evt &evt)
Test whether given event has an incoming neutrino.
JPosition3D getPosition(const Vec &pos)
Get position.
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon.
Vec getOffset(const JHead &header)
Get offset.
const Trk & get_neutrino(const Evt &evt)
Get incoming neutrino.
size_t getCount(const array_type< T > &buffer, const JCompare_t &compare)
Count number of unique values.
const double getSpeedOfLight()
Get speed of light.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
Head getCommonHeader(const JMultipleFileScanner_t &file_list)
Get common Monte Carlo header.
KM3NeT DAQ data structures and auxiliaries.
const char *const neutrino_t
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
Auxiliary data structure for floating point format specification.
Auxiliary class for histogramming of effective volume.
Double_t getX(const Double_t E, double constrain=false) const
Get abscissa value.
Double_t getXmax() const
Get maximal abscissa value.
Double_t getXmin() const
Get minimal abscissa value.
Auxiliary class to test history.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
General purpose sorter of fit results.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
Reconstruction type dependent comparison of track quality.
Auxiliary include file for time conversion between DAQ/trigger hit and Monte Carlo hit.