Jpp  18.4.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | List of all members
JRECONSTRUCTION::JMuonSimplex Struct Reference

Wrapper class to make intermediate fit of muon trajectory. More...

#include <JMuonSimplex.hh>

Inheritance diagram for JRECONSTRUCTION::JMuonSimplex:
JRECONSTRUCTION::JMuonSimplexParameters_t JFIT::JRegressor< JModel_t, JMinimiser_t > TObject

Public Types

typedef JRegressor< JLine3Z,
JSimplex
JRegressor_t
 
typedef JTRIGGER::JHitR1 hit_type
 
typedef std::vector< hit_typebuffer_type
 

Public Member Functions

 JMuonSimplex (const JMuonSimplexParameters_t &parameters, const JModuleRouter &router, const int debug=0)
 Constructor. More...
 
JEvt operator() (const KM3NETDAQ::JDAQEvent &event, const JEvt &in)
 Fit function. More...
 
JEvt operator() (const buffer_type &dataL0, const buffer_type &dataL1, const JEvt &in)
 Fit function. More...
 
void reset ()
 Reset fit parameters. More...
 
bool equals (const JMuonSimplexParameters_t &parameters) const
 Equality. More...
 
 ClassDef (JMuonSimplexParameters_t, 2)
 

Public Attributes

const JModuleRouterrouter
 
double sigma_ns
 time resolution [ns] More...
 
bool useL0
 option for L0 hit use More...
 
size_t numberOfPrefits
 number of prefits More...
 
double TMaxLocal_ns
 time window for local coincidences [ns] More...
 
double ctMin
 minimal cosine space angle between PMT axes More...
 
double roadWidth_m
 road width [m] More...
 
double TMin_ns
 minimal time w.r.t. Cherenkov hypothesis [ns] More...
 
double TMax_ns
 maximal time w.r.t. Cherenkov hypothesis [ns] More...
 
int NMax
 maximum number of iterations More...
 
bool reprocess
 reprocess More...
 

Detailed Description

Wrapper class to make intermediate fit of muon trajectory.

The JMuonSimplex fit uses one or more start values (usually taken from the output of JMuonPrefit) and produces new start values for subsequent fits (usually JMuonGandalf).
All hits of which the PMT position lies within a set road width (JMuonSimplexParameters_t::roadWidth_m) and time is within a set window (JMuonSimplexParameters_t::TMin_ns, JMuonSimplexParameters_t::TMax_ns) around the Cherenkov hypothesis are taken.
In case there are multiple hits from the same PMT is the specified window, the first hit is taken and the other hits are discarded.
The chi-squared is based on an M-estimator of the time residuals.

Definition at line 65 of file JMuonSimplex.hh.

Member Typedef Documentation

Definition at line 69 of file JMuonSimplex.hh.

Definition at line 70 of file JMuonSimplex.hh.

Definition at line 71 of file JMuonSimplex.hh.

Constructor & Destructor Documentation

JRECONSTRUCTION::JMuonSimplex::JMuonSimplex ( const JMuonSimplexParameters_t parameters,
const JModuleRouter router,
const int  debug = 0 
)
inline

Constructor.

Parameters
parametersparameters
routermodule router
debugdebug

Definition at line 82 of file JMuonSimplex.hh.

84  :
85  JMuonSimplexParameters_t(parameters),
86  JRegressor_t(parameters.sigma_ns),
87  router(router)
88  {
89  using namespace JFIT;
90 
91  this->estimator.reset(new JMEstimatorLorentzian());
92 
95  }
static int debug
debug level (default is off).
Definition: JMessage.hh:45
const JModuleRouter & router
JRegressor< JLine3Z, JSimplex > JRegressor_t
Definition: JMuonSimplex.hh:69
static int MAXIMUM_ITERATIONS
maximal number of iterations
Definition: JSimplex.hh:237
Lorentzian M-estimator.
Definition: JMEstimator.hh:65
int debug
debug level

Member Function Documentation

JEvt JRECONSTRUCTION::JMuonSimplex::operator() ( const KM3NETDAQ::JDAQEvent event,
const JEvt in 
)
inline

Fit function.

Parameters
eventevent
instart values
Returns
fit results

Definition at line 105 of file JMuonSimplex.hh.

106  {
107  using namespace std;
108  using namespace JFIT;
109  using namespace JTRIGGER;
110 
111  const JBuildL0<hit_type> buildL0;
113 
114  buffer_type dataL0;
115  buffer_type dataL1;
116 
117  const KM3NETDAQ::JDAQTimeslice timeslice(event, true);
118  JSuperFrame2D<JHit> buffer;
119 
120  for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
121 
122  if (router.hasModule(i->getModuleID())) {
123 
124  buffer(*i, router.getModule(i->getModuleID()));
125 
126  if (useL0) {
127  buildL0(buffer, back_inserter(dataL0));
128  }
129  {
130  buildL2(buffer, back_inserter(dataL1));
131  }
132  }
133  }
134 
135  return (*this)(dataL0, dataL1, in);
136  }
const JModule & getModule(const JObjectID &id) const
Get module parameters.
const JModuleRouter & router
double TMaxLocal_ns
time window for local coincidences [ns]
Template L2 builder.
Definition: JBuildL2.hh:45
Data time slice.
Data structure for L2 parameters.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
bool hasModule(const JObjectID &id) const
Has module.
2-dimensional frame with time calibrated data from one optical module.
double ctMin
minimal cosine space angle between PMT axes
Template L0 hit builder.
Definition: JBuildL0.hh:35
JEvt JRECONSTRUCTION::JMuonSimplex::operator() ( const buffer_type dataL0,
const buffer_type dataL1,
const JEvt in 
)
inline

Fit function.

Parameters
dataL0L0 hit data
dataL1L1 hit data
instart values
Returns
fit results

Definition at line 147 of file JMuonSimplex.hh.

150  {
151  using namespace std;
152  using namespace JFIT;
153  using namespace JGEOMETRY3D;
154  using namespace JLANG;
155 
156  JEvt out;
157 
159 
160  data.reserve(dataL0.size() +
161  dataL1.size());
162 
163 
164  for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
165 
166  const JRotation3D R (getDirection(*track));
167  const JLine1Z tz(getPosition (*track).rotate(R), track->getT());
169 
170  data.clear();
171 
172  for (buffer_type::const_iterator i = dataL1.begin(); i != dataL1.end(); ++i) {
173 
174  hit_type hit(*i);
175 
176  hit.rotate(R);
177 
178  if (match(hit)) {
179  data.push_back(hit);
180  }
181  }
182 
183  if (useL0) {
184 
185  buffer_type::iterator __end = data.end();
186 
187  for (buffer_type::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
188 
189  if (find_if(data.begin(), __end, make_predicate(&hit_type::getModuleID, i->getModuleID())) == __end) {
190 
191  hit_type hit(*i);
192 
193  hit.rotate(R);
194 
195  if (match(hit)) {
196  data.push_back(hit);
197  }
198  }
199  }
200  }
201 
202 
203  this->step.resize(5);
204 
205  this->step[0] = JLine3Z(JLine1Z(JVector3D(0.5, 0.0, 0.0), 0.0));
206  this->step[1] = JLine3Z(JLine1Z(JVector3D(0.0, 0.5, 0.0), 0.0));
207  this->step[2] = JLine3Z(JLine1Z(JVector3D(0.0, 0.0, 0.0), 1.0));
208  this->step[3] = JLine3Z(JLine1Z(JVector3D(), 0.0), JVersor3Z(0.005, 0.0));
209  this->step[4] = JLine3Z(JLine1Z(JVector3D(), 0.0), JVersor3Z(0.0, 0.005));
210 
211  const int NDF = getCount(data.begin(), data.end()) - this->step.size();
212 
213  if (NDF > 0) {
214 
215  const double chi2 = (*this)(JLine3Z(tz), data.begin(), data.end());
216 
217  JTrack3D tb(this->value);
218 
219  tb.rotate_back(R);
220 
221  out.push_back(getFit(JHistory(track->getHistory()).add(JMUONSIMPLEX), tb, getQuality(chi2, NDF), NDF));
222 
223  out.rbegin()->setW(track->getW());
224  }
225  }
226 
227  return out;
228  }
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member.
Definition: JPredicate.hh:128
int getModuleID() const
Get module identifier.
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]
Rotation matrix.
Definition: JRotation3D.hh:111
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.
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
Definition: JFit/JModel.hh:34
Data structure for fit of straight line in positive z-direction.
Definition: JLine3Z.hh:36
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
Data structure for vector in three dimensions.
Definition: JVector3D.hh:34
Acoustic event fit.
JDirection3D getDirection(const JFit &fit)
Get direction.
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
then JCookie sh JDataQuality D $DETECTOR_ID R
Definition: JDataQuality.sh:41
JFIT::JHistory JHistory
Definition: JHistory.hh:354
static const int JMUONSIMPLEX
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
Definition: JMatrixNZ.sh:106
Data structure for fit of straight line paralel to z-axis.
Definition: JLine1Z.hh:27
int getCount(const T &hit)
Get hit count.
JPosition3D getPosition(const JFit &fit)
Get position.
Data structure for normalised vector in positive z-direction.
Definition: JVersor3Z.hh:39
JPosition3D & rotate(const JRotation3D &R)
Rotate.
Definition: JPosition3D.hh:186
JTOOLS::JRange< double > JTimeRange
Type definition for time range (unit [s]).
void JRECONSTRUCTION::JMuonSimplexParameters_t::reset ( )
inlineinherited

Reset fit parameters.

Definition at line 39 of file JMuonSimplexParameters_t.hh.

40  {
41  sigma_ns = 3;
42  useL0 = true;
43  numberOfPrefits = 0;
44  TMaxLocal_ns = 15.0;
45  ctMin = 0.0;
46  roadWidth_m = 200.0;
47  TMin_ns = -50.0;
48  TMax_ns = +50.0;
49  NMax = 1000;
50  reprocess = false;
51  }
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]
double TMaxLocal_ns
time window for local coincidences [ns]
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
double ctMin
minimal cosine space angle between PMT axes
bool JRECONSTRUCTION::JMuonSimplexParameters_t::equals ( const JMuonSimplexParameters_t parameters) const
inlineinherited

Equality.

Parameters
parametersfit parameters
Returns
true if equals; else false

Definition at line 59 of file JMuonSimplexParameters_t.hh.

60  {
61  return (this->sigma_ns == parameters.sigma_ns &&
62  this->useL0 == parameters.useL0 &&
63  this->numberOfPrefits == parameters.numberOfPrefits &&
64  this->TMaxLocal_ns == parameters.TMaxLocal_ns &&
65  this->ctMin == parameters.ctMin &&
66  this->roadWidth_m == parameters.roadWidth_m &&
67  this->TMin_ns == parameters.TMin_ns &&
68  this->TMax_ns == parameters.TMax_ns &&
69  this->NMax == parameters.NMax &&
70  this->reprocess == parameters.reprocess);
71  }
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]
double TMaxLocal_ns
time window for local coincidences [ns]
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison nIn this
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
double ctMin
minimal cosine space angle between PMT axes
JRECONSTRUCTION::JMuonSimplexParameters_t::ClassDef ( JMuonSimplexParameters_t  ,
 
)
inherited

Member Data Documentation

const JModuleRouter& JRECONSTRUCTION::JMuonSimplex::router

Definition at line 231 of file JMuonSimplex.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::sigma_ns
inherited

time resolution [ns]

Definition at line 75 of file JMuonSimplexParameters_t.hh.

bool JRECONSTRUCTION::JMuonSimplexParameters_t::useL0
inherited

option for L0 hit use

Definition at line 76 of file JMuonSimplexParameters_t.hh.

size_t JRECONSTRUCTION::JMuonSimplexParameters_t::numberOfPrefits
inherited

number of prefits

Definition at line 77 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::TMaxLocal_ns
inherited

time window for local coincidences [ns]

Definition at line 78 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::ctMin
inherited

minimal cosine space angle between PMT axes

Definition at line 79 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::roadWidth_m
inherited

road width [m]

Definition at line 80 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::TMin_ns
inherited

minimal time w.r.t. Cherenkov hypothesis [ns]

Definition at line 81 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::TMax_ns
inherited

maximal time w.r.t. Cherenkov hypothesis [ns]

Definition at line 82 of file JMuonSimplexParameters_t.hh.

int JRECONSTRUCTION::JMuonSimplexParameters_t::NMax
inherited

maximum number of iterations

Definition at line 83 of file JMuonSimplexParameters_t.hh.

bool JRECONSTRUCTION::JMuonSimplexParameters_t::reprocess
inherited

reprocess

Definition at line 84 of file JMuonSimplexParameters_t.hh.


The documentation for this struct was generated from the following file: