Jpp  debug
the software that should make you happy
Functions | Variables
JDrawPDG.cc File Reference

Auxiliary program to draw PDF of Cherenkov light from EM-shower or scattered light from muon. More...

#include <string>
#include <iostream>
#include <iomanip>
#include "TROOT.h"
#include "TFile.h"
#include "TH1D.h"
#include "JPhysics/JPDF.hh"
#include "JPhysics/Antares.hh"
#include "JPhysics/KM3NeT.hh"
#include "JTools/JSpline.hh"
#include "JTools/JQuantiles.hh"
#include "JTools/JAbstractHistogram.hh"
#include "JGeometry3D/JAngle3D.hh"
#include "Jeep/JPrint.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

double getAbsorptionLength (const double lambda)
 
double getScatteringLength (const double lambda)
 
int main (int argc, char **argv)
 

Variables

double absorptionLengthFactor
 Scaling of absorption and scattering length. More...
 
double scatteringLengthFactor
 

Detailed Description

Auxiliary program to draw PDF of Cherenkov light from EM-shower or scattered light from muon.

Author
mdejong

Definition in file JDrawPDG.cc.

Function Documentation

◆ getAbsorptionLength()

double getAbsorptionLength ( const double  lambda)
inline

Definition at line 28 of file JDrawPDG.cc.

29 {
31 }
double getAbsorptionLength(const double lambda)
Definition: JDrawPDG.cc:28
double absorptionLengthFactor
Scaling of absorption and scattering length.
Definition: JDrawPDG.cc:25

◆ getScatteringLength()

double getScatteringLength ( const double  lambda)
inline

Definition at line 34 of file JDrawPDG.cc.

35 {
37 }
double getScatteringLength(const double lambda)
Definition: JDrawPDG.cc:34
double scatteringLengthFactor
Definition: JDrawPDG.cc:26

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 46 of file JDrawPDG.cc.

47 {
48  using namespace std;
49  using namespace JPP;
50 
52 
53  string outputFile;
54  int numberOfPoints;
55  double epsilon;
56  double E;
57  double D;
58  double cd;
59  JAngle3D dir;
60  vector<int> function;
61  JHistogram_t histogram;
62  int debug;
63 
64  try {
65 
66  JParser<> zap("Auxiliary program to draw PDF of Cherenkov light from EM-shower or scattered light from muon.");
67 
68  zap['o'] = make_field(outputFile) = "";
69  zap['n'] = make_field(numberOfPoints, "points for integration") = 25;
70  zap['e'] = make_field(epsilon, "precision for integration") = 1.0e-10;
71  zap['A'] = make_field(absorptionLengthFactor, "scaling factor") = 1.0;
72  zap['S'] = make_field(scatteringLengthFactor, "scaling factor") = 1.0;
73  zap['E'] = make_field(E, "shower energy [GeV]") = 1.0;
74  zap['R'] = make_field(D, "distance [m]");
75  zap['c'] = make_field(cd, "cosine emission angle");
76  zap['D'] = make_field(dir, "(theta, phi) of PMT [rad]");
77  zap['F'] = make_field(function, "PDF type");
78  zap['H'] = make_field(histogram, "histogram binning") = JHistogram_t();
79  zap['d'] = make_field(debug) = 0;
80 
81  zap(argc, argv);
82  }
83  catch(const exception &error) {
84  FATAL(error.what() << endl);
85  }
86 
87 
88  const JPDF_C
99  epsilon);
100 
101 
102  if (outputFile == "") {
103 
104  for (double dt; cin >> dt; ) {
105 
106  for (vector<int>::const_iterator F = function.begin(); F != function.end(); ++F) {
107 
108  cout << setw(2) << *F << ' '
109  << SCIENTIFIC(7,1) << E << ' '
110  << FIXED(5,1) << D << ' '
111  << FIXED(5,2) << cd << ' '
112  << FIXED(5,2) << dir.getTheta() << ' '
113  << FIXED(5,2) << dir.getPhi() << ' '
114  << FIXED(5,1) << dt << ' '
115  << SCIENTIFIC(9,3) << pdf.getLightFromEMshower(*F, E, D, cd, dir.getTheta(), dir.getPhi(), dt) * E << endl;
116  }
117  }
118 
119  return 0;
120  }
121 
122 
123  TFile out(outputFile.c_str(), "recreate");
124 
125  //const double t0 = D * getIndexOfRefraction() / C; // time [ns]
126  const double t0 = 0.0; // time [ns]
127 
128  if (!histogram.is_valid()) {
129 
130  if (function.size() == 1 && function[0] == DIRECT_LIGHT_FROM_MUON) {
131 
132  histogram = JHistogram_t(t0 - 20.0, t0 + 50.0);
133 
134  histogram.setBinWidth(0.1);
135 
136  } else {
137 
138  histogram = JHistogram_t(t0 - 20.0, t0 + 1000.0);
139 
140  histogram.setBinWidth(0.5);
141  }
142  }
143 
144  TH1D h0("h0", NULL, histogram.getNumberOfBins(), histogram.getLowerLimit(), histogram.getUpperLimit());
145 
147 
148  for (int i = 1; i <= h0.GetNbinsX(); ++i) {
149 
150  const double dt = h0.GetBinCenter(i) - t0;
151 
152  double value = 0.0;
153 
154  for (vector<int>::const_iterator F = function.begin(); F != function.end(); ++F) {
156  value += pdf.getScatteredLightFromMuon(D, cd, dir.getTheta(), dir.getPhi(), dt);
157  else
158  value += pdf.getLightFromEMshower(*F, D, cd, dir.getTheta(), dir.getPhi(), dt) * E;
159  }
160 
161  h0.SetBinContent(i, value);
162 
163  f1[dt] = value;
164  }
165 
166  f1.setExceptionHandler(new JSplineFunction1S_t::JDefaultResult(JMATH::zero));
167  f1.compile();
168 
169  JQuantiles quantiles(f1);
170 
171  DEBUG("int " << quantiles.getIntegral() << endl);
172  DEBUG("x " << quantiles.getX() << endl);
173  DEBUG("y " << quantiles.getY() << endl);
174  DEBUG("FWHM " << quantiles.getFWHM() << endl);
175 
176  out.Write();
177  out.Close();
178 }
string outputFile
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
Definition: JDrawLED.cc:68
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
#define FATAL(A)
Definition: JMessage.hh:67
int debug
debug level
Definition: JSirene.cc:69
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
int numberOfPoints
Definition: JResultPDF.cc:22
Data structure for angles in three dimensions.
Definition: JAngle3D.hh:35
double getTheta() const
Get theta angle.
Definition: JAngle3D.hh:86
double getPhi() const
Get phi angle.
Definition: JAngle3D.hh:97
Utility class to parse command line options.
Definition: JParser.hh:1714
Probability Density Functions of the time response of a PMT with an implementation of the JAbstractPM...
Definition: JPDF.hh:2185
Quantile calculator for a given function.
Definition: JQuantiles.hh:108
T getLowerLimit() const
Get lower limit.
Definition: JRange.hh:202
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:213
double getAmbientPressure()
Get ambient pressure.
Definition: Antares.hh:40
double getScatteringProbability(const double x)
Function to describe light scattering in water.
Definition: Antares.hh:210
double getPhotocathodeArea()
Get photo-cathode area of PMT.
Definition: Antares.hh:51
const JPolynome f1(1.0, 2.0, 3.0)
Function.
const double epsilon
Definition: JQuadrature.cc:21
JAbstractHistogram< double > JHistogram_t
Type definition for scan along axis.
Definition: JBillabong.cc:61
double getQE(const double R, const double mu)
Get QE for given ratio of hit probabilities and expectation value of the number of photo-electrons.
static const JZero zero
Function object to assign zero value.
Definition: JZero.hh:105
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations.
Definition: JPDFToolkit.hh:35
@ SCATTERED_LIGHT_FROM_MUON_5D
scattered light from muon
Definition: JPDFTypes.hh:35
@ DIRECT_LIGHT_FROM_MUON
direct light from muon
Definition: JPDFTypes.hh:26
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations.
Definition: JPDFToolkit.hh:46
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JSTDTypes.hh:14
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:448
Simple data structure for histogram binning.
void setBinWidth(const abscissa_type dx, int option=0)
Set bin width.
bool is_valid() const
Check validity of histogram binning.
int getNumberOfBins() const
Get number of bins.
Type definition of a spline interpolation method based on a JCollection with JResultPDF result type.
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:488

Variable Documentation

◆ absorptionLengthFactor

double absorptionLengthFactor

Scaling of absorption and scattering length.

Definition at line 25 of file JDrawPDG.cc.

◆ scatteringLengthFactor

double scatteringLengthFactor

Definition at line 26 of file JDrawPDG.cc.