59   inline int classify_km3(
const Trk& track, 
const Hit& hit)
 
   87   inline int classify_km3sim(
const Trk& track, 
const Hit& hit)
 
  103 int main(
int argc, 
char **argv)
 
  117     JParser<> zap(
"Program to histogram event-by-event data of muon light for making PDFs.");
 
  121     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
  127   catch(
const exception &error) {
 
  128     FATAL(error.what() << endl);
 
  169   JMultiHistogram_t h0;   
 
  170   JMultiHistogram_t h1;   
 
  171   JMultiHistogram_t h2;   
 
  173   const double cmin = dispersion.
getKmin (wmax);
 
  181   const double R[] = { 0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 70.0, 80.0, 90.0, 100.0, 170.0, 250.0 };
 
  183   for (
int i = 0; 
i != 
sizeof(
R)/
sizeof(
R[0]); ++
i) {
 
  185     const double R_m = 
R[
i];
 
  187     const double grid  = 10.0 +  0.0 * R_m/100.0;                         
 
  188     const double alpha = 2.0 * sqrt(1.0 - cos(grid * 
PI / 180.0));        
 
  190     const int    number_of_theta_points = max(2, (
int) (180.0/(1.4 * grid)));
 
  191     const double theta_step             = 
PI / (number_of_theta_points + 1);
 
  193     for (
double theta = -0.5*theta_step; theta < 
PI + theta_step; theta += theta_step) {
 
  195       const int    number_of_phi_points = max(2, (
int) (
PI * 
sin(theta) / alpha));
 
  196       const double phi_step             = 
PI / (number_of_phi_points + 1);
 
  198       for (
double phi = -0.5*phi_step; phi < 
PI + phi_step; phi += phi_step) {
 
  200         for (JMultiHistogram_t* p : { &h0, &h1, &h2 }) {
 
  201           (*p)[R_m][theta][phi];
 
  207   for (JMultiHistogram_t::super_iterator 
 
  208          i1 = h1.super_begin(),
 
  209          i2 = h2.super_begin(); i1 != h1.super_end(); ++i1, ++i2) {
 
  211     for (
double x : { 0.0, 1.0, 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, 125.0, 150.0, 200.0, 500.0} ) {
 
  218   while (inputFile.hasNext()) {
 
  220     NOTICE(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
STATUS(endl);
 
  222     const Evt* 
event = inputFile.next();
 
  249             const double R_m   = axis.
getX();
 
  250             const double theta = axis.
getTheta();
 
  251             const double phi   = fabs(axis.
getPhi());
 
  252             const double dt    = 
getTime(*hit) - t1;
 
  253             const double npe   = 
getNPE (*hit);
 
  255             const int classID = (KM3Sim ? classify_km3sim(*track, *hit) : classify_km3(*track, *hit));
 
  260               h1.fill(R_m, theta, phi, dt, npe);              
 
  264               h2.fill(R_m, theta, phi, dt, npe / max(1.0, Evis.
len())); 
 
  268           catch(
const exception& error) {
 
  269             FATAL(error.what() << endl);
 
  274         for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  284             for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
 
  306   for (
const JMultiHistogram_t* p : { &h0, &h1, &h2 }) {
 
Router for direct addressing of PMT data in detector data structure. 
 
JVertex3D getVertex(const Trk &track)
Get vertex. 
 
Utility class to parse command line options. 
 
double getKmin(const double lambda) const 
Get smallest index of refraction for Bremsstrahlung light (i.e. point at which dt/dz = 0)...
 
JWriter & store(const JSerialisable &object)
Write object. 
 
int main(int argc, char *argv[])
 
ROOT TTree parameter settings of various packages. 
 
Scattered light from muon. 
 
Implementation of dispersion for water in deep sea. 
 
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon. 
 
Properties of Antares PMT and deep-sea water. 
 
int pmt_id
global PMT identifier as found in evt files 
 
Scattered light from Bremsstrahlung. 
 
static const JGeaneWater gWater
Function object for energy loss of muon in sea water. 
 
Direct light from Bremsstrahlung. 
 
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) 
 
int origin
track id of the track that created this hit (mc only) 
 
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. 
 
double len() const 
Get length. 
 
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header. 
 
Auxiliary class for defining the range of iterations of objects. 
 
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. 
 
double getAmbientPressure()
Get ambient pressure. 
 
static const double PI
Mathematical constants. 
 
double getY() const 
Get y position. 
 
Direct access to PMT in detector data structure. 
 
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...
 
then JCookie sh JDataQuality D $DETECTOR_ID R
 
const double getSpeedOfLight()
Get speed of light. 
 
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. 
 
double getX() const 
Get x position. 
 
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity. 
 
bool is_km3sim(const JHead &header)
Check for detector simulation. 
 
double getNPE(const Hit &hit)
Get true charge of hit. 
 
do set_variable MODULE getModule a $WORKDIR detector_a datx L $STRING JEditDetector a $WORKDIR detector_a datx M $MODULE setz o $WORKDIR detector_a datx JEditDetector a $WORKDIR detector_b datx M $MODULE setz o $WORKDIR detector_b datx done echo Output stored at $WORKDIR detector_a datx and $WORKDIR tripod_a txt JDrawDetector2D a $WORKDIR detector_a datx a $WORKDIR detector_b datx L BL o detector $FORMAT $BATCH JDrawDetector2D T $WORKDIR tripod_a txt T $WORKDIR tripod_b txt L BL o tripod $FORMAT $BATCH JCompareDetector a $WORKDIR detector_a datx b $WORKDIR detector_b datx o $WORKDIR abc root &dev null for KEY in X Y Z
 
Data structure for position in three dimensions. 
 
const JLimit & getLimit() const 
Get limit. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
Vec getVisibleEnergy(const Trk &track, const JCylinder3D &can)
Get the visible energy of a track. 
 
double getT(const JVector3D &pos) const 
Get arrival time of Cherenkov light at given position. 
 
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. 
 
int type
particle type or parametrisation used for hit (mc only) 
 
double getZ() const 
Get z position. 
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event. 
 
The cylinder used for photon tracking. 
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT. 
 
bool from_muon(const Hit &hit)
Test whether given hit was produced by a muon.