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.