Declaration Member function that actually performs the reconstruction.
Member function definition.
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());