76 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
78 JParallelFileScanner_t inputFile;
89 JParser<> zap(
"Program to evaluate hit probabilities.");
93 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
100 catch(
const exception& error) {
101 FATAL(error.what() << endl);
134 while (inputFile.hasNext()) {
136 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
138 multi_pointer_type ps = inputFile.next();
143 DEBUG(
"event: " << *tev << endl);
145 summary.update(*tev);
151 buildL0(*tev, router,
true, back_inserter(dataL0));
153 for (JEvt::const_iterator track = in->begin(); track != in->end(); ++track) {
155 DEBUG(
"track: " << *track << endl);
171 for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
173 JHitW0 hit(*i, summary.getRate(*i));
184 sort(
data.begin(),
data.end(), compare);
186 JDataW0_t::iterator __end = unique(
data.begin(),
data.end(), equal_to<JDAQPMTIdentifier>());
189 double E_GeV = parameters.
E_GeV;
197 <<
FIXED(12,3) << tz.getX() <<
' '
198 <<
FIXED(12,3) << tz.getY() <<
' '
199 <<
FIXED(12,3) << tz.getZ() <<
' '
200 <<
FIXED(12,3) << tz.getT() <<
' '
201 <<
FIXED(12,1) << E_GeV <<
' '
202 <<
FIXED( 8,3) << track->getQ() << endl);
221 for (JDataW0_t::const_iterator hit =
data.begin(); hit != __end; ++hit) {
223 const double x = hit->getX() - tz.getX();
224 const double y = hit->getY() - tz.getY();
225 const double z = hit->getZ() - tz.getZ();
226 const double R = sqrt(
x*
x +
y*
y);
234 const double theta =
u.getTheta();
235 const double phi = fabs(
u.getPhi());
238 const double E = E_GeV;
239 const double dt = T_ns.constrain(hit->getT() - t1);
246 const double chi2 = H1.getChi2() - H0.getChi2();
249 << setw(10) << hit->getModuleID() <<
':' << setw( 2) << setfill(
'0') << hit->getPMTAddress() << setfill(
' ') <<
' '
250 <<
FIXED(12,1) << E <<
' '
251 <<
FIXED( 9,1) << R <<
' '
252 <<
FIXED( 6,4) << theta <<
' '
253 <<
FIXED( 6,4) << phi <<
' '
254 <<
FIXED( 8,3) << dt <<
' '
255 <<
FIXED(12,3) << chi2 << endl);
265 for (JDetector::const_iterator i =
detector.begin(); i !=
detector.end(); ++i) {
269 pos.transform(R, tz.getPosition());
277 for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt) {
279 const double R = sqrt(pmt->getX()*pmt->getX() + pmt->getY()*pmt->getY());
280 const double theta = pmt->getTheta();
281 const double phi = fabs(pmt->getPhi());
282 const double y = npe.calculate(1.0, R, theta, phi);
285 << setw(10) << module.
getID() <<
':' << setw( 2) << setfill(
'0') <<
distance(module.begin(),pmt) << setfill(
' ') <<
' '
286 <<
FIXED(9,1) << R <<
' '
287 <<
FIXED(6,4) << theta <<
' '
288 <<
FIXED(6,4) << phi <<
' '
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
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 a composite optical module.
void transform(const JRotation3D &R, const JVector3D &pos)
Transformation of geometry (see method JGEOMETRY3D::JPosition3D::transform(const JRotation3D&,...
Data structure for fit of straight line paralel to z-axis.
Data structure for direction in three dimensions.
Data structure for position in three dimensions.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
int getID() const
Get identifier.
Utility class to parse command line options.
Auxiliary class for a hit with background rate value.
General purpose class for parallel reading of objects from a single file or multiple files.
File router for fast addressing of summary data.
Template specialisation of L0 builder for JHitL0 data type.
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc
JDirection3D getDirection(const Vec &dir)
Get direction.
JPosition3D getPosition(const Vec &pos)
Get position.
double getQuality(const double chi2, const int NDF)
Get quality of fit.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
const double getInverseSpeedOfLight()
Get inverse speed of light.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
KM3NeT DAQ data structures and auxiliaries.
Auxiliary data structure for floating point format specification.
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
Auxiliary data structure for muon PDF.
JFunction1D_t::result_type result_type
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Data structure for fit parameters.
double TTS_ns
transition-time spread [ns]
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
double roadWidth_m
road width [m]
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]
double ZMax_m
maximal z-positon [m]
double ZMin_m
minimal z-positon [m]
double R_Hz
default rate [Hz]
size_t numberOfPrefits
number of prefits
Auxiliary class for defining the range of iterations of objects.
const JLimit & getLimit() const
Get limit.
Auxiliary data structure for floating point format specification.