91 JParser<> zap(
"Program to histogram event-by-event data of shower light for making PDFs.");
104 catch(
const exception &error) {
132 NOTICE(
"Apply detector offset " << offset <<
endl);
138 const double P_atm = NAMESPACE::getAmbientPressure();
144 const double ng[] = {
dispersion.getIndexOfRefractionGroup(wmax),
158 JMultiHistogram_t h0;
159 JMultiHistogram_t h1;
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) {
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));
205 for (JMultiHistogram_t* p : { &h0, &h1 }) {
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]];
226 while (inputFile.hasNext()) {
231 const Evt*
event = inputFile.next();
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");
280 const double theta = axis.
getTheta();
281 const double phi = fabs(axis.
getPhi());
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;
319 for (JModule::const_iterator pmt =
module->begin(); pmt !=
module->end(); ++pmt) {
332 std::cout <<
"WARNING: recorded hits in normalization histogram that were not recorded in normalization histogram. This should not happen." << 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 }) {
Properties of Antares PMT and deep-sea water.
Data structure for detector geometry and calibration.
Various implementations of functional maps.
int main(int argc, char **argv)
std::vector< Int_t > getHitRemapping(const std::vector< Trk > *tracklist)
General purpose messaging.
#define DEBUG(A)
Message macros.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Direct access to PMT in detector data structure.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition of particle types.
ROOT TTree parameter settings of various packages.
Properties of KM3NeT PMT and deep-sea water.
Router for direct addressing of PMT data in detector data structure.
void transform(const JAxis3D &axis)
Transform axis to reference frame of given axis.
Data structure for direction in three dimensions.
Data structure for position in three dimensions.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
double getLength() const
Get length.
double getZ() const
Get z position.
JVector3D & sub(const JVector3D &vector)
Subtract vector.
double getTheta() const
Get theta angle.
double getPhi() const
Get phi angle.
Binary buffered file output.
JWriter & store(const JSerialisable &object)
Write object.
Template definition of a multi-dimensional oscillation probability interpolation table.
JReader & read(JReader &in) override final
Read from input.
Implementation of dispersion for water in deep sea.
Function object for the probability density function of photon emission from EM-shower as a function ...
Probability density function of photon emission from EM-shower as a function of cosine of the emissio...
JDirection3D getDirection(const Vec &dir)
Get direction.
JPosition3D getPosition(const Vec &pos)
Get position.
double getNPE(const Hit &hit)
Get true charge of hit.
Vec getOffset(const JHead &header)
Get offset.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
std::string to_string(const T &value)
Convert value to string.
double getIndexOfRefraction()
Get average index of refraction of water corresponding to group velocity.
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations.
const double getInverseSpeedOfLight()
Get inverse speed of light.
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations.
static const double C
Physics constants.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
const char * getTime()
Get current local time conform ISO-8601 standard.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
The Vec class is a straightforward 3-d vector, which also works in pyroot.