1 #ifndef __JRECONSTRUCTION__JMUONPREFIT__
2 #define __JRECONSTRUCTION__JMUONPREFIT__
46 namespace JRECONSTRUCTION {}
47 namespace JPP {
using namespace JRECONSTRUCTION; }
49 namespace JRECONSTRUCTION {
81 using JEstimator_t::operator();
92 const int debug = 0) :
113 const int debug = 0) :
140 buildL2(event,
router, !
useL0, back_inserter(dataL1));
146 sort(dataL1.begin(), dataL1.end(),
compare);
148 buffer_type::iterator __end = dataL1.end();
150 __end = unique(dataL1.begin(), __end, equal_to<JDAQModuleIdentifier>());
154 dataL1.erase(__end, dataL1.end());
159 buildL0(event,
router,
true, back_inserter(dataL0));
161 __end = dataL0.end();
163 for (buffer_type::iterator i = dataL0.begin(); i != __end; ) {
165 if (match3B.count(*i, dataL1.begin(), dataL1.end()) != 0)
171 dataL0.erase(__end, dataL0.end());
174 return (*
this)(dataL0, dataL1);
191 const double STANDARD_DEVIATIONS = 3.0;
196 data.reserve(dataL0.size() +
201 for (JOmega3D_t::const_iterator dir =
omega.begin(); dir !=
omega.end(); ++dir) {
206 buffer_type::iterator __end =
copy(dataL1.begin(), dataL1.end(),
data.begin());
208 for (buffer_type::iterator i =
data.begin(); i != __end; ++i) {
219 partial_sort(
data.begin(), __end,
data.end(),
cmz);
229 buffer_type::iterator p = __end;
230 buffer_type::iterator q =
copy(dataL0.begin(), dataL0.end(), p);
232 for (buffer_type::iterator i = p; i != q; ++i) {
234 if (find_if(
data.begin(), __end, bind2nd(equal_to<JDAQModuleIdentifier>(), i->getModuleID())) == __end) {
238 if (match1D.count(*i,
data.begin(), __end) != 0) {
249 if (
distance(
data.begin(), __end) <= NUMBER_OF_PARAMETERS) {
257 double chi2 = numeric_limits<double>::max();
258 int NDF =
distance(
data.begin(), __end) - NUMBER_OF_PARAMETERS;
266 if (number_of_outliers > NDF - 1) {
267 number_of_outliers = NDF - 1;
270 double ymin = numeric_limits<double>::max();
272 buffer_type::iterator __end1 = __end;
274 for (
int n = 0;
n <= number_of_outliers; ++
n, --__end1) {
286 (*this)(
data.begin(), __end1);
295 if (y <= -(STANDARD_DEVIATIONS * STANDARD_DEVIATIONS)) {
297 WARNING(endl <<
"chi2(1) " << y << endl);
309 NDF =
distance(
data.begin(), __end1) - NUMBER_OF_PARAMETERS;
318 ymin -= STANDARD_DEVIATIONS * STANDARD_DEVIATIONS;
323 const int number_of_outliers = NDF - 1;
327 (*this)(
data.begin(), __end);
334 for (
int n = 0;
n <= number_of_outliers; ++
n) {
339 for (
size_t i = 0; i !=
Y.size(); ++i) {
349 if (ymax < STANDARD_DEVIATIONS * STANDARD_DEVIATIONS) {
355 this->update(
data.begin(), __end,
V);
369 if (chi2 != numeric_limits<double>::max()) {
384 static const struct {
static struct JTRIGGER::@74 clusterize
Anonymous structure for clustering of hits.
JMuonPrefit(const JMuonPrefitParameters_t ¶meters, const JModuleRouter &router, const int debug=0)
Constructor.
Wrapper class to make pre-fit of muon trajectory.
Linear fit of straight line parallel to z-axis to set of hits (objects with position and time)...
Match operator for Cherenkov light from muon with given direction.
double getQuality(const double chi2, const int NDF)
Get quality of fit.
void set(const JVector3D &pos, T __begin, T __end, const double alpha, const double sigma)
Set co-variance matrix.
JPosition3D & rotate_back(const JRotation3D &R)
Rotate back.
JEvt operator()(const KM3NETDAQ::JDAQEvent &event)
Fit function.
Algorithms for hit clustering and sorting.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Router for direct addressing of module data in detector data structure.
then fatal No sound hydrophone file $HYDROPHONE_TXT fi JGraph f $HYDROPHONE_TXT o $HYDROPHONE_ROOT sort gr k
Data structure for fit parameters.
int getNumberOfPMTs(const JModule &module)
Get number of PMTs.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Direction set covering (part of) solid angle.
Linear fit of JFIT::JLine1Z.
Template definition of linear fit.
static const JModuleCounter getNumberOfModules
Function object to count unique modules.
void update(const size_t k, const double value)
Update inverted matrix at given diagonal element.
static struct JTRIGGER::@76 clusterizeWeight
Anonymous struct for weighed clustering of hits.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
static struct JRECONSTRUCTION::JMuonPrefit::@57 cmz
Auxiliary data structure for sorting of hits.
static const int JMUONPREFIT
Determination of the time residual vector of hits for a track along z-axis (JFIT::JLine1Z).
Match operator for Cherenkov light from muon in any direction.
Determination of the co-variance matrix of hits for a track along z-axis (JFIT::JLine1Z).
JTRIGGER::JHitR1 hit_type
do set_variable OUTPUT_DIRECTORY $WORKDIR T
JMuonPrefit(const JMuonPrefitParameters_t ¶meters, const JModuleRouter &router, const JOmega3D &omega, const int debug=0)
Constructor.
static const double PI
Mathematical constants.
void set(const JLine1Z &track, T __begin, T __end)
Set time residual vector.
then usage $script[distance] fi case set_variable R
General purpose messaging.
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
JEstimator< JLine1Z > JEstimator_t
void invert()
Invert matrix according LDU decomposition.
Direct access to module in detector data structure.
Data structure for L2 parameters.
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.
Reduced data structure for L1 hit.
Auxiliary class for permutations of L1 hits.
const JClass_t & getReference() const
Get reference to object.
const double getSpeedOfLight()
Get speed of light.
Data structure for set of track fit results.
alias put_queue eval echo n
Data structure for fit of straight line paralel to z-axis.
int getCount(const T &hit)
Get hit count.
void copy(const Head &from, JHead &to)
Copy header from from to to.
const JModuleRouter & router
Reduced data structure for L1 hit.
void configure()
Configure internal buffer(s).
JEvt operator()(const buffer_type &dataL0, const buffer_type &dataL1)
Fit function.
double getChi2(const double P)
Get chi2 corresponding to given probability.
std::vector< hit_type > buffer_type
then usage $script[input file[working directory[option]]] nWhere option can be N
3D match criterion with road width.