Go to the documentation of this file. 1 #ifndef JMUONSIMPLEX_INCLUDE
2 #define JMUONSIMPLEX_INCLUDE
102 if ( InPreFits.empty() )
return;
122 JRegressor_t fit(sigma_ns);
127 JRegressor_t::MAXIMUM_ITERATIONS = 10000;
129 const double TMAX_NS = 50.0;
131 JEvt::iterator __end = InPreFits.end();
137 if (InPreFits.begin() != __end) {
139 std::copy(InPreFits.begin(), __end, std::back_inserter(OutFits));
141 if (numberOfPrefits > 0) {
142 std::advance(__end = InPreFits.begin(), std::min(numberOfPrefits, OutFits.size()));
145 std::partial_sort(InPreFits.begin(), __end, InPreFits.end(),
qualitySorter);
147 __end = std::partition( InPreFits.begin(), __end,
154 for (KM3NETDAQ::JDAQTimeslice::const_iterator i = timeSlice.begin();
155 i != timeSlice.end(); ++i) {
161 buildL0(buffer, std::back_inserter(dataL0));
162 buildL2(buffer, std::back_inserter(dataL1));
168 for (JFIT::JEvt::const_iterator track = InPreFits.begin(); track != __end; ++track) {
176 for (JDataL1_t::const_iterator i = dataL1.begin(); i != dataL1.end(); ++i) {
189 data.reserve(data.size() + dataL0.size());
191 JDataR1_t::iterator __end1 = data.end();
193 for (JDataL0_t::iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
195 if ( std::find_if( data.begin(), __end1,
196 std::bind2nd(std::equal_to<KM3NETDAQ::JDAQModuleIdentifier>(), i->getModuleID()))
218 const int NDF =
JFIT::getCount(data.begin(), data.end()) - fit.step.size();
222 const double chi2 = fit(
JFIT::JLine3Z(tz), data.begin(), data.end() );
226 track3D.rotate_back(R);
228 const double energy(0);
JFIT::JMuonSimplexParameters_t parameters_
Auxiliary classes and methods for linear and iterative data regression.
Data structure for fit of straight line in positive z-direction.
Data structure for L2 parameters.
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
Data structure for normalised vector in positive z-direction.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for set of track fit results.
void copy(const Head &from, JHead &to)
Copy header from from to to.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
Auxiliary class to match data points with given model.
Data structure for vector in three dimensions.
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
Template definition of a data regressor of given model.
Auxiliary class to test history.
Data structure for fit of straight line paralel to z-axis.
Auxiliary class to test history.
Reduced data structure for L1 hit.
bool hasModule(const JObjectID &id) const
Has module.
class to handle the Simplex angular reconstruction.
void getJEvt(const KM3NETDAQ::JDAQTimeslice &timeSlice, JFIT::JEvt &InPreFits, JFIT::JEvt &OutFits) const
Declaration of Member function that actually performs the reconstruction.
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.
Container for historical events.
2-dimensional frame with time calibrated data from one optical module.
double getQuality(const double chi2, const int NDF)
Get quality of fit.
JLANG::JSharedPointer< const JDETECTOR::JModuleRouter > router_
JPosition3D getPosition(const JFit &fit)
Get position.
JMuonSimplex(const JLANG::JSharedPointer< const JDETECTOR::JModuleRouter > &router, const JFIT::JMuonSimplexParameters_t ¶meters)
Parameterized constructor.
JMuonSimplex()
Default constructor.
JDirection3D getDirection(const JFit &fit)
Get direction.
int getCount(const JHitL0 &hit)
Get hit count.