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;
 
   73   const double xmax = 255.0 + 0.5 * dx;
 
   74   const int    nx   = (int) ((xmax - xmin) / dx);
 
   76   TH1D h0(
"h0", NULL, nx, xmin, xmax);
 
   77   TH1D 
h1(
"h1", NULL, nx, xmin, xmax);
 
   78   TH1D h2(
"h2", NULL, nx, xmin, xmax);
 
   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);
 
  112       } 
catch (
const JValueOutOfRange& exception) {
 
  114         DEBUG(exception.what());
 
  127     h1.Scale(1.0 / (
double) number_of_hits / dx);
 
  131   if (numberOfHits > 0) {
 
  133     int number_of_hits = 0;
 
  135     const double t_ns = 25.0;
 
  137     for (
int i = 0; i != numberOfHits; ++i) {
 
  142       input.push_back(JPMTSignal(t_ns, NPE));
 
  144       simulator.processHits(pmt, calibration, status, input, output);
 
  146       for (JPMTData<JPMTPulse>::const_iterator hit = output.begin(); hit != output.end(); ++hit) {
 
  150         h2.Fill(hit->tot_ns);
 
  155     h2.Scale(1.0 / (
double) number_of_hits / dx);
 
  163   for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
 
  165     const Double_t x  = h0.GetBinCenter (i);
 
  166     const Double_t y0 = h0.GetBinContent(i);
 
  167     const Double_t y1 = 
h1.GetBinContent(i);
 
  168     const Double_t y2 = h2.GetBinContent(i);
 
  170     DEBUG(
"[" << setw(3) << i << 
"]"  << 
' '  
  171           << 
FIXED(5,1) << x  << 
' ' 
  172           << 
FIXED(6,4) << y0 << 
' ' 
  173           << 
FIXED(6,4) << y1 << 
' ' 
  174           << 
FIXED(6,4) << y2 << endl);
 
  176     ASSERT(fabs(y0 - y1) < precision);
 
  177     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
 
then for HISTOGRAM in h0 h1
 
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 
 
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG