45 int main(
int argc, 
char **argv)
 
   62     JParser<> zap(
"Example program to verify Monte Carlo data.");
 
   65     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
   74   catch(
const exception &error) {
 
   75     FATAL(error.what() << endl);
 
   81   if (detectorFile != 
"") {
 
   96   NOTICE(
"Apply detector offset " << offset << endl); 
 
  104   for ( ; 
x <  -10.0; 
x +=  5.0) { 
X.push_back(
x); }
 
  105   for ( ; 
x <  +20.0; 
x +=  1.0) { 
X.push_back(
x); }
 
  106   for ( ; 
x <  +50.0; 
x +=  2.0) { 
X.push_back(
x); }
 
  107   for ( ; 
x < +100.0; 
x +=  5.0) { 
X.push_back(
x); }
 
  108   for ( ; 
x < +250.0; 
x += 10.0) { 
X.push_back(
x); }
 
  109   for ( ; 
x < +500.0; 
x += 25.0) { 
X.push_back(
x); }
 
  110   for ( ; 
x < +900.0; 
x += 50.0) { 
X.push_back(
x); }
 
  116   size_t number_of_events = 0;
 
  118   while (inputFile.hasNext()) {
 
  120     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  122     const Evt* 
event = inputFile.next();
 
  124     if (!event->mc_hits.empty()) {
 
  128     size_t number_of_muons = 0;
 
  132         number_of_muons += 1;
 
  136     if (!M(number_of_muons)) {
 
  140     if (event->mc_hits.size() < L_cut) 
continue; 
 
  144       npe[hit->type] += hit->a;
 
  146       const double t1 = 
getTime(*hit);
 
  149                                                   event->mc_trks.end(),
 
  152       if (track != event->mc_trks.end() && 
is_muon(*track)) {
 
  156         if (router.
hasPMT(hit->pmt_id)) {
 
  159           const double t0  = muon.
getT(pmt);
 
  161           H1[pmt.
getID()]->Fill(t1 - t0, hit->a);
 
  163           H1->Fill(t1 - t0, hit->a);
 
  170   if (number_of_events != 0) {
 
  172     const double W = 1.0 / (double) number_of_events;
 
  183     cout << 
"photon-electron statistics" << endl;
 
  185     for (
const auto& 
i : npe) {
 
  186       cout << setw(3) << 
i.first << 
' ' << setw(6) << 
i.second << endl;
 
Router for direct addressing of PMT data in detector data structure. 
 
Utility class to parse command line options. 
 
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member. 
 
int main(int argc, char *argv[])
 
ROOT TTree parameter settings of various packages. 
 
Vec getOffset(const JHead &header)
Get offset. 
 
JTrack3E getTrack(const Trk &track)
Get track. 
 
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon. 
 
bool hasPMT(const JObjectID &id) const 
Has PMT. 
 
const JPMT & getPMT(const JPMTAddress &address) const 
Get PMT. 
 
Dynamic ROOT object management. 
 
double getTime(const Hit &hit)
Get true time of hit. 
 
Data structure for detector geometry and calibration. 
 
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header. 
 
Auxiliary class for defining the range of iterations of objects. 
 
The Vec class is a straightforward 3-d vector, which also works in pyroot. 
 
Type definition of range. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
I/O formatting auxiliaries. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
int getID() const 
Get identifier. 
 
void convertToPDF(TH1 &h1, const std::string &option="NW", const double factor=1.0)
Convert 1D histogram to PDF. 
 
Data structure for PMT geometry, calibration and status. 
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
void Write(TDirectory &out, const bool wm=false)
Write objects to file. 
 
Direct access to PMT in detector data structure. 
 
double getT(const JVector3D &pos) const 
Get arrival time of Cherenkov light at given position. 
 
General purpose messaging. 
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Auxiliary class to define a range between two values. 
 
General purpose class for object reading from a list of file names. 
 
Utility class to parse command line options. 
 
no fit printf nominal n $STRING awk v X
 
const JLimit & getLimit() const 
Get limit. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event. 
 
#define DEBUG(A)
Message macros.