Fit function. 
  149    {
  152 
  153      const double STANDARD_DEVIATIONS       = 3.0;
  154 
  156      
  158      
  160 
  163      
  165 
  166      for (buffer_type::const_iterator 
root = dataL1.begin(); 
root != dataL1.end(); ++
root) {
 
  167 
  169      
  171      
  172        for (buffer_type::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
  173        
  174          if(( 
root->getModuleIdentifier() != i->getModuleIdentifier() ) && matching(*i)){
 
  176          }
  177        }
  178        
  180      
  181        
  182        JEstimator_t fit;
  184        double    chi2 = numeric_limits<double>::max();
  185        int       NDF  = 
distance(
data.begin(), __end1) - JEstimator_t::NUMBER_OF_PARAMETERS;
 
  187 
  188        if(NDF > 0){
  190          
  191            double ymin = numeric_limits<double>::max();
  192      
  193            buffer_type::iterator __end2 = __end1;
  194 
  196                   JEstimator_t::NUMBER_OF_PARAMETERS; ++
n, --__end2) {
 
  197        
  199 
  200              do {
  201                try {
  202            
  203                  fit(
data.begin(), __end2);
 
  204                  
  206 
  207                  if (y < ymin) {
  209                    vx   = fit;
  210                    chi2 = ymin;
  211                    NDF  = 
distance(
data.begin(), __end2) - JEstimator_t::NUMBER_OF_PARAMETERS;
 
  213                  }
  214                }
  216          
  218        
  219              ymin -= STANDARD_DEVIATIONS * STANDARD_DEVIATIONS;
  220            }
  221            
  222          } else {
  223 
  224            const int number_of_outliers = 
distance(
data.begin(), __end1) - JEstimator_t::NUMBER_OF_PARAMETERS - 1;
 
  225 
  226            buffer_type::iterator __end2 = __end1;
  227 
  228            for (
int n = 0; 
n <= number_of_outliers; ++
n) {       
 
  229 
  230              try{      
  231 
  232                fit(
data.begin(), __end2);
 
  233                vx   = fit;
  235                NDF  = 
distance(
data.begin(), __end2) - JEstimator_t::NUMBER_OF_PARAMETERS;
 
  237                
  238              }
  240 
  241              double                ymax = 0;
  242              buffer_type::iterator imax = __end2;
  243 
  244              for (buffer_type::iterator i = 
data.begin() + 1; i != __end2; ++i) {
 
  245 
  247 
  248                if (y > ymax) {
  250                  imax = i;
  251                }
  252              }
  253 
  254              if (ymax > STANDARD_DEVIATIONS * STANDARD_DEVIATIONS) {   
  255                --__end2;
  256                swap(*imax, *__end2);     
  257              } else {
  258                break;
  259              }
  260            }   
  261          }
  262  
  264 
  265          
  266 
  269 
  270        }
  271      }
  272 
  274 
  275      size_t solutions = out.size();
  276 
  277      for(size_t i=0; i < solutions; i++){
  282                if (x != 0 || y != 0 || z != 0 || t != 0) {
  283                  
  284                  out.push_back(
getFit(event(),
 
  286                                       0,
  287                                       0));
  288                  
  289                  
  290 
  293 
  294                }
  295              }
  296            }
  297          }
  298        }
  299      }
  300      
  301      
  303 
  304        
  305      
  306        JFIT::JEvt::iterator __end = out.end();
  307 
  309 
  311 
  313 
  314          out.erase(__end, out.end());
  315 
  316        } else {
  317 
  319        }
  320 
  321      } else {
  322      
  324      }
  325 
  326      return out;
  327    }
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Template definition of linear fit.
 
Data structure for vertex fit.
 
Data structure for position in three dimensions.
 
Data structure for normalised vector in positive z-direction.
 
Auxiliary class to convert binary JMatch operator and given hit to unary match operator.
 
static const struct JTRIGGER::JHitR1::compare compare
 
static const int JSHOWERPREFIT
 
static const int JPP_COVERAGE_POSITION
coverage of dynamic position calibration from any Jpp application
 
static const int JPP_COVERAGE_ORIENTATION
coverage of dynamic orientation calibration from any Jpp application
 
double getChi2(const double P)
Get chi2 corresponding to given probability.
 
size_t getCount(const array_type< T > &buffer, const JCompare_t &compare)
Count number of unique values.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
 
JPosition3D getPosition(const JFit &fit)
Get position.
 
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
 
JFit getFit(const JHistory &history, const JTrack3D &track, const double Q, const int NDF, const double energy=0.0, const int status=SINGLE_STAGE)
Get fit.
 
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
 
JBinder2nd< JHit_t > JBind2nd(const JMatch< JHit_t > &match, const JHit_t &second)
Auxiliary method to create JBinder2nd object.
 
JHitIterator_t clusterizeWeight(JHitIterator_t __begin, JHitIterator_t __end, const JMatch_t &match)
Partition data according given binary match operator.
 
double sigma_ns
time resolution [ns]
 
int factoryLimit
factory limit for combinatorics
 
int numberOfOutliers
maximum number of outliers
 
int time_grid_ns
edge [ns] of the time grid
 
int pos_step_m
step in [m] of position grid
 
int pos_grid_m
edge [m] of the position grid
 
double DMax_m
maximal distance to optical module [m]
 
size_t numberOfPrefits
number of prefits
 
size_t numberOfGrids
number of prefits to be used to build a grid around
 
int time_step_ns
step in [ns] of time grid