33 JPMTParametersMap parametersMap;
42 JParser<> zap(
"Example program to histogram time over threshold distributions.");
46 zap[
'p'] =
make_field(pmt) = JPMTIdentifier(1,0);
54 catch(
const exception &error) {
55 FATAL(error.what() << endl);
58 const JPMTParameters
parameters = parametersMap.getPMTParameters(pmt);
60 const JCalibration calibration;
62 const JPMTDefaultSimulator simulator(
parameters, pmt);
63 const JPMTAnalogueSignalProcessor cpu (
parameters);
65 JPMTData<JPMTSignal> input;
66 JPMTData<JPMTPulse> output;
71 const double dx = 1.0;
72 const double xmin = 0.0 - 0.5 * dx;
74 const int nx = (int) ((
xmax -
xmin) / dx);
79 TH1D h3(
"h3", NULL, 500, 0.0, 100.0);
84 DEBUG(
" ToT Probability " << endl);
86 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
88 const double x = h0.GetBinCenter(i);
89 const double y = cpu.getTimeOverThresholdProbability(x,NPE);
92 <<
FIXED(7,3) << x <<
" "
93 <<
FIXED(7,5) << y << endl);
95 h0.SetBinContent(i, y);
99 if (numberOfHits > 0) {
101 int number_of_hits = 0;
103 for (
int i = 0; i != numberOfHits; ++i) {
105 const double npe = cpu.getRandomCharge(NPE);
110 tot_ns = cpu.getTimeOverThreshold(npe);
111 }
catch (
const JValueOutOfRange& exception) {
124 h1.Scale(1.0 / (
double) number_of_hits / dx);
128 if (numberOfHits > 0) {
130 int number_of_hits = 0;
132 const double t_ns = 25.0;
134 for (
int i = 0; i != numberOfHits; ++i) {
139 input.push_back(JPMTSignal(t_ns, NPE));
141 simulator.processHits(pmt, calibration, status, input, output);
143 for (JPMTData<JPMTPulse>::const_iterator hit = output.begin(); hit != output.end(); ++hit) {
147 h2.Fill(hit->tot_ns);
152 h2.Scale(1.0 / (
double) number_of_hits / dx);
160 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
162 const Double_t x = h0.GetBinCenter (i);
163 const Double_t y0 = h0.GetBinContent(i);
164 const Double_t y1 = h1.GetBinContent(i);
165 const Double_t y2 = h2.GetBinContent(i);
167 DEBUG(
"[" << setw(3) << i <<
"]" <<
' '
168 <<
FIXED(5,1) << x <<
' '
169 <<
FIXED(6,4) << y0 <<
' '
170 <<
FIXED(6,4) << y1 <<
' '
171 <<
FIXED(6,4) << y2 << endl);
173 ASSERT(fabs(y0 - y1) < precision);
174 ASSERT(fabs(y0 - y2) < precision);
Utility class to parse command line options.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary data structure for floating point format specification.
#define ASSERT(A,...)
Assert macro.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define DEBUG(A)
Message macros.