61   using namespace KM3NETDAQ;
 
   63   typedef JParallelFileScanner< JTypeList<JDAQEvent, JEvt> >       JParallelFileScanner_t;
 
   64   typedef JParallelFileScanner_t::multi_pointer_type               multi_pointer_type;
 
   67   JParallelFileScanner_t  inputFile;
 
   74   size_t         numberOfPrefits;
 
   82     JParser<> zap(
"Program to perform intermediate fit of muon trajectory to data.");
 
   87     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
   99   catch(
const exception& error) {
 
  100     FATAL(error.what() << endl);
 
  108   const double TMAX_NS = 50.0;       
 
  113     load(detectorFile, detector);
 
  115   catch(
const JException& error) {
 
  119   const JModuleRouter moduleRouter(detector);
 
  126   JSuperFrame2D<JHit>        buffer;
 
  127   const JBuildL0<JHitL0>     buildL0;
 
  128   const JBuildL2<JHitL1>     buildL2(2, Tmax_ns, ctMin);
 
  131   typedef JRegressor<JLine3Z, JSimplex>  JRegressor_t;
 
  133   JRegressor_t fit(sigma_ns);
 
  135   fit.estimator.reset(
new JMEstimatorLorentzian());
 
  138   JRegressor_t::MAXIMUM_ITERATIONS = 10000;
 
  145   while (inputFile.hasNext()) {
 
  147     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  149     multi_pointer_type ps = inputFile.next();
 
  155     JEvt::iterator __end = evt->
end();
 
  158       __end = partition(evt->begin(), __end, JHistory::is_not_event(
JMUONSIMPLEX));
 
  161     if (evt->begin() != __end) {
 
  163       copy(evt->begin(), __end, back_inserter(out));
 
  165       if (numberOfPrefits > 0) {
 
  166         advance(__end = evt->begin(), min(numberOfPrefits, out.size()));
 
  169       partial_sort(evt->begin(), __end, evt->end(), 
qualitySorter);
 
  171       __end = partition(evt->begin(), __end, JHistory::is_event(evt->begin()->getHistory()));
 
  179       for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
 
  181         if (moduleRouter.hasModule(i->getModuleID())) {
 
  183           buffer(*i, moduleRouter.getModule(i->getModuleID()));
 
  185           buildL0(buffer, back_inserter(dataL0));
 
  186           buildL2(buffer, back_inserter(dataL1));
 
  193       for (JEvt::const_iterator track = evt->begin(); track != __end; ++track) {
 
  197         const JModel<JLine1Z> match(tz, roadWidth_m, 
JTimeRange(-TMAX_NS, +TMAX_NS));
 
  201         for (JDataL1_t::const_iterator i = dataL1.begin(); i != dataL1.end(); ++i) {
 
  214           data.reserve(data.size() + dataL0.size());
 
  216           JDataR1_t::iterator __end1 = data.end();      
 
  218           for (JDataL0_t::iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
 
  220             if (find_if(data.begin(), __end1, bind2nd(equal_to<JDAQModuleIdentifier>(), i->getModuleID())) == __end1) {
 
  236         fit.step[0] = JLine3Z(JLine1Z(JVector3D(0.5, 0.0, 0.0), 0.0));
 
  237         fit.step[1] = JLine3Z(JLine1Z(JVector3D(0.0, 0.5, 0.0), 0.0));
 
  238         fit.step[2] = JLine3Z(JLine1Z(JVector3D(0.0, 0.0, 0.0), 1.0));
 
  239         fit.step[3] = JLine3Z(JLine1Z(JVector3D(), 0.0), JVersor3Z(0.005, 0.0));
 
  240         fit.step[4] = JLine3Z(JLine1Z(JVector3D(), 0.0), JVersor3Z(0.0, 0.005));
 
  242         const int NDF = 
getCount(data.begin(), data.end()) - fit.step.size();
 
  246           const double chi2 = fit(JLine3Z(tz), data.begin(), data.end());
 
  248           JTrack3D tb(fit.value);
 
  265   JSingleFileScanner<JRemove<typelist, JEvt>::typelist> io(inputFile);
 
Utility class to parse command line options. 
 
double getCount(TH1D *hptr, int muon_threshold)
 
JFit getFit(const JHistory &history, const JTrack3D &track, const double Q, const int NDF, const double energy=0.0, const int status=0)
Get fit. 
 
JLimit JLimit_t
Type definition of limit. 
 
const_iterator< T > end() const 
Get end of data. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter. 
 
double getQuality(const double chi2, const int NDF)
Get quality of fit. 
 
bool qualitySorter(const JFIT::JFit &first, const JFIT::JFit &second)
Comparison of fit results. 
 
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. 
 
JPosition3D & rotate(const JRotation3D &R)
Rotate. 
 
#define DEBUG(A)
Message macros. 
 
JPosition3D getPosition(const Vec &v)
Get position.