Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JRECONSTRUCTION::JMuonStart Class Reference

Auxiliary class to determine start and end position of muon trajectory. More...

#include <JMuonStart.hh>

Inheritance diagram for JRECONSTRUCTION::JMuonStart:
JRECONSTRUCTION::JMuonStartParameters_t JFIT::JRegressor< JModel_t, JMinimiser_t > TObject

Classes

struct  input_type
 Input data type. More...
 

Public Types

typedef JRegressor< JEnergyJRegressor_t
 
typedef JModuleL0 module_type
 
typedef std::vector< module_typedetector_type
 

Public Member Functions

 JMuonStart (const JMuonStartParameters_t &parameters, const storage_type &storage, const JK40Rates &rates_Hz, const int debug=0)
 Constructor.
 
input_type getInput (const JModuleRouter &router, const JSummaryRouter &summary, const JDAQEvent &event, const JEvt &in, const coverage_type &coverage)
 Get input data.
 
JEvt operator() (const input_type &input)
 Fit function.
 
void reset ()
 Reset fit parameters.
 
bool equals (const JMuonStartParameters_t &parameters) const
 Equality.
 
 ClassDef (JMuonStartParameters_t, 3)
 

Public Attributes

double roadWidth_m
 road width [m]
 
double R_Hz
 default rate [Hz]
 
size_t numberOfPrefits
 number of prefits
 
double TMin_ns
 minimal time w.r.t. Cherenkov hypothesis [ns]
 
double TMax_ns
 maximal time w.r.t. Cherenkov hypothesis [ns]
 
double Pmin1
 minimal probability single observation
 
double Pmin2
 minimal probability for twofold observations
 
int Nmax2
 maximal number for twofold observations
 

Private Attributes

const JK40Rates rates_Hz
 

Detailed Description

Auxiliary class to determine start and end position of muon trajectory.

Definition at line 73 of file JMuonStart.hh.

Member Typedef Documentation

◆ JRegressor_t

◆ module_type

◆ detector_type

Constructor & Destructor Documentation

◆ JMuonStart()

JRECONSTRUCTION::JMuonStart::JMuonStart ( const JMuonStartParameters_t & parameters,
const storage_type & storage,
const JK40Rates & rates_Hz,
const int debug = 0 )
inline

Constructor.

Parameters
parametersparameters
storagestorage
rates_HzK40 rates [Hz]
debugdebug

Definition at line 127 of file JMuonStart.hh.

130 :
131 JMuonStartParameters_t(parameters),
132 JRegressor_t(storage),
134 {
135 if (this->getRmax() < parameters.roadWidth_m) {
136 roadWidth_m = this->getRmax();
137 }
138
139 JRegressor_t::debug = debug;
140 JRegressor_t::T_ns.setRange(parameters.TMin_ns, parameters.TMax_ns);
141 }
int debug
debug level
Definition JSirene.cc:72
JRegressor< JEnergy > JRegressor_t
Definition JMuonStart.hh:78
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]

Member Function Documentation

◆ getInput()

input_type JRECONSTRUCTION::JMuonStart::getInput ( const JModuleRouter & router,
const JSummaryRouter & summary,
const JDAQEvent & event,
const JEvt & in,
const coverage_type & coverage )
inline

Get input data.

Parameters
routermodule router
summarysummary data
eventevent
instart values
coveragecoverage
Returns
input data

Definition at line 154 of file JMuonStart.hh.

159 {
160 using namespace std;
161 using namespace JTRIGGER;
162
163 input_type input(event.getDAQEventHeader(), in, coverage);
164
165 const JBuildL0 <JHitR0> buildL0;
167
168 const JDAQTimeslice timeslice(event, true);
169
170 JSuperFrame2D<JHit> buffer;
171
172 for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
173
174 if (router.hasModule(i->getModuleID())) {
175
176 buffer(*i, router.getModule(i->getModuleID()));
177
178 buildL0(buffer, back_inserter(data[i->getModuleID()]));
179 }
180 }
181
182 for (const auto& module : router.getReference()) {
183 if (!module.empty()) {
184 input.data.push_back(module_type(module, summary.getSummaryFrame(module.getID()), data[module.getID()]));
185 }
186 }
187
188 return input;
189 }
bool hasModule(const JObjectID &id) const
Has module.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
const JClass_t & getReference() const
Get reference to object.
Definition JReference.hh:38
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
2-dimensional frame with time calibrated data from one optical module.
const JDAQEventHeader & getDAQEventHeader() const
Get DAQ event header.
Auxiliary classes and methods for triggering.

◆ operator()()

JEvt JRECONSTRUCTION::JMuonStart::operator() ( const input_type & input)
inline

Fit function.

Parameters
inputinput data
Returns
fit results

Definition at line 198 of file JMuonStart.hh.

199 {
200 using namespace std;
201 using namespace JPP;
202
203 JEvent event(JMUONSTART);
204
205 JEvt out;
206
207 // select start values
208
209 JEvt in = input.in;
210
211 in.select(numberOfPrefits, qualitySorter);
212
213 if (!in.empty()) {
214 in.select(JHistory::is_event(in.begin()->getHistory()));
215 }
216
217 const JStart start(Pmin1, Pmin2, Nmax2);
218
219 struct JHit_t {
220
221 double getZ() const { return z; }
222 double getP() const { return p; }
223
224 double z;
225 double p;
226 double y1;
227 double yx;
228 };
229
230 for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
231
232 const JRotation3D R (getDirection(*track));
233 const JLine1Z tz(getPosition (*track).rotate(R), track->getT());
234
236
237 for (const auto& module : input.data) {
238
239 JPosition3D pos(module->getPosition());
240
241 pos.transform(R, tz.getPosition());
242
243 if (pos.getX() <= roadWidth_m) {
244
245 const double z = pos.getZ() - pos.getX() / getTanThetaC();
246 const double t = tz .getT() + (pos.getZ() + pos.getX() * getKappaC()) * getInverseSpeedOfLight();
247
248 const double p = module.getProbability(rates_Hz.getMultiplesRates(), JRegressor_t::T_ns + t);
249
250 double y1 = 0.0;
251 double yx = 0.0;
252
253 for (size_t i = 0; i != module->size(); ++i) {
254
255 if (module.getStatus(i)) {
256
257 JPMT pmt = module->getPMT(i);
258
259 pmt.transform(R, tz.getPosition());
260
261 const double npe = this->getY1(pmt);
262
263 y1 += npe;
264
265 if (count_if(module.begin(), module.end(), make_predicate(&JHitR0::getPMT, (JDAQHit::JPMT_t) i)) == 0) {
266 yx += npe;
267 }
268 }
269 }
270
271 data.push_back({ z, p, y1, yx });
272 }
273 }
274
275 double Zmin = 0.0; // start position
276 double Zmax = 0.0; // end position
277 double y1 = 0.0; // npe due to MIP between start and end position
278 double yx = 0.0; // npe due to MIP between start and end position that are not detected
279
280 if (!data.empty()) {
281
282 sort(data.begin(), data.end(), make_comparator(&JHit_t::getZ));
283
284 vector<JHit_t>::const_iterator q1 = start.find(data. begin(), data. end());
285 vector<JHit_t>::const_reverse_iterator q2 = start.find(data.rbegin(), data.rend());
286
287 if (q1 != data.end() && q2 != data.rend()) {
288
289 vector<JHit_t>::const_iterator p1 = q1; if (p1 != data. begin()) { --p1; }
290 vector<JHit_t>::const_reverse_iterator p2 = q2; if (p2 != data.rbegin()) { --p2; }
291
292 Zmin = 0.5 * (p1->getZ() + q1->getZ());
293 Zmax = 0.5 * (p2->getZ() + q2->getZ());
294
295 for (vector<JHit_t>::const_iterator i = q1; i != q2.base(); ++i) {
296 y1 += i->y1;
297 yx += i->yx;
298 }
299 }
300 }
301
302 JFit fit = *track;
303
304 fit.push_back(event());
305
306 // move track
307
308 fit.move(Zmin, getSpeedOfLight());
309
310 out.push_back(fit);
311
312 // set additional values
313
314 out.rbegin()->setW(track->getW());
315 out.rbegin()->setW(JSTART_NPE_MIP_TOTAL, y1);
316 out.rbegin()->setW(JSTART_NPE_MIP_MISSED, yx);
317 out.rbegin()->setW(JSTART_LENGTH_METRES, Zmax - Zmin);
318 out.rbegin()->setW(JPP_COVERAGE_ORIENTATION, input.coverage.orientation);
319 out.rbegin()->setW(JPP_COVERAGE_POSITION, input.coverage.position);
320 }
321
322 // apply default sorter
323
324 sort(out.begin(), out.end(), qualitySorter);
325
326 copy(input.in.begin(), input.in.end(), back_inserter(out));
327
328 return out;
329 }
TPaveText * p1
Data structure for PMT geometry, calibration and status.
Definition JPMT.hh:49
Data structure for fit of straight line paralel to z-axis.
Definition JLine1Z.hh:29
void transform(const JAxis3D &axis)
Transform axis to reference frame of given axis.
Definition JAxis3D.hh:359
Data structure for position in three dimensions.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
JPMT_t getPMT() const
Get PMT.
Definition JHitR0.hh:60
unsigned char JPMT_t
PMT channel in FPGA.
Definition JDAQHit.hh:38
static const int JMUONSTART
static const int JSTART_NPE_MIP_TOTAL
number of photo-electrons along the whole track from JStart.cc
static const int JPP_COVERAGE_POSITION
coverage of dynamic position calibration from any Jpp application
static const int JSTART_LENGTH_METRES
distance between projected positions on the track of optical modules for which the response does not ...
static const int JPP_COVERAGE_ORIENTATION
coverage of dynamic orientation calibration from any Jpp application
static const int JSTART_NPE_MIP_MISSED
number of photo-electrons missed from JStart.cc
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition JHead.cc:163
double getP(const double expval, bool hit)
Get Poisson probability to observe a hit or not for given expectation value for the number of hits.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
double getKappaC()
Get average R-dependence of arrival time of Cherenkov light (a.k.a.
const double getInverseSpeedOfLight()
Get inverse speed of light.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
const double getSpeedOfLight()
Get speed of light.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
JPosition3D getPosition(const JFit &fit)
Get position.
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
JDirection3D getDirection(const JFit &fit)
Get direction.
Acoustic event fit.
Acoustic single fit.
Auxiliary class to test history.
Definition JHistory.hh:136
int Nmax2
maximal number for twofold observations
double Pmin1
minimal probability single observation
double Pmin2
minimal probability for twofold observations
Auxiliary class for start or end point evaluation.
Definition JStart.hh:21
Auxiliary class to set-up Hit.
Definition JSirene.hh:58

◆ reset()

void JRECONSTRUCTION::JMuonStartParameters_t::reset ( )
inlineinherited

Reset fit parameters.

Definition at line 41 of file JMuonStartParameters_t.hh.

42 {
43 roadWidth_m = std::numeric_limits<double>::max();
44 R_Hz = 6.0e3;
46 TMin_ns = -25.0;
47 TMax_ns = +75.0;
48 Pmin1 = 0.0;
49 Pmin2 = 0.0;
50 Nmax2 = 2;
51 }

◆ equals()

bool JRECONSTRUCTION::JMuonStartParameters_t::equals ( const JMuonStartParameters_t & parameters) const
inlineinherited

Equality.

Parameters
parametersfit parameters
Returns
true if equals; else false

Definition at line 59 of file JMuonStartParameters_t.hh.

60 {
61 return (this->roadWidth_m == parameters.roadWidth_m &&
62 this->R_Hz == parameters.R_Hz &&
63 this->numberOfPrefits == parameters.numberOfPrefits &&
64 this->TMin_ns == parameters.TMin_ns &&
65 this->TMax_ns == parameters.TMax_ns &&
66 this->Pmin1 == parameters.Pmin1 &&
67 this->Pmin2 == parameters.Pmin2 &&
68 this->Nmax2 == parameters.Nmax2);
69 }

◆ ClassDef()

JRECONSTRUCTION::JMuonStartParameters_t::ClassDef ( JMuonStartParameters_t ,
3  )
inherited

Member Data Documentation

◆ rates_Hz

const JK40Rates JRECONSTRUCTION::JMuonStart::rates_Hz
private

Definition at line 332 of file JMuonStart.hh.

◆ roadWidth_m

double JRECONSTRUCTION::JMuonStartParameters_t::roadWidth_m
inherited

road width [m]

Definition at line 73 of file JMuonStartParameters_t.hh.

◆ R_Hz

double JRECONSTRUCTION::JMuonStartParameters_t::R_Hz
inherited

default rate [Hz]

Definition at line 74 of file JMuonStartParameters_t.hh.

◆ numberOfPrefits

size_t JRECONSTRUCTION::JMuonStartParameters_t::numberOfPrefits
inherited

number of prefits

Definition at line 75 of file JMuonStartParameters_t.hh.

◆ TMin_ns

double JRECONSTRUCTION::JMuonStartParameters_t::TMin_ns
inherited

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

Definition at line 76 of file JMuonStartParameters_t.hh.

◆ TMax_ns

double JRECONSTRUCTION::JMuonStartParameters_t::TMax_ns
inherited

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

Definition at line 77 of file JMuonStartParameters_t.hh.

◆ Pmin1

double JRECONSTRUCTION::JMuonStartParameters_t::Pmin1
inherited

minimal probability single observation

Definition at line 78 of file JMuonStartParameters_t.hh.

◆ Pmin2

double JRECONSTRUCTION::JMuonStartParameters_t::Pmin2
inherited

minimal probability for twofold observations

Definition at line 79 of file JMuonStartParameters_t.hh.

◆ Nmax2

int JRECONSTRUCTION::JMuonStartParameters_t::Nmax2
inherited

maximal number for twofold observations

Definition at line 80 of file JMuonStartParameters_t.hh.


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