Jpp
 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, 1)
 

Public Attributes

const JModuleRouterrouter
 
double sigma_ns
 
bool useL0
 
size_t numberOfPrefits
 
double TMaxLocal_ns
 
double ctMin
 
double roadWidth_m
 
double TMin_ns
 
double TMax_ns
 
bool reprocess
 

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 63 of file JMuonSimplex.hh.

Member Typedef Documentation

Definition at line 67 of file JMuonSimplex.hh.

Definition at line 68 of file JMuonSimplex.hh.

Definition at line 69 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 80 of file JMuonSimplex.hh.

82  :
83  JMuonSimplexParameters_t(parameters),
84  JRegressor_t(parameters.sigma_ns),
85  router(router)
86  {
87  using namespace JPP;
88 
89  this->estimator.reset(new JMEstimatorLorentzian());
90 
93  }
static int debug
debug level (default is off).
Definition: JMessage.hh:45
const JModuleRouter & router
JRegressor< JLine3Z, JSimplex > JRegressor_t
Definition: JMuonSimplex.hh:67
int debug
debug level
Definition: JSirene.cc:61
static int MAXIMUM_ITERATIONS
maximal number of iterations
Definition: JSimplex.hh:237
Lorentzian M-estimator.
Definition: JMEstimator.hh:79

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 103 of file JMuonSimplex.hh.

104  {
105  using namespace std;
106  using namespace JPP;
107 
108  const JBuildL0<hit_type> buildL0;
110 
111  buffer_type dataL0;
112  buffer_type dataL1;
113 
114  const KM3NETDAQ::JDAQTimeslice timeslice(event, true);
115  JSuperFrame2D<JHit> buffer;
116 
117  for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
118 
119  if (router.hasModule(i->getModuleID())) {
120 
121  buffer(*i, router.getModule(i->getModuleID()));
122 
123  if (useL0) {
124  buildL0(buffer, back_inserter(dataL0));
125  }
126  {
127  buildL2(buffer, back_inserter(dataL1));
128  }
129  }
130  }
131 
132  return (*this)(dataL0, dataL1, in);
133  }
const JModule & getModule(const JObjectID &id) const
Get module parameters.
const JModuleRouter & router
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Definition: JSirene.sh:45
Template L2 builder.
Definition: JBuildL2.hh:45
Data time slice.
std::vector< hit_type > buffer_type
Definition: JMuonSimplex.hh:69
Data structure for L2 parameters.
bool hasModule(const JObjectID &id) const
Has module.
2-dimensional frame with time calibrated data from one optical module.
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 144 of file JMuonSimplex.hh.

147  {
148  using namespace std;
149  using namespace JPP;
150 
151  JEvt out;
152 
153  buffer_type data;
154 
155  data.reserve(dataL0.size() +
156  dataL1.size());
157 
158 
159  for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
160 
161  const JRotation3D R (getDirection(*track));
162  const JLine1Z tz(getPosition (*track).rotate(R), track->getT());
164 
165  data.clear();
166 
167  for (buffer_type::const_iterator i = dataL1.begin(); i != dataL1.end(); ++i) {
168 
169  hit_type hit(*i);
170 
171  hit.rotate(R);
172 
173  if (match(hit)) {
174  data.push_back(hit);
175  }
176  }
177 
178  if (useL0) {
179 
180  buffer_type::iterator __end = data.end();
181 
182  for (buffer_type::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
183 
184  if (find_if(data.begin(), __end, bind2nd(equal_to<JDAQModuleIdentifier>(), i->getModuleID())) == __end) {
185 
186  hit_type hit(*i);
187 
188  hit.rotate(R);
189 
190  if (match(hit)) {
191  data.push_back(hit);
192  }
193  }
194  }
195  }
196 
197 
198  this->step.resize(5);
199 
200  this->step[0] = JLine3Z(JLine1Z(JVector3D(0.5, 0.0, 0.0), 0.0));
201  this->step[1] = JLine3Z(JLine1Z(JVector3D(0.0, 0.5, 0.0), 0.0));
202  this->step[2] = JLine3Z(JLine1Z(JVector3D(0.0, 0.0, 0.0), 1.0));
203  this->step[3] = JLine3Z(JLine1Z(JVector3D(), 0.0), JVersor3Z(0.005, 0.0));
204  this->step[4] = JLine3Z(JLine1Z(JVector3D(), 0.0), JVersor3Z(0.0, 0.005));
205 
206  const int NDF = getCount(data.begin(), data.end()) - this->step.size();
207 
208  if (NDF > 0) {
209 
210  const double chi2 = (*this)(JLine3Z(tz), data.begin(), data.end());
211 
212  JTrack3D tb(this->value);
213 
214  tb.rotate_back(R);
215 
216  out.push_back(getFit(JHistory(track->getHistory()).add(JMUONSIMPLEX), tb, getQuality(chi2, NDF), NDF));
217 
218  out.rbegin()->setW(track->getW());
219  }
220  }
221 
222  return out;
223  }
Rotation matrix.
Definition: JRotation3D.hh:111
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:35
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
Definition: JEvtToolkit.hh:206
JRange< double > JTimeRange
Type definition for time range.
Data structure for vector in three dimensions.
Definition: JVector3D.hh:33
JDirection3D getDirection(const JFit &fit)
Get direction.
Definition: JEvtToolkit.hh:85
then usage $script[distance] fi case set_variable R
Definition: JDrawLED.sh:40
std::vector< hit_type > buffer_type
Definition: JMuonSimplex.hh:69
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.
Definition: JEvtToolkit.hh:126
JFIT::JHistory JHistory
Definition: JHistory.hh:283
Data structure for set of track fit results.
Definition: JEvt.hh:294
static const int JMUONSIMPLEX
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.
Definition: JEvtToolkit.hh:73
Data structure for normalised vector in positive z-direction.
Definition: JVersor3Z.hh:37
JPosition3D & rotate(const JRotation3D &R)
Rotate.
Definition: JPosition3D.hh:185
void JRECONSTRUCTION::JMuonSimplexParameters_t::reset ( )
inlineinherited
bool JRECONSTRUCTION::JMuonSimplexParameters_t::equals ( const JMuonSimplexParameters_t parameters) const
inlineinherited

Equality.

Parameters
parametersfit parameters
Returns
true if equals; else false

Definition at line 58 of file JMuonSimplexParameters_t.hh.

59  {
60  return (this->sigma_ns == parameters.sigma_ns &&
61  this->useL0 == parameters.useL0 &&
62  this->numberOfPrefits == parameters.numberOfPrefits &&
63  this->TMaxLocal_ns == parameters.TMaxLocal_ns &&
64  this->ctMin == parameters.ctMin &&
65  this->roadWidth_m == parameters.roadWidth_m &&
66  this->TMin_ns == parameters.TMin_ns &&
67  this->TMax_ns == parameters.TMax_ns &&
68  this->reprocess == parameters.reprocess);
69  }
JRECONSTRUCTION::JMuonSimplexParameters_t::ClassDef ( JMuonSimplexParameters_t  ,
 
)
inherited

Member Data Documentation

const JModuleRouter& JRECONSTRUCTION::JMuonSimplex::router

Definition at line 226 of file JMuonSimplex.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::sigma_ns
inherited

Definition at line 73 of file JMuonSimplexParameters_t.hh.

bool JRECONSTRUCTION::JMuonSimplexParameters_t::useL0
inherited

Definition at line 74 of file JMuonSimplexParameters_t.hh.

size_t JRECONSTRUCTION::JMuonSimplexParameters_t::numberOfPrefits
inherited

Definition at line 75 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::TMaxLocal_ns
inherited

Definition at line 76 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::ctMin
inherited

Definition at line 77 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::roadWidth_m
inherited

Definition at line 78 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::TMin_ns
inherited

Definition at line 79 of file JMuonSimplexParameters_t.hh.

double JRECONSTRUCTION::JMuonSimplexParameters_t::TMax_ns
inherited

Definition at line 80 of file JMuonSimplexParameters_t.hh.

bool JRECONSTRUCTION::JMuonSimplexParameters_t::reprocess
inherited

Definition at line 81 of file JMuonSimplexParameters_t.hh.


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