27 int main(
int argc, 
char **argv)
 
   42     JParser<> zap(
"Example program to histogram charge distributions.");
 
   55   catch(
const exception &error) {
 
   56     FATAL(error.what() << endl);
 
   65     const double dx   = JPMTSignalProcessorInterface::getQmin();
 
   66     const double xmin = 0.0  -  0.5*dx;
 
   67     const int    nx   = (int) ((10.0 - 
xmin) / dx);
 
   69     H0[1] = 
new TH1D(
"1.0", NULL, nx, 
xmin, 
xmin + nx * dx);
 
   70     H1[1] = 
new TH1D(
"1.1", NULL, nx, 
xmin, 
xmin + nx * dx);
 
   73     const double dx   = 0.02;
 
   75     const int    nx   = (int) ((10.0 - 
xmin) / dx);
 
   77     H0[2] = 
new TH1D(
"2.0", NULL, nx, 
xmin, 
xmin + nx * dx);
 
   78     H1[2] = 
new TH1D(
"2.1", NULL, nx, 
xmin, 
xmin + nx * dx);
 
   91     for (
int i=1; i <= H0[test]->GetNbinsX(); ++i) {
 
   93       const double npe = H0[test]->GetBinCenter(i);
 
   94       const double p   = cpu->getChargeProbability(npe,NPE);
 
   96       H0[test]->SetBinContent(i,p);
 
   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);
 
  109           if (cpu->applyThreshold(npe)) {
 
  123       const double dx = (H1[test]->GetXaxis()->GetXmax() - H1[test]->GetXaxis()->GetXmin()) / H1[test]->GetXaxis()->GetNbins();
 
  125       H1[test]->Scale(1.0 / (
double) number_of_hits / dx);
 
  135   for (
auto& i : H0) { out << *i.second; }
 
  136   for (
auto& i : H1) { out << *i.second; }
 
  145   for (
int i = 1; i != test; ++i) {
 
  147     DEBUG(
"Test " << i << endl);
 
  149     for (
int ix = 1; ix <= H0[i]->GetNbinsX(); ++ix) {
 
  151       const Double_t 
x  = H0[i]->GetBinCenter (ix);
 
  152       const Double_t y0 = H0[i]->GetBinContent(ix);
 
  153       const Double_t y1 = H1[i]->GetBinContent(ix);
 
  155       DEBUG(
"[" << setw(3) << ix << 
"]"  << 
' '  
  157             << 
FIXED(6,4) << y0 << 
' ' 
  158             << 
FIXED(6,4) << y1 << endl);
 
  160       ASSERT(fabs(y0 - y1) < precision);
 
int main(int argc, char **argv)
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
#define ASSERT(A,...)
Assert macro.
 
PMT analogue signal processor.
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
I/O formatting auxiliaries.
 
Auxiliary class for map of PMT parameters.
 
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
 
Data structure for PMT parameters.
 
double thresholdBand
threshold-band [npe]
 
double threshold
threshold [npe]
 
PMT signal processor interface.
 
virtual const char * what() const override
Get error message.
 
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)...