22{
   25 
   26  int               numberOfHits;
   29  int               NPE;
   30  double            precision;
   32 
   33  try {
   34 
   35    JParser<> zap(
"Example program to test PMT signal processor probability.");
 
   36 
   43 
   44    zap(argc, argv);
   45  }
   46  catch(const exception &error) {
   47    FATAL(error.what() << endl);
 
   48  }
   49 
   50 
   51  const double QEmax = 1.0;
   52 
   54 
   55  DEBUG(
"PMT parameters:" << endl);
 
   57 
   58  if (buffer.
QE > QEmax) {
 
   59    
   60    WARNING(
"PMT QE set to " << QEmax << endl);
 
   61 
   63  }
   64 
   66 
   70 
   71    int number_of_hits = 0;
   72 
   73    for (int i = 0; i != numberOfHits; ++i) {
   74 
   75      int npe = 0;
   76    
   77      for (int __i = 0; __i != NPE; ++__i) {
   78        if (cpu->applyQE()) {
   79          ++npe;
   80        }
   81      }
   82 
   83      double x = cpu->getRandomCharge(npe);
 
   84 
   85      try {
   86 
   87        if (cpu->applyThreshold(x)) {
   88          ++number_of_hits;
   89        }
   90 
   92 
   93        DEBUG(exception.what());
 
   94        continue;
   95      }
   96 
   97    }
   98 
   99    const double P = (double) number_of_hits / (double) numberOfHits; 
  100 
  101    DEBUG(
"Number of generated hits " << setw(8) << right << numberOfHits   << endl);
 
  102    DEBUG(
"Number of accepted  hits " << setw(8) << right << number_of_hits << endl);
 
  103    DEBUG(
"Probability (real) " << 
FIXED(8,5) << P                                  << endl);
 
  104    DEBUG(
"Probability (calc) " << 
FIXED(8,5) << cpu->getSurvivalProbability(NPE)   << endl);
 
  105 
  106    ASSERT(fabs(P - cpu->getSurvivalProbability(NPE)) < precision * cpu->getSurvivalProbability(NPE));
 
  107 
  108    delete cpu;
  109  }
  110 
  111  return 0;
  112}
#define DEBUG(A)
Message macros.
 
#define ASSERT(A,...)
Assert macro.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Auxiliary class for map of PMT parameters.
 
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
 
Data structure for PMT parameters.
 
double QE
relative quantum efficiency
 
JProperties getProperties(const JEquationParameters &equation=JPMTParameters::getEquationParameters())
Get properties of this class.
 
PMT signal processor interface.
 
Simple data structure to support I/O of equations (see class JLANG::JEquation).
 
Exception for accessing a value in a collection that is outside of its range.
 
Utility class to parse command line options.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary data structure for floating point format specification.
 
PMT analogue signal processor.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...