72   using namespace KM3NETDAQ;
 
   74   typedef JParallelFileScanner< JTypeList<JDAQEvent, JEvt> >       JParallelFileScanner_t;
 
   75   typedef JParallelFileScanner_t::multi_pointer_type               multi_pointer_type;
 
   78   JParallelFileScanner_t  inputFile;
 
   86   size_t           numberOfPrefits;
 
   93     JParser<> zap(
"Program to perform PDF fit of muon trajectory to data.");
 
   98     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
  100     zap[
'R'] = 
make_field(roadWidth_m)         = numeric_limits<double>::max();
 
  104     zap[
's'] = 
make_field(start)               = JStart(1.0e-3, 1.0e-2);
 
  110   catch(
const exception& error) {
 
  111     FATAL(error.what() << endl);
 
  122     load(detectorFile, detector);
 
  124   catch(
const JException& error) {
 
  128   const JModuleRouter moduleRouter(detector);
 
  131   const JBuildL0<JHitL0>  buildL0;
 
  134   typedef JRegressor<JEnergy>  JRegressor_t;
 
  137   JRegressor_t::T_ns  = T_ns;
 
  140   JRegressor_t fit(pdfFile);
 
  142   if (fit.getRmax() < roadWidth_m) {
 
  143     roadWidth_m = fit.getRmax();
 
  151   while (inputFile.hasNext()) {
 
  153     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  155     multi_pointer_type ps = inputFile.next();
 
  161     JEvt::iterator __end = evt->
end();
 
  164       __end = partition(evt->begin(), __end, JHistory::is_not_event(
JMUONSTART));
 
  167     if (evt->begin() != __end) {
 
  169       copy(evt->begin(), __end, back_inserter(out));
 
  171       if (numberOfPrefits > 0) {
 
  172         advance(__end = evt->begin(), min(numberOfPrefits, out.size()));
 
  175       partial_sort(evt->begin(), __end, evt->end(), 
qualitySorter);
 
  177       __end = partition(evt->begin(), __end, JHistory::is_event(evt->begin()->getHistory()));
 
  182       buildL0(*tev, moduleRouter, 
true, back_inserter(dataL0));
 
  185       for (JEvt::iterator track = evt->begin(); track != __end; ++track) {
 
  189         const JModel<JLine1Z> match(tz, roadWidth_m, T_ns);
 
  194         for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
 
  201             top.insert(hit.getModuleIdentifier());
 
  208         const JDetectorSubset_t subdetector(detector, 
getAxis(*track), roadWidth_m);
 
  210         for (JDetector::const_iterator module = subdetector.begin(); module != subdetector.end(); ++module) {
 
  212           size_t count = top.count(module->getID());
 
  215             data.push_back(JNPEHit(fit.getNPE(*module, rates_Hz), count));
 
  223         double npe_total = 0.0;     
 
  233           if (track_start == data. end()) { track_start = data. begin(); }
 
  234           if (track_end   == data.rend()) { track_end   = data.rbegin(); }
 
  236           Zmin = track_start->getZ();
 
  237           Zmax = track_end  ->getZ();
 
  241             if (i->getZ() <= 0.0) {
 
  245             npe_total += i->getYA();
 
  252                   FIXED(6,4) << i->getY0() << 
' ' <<
 
  253                   FIXED(6,4) << i->getYA() << 
' ' <<
 
  254                   setw(1)    << i->getN()  << 
' ' <<
 
  255                   FIXED(6,4) << i->getP()  << endl);
 
  258           DEBUG(
" -->   " << 
FIXED(6,1) << Zmin << 
' ' << 
FIXED(6,1) << Zmax << endl);
 
  281   JSingleFileScanner<JRemove<typelist, JEvt>::typelist> io(inputFile);
 
Utility class to parse command line options. 
 
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member. 
 
Auxiliary data structure for floating point format specification. 
 
JLimit JLimit_t
Type definition of limit. 
 
const_iterator< T > end() const 
Get end of data. 
 
T & getInstance(const T &object)
Get static instance from temporary object. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
JAxis3D getAxis(const Trk &track)
Get axis. 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
true vertex position along track [m] from JCopy.cc 
 
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter. 
 
number of photo-electrons up to the barycentre from JStart.cc 
 
bool qualitySorter(const JFIT::JFit &first, const JFIT::JFit &second)
Comparison of fit results. 
 
distance between first and last hits in metres from JStart.cc 
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
JDirection3D getDirection(const Vec &v)
Get direction. 
 
const JLimit & getLimit() const 
Get limit. 
 
number of photo-electrons along the whole track from JStart.cc 
 
JPosition3D & rotate(const JRotation3D &R)
Rotate. 
 
#define DEBUG(A)
Message macros. 
 
JPosition3D getPosition(const Vec &v)
Get position.