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 != 
"") {
 
   97   NOTICE(
"Apply detector offset " << center << endl); 
 
  105   for ( ; 
x <  -10.0; 
x +=  5.0) { 
X.push_back(
x); }
 
  106   for ( ; 
x <  +20.0; 
x +=  1.0) { 
X.push_back(
x); }
 
  107   for ( ; 
x <  +50.0; 
x +=  2.0) { 
X.push_back(
x); }
 
  108   for ( ; 
x < +100.0; 
x +=  5.0) { 
X.push_back(
x); }
 
  109   for ( ; 
x < +250.0; 
x += 10.0) { 
X.push_back(
x); }
 
  110   for ( ; 
x < +500.0; 
x += 25.0) { 
X.push_back(
x); }
 
  111   for ( ; 
x < +900.0; 
x += 50.0) { 
X.push_back(
x); }
 
  117   size_t number_of_events = 0;
 
  119   while (inputFile.hasNext()) {
 
  121     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  123     const Evt* 
event = inputFile.next();
 
  125     if (!event->mc_hits.empty()) {
 
  129     size_t number_of_muons = 0;
 
  133         number_of_muons += 1;
 
  137     if (!M(number_of_muons)) {
 
  141     if (event->mc_hits.size() < L_cut) 
continue; 
 
  145       npe[hit->type] += hit->a;
 
  147       const double t1 = 
getTime(*hit);
 
  150                                                   event->mc_trks.end(),
 
  153       if (track != event->mc_trks.end() && 
is_muon(*track)) {
 
  157         if (router.
hasPMT(hit->pmt_id)) {
 
  160           const double t0  = muon.
getT(pmt);
 
  162           H1[pmt.
getID()]->Fill(t1 - t0, hit->a);
 
  164           H1->Fill(t1 - t0, hit->a);
 
  171   if (number_of_events != 0) {
 
  173     const double W = 1.0 / (double) number_of_events;
 
  184     cout << 
"photon-electron statistics" << endl;
 
  186     for (
const auto& i : npe) {
 
  187       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. 
 
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. 
 
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. 
 
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
 
Data structure for position in three dimensions. 
 
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.