code: public static Ransac<TrifocalTensor, AssociatedTriple>
  	trifocalRansac( @Nullable ConfigTrifocal trifocal ,
  					@Nullable ConfigTrifocalError error,
  					@Nonnull ConfigRansac ransac ) {
  		if( trifocal == null )
  			trifocal = new ConfigTrifocal();
  		if( error == null )
  			error = new ConfigTrifocalError();
  
  		trifocal.checkValidity();
  
  		double ransacTol;
  		DistanceFromModel<TrifocalTensor,AssociatedTriple> distance;
  
  		switch( error.model) {
  			case REPROJECTION: {
  				ransacTol = 3.0*ransac.inlierThreshold*ransac.inlierThreshold;
  				distance = new DistanceTrifocalReprojectionSq();
  			} break;
  			case REPROJECTION_REFINE:
  				ransacTol = 3.0*ransac.inlierThreshold*ransac.inlierThreshold;
  				distance = new DistanceTrifocalReprojectionSq(error.converge.gtol,error.converge.maxIterations);
  				break;
  			case POINT_TRANSFER:
  				ransacTol = 2.0*ransac.inlierThreshold*ransac.inlierThreshold;
  				distance = new DistanceTrifocalTransferSq();
  				break;
  			default:
  				throw new IllegalArgumentException("Unknown error model "+error.model);
  		}
  
  		Estimate1ofTrifocalTensor estimator = FactoryMultiView.trifocal_1(trifocal);
  		ModelManager<TrifocalTensor> manager = new ManagerTrifocalTensor();
  		ModelGenerator<TrifocalTensor,AssociatedTriple> generator = new GenerateTrifocalTensor(estimator);
  
  		return new Ransac<>(ransac.randSeed, manager, generator, distance, ransac.maxIterations, ransacTol);
  	}
docs: Robust RANSAC based estimator for
  
  @see FactoryMultiView#trifocal_1
  
  @param trifocal Configuration for trifocal tensor calculation
  @param error Configuration for how trifocal error is computed
  @param ransac Configuration for RANSAC
  @return RANSAC