21 int main(
int argc, 
char **argv)
 
   27   JPMTParametersMap parameters;
 
   35     JParser<> zap(
"Example program to test PMT signal processor probability.");
 
   39     zap[
'p'] = 
make_field(pmt)              = JPMTIdentifier(-1,0);
 
   46   catch(
const exception &error) {
 
   47     FATAL(error.what() << endl);
 
   51   const double QEmax = 1.0;
 
   53   JPMTParameters buffer = parameters.getPMTParameters(pmt);
 
   55   DEBUG(
"PMT parameters:" << endl);
 
   58   if (buffer.QE > QEmax) {
 
   60     WARNING(
"PMT QE set to " << QEmax << endl);
 
   65   JPMTSignalProcessorInterface* cpu = 
new JPMTAnalogueSignalProcessor(buffer);
 
   70   int number_of_hits = 0;
 
   72   for (
int i = 0; i != numberOfHits; ++i) {
 
   76     for (
int __i = 0; __i != NPE; ++__i) {
 
   82     double x = cpu->getRandomAmplitude(npe);
 
   84     if (cpu->applyThreshold(x)) {
 
   89   const double P = (double) number_of_hits / (
double) numberOfHits; 
 
   91   DEBUG(
"Number of generated hits " << setw(8) << right << numberOfHits   << endl);
 
   92   DEBUG(
"Number of accepted  hits " << setw(8) << right << number_of_hits << endl);
 
   93   DEBUG(
"Probability (real) " << 
FIXED(8,5) << P                                  << endl);
 
   94   DEBUG(
"Probability (calc) " << 
FIXED(8,5) << cpu->getSurvivalProbability(NPE)   << endl);
 
   96   ASSERT(fabs(P - cpu->getSurvivalProbability(NPE)) < precision * cpu->getSurvivalProbability(NPE));