1 #ifndef JSHOWERPREFIT_INCLUDE
2 #define JSHOWERPREFIT_INCLUDE
41 namespace JRECONSTRUCTION
87 const double STANDARD_DEVIATIONS = 3.0;
106 copy(dataL1.begin(), dataL1.end(), back_inserter(dataL0));
108 for (buffer_type::const_iterator
i = buffer.begin();
i != buffer.end(); ++
i) {
111 dataL0.push_back(*
i);
115 for (buffer_type::const_iterator
root = dataL1.begin();
root != dataL1.end(); ++
root) {
121 for (buffer_type::const_iterator
i = dataL0.begin();
i != dataL0.end(); ++
i) {
123 if((
root->getModuleIdentifier() !=
i->getModuleIdentifier() ) && matching(*
i)){
128 buffer_type::iterator __end1 =
clusterizeWeight(data.begin() + 1, data.end(), match3G);
133 double chi2 = numeric_limits<double>::max();
134 int NDF =
distance(data.begin(), __end1) - JEstimator_t::NUMBER_OF_PARAMETERS;
139 double ymin = numeric_limits<double>::max();
141 buffer_type::iterator __end2 = __end1;
144 JEstimator_t::NUMBER_OF_PARAMETERS; ++
n, --__end2) {
151 fit(data.begin(), __end2);
159 NDF =
distance(data.begin(), __end2) - JEstimator_t::NUMBER_OF_PARAMETERS;
167 ymin -= STANDARD_DEVIATIONS * STANDARD_DEVIATIONS;
172 const int number_of_outliers =
distance(data.begin(), __end1) - JEstimator_t::NUMBER_OF_PARAMETERS - 1;
174 buffer_type::iterator __end2 = __end1;
176 for (
int n = 0;
n <= number_of_outliers; ++
n) {
180 fit(data.begin(), __end2);
183 NDF =
distance(data.begin(), __end2) - JEstimator_t::NUMBER_OF_PARAMETERS;
190 buffer_type::iterator imax = __end2;
192 for (buffer_type::iterator
i = data.begin() + 1;
i != __end2; ++
i) {
202 if (ymax > STANDARD_DEVIATIONS * STANDARD_DEVIATIONS) {
204 swap(*imax, *__end2);
211 if (NDF >= 0 && chi2 > numeric_limits<double>::lowest()) {
217 out.rbegin()->setW(13, chi2);
218 out.rbegin()->setW(14, N);
int factoryLimit
factory limit for combinatorics
double getT() const
Get calibrated time of hit.
int numberOfOutliers
maximum number of outliers
static struct JTRIGGER::clusterizeWeight clusterizeWeight
double sigma_ns
time resolution [ns]
int getModuleID() const
Get module identifier.
JBinder2nd< JHit_t > JBind2nd(const JMatch< JHit_t > &match, const JHit_t &second)
Auxiliary method to create JBinder2nd object.
Linear fit of bright point (position and time) between hits (objects with position and time)...
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.
Data structure for vertex fit.
Router for direct addressing of module data in detector data structure.
JFit getFit(const JHistory &history, const JTrack3D &track, const double Q, const int NDF, const double energy=0.0, const int status=SINGLE_STAGE)
Get fit.
*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
Auxiliary class to convert binary JMatch operator and given hit to unary match operator.
class to handle first step of the shower reconstruction in ORCA: it reconstructs the shower vertex...
Basic data structure for time and time over threshold information of hit.
Data structure for fit parameters.
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
std::vector< hit_type > buffer_type
JShowerPrefit(const JShowerPrefitParameters_t ¶meters, const JModuleRouter &router, const int debug=0)
Parameterized constructor.
do JPlot2D f $WORKDIR canberra[${EMITTER}\] root
JEvt operator()(const KM3NETDAQ::JDAQEvent &event) const
Declaration of the operator that performs the reconstruction.
static struct JTRIGGER::JHitR1::compare compare
bool operator()(const hit_type &hit) const
Test match.
static const int JSHOWERPREFIT
The template JSharedPointer class can be used to share a pointer to an object.
const JModuleRouter & router
double ctMin
minimal cosine space angle between PMT axes
Direct access to module in detector data structure.
Data structure for L2 parameters.
Reduced data structure for L1 hit.
Linear fit of JFIT::JPoint4D.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
Data structure for set of track fit results.
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
int getCount(const T &hit)
Get hit count.
void copy(const Head &from, JHead &to)
Copy header from from to to.
double DMax_m
maximal distance to optical module [m]
Reduced data structure for L1 hit.
double getChi2(const double P)
Get chi2 corresponding to given probability.
Data structure for normalised vector in positive z-direction.
match_t(const hit_type &root, const double TMax_ns)
Constructor.
Auxiliary class to match hit to root hit.
Match operator for Cherenkov light from shower in any direction.
double TMaxLocal_ns
time window for local coincidences [ns]
JTRIGGER::JHitR1 hit_type