64 using namespace KM3NETDAQ;
84 using namespace KM3NETDAQ;
90 for (
size_t i = 0; i != module.size(); ++i) {
105 return (
M == 0 ? 1.0 : 0.0);
117 int main(
int argc,
char **argv)
121 using namespace KM3NETDAQ;
124 typedef JTriggeredFileScanner_t::multi_pointer_type multi_pointer_type;
128 JTriggeredFileScanner_t inputFile;
134 JHistogram_t histogram;
141 JParser<> zap(
"Program to test JMuonStart.");
143 zap[
'f'] =
make_field(inputFile,
"input file (output of JXXXMuonReconstruction.sh)");
149 zap[
'H'] =
make_field(histogram,
"histogram binning") = JHistogram_t(200, -250.0, +250.0);
154 catch(
const exception& error) {
155 FATAL(error.what() << endl);
193 NOTICE(
"center: " << center << endl);
196 histogram.getNumberOfBins(), histogram.getLowerLimit(), histogram.getUpperLimit()));
198 histogram.getNumberOfBins(), histogram.getLowerLimit(), histogram.getUpperLimit(),
199 histogram.getNumberOfBins(), histogram.getLowerLimit(), histogram.getUpperLimit()));
201 while (inputFile.hasNext()) {
203 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
205 multi_pointer_type ps = inputFile.next();
218 if (muon == event->mc_trks.end() || track->E > muon->E) {
224 if (muon == event->mc_trks.end()) {
228 if (muon->len == 0.0) {
229 muon->len =
gWater(muon->E);
254 buildL0(*tev, moduleRouter,
true, back_inserter(dataL0));
261 JEvt::const_iterator track = evt->begin();
276 for (buffer_type::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
283 top[hit.getModuleID()].insert(hit.getPMTAddress());
289 double getZ()
const {
return z; }
290 double getP()
const {
return p; }
298 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
310 const double z = pos.getZ() - pos.getX() /
getTanThetaC();
313 data.push_back({ z, p });
325 if (track_start == data. end()) { track_start = data. begin(); }
326 if (track_end == data.rend()) { track_end = data.rbegin(); }
328 zd = JRange_t(track_start->getZ(), track_end->getZ());
static const int JMUONSTART
Router for direct addressing of PMT data in detector data structure.
Utility class to parse command line options.
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.
JTrack3E getTrack(const Trk &track)
Get track.
Synchronously read DAQ events and Monte Carlo events (and optionally other events).
void update(const JDAQHeader &header)
Update router.
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon.
Router for direct addressing of module data in detector data structure.
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
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
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
static const JGeaneWater gWater
Function object for energy loss of muon in sea water.
static counter_type max()
Get maximum counter value.
const JK40Rates & getK40Rates()
Get K40 rates.
Dynamic ROOT object management.
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
T find(T __begin, T __end) const
Get start point of muon trajectory.
Data structure for detector geometry and calibration.
void transform(const JRotation3D &R, const JVector3D &pos)
Transform position.
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
JTime & add(const JTime &value)
Addition operator.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Basic data structure for L0 hit.
Auxiliary class for defining the range of iterations of objects.
Data structure for fit parameters.
Properties of KM3NeT PMT and deep-sea water.
Type definition of range.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
I/O formatting auxiliaries.
JAxis3D & rotate(const JRotation3D &R)
Rotate axis.
JDirection3D getDirection(const Vec &dir)
Get direction.
bool has(const int bit) const
Test PMT status.
#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.
int getID() const
Get identifier.
static const int PMT_DISABLE
KM3NeT Data Definitions v2.2.0 https://git.km3net.de/common/km3net-dataformat.
JPosition3D getPosition(const Vec &pos)
Get position.
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
File router for fast addressing of summary data.
Direct access to PMT in detector data structure.
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.
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.
bool getPMTStatus(const JStatus &status)
Test status of PMT.
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.
Utility class to parse command line options.
bool hasSummaryFrame(const JDAQModuleIdentifier &module) const
Has summary frame.
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
Auxiliary class to set-up Hit.
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.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
Data structure for position in three dimensions.
const JLimit & getLimit() const
Get limit.
bool getDAQStatus(const JDAQFrameStatus &frame, const JStatus &status)
Test status of DAQ.
KM3NeT DAQ constants, bit handling, etc.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
double getZ() const
Get z position.
Auxiliary class for K40 rates.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.