27{
   30 
   32 
   35 
   36  try { 
   37 
   39 
   45 
   46    JParser<> zap(
"Auxiliary program to draw K40 fit function.");
 
   47    
   51 
   52    zap(argc, argv);
   53  }
   54  catch(const exception &error) {
   55    FATAL(error.what() << endl);
 
   56  }
   57 
   58 
   59  const JModule module = getModule<JKM3NeT_t>(1001);
 
   60 
   61  double ct = -1.0;
   62 
   63  for (JModule::const_iterator i = module.begin(); i != module.end(); ++i) {
   64    for (JModule::const_iterator j = module.begin(); j != i; ++j) {
   65 
   66      if (
getDot(i->getDirection(), 
j->getDirection()) > ct) {
 
   67        ct = 
getDot(i->getDirection(), 
j->getDirection());
 
   68      }
   69    }
   70  }
   71 
   73 
   74  cout << 
"Cosine minimal angle between PMT axes " << 
FIXED(5,3) << ct << endl;
 
   75  cout << 
"Default  rate [Hz] " << 
FIXED(6,3) << JK40Parameters::getInstance().getValue(ct) << 
'/' << 
FIXED(6,3) << JK40Parameters::getInstance().getValue(+1.0) << endl;
 
   76  cout << 
"Modified rate [Hz] " << 
FIXED(6,3) << 
K40                          .getValue(ct) << 
'/' << 
FIXED(6,3) << 
K40                          .getValue(+1.0) << endl;
 
   77 
   79 
   80  const Int_t    nx   = combinatorics.getNumberOfPairs();
   81  const Double_t xmin = -0.5;
   82  const Double_t xmax = nx - 0.5;
   83 
   84  TH1D h0("h0", NULL, 5000, -1.0, +1.0);
   85  TH1D h1("h1", NULL, nx, xmin, xmax);
   86 
   87  for (Int_t i = 1; i <= h0.GetXaxis()->GetNbins(); ++i) {
   88 
   89    const Double_t 
x = h0.GetBinCenter(i);
 
   90 
   91    h0.SetBinContent(i, 
K40.getValue(x));
 
   92  }
   93 
   94  for (Int_t i = 1; i <= h1.GetXaxis()->GetNbins(); ++i) {
   95 
   96    const int index = h1.GetBinCenter(i);
   97    
   98    const JCombinatorics_t::pair_type 
pair = combinatorics.getPair(index);
 
   99 
  100    const double x = 
getDot(module[
pair.first].getDirection(), module[
pair.second].getDirection());
 
  101 
  102    h1.SetBinContent(i, 
K40.getValue(x));
 
  103  }
  104 
  105  out.Write();
  106  out.Close();
  107}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
 
Data structure for a composite optical module.
 
Utility class to parse parameter values.
 
Utility class to parse command line options.
 
double getDot(const JFirst_t &first, const JSecond_t &second)
Get dot product of objects.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary data structure for floating point format specification.
 
PMT combinatorics for optical module.
 
Fit parameters for two-fold coincidence rate due to K40.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...