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 {
*fatal Wrong number of arguments esac JCookie sh JRuns D $DETECTOR d sort n k
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.
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.
static struct JTRIGGER::@69 clusterize
Anonymous structure for clustering of hits.
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.
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.
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
static struct JTRIGGER::@71 clusterizeWeight
Anonymous struct for weighed clustering 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.
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.
static struct JRECONSTRUCTION::JMuonPrefit::@52 cmz
Auxiliary data structure for sorting of hits.
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.