1 #ifndef JMUONPREFIT_INCLUDE 
    2 #define JMUONPREFIT_INCLUDE 
  151   const int    FACTORY_LIMIT          =   8;                                
 
  152   const double STANDARD_DEVIATIONS    =   3.0;                              
 
  153   const double HIT_OFF                =   1.0e3 * sigma_ns * sigma_ns;      
 
  154   const int    NUMBER_OF_L1HITS       =  (useL0 ? 1 : 4);
 
  155   const int    MAXIMUM_NUMBER_OF_HITS =  50; 
 
  172   buildL0( timeSliceBuildL0, *
router_, back_inserter(dataL0) );
 
  173   buildL2( timeSliceBuildL2, *
router_, back_inserter(dataL1) );
 
  177   JDataL1_t::iterator __end = std::unique(dataL1.begin(), dataL1.end(), 
 
  178                                           std::equal_to<KM3NETDAQ::JDAQModuleIdentifier>()
 
  183   if (
std::distance(dataL1.begin(), __end) >= NUMBER_OF_L1HITS) {
 
  187     for (JGEOMETRY3D::JOmega3D_t::const_iterator dir = 
omega_.begin(); dir != 
omega_.end(); ++dir) {
 
  193       std::copy(dataL1.begin(), __end, back_inserter(data));
 
  195       for (JDataR1_t::iterator i = data.begin(); i != data.end(); ++i) {
 
  200       JDataR1_t::iterator __end1 = data.end();
 
  205       if ( 
std::distance(data.begin(), __end1) > MAXIMUM_NUMBER_OF_HITS ) {
 
  207         std::advance(__end1 = data.begin(), MAXIMUM_NUMBER_OF_HITS);
 
  209         std::partial_sort(data.begin(), __end1, data.end(), 
cmz);
 
  217       if ( 
std::distance(data.begin(), __end1) < NUMBER_OF_L1HITS ) {
 
  223         data.erase(__end1, data.end());
 
  225         data.reserve(data.size() + dataL0.size());
 
  229         for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
 
  231           if ( std::find_if( data.begin(), __end1, 
 
  232                              std::bind2nd(std::equal_to<KM3NETDAQ::JDAQModuleIdentifier>(), i->getModuleID())
 
  238             if ( std::count_if(data.begin(), __end1, 
JBind2nd(match1D,hit)) >= NUMBER_OF_L1HITS ) {
 
  255       double   chi2 = std::numeric_limits<double>::max();
 
  262       if ( 
std::distance(data.begin(), __end1) <= FACTORY_LIMIT ) {
 
  264         double ymin = std::numeric_limits<double>::max();
 
  266         JDataR1_t::iterator __end2 = __end1;
 
  272           std::sort(data.begin(), __end1, compare);
 
  280               V.
set(fit, data.begin(), __end2, gridAngle_deg, sigma_ns);
 
  281               Y.
set(fit, data.begin(), __end2);
 
  290               }
else if (y < ymin) {
 
  302           ymin -= STANDARD_DEVIATIONS * STANDARD_DEVIATIONS;
 
  313           V.
set(fit, data.begin(), __end1, gridAngle_deg, sigma_ns);
 
  314           Y.
set(fit, data.begin(), __end1);
 
  321           for (
int n = 0; n <= number_of_outliers && NDF > 0; ++
n, --NDF) {
 
  326             for (
unsigned int i = 0; i != Y.size(); ++i) {
 
  333               } 
else if (y > ymax) {
 
  339             if (ymax < STANDARD_DEVIATIONS * STANDARD_DEVIATIONS) {
 
  345             fit.update(data.begin(), __end1, V);
 
  347             Y.
set(fit, data.begin(), __end1);
 
  362         const double energy(0);
 
  371     if (numberOfPrefits > 0) {
 
  373       JEvt::iterator __end = out.end();
 
  375       std::advance(__end = out.begin(), std::min(numberOfPrefits, out.size()));
 
  377       std::partial_sort(out.begin(), __end, out.end(), 
qualitySorter);
 
  381       if ( std::count_if(out.begin(), __end, 
 
  385         JEvt::iterator __begin = __end;
 
  386         JEvt::iterator __q     = std::partition(__begin, out.end(), 
 
  395       out.erase(__end, out.end());