69 using namespace KM3NETDAQ;
89 using namespace KM3NETDAQ;
95 for (
size_t i = 0; i != module.size(); ++i) {
110 return (
M == 0 ? 1.0 : 0.0);
121 int main(
int argc,
char **argv)
125 using namespace KM3NETDAQ;
129 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
134 JParallelFileScanner_t inputFile;
138 JCalibration_t calibrationFile;
147 JParser<> zap(
"Program to perform PDF fit of muon trajectory to data.");
162 catch(
const exception& error) {
163 FATAL(error.what() << endl);
182 unique_ptr<JDynamics> dynamics;
188 dynamics->load(calibrationFile);
190 catch(
const exception& error) {
191 if (!calibrationFile.empty()) {
214 JRegressor_t fit(pdfFile);
225 while (inputFile.hasNext()) {
227 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
229 multi_pointer_type ps = inputFile.next();
234 summary.update(*tev);
237 dynamics->update(*tev);
258 buildL0(*tev, router,
true, back_inserter(dataL0));
261 for (JFIT::JEvt::iterator track = cp.begin(); track != cp.end(); ++track) {
269 for (buffer_type::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
276 top[hit.getModuleID()].insert(hit.getPMTAddress());
282 double getZ()
const {
return z; }
283 double getP()
const {
return p; }
291 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
293 if (summary.hasSummaryFrame(module->
getID())) {
303 const double z = pos.getZ() - pos.getX() /
getTanThetaC();
304 const double p =
getProbability(*module, frame, rates_Hz.getMultiplesRates(), JRegressor_t::T_ns.getLength(), top[module->
getID()]);
306 data.push_back({ z, p });
315 double npe_total = 0.0;
324 if (track_start != data. end()) { Zmin = track_start->getZ(); }
325 if (track_end != data.rend()) { Zmax = track_end ->getZ(); }
329 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
337 const double z = pos.getZ() - pos.getX() /
getTanThetaC();
339 if (z >= Zmin && z <= Zmax) {
341 for (
size_t i = 0; i != module->size(); ++i) {
353 const double ya = fit.getNPE(pmt, 0.0).getYA();
357 if (pmt.
getZ() <= 0.0) {
373 out.rbegin()->setW(track->getW());
383 for (JFIT::JEvt::iterator i = out.begin(); i != out.end(); ++i) {
393 copy(in->begin(), in->end(), back_inserter(out));
static const int JMUONSTART
Auxiliary class to set-up Hit.
Utility class to parse command line options.
static const int JSTART_NPE_MIP_TOTAL
number of photo-electrons along the whole track from JStart.cc
int main(int argc, char *argv[])
ROOT TTree parameter settings of various packages.
double getRate(const int tdc, const double factor=1.0) const
Get count rate.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
Data structure for a composite optical module.
Auxiliary method to locate start and end point of muon trajectory.
double position
coverage of detector by available position calibration [0,1]
static JDetectorMechanics getMechanics
Function object to get string mechanics.
Regressor function object for fit of muon energy.
Recording of objects on file according a format that follows from the file name extension.
Router for direct addressing of module data in detector data structure.
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
General purpose class for parallel reading of objects from a single file or multiple files...
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
Auxiliary class to test history.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
static counter_type max()
Get maximum counter value.
const JK40Rates & getK40Rates()
Get K40 rates.
T find(T __begin, T __end) const
Get start point of muon trajectory.
Basic data structure for time and time over threshold information of hit.
JFit & add(const int type)
Add event to history.
Data structure for detector geometry and calibration.
void transform(const JRotation3D &R, const JVector3D &pos)
Transform position.
void transform(const JAxis3D &axis)
Transform axis to reference frame of given axis.
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
Various implementations of functional maps.
static const int JSTART_NPE_MIP
number of photo-electrons up to the barycentre from JStart.cc
Data structure for track fit results with history and optional associated values. ...
double orientation
coverage of detector by available orientation calibration [0,1]
Scanning of objects from a single file according a format that follows from the extension of each fil...
Auxiliary class to extract a subset of optical modules from a detector.
Auxiliary class for defining the range of iterations of objects.
Data structure for fit parameters.
Properties of KM3NeT PMT and deep-sea water.
I/O formatting auxiliaries.
JDirection3D getDirection(const Vec &dir)
Get direction.
bool has(const int bit) const
Test PMT status.
Auxiliary class for recursive type list generation.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary class for start or end point evaluation.
Data storage class for rate measurements of all PMTs in one module.
Auxiliary class to test history.
int getID() const
Get identifier.
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
Data structure for PMT geometry, calibration and status.
static const int PMT_DISABLE
KM3NeT Data Definitions v2.1.0-12-g9520e6e https://git.km3net.de/common/km3net-dataformat.
JPosition3D getPosition(const Vec &pos)
Get position.
Dynamic detector calibration.
File router for fast addressing of summary data.
void load(const std::string &file_name)
Load mechanical model parameters from file.
const JPosition3D & getPosition() const
Get position.
const JPMT & getPMT(const int index) const
Get PMT.
then usage $script[distance] fi case set_variable R
General purpose messaging.
Data structure for coverage of dynamic calibrations.
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...
Direct access to module in detector data structure.
static const int JPP_COVERAGE_ORIENTATION
coverage of dynamic orientation calibration from any Jpp application
Reduced data structure for L1 hit.
Dynamic detector calibration.
bool getPMTStatus(const JStatus &status)
Test status of PMT.
const double getSpeedOfLight()
Get speed of light.
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Data structure for set of track fit results.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
Data structure for L0 hit.
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
double getProbability(const size_t N, const size_t M, const JK40Rates &R_Hz, const double T_ns)
Get probability due to random background.
Data structure for fit of straight line paralel to z-axis.
void copy(const Head &from, JHead &to)
Copy header from from to to.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
Object reading from a list of files.
Data structure for position in three dimensions.
const JLimit & getLimit() const
Get limit.
Data regression method for JFIT::JEnergy.
do set_variable DETECTOR_TXT $WORKDIR detector
bool getDAQStatus(const JDAQFrameStatus &frame, const JStatus &status)
Test status of DAQ.
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 source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
JPosition3D & rotate(const JRotation3D &R)
Rotate.
void select(const JSelector_t &selector)
Select fits.
double getZ() const
Get z position.
Maximum likelihood estimator (M-estimators).
Auxiliary class for K40 rates.
then usage $script< detector file >< tripodfile >< stage > input file nInput files correspond to the output of JAcousticsEventBuilder[.sh] nFirst stage eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY eval JPrintDetector a $DETECTOR O CAN source JAcoustics sh $DETECTOR_ID typeset A CONFIGURATION for key in Tmax_s
static const int JPP_COVERAGE_POSITION
coverage of dynamic position calibration from any Jpp application