59   inline int classify(
const Trk& track, 
const Hit& hit)
 
   86   inline int classify_km3sim(
const Trk& track, 
const Hit& hit)
 
  102 int main(
int argc, 
char **argv)
 
  116     JParser<> zap(
"Program to histogram event-by-event data of muon light for making PDFs.");
 
  120     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
  126   catch(
const exception &error) {
 
  127     FATAL(error.what() << endl);
 
  145   NOTICE(
"Apply detector offset " << offset << endl);
 
  167   JMultiHistogram_t h0;   
 
  168   JMultiHistogram_t h1;   
 
  169   JMultiHistogram_t h2;   
 
  171   const double cmin = dispersion.
getKmin (wmax);
 
  179   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 };
 
  181   for (
int i = 0; 
i != 
sizeof(
R)/
sizeof(
R[0]); ++
i) {
 
  183     const double R_m = 
R[
i];
 
  185     const double grid  = 10.0 +  0.0 * R_m/100.0;                         
 
  186     const double alpha = 2.0 * sqrt(1.0 - cos(grid * 
PI / 180.0));        
 
  188     const int    number_of_theta_points = max(2, (
int) (180.0/(1.4 * grid)));
 
  189     const double theta_step             = 
PI / (number_of_theta_points + 1);
 
  191     for (
double theta = -0.5*theta_step; theta < 
PI + theta_step; theta += theta_step) {
 
  193       const int    number_of_phi_points = max(2, (
int) (
PI * 
sin(theta) / alpha));
 
  194       const double phi_step             = 
PI / (number_of_phi_points + 1);
 
  196       for (
double phi = -0.5*phi_step; phi < 
PI + phi_step; phi += phi_step) {
 
  198         for (JMultiHistogram_t* p : { &h0, &h1, &h2 }) {
 
  199           (*p)[R_m][theta][phi];
 
  205   for (JMultiHistogram_t::super_iterator 
 
  206          i1 = h1.super_begin(),
 
  207          i2 = h2.super_begin(); i1 != h1.super_end(); ++i1, ++i2) {
 
  209     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} ) {
 
  216   while (inputFile.hasNext()) {
 
  218     NOTICE(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
STATUS(endl);
 
  220     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    ID    = (KM3Sim ? classify_km3sim(*track, *hit) : classify(*track, *hit));
 
  260               h1.fill(R_m, theta, phi, dt, npe);                  
 
  264               h2.fill(R_m, theta, phi, dt, npe / max(1.0, Evis)); 
 
  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. 
 
Vec getOffset(const JHead &header)
Get offset. 
 
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. 
 
Vec getVisibleEnergyVector(const Trk &track, const JCylinder3D &can=getMaximumContainmentVolume())
Get the visible energy vector of a track. 
 
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. 
 
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. 
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
double getAmbientPressure()
Get ambient pressure. 
 
double getVisibleEnergy(const Trk &track, const JCylinder3D &can=getMaximumContainmentVolume())
Get the visible energy of a track. 
 
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
 
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.