70     hit_remapping.push_back(
i->id);
 
   76 int main(
int argc, 
char **argv)
 
   91     JParser<> zap(
"Program to histogram event-by-event data of shower light for making PDFs.");
 
  101     if (zap.
read(argc, argv) != 0)
 
  104   catch(
const exception &error) {
 
  105     FATAL(error.what() << endl);
 
  111     sort(particles.begin(), particles.end());
 
  112     string prefix_t = 
"";
 
  114       prefix_t += 
to_string((
long long int)*ptype) + 
"_";
 
  116     prefix_t.erase(prefix_t.size() - 1);
 
  117     string::size_type pos_1 = 
outputFile.find(
'%');
 
  132   NOTICE(
"Apply detector offset " << offset << endl);
 
  158   JMultiHistogram_t h0;   
 
  159   JMultiHistogram_t h1;   
 
  167   for (JQuadrature::const_iterator 
i = qeant.begin(); 
i != qeant.end(); ++
i) {
 
  176   const double E_b[] = {0.01, 0.2, 0.4, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0, 30.0, 40.0, 55.0, 70.0, 85.0, 100.0};
 
  178   const double R[]   = {0.0, 1.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 25.0, 30.0, 35.0, 40.0, 50.0, 65.0, 80.0};
 
  179   const double Dmax_m = 
R[
sizeof(
R)/
sizeof(
R[0]) - 1]; 
 
  181   for (
int iE = 0; iE != 
sizeof(E_b)/
sizeof(E_b[0]); ++iE) {
 
  183     const double E_m = E_b[iE];
 
  185     for (
int i = 0; 
i != 
sizeof(
R)/
sizeof(
R[0]); ++
i) {
 
  187       const double R_m = 
R[
i];
 
  191         const double cd = *
c;
 
  193         const double grid  = 10.0 +  0.0 * R_m/100.0;                    
 
  194         const double alpha = 2.0 * sqrt(1.0 - cos(grid * 
PI / 180.0));   
 
  196         const int    number_of_theta_points = (max(2, (
int) (180.0/(1.4 * grid))));
 
  197         const double theta_step             = 
PI / (number_of_theta_points + 1);
 
  199         for (
double theta = -0.5*theta_step; theta < 
PI + theta_step; theta += theta_step) {      
 
  200           const int    number_of_phi_points = (max(2, (
int) (
PI * 
sin(theta) / alpha)));
 
  201           const double phi_step             = 
PI / (number_of_phi_points + 1);
 
  203           for (
double phi = -0.5*phi_step; phi < 
PI + phi_step; phi += phi_step) {
 
  205             for (JMultiHistogram_t* p : { &h0, &h1 }) {
 
  206               (*p)[E_m][R_m][cd][theta][phi];
 
  214   double buffer[] = {-15.0,-10.0,-7.5,-5,-4,-3,-2,-1.5,-1.0,-0.5,-0.1, 0.0,0.1, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 7.5, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 85.0, 100.0 };
 
  215   for (JMultiHistogram_t::super_iterator
 
  216          i1 = h1.super_begin(); i1 != h1.super_end(); ++i1) {
 
  217     for (
int j = 0; 
j != 
sizeof(buffer)/
sizeof(buffer[0]); ++
j) {
 
  218       i1.getValue()[buffer[
j]];
 
  223   long long int h0_fillcount = 0;
 
  224   long long int h1_fillcount = 0;
 
  226   while (inputFile.hasNext()) {
 
  231     const Evt* 
event = inputFile.next();
 
  241         hit_remap.push_back(
i->id);
 
  243     } 
else if(fix_bug == 1){
 
  245     } 
else if(fix_bug == 2){
 
  246       bool skipevent = 
false;
 
  252         hit_remap.push_back(
i->id);
 
  254       if(skipevent) 
continue;
 
  258     double t0 = (*mc_tracks)[1].t;
 
  264         if(hit->origin >= (
int)(*mc_tracks).size()){
 
  265           std::out_of_range err(
"Hit origin not in tracklist. Avoided segfault");
 
  269         Int_t corr_origin  = hit_remap[hit->origin];
 
  270         Trk curr_track     = (*mc_tracks)[corr_origin]; 
 
  276         const double E     = curr_track.
E;
 
  279         const double cd    = axis.
getZ()/D_m;
 
  280         const double theta = axis.
getTheta();
 
  281         const double phi   = fabs(axis.
getPhi());
 
  282         const double dt    = 
getTime(*hit) - t1;
 
  283         const double npe   = 
getNPE (*hit);
 
  286           h1.fill(E, D_m, cd, theta, phi, dt, npe);
 
  290       catch(
const exception& error) {
 
  291         std::cout << 
"Fatal error for event: " << inputFile.getCounter() << std::endl;
 
  292         FATAL(error.what() << endl);
 
  299       if(find(particles.begin(), particles.end(), tr->type) == particles.end()){
 
  309       for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  319           for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
 
  331     if(h1_fillcount > h0_fillcount){
 
  332       std::cout << 
"WARNING: recorded hits in normalization histogram that were not recorded in normalization histogram. This should not happen." << std::endl;
 
  333       std::cout << 
"h1_fillcount: " << h1_fillcount << 
", h0_fillcount: " << h0_fillcount << std::endl;
 
  338   for (JMultiHistogram_t::super_iterator 
i = h0.super_begin(); 
i != h0.super_end(); ++
i) {
 
  339     integral+=
i.getValue().getIntegral();
 
  341   DEBUG(
"Integral:\t" << integral << endl);
 
  349   for (
const JMultiHistogram_t* p : { &h0, &h1 }) {
 
  354   NOTICE(
"JHistHDE done. " << endl);
 
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. 
 
Data structure for direction in three dimensions. 
 
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
 
Vec getOffset(const JHead &header)
Get offset. 
 
double getIndexOfRefraction()
Get average index of refraction of water corresponding to group velocity. 
 
Implementation of dispersion for water in deep sea. 
 
Properties of Antares PMT and deep-sea water. 
 
const JPMT & getPMT(const JPMTAddress &address) const 
Get PMT. 
 
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations. 
 
double getTime(const Hit &hit)
Get true time of hit. 
 
double getPhi() const 
Get phi angle. 
 
double E
Energy [GeV] (either MC truth or reconstructed) 
 
Data structure for detector geometry and calibration. 
 
void transform(const JAxis3D &axis)
Transform axis to reference frame of given axis. 
 
Various implementations of functional maps. 
 
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header. 
 
static const double C
Physics constants. 
 
std::vector< Int_t > getHitRemapping(const std::vector< Trk > *tracklist)
 
JVector3D & sub(const JVector3D &vector)
Subtract vector. 
 
Properties of KM3NeT PMT and deep-sea water. 
 
The Vec class is a straightforward 3-d vector, which also works in pyroot. 
 
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations. 
 
JDirection3D getDirection(const Vec &dir)
Get direction. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
double getTheta() const 
Get theta angle. 
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
double getAmbientPressure()
Get ambient pressure. 
 
static const double PI
Mathematical constants. 
 
Direct access to PMT in detector data structure. 
 
double getLength() const 
Get length. 
 
General purpose messaging. 
 
Template specialisation of JMultipleFileScanner for Monte Carlo header. 
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
 
then JCookie sh JDataQuality D $DETECTOR_ID R
 
Probability density function of photon emission from EM-shower as a function of cosine of the emissio...
 
virtual double getIndexOfRefractionGroup(const double lambda) const 
Index of refraction for group velocity. 
 
int read(const int argc, const char *const argv[])
Parse the program's command line options. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
General purpose class for object reading from a list of file names. 
 
Utility class to parse command line options. 
 
const double getInverseSpeedOfLight()
Get inverse speed of light. 
 
std::string to_string(const T &value)
Convert value to string. 
 
Definition of particle types. 
 
double getNPE(const Hit &hit)
Get true charge of hit. 
 
Data structure for position in three dimensions. 
 
Function object for the probability density function of photon emission from EM-shower as a function ...
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower. 
 
JPosition3D & rotate(const JRotation3D &R)
Rotate. 
 
Binary buffered file output. 
 
double getZ() const 
Get z position. 
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event. 
 
#define DEBUG(A)
Message macros. 
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT.