54 bool operator()(
const T& first,
const T& second)
const
60 if (equal_to<JDAQPMTIdentifier>()(first, second))
61 return less<JHit>()(first, second);
63 return less<JDAQPMTIdentifier>()(first, second);
76int main(
int argc,
char **argv)
83 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
85 JParallelFileScanner_t inputFile;
97 JParser<> zap(
"Program to evaluate hit probabilities.");
109 catch(
const exception& error) {
110 FATAL(error.what() << endl);
142 while (inputFile.hasNext()) {
144 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
146 multi_pointer_type ps = inputFile.next();
151 DEBUG(
"event: " << *tev << endl);
159 buildL0(*tev, router,
true, back_inserter(dataL0));
161 for (JEvt::const_iterator shower = in->begin(); shower != in->end(); ++shower) {
163 DEBUG(
"shower: " << *shower << endl);
174 for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
180 const int type = wip.
getType();
181 const double QE = wip.
QE;
182 const double R_Hz = summary.
getRate(i->getPMTIdentifier(), parameters.
R_Hz);
184 JHitW0 hit(*i, type, QE, R_Hz);
195 sort(data.begin(), data.end(), compare);
197 JDataW0_t::iterator __end = unique(data.begin(), data.end(), equal_to<JDAQPMTIdentifier>());
204 <<
FIXED( 8,3) << shower->getQ() << endl);
208 for (JDataW0_t::const_iterator hit = data.begin(); hit != __end; ++hit) {
213 const double x = hit->getX() - vx.
getX();
214 const double y = hit->getY() - vx.
getY();
215 const double z = hit->getZ() - vx.
getZ();
220 JDirection3D u(hit->getDX(), hit->getDY(), hit->getDZ());
225 const double phi = fabs(u.
getPhi());
227 const double E = shower->getE();
228 const double dt = T_ns.
constrain(hit->getT() - t1);
231 double H0 = hit->getR() * 1e-9 * T_ns.
getLength();
233 double Vmax_npe = 20.0;
234 if (H1 >= Vmax_npe) {
240 const double chi2 =
getChi2(H1,
true);
243 << setw(10) << hit->getModuleID() <<
':' << setw( 2) << setfill(
'0') << hit->getPMTAddress() << setfill(
' ') <<
' '
244 <<
FIXED(12,1) << E <<
' '
245 <<
FIXED( 9,1) << R <<
' '
246 <<
FIXED( 6,4) << theta <<
' '
247 <<
FIXED( 6,4) << phi <<
' '
248 <<
FIXED( 8,3) << dt <<
' '
249 <<
FIXED(12,3) << chi2 << endl);
254 DEBUG(
"quality: " <<
FIXED(8,3) << Q <<
' ' <<
distance(data.begin(), __end) << endl);
Data structure for detector geometry and calibration.
Basic data structure for L0 hit.
General purpose messaging.
#define DEBUG(A)
Message macros.
Direct access to module in detector data structure.
Auxiliary data structure for muon PDF.
Auxiliary data structure for muon PDF.
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
I/O formatting auxiliaries.
int main(int argc, char **argv)
This include file containes various data structures that can be used as specific return types for the...
ROOT TTree parameter settings of various packages.
Router for direct addressing of module data in detector data structure.
Auxiliary class for map of PMT parameters.
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
Data structure for PMT parameters.
double QE
relative quantum efficiency
int getType() const
Get type for for time-slewing correction.
Data structure for vertex fit.
JAxis3D & rotate(const JRotation3D &R)
Rotate axis.
Data structure for direction in three dimensions.
JDirection3D & rotate(const JRotation3D &R)
Rotate.
Data structure for position in three dimensions.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
double getY() const
Get y position.
double getLength() const
Get length.
double getZ() const
Get z position.
JVector3D & sub(const JVector3D &vector)
Subtract vector.
double getX() const
Get x position.
double getTheta() const
Get theta angle.
double getPhi() const
Get phi angle.
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
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.
void update(const JDAQHeader &header)
Update router.
double getRate(const JDAQPMTIdentifier &id) const
Get rate.
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.
double getChi2(const double P)
Get chi2 corresponding to given probability.
double getIndexOfRefraction()
Get average index of refraction of water corresponding to group velocity.
const double getInverseSpeedOfLight()
Get inverse speed of light.
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.
Model for fit to acoustics data.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Data structure for fit parameters.
double DMax_m
maximal distance to optical module [m]
double TMax_ns
maximum time for local coincidences [ns]
double R_Hz
default rate [Hz]
double TMin_ns
minimum time for local coincidences [ns]
size_t numberOfPrefits
number of prefits
Auxiliary class for defining the range of iterations of objects.
const JLimit & getLimit() const
Get limit.
static counter_type max()
Get maximum counter value.
Auxiliary data structure for shower PDF.
double calculate(const double E, const double D, const double cd, const double theta, const double phi) const
Get PDF.