51     virtual const JResult& next() = 0;
 
   59   template<
int N> 
struct JEnigma;
 
   75     JEnigma(
const JRange_t& D_m) :
 
   76       D3_min(D_m.getLowerLimit() * D_m.getLowerLimit() * D_m.getLowerLimit()),
 
   77       D3_max(D_m.getUpperLimit() * D_m.getUpperLimit() * D_m.getUpperLimit())
 
   79       this->
V = (4.0/3.0)*
PI*(D3_max - D3_min);
 
   82     virtual const JResult& next() 
 
   84       const double D3 = gRandom->Uniform(D3_min, D3_max);
 
  109     JEnigma(
const JRange_t& D_m) :
 
  110       D_min(D_m.getLowerLimit()),
 
  111       D_max(D_m.getUpperLimit())
 
  114     virtual const JResult& next() 
 
  116       this->
D = gRandom->Uniform(D_min, D_max);
 
  117       this->
V = 4.0*
PI*
D*
D * (D_max - D_min);
 
  140     JEnigma(
const JRange_t& D_m) :
 
  141       Dinv_min(1.0/D_m.getUpperLimit()),
 
  142       Dinv_max(1.0/D_m.getLowerLimit())
 
  145     virtual const JResult& next() 
 
  147       const double Dinv = gRandom->Uniform(Dinv_min, Dinv_max);
 
  150       this->
V = 4.0*
PI*
D*
D * 
D*
D * (Dinv_max - Dinv_min);
 
  155     const double Dinv_min;
 
  156     const double Dinv_max;
 
  172     double operator()(
const double x)
 const 
  174       const_iterator i = this->lower_bound(x);
 
  176       if (i != this->begin()) {
 
  189   class JK40BetaDecay :
 
  198       (*this)[0.000000] =   0.000;
 
  199       (*this)[0.140820] =   1.000;
 
  200       (*this)[0.165515] =   2.000;
 
  201       (*this)[0.185075] =   3.000;
 
  202       (*this)[0.202024] =   4.000;
 
  203       (*this)[0.216980] =   5.000;
 
  204       (*this)[0.231162] =   6.000;
 
  205       (*this)[0.244796] =   7.000;
 
  206       (*this)[0.257734] =   8.000;
 
  207       (*this)[0.270294] =   9.000;
 
  208       (*this)[0.282401] =  10.000;
 
  209       (*this)[0.294095] =  11.000;
 
  210       (*this)[0.305618] =  12.000;
 
  211       (*this)[0.316936] =  13.000;
 
  212       (*this)[0.328064] =  14.000;
 
  213       (*this)[0.338988] =  15.000;
 
  214       (*this)[0.349740] =  16.000;
 
  215       (*this)[0.360311] =  17.000;
 
  216       (*this)[0.370834] =  18.000;
 
  217       (*this)[0.381182] =  19.000;
 
  218       (*this)[0.391350] =  20.000;
 
  219       (*this)[0.401436] =  21.000;
 
  220       (*this)[0.411309] =  22.000;
 
  221       (*this)[0.421253] =  23.000;
 
  222       (*this)[0.430885] =  24.000;
 
  223       (*this)[0.440576] =  25.000;
 
  224       (*this)[0.450050] =  26.000;
 
  225       (*this)[0.459358] =  27.000;
 
  226       (*this)[0.468670] =  28.000;
 
  227       (*this)[0.477844] =  29.000;
 
  228       (*this)[0.487045] =  30.000;
 
  229       (*this)[0.496031] =  31.000;
 
  230       (*this)[0.505032] =  32.000;
 
  231       (*this)[0.513970] =  33.000;
 
  232       (*this)[0.522793] =  34.000;
 
  233       (*this)[0.531627] =  35.000;
 
  234       (*this)[0.540303] =  36.000;
 
  235       (*this)[0.548891] =  37.000;
 
  236       (*this)[0.557355] =  38.000;
 
  237       (*this)[0.565805] =  39.000;
 
  238       (*this)[0.574089] =  40.000;
 
  239       (*this)[0.582449] =  41.000;
 
  240       (*this)[0.590614] =  42.000;
 
  241       (*this)[0.598731] =  43.000;
 
  242       (*this)[0.606772] =  44.000;
 
  243       (*this)[0.614729] =  45.000;
 
  244       (*this)[0.622647] =  46.000;
 
  245       (*this)[0.630523] =  47.000;
 
  246       (*this)[0.638299] =  48.000;
 
  247       (*this)[0.646020] =  49.000;
 
  248       (*this)[0.653625] =  50.000;
 
  249       (*this)[0.661176] =  51.000;
 
  250       (*this)[0.668671] =  52.000;
 
  251       (*this)[0.675974] =  53.000;
 
  252       (*this)[0.683343] =  54.000;
 
  253       (*this)[0.690566] =  55.000;
 
  254       (*this)[0.697753] =  56.000;
 
  255       (*this)[0.704796] =  57.000;
 
  256       (*this)[0.711778] =  58.000;
 
  257       (*this)[0.718749] =  59.000;
 
  258       (*this)[0.725594] =  60.000;
 
  259       (*this)[0.732284] =  61.000;
 
  260       (*this)[0.738976] =  62.000;
 
  261       (*this)[0.745591] =  63.000;
 
  262       (*this)[0.752171] =  64.000;
 
  263       (*this)[0.758597] =  65.000;
 
  264       (*this)[0.764951] =  66.000;
 
  265       (*this)[0.771278] =  67.000;
 
  266       (*this)[0.777509] =  68.000;
 
  267       (*this)[0.783618] =  69.000;
 
  268       (*this)[0.789677] =  70.000;
 
  269       (*this)[0.795685] =  71.000;
 
  270       (*this)[0.801588] =  72.000;
 
  271       (*this)[0.807409] =  73.000;
 
  272       (*this)[0.813077] =  74.000;
 
  273       (*this)[0.818736] =  75.000;
 
  274       (*this)[0.824251] =  76.000;
 
  275       (*this)[0.829650] =  77.000;
 
  276       (*this)[0.835090] =  78.000;
 
  277       (*this)[0.840348] =  79.000;
 
  278       (*this)[0.845611] =  80.000;
 
  279       (*this)[0.850801] =  81.000;
 
  280       (*this)[0.855803] =  82.000;
 
  281       (*this)[0.860776] =  83.000;
 
  282       (*this)[0.865648] =  84.000;
 
  283       (*this)[0.870441] =  85.000;
 
  284       (*this)[0.875074] =  86.000;
 
  285       (*this)[0.879596] =  87.000;
 
  286       (*this)[0.884102] =  88.000;
 
  287       (*this)[0.888459] =  89.000;
 
  288       (*this)[0.892717] =  90.000;
 
  289       (*this)[0.896964] =  91.000;
 
  290       (*this)[0.901105] =  92.000;
 
  291       (*this)[0.905168] =  93.000;
 
  292       (*this)[0.909097] =  94.000;
 
  293       (*this)[0.912907] =  95.000;
 
  294       (*this)[0.916656] =  96.000;
 
  295       (*this)[0.920329] =  97.000;
 
  296       (*this)[0.923924] =  98.000;
 
  297       (*this)[0.927393] =  99.000;
 
  298       (*this)[0.930810] = 100.000;
 
  299       (*this)[0.934111] = 101.000;
 
  300       (*this)[0.937303] = 102.000;
 
  301       (*this)[0.940378] = 103.000;
 
  302       (*this)[0.943379] = 104.000;
 
  303       (*this)[0.946364] = 105.000;
 
  304       (*this)[0.949168] = 106.000;
 
  305       (*this)[0.951929] = 107.000;
 
  306       (*this)[0.954558] = 108.000;
 
  307       (*this)[0.957099] = 109.000;
 
  308       (*this)[0.959577] = 110.000;
 
  309       (*this)[0.961934] = 111.000;
 
  310       (*this)[0.964206] = 112.000;
 
  311       (*this)[0.966378] = 113.000;
 
  312       (*this)[0.968517] = 114.000;
 
  313       (*this)[0.970553] = 115.000;
 
  314       (*this)[0.972528] = 116.000;
 
  315       (*this)[0.974349] = 117.000;
 
  316       (*this)[0.976112] = 118.000;
 
  317       (*this)[0.977841] = 119.000;
 
  318       (*this)[0.979426] = 120.000;
 
  319       (*this)[0.980973] = 121.000;
 
  320       (*this)[0.982446] = 122.000;
 
  321       (*this)[0.983772] = 123.000;
 
  322       (*this)[0.985085] = 124.000;
 
  323       (*this)[0.986341] = 125.000;
 
  324       (*this)[0.987526] = 126.000;
 
  325       (*this)[0.988621] = 127.000;
 
  326       (*this)[0.989622] = 128.000;
 
  327       (*this)[0.990565] = 129.000;
 
  328       (*this)[0.991450] = 130.000;
 
  329       (*this)[0.992296] = 131.000;
 
  330       (*this)[0.993054] = 132.000;
 
  331       (*this)[0.993792] = 133.000;
 
  332       (*this)[0.994464] = 134.000;
 
  333       (*this)[0.995083] = 135.000;
 
  334       (*this)[0.995633] = 136.000;
 
  335       (*this)[0.996158] = 137.000;
 
  336       (*this)[0.996639] = 138.000;
 
  337       (*this)[0.997088] = 139.000;
 
  338       (*this)[0.997470] = 140.000;
 
  339       (*this)[0.997795] = 141.000;
 
  340       (*this)[0.998098] = 142.000;
 
  341       (*this)[0.998372] = 143.000;
 
  342       (*this)[0.998612] = 144.000;
 
  343       (*this)[0.998825] = 145.000;
 
  344       (*this)[0.999005] = 146.000;
 
  345       (*this)[0.999162] = 147.000;
 
  346       (*this)[0.999314] = 148.000;
 
  347       (*this)[0.999441] = 149.000;
 
  348       (*this)[0.999543] = 150.000;
 
  349       (*this)[0.999620] = 151.000;
 
  350       (*this)[0.999695] = 152.000;
 
  351       (*this)[0.999755] = 153.000;
 
  352       (*this)[0.999812] = 154.000;
 
  353       (*this)[0.999847] = 155.000;
 
  354       (*this)[0.999885] = 156.000;
 
  355       (*this)[0.999915] = 157.000;
 
  356       (*this)[0.999939] = 158.000;
 
  357       (*this)[0.999956] = 159.000;
 
  358       (*this)[0.999966] = 160.000;
 
  359       (*this)[0.999975] = 161.000;
 
  360       (*this)[0.999984] = 162.000;
 
  361       (*this)[0.999986] = 163.000;
 
  362       (*this)[0.999992] = 164.000;
 
  363       (*this)[0.999996] = 165.000;
 
  364       (*this)[0.999997] = 166.000;
 
  365       (*this)[0.999998] = 167.000;
 
  366       (*this)[0.999999] = 168.000;
 
  367       (*this)[0.999999] = 169.000;
 
  368       (*this)[0.999999] = 170.000;
 
  369       (*this)[1.000000] = 171.000;
 
  409     static double getBranchingRatio()
 
  420   class JK40ElectronCapture :
 
  427     JK40ElectronCapture()
 
  429       (*this)[0.000000] =   0.000;
 
  430       (*this)[0.000964] =   1.000;
 
  431       (*this)[0.002391] =   2.000;
 
  432       (*this)[0.004139] =   3.000;
 
  433       (*this)[0.005983] =   4.000;
 
  434       (*this)[0.008092] =   5.000;
 
  435       (*this)[0.010555] =   6.000;
 
  436       (*this)[0.013245] =   7.000;
 
  437       (*this)[0.016417] =   8.000;
 
  438       (*this)[0.019601] =   9.000;
 
  439       (*this)[0.023333] =  10.000;
 
  440       (*this)[0.027037] =  11.000;
 
  441       (*this)[0.031226] =  12.000;
 
  442       (*this)[0.035502] =  13.000;
 
  443       (*this)[0.040167] =  14.000;
 
  444       (*this)[0.045124] =  15.000;
 
  445       (*this)[0.050383] =  16.000;
 
  446       (*this)[0.055996] =  17.000;
 
  447       (*this)[0.061656] =  18.000;
 
  448       (*this)[0.067462] =  19.000;
 
  449       (*this)[0.073877] =  20.000;
 
  450       (*this)[0.080352] =  21.000;
 
  451       (*this)[0.086917] =  22.000;
 
  452       (*this)[0.093883] =  23.000;
 
  453       (*this)[0.100961] =  24.000;
 
  454       (*this)[0.108294] =  25.000;
 
  455       (*this)[0.116022] =  26.000;
 
  456       (*this)[0.123821] =  27.000;
 
  457       (*this)[0.131823] =  28.000;
 
  458       (*this)[0.139890] =  29.000;
 
  459       (*this)[0.147991] =  30.000;
 
  460       (*this)[0.156341] =  31.000;
 
  461       (*this)[0.164641] =  32.000;
 
  462       (*this)[0.173283] =  33.000;
 
  463       (*this)[0.181640] =  34.000;
 
  464       (*this)[0.189983] =  35.000;
 
  465       (*this)[0.198629] =  36.000;
 
  466       (*this)[0.207442] =  37.000;
 
  467       (*this)[0.216109] =  38.000;
 
  468       (*this)[0.225215] =  39.000;
 
  469       (*this)[0.234364] =  40.000;
 
  470       (*this)[0.243404] =  41.000;
 
  471       (*this)[0.252236] =  42.000;
 
  472       (*this)[0.261426] =  43.000;
 
  473       (*this)[0.270904] =  44.000;
 
  474       (*this)[0.280399] =  45.000;
 
  475       (*this)[0.290229] =  46.000;
 
  476       (*this)[0.300124] =  47.000;
 
  477       (*this)[0.309784] =  48.000;
 
  478       (*this)[0.319648] =  49.000;
 
  479       (*this)[0.329575] =  50.000;
 
  480       (*this)[0.339769] =  51.000;
 
  481       (*this)[0.350323] =  52.000;
 
  482       (*this)[0.360685] =  53.000;
 
  483       (*this)[0.371175] =  54.000;
 
  484       (*this)[0.381689] =  55.000;
 
  485       (*this)[0.392278] =  56.000;
 
  486       (*this)[0.402836] =  57.000;
 
  487       (*this)[0.413363] =  58.000;
 
  488       (*this)[0.424129] =  59.000;
 
  489       (*this)[0.435091] =  60.000;
 
  490       (*this)[0.445833] =  61.000;
 
  491       (*this)[0.456412] =  62.000;
 
  492       (*this)[0.466519] =  63.000;
 
  493       (*this)[0.477130] =  64.000;
 
  494       (*this)[0.487492] =  65.000;
 
  495       (*this)[0.497307] =  66.000;
 
  496       (*this)[0.507566] =  67.000;
 
  497       (*this)[0.517633] =  68.000;
 
  498       (*this)[0.527133] =  69.000;
 
  499       (*this)[0.536413] =  70.000;
 
  500       (*this)[0.545223] =  71.000;
 
  501       (*this)[0.554018] =  72.000;
 
  502       (*this)[0.562511] =  73.000;
 
  503       (*this)[0.570839] =  74.000;
 
  504       (*this)[0.579232] =  75.000;
 
  505       (*this)[0.587318] =  76.000;
 
  506       (*this)[0.595435] =  77.000;
 
  507       (*this)[0.603502] =  78.000;
 
  508       (*this)[0.611422] =  79.000;
 
  509       (*this)[0.619045] =  80.000;
 
  510       (*this)[0.626384] =  81.000;
 
  511       (*this)[0.633823] =  82.000;
 
  512       (*this)[0.641268] =  83.000;
 
  513       (*this)[0.648831] =  84.000;
 
  514       (*this)[0.656397] =  85.000;
 
  515       (*this)[0.663693] =  86.000;
 
  516       (*this)[0.671029] =  87.000;
 
  517       (*this)[0.678402] =  88.000;
 
  518       (*this)[0.685922] =  89.000;
 
  519       (*this)[0.693255] =  90.000;
 
  520       (*this)[0.700336] =  91.000;
 
  521       (*this)[0.707653] =  92.000;
 
  522       (*this)[0.714999] =  93.000;
 
  523       (*this)[0.721974] =  94.000;
 
  524       (*this)[0.728990] =  95.000;
 
  525       (*this)[0.736015] =  96.000;
 
  526       (*this)[0.742894] =  97.000;
 
  527       (*this)[0.750246] =  98.000;
 
  528       (*this)[0.757448] =  99.000;
 
  529       (*this)[0.764563] = 100.000;
 
  530       (*this)[0.771738] = 101.000;
 
  531       (*this)[0.778704] = 102.000;
 
  532       (*this)[0.785757] = 103.000;
 
  533       (*this)[0.793025] = 104.000;
 
  534       (*this)[0.800100] = 105.000;
 
  535       (*this)[0.807125] = 106.000;
 
  536       (*this)[0.814274] = 107.000;
 
  537       (*this)[0.821156] = 108.000;
 
  538       (*this)[0.828160] = 109.000;
 
  539       (*this)[0.834846] = 110.000;
 
  540       (*this)[0.841731] = 111.000;
 
  541       (*this)[0.848563] = 112.000;
 
  542       (*this)[0.855346] = 113.000;
 
  543       (*this)[0.862256] = 114.000;
 
  544       (*this)[0.868982] = 115.000;
 
  545       (*this)[0.875899] = 116.000;
 
  546       (*this)[0.882461] = 117.000;
 
  547       (*this)[0.888889] = 118.000;
 
  548       (*this)[0.895478] = 119.000;
 
  549       (*this)[0.901776] = 120.000;
 
  550       (*this)[0.908026] = 121.000;
 
  551       (*this)[0.914094] = 122.000;
 
  552       (*this)[0.920233] = 123.000;
 
  553       (*this)[0.926076] = 124.000;
 
  554       (*this)[0.931717] = 125.000;
 
  555       (*this)[0.937147] = 126.000;
 
  556       (*this)[0.942499] = 127.000;
 
  557       (*this)[0.947630] = 128.000;
 
  558       (*this)[0.952460] = 129.000;
 
  559       (*this)[0.956957] = 130.000;
 
  560       (*this)[0.961478] = 131.000;
 
  561       (*this)[0.965667] = 132.000;
 
  562       (*this)[0.969667] = 133.000;
 
  563       (*this)[0.973330] = 134.000;
 
  564       (*this)[0.976881] = 135.000;
 
  565       (*this)[0.980044] = 136.000;
 
  566       (*this)[0.982943] = 137.000;
 
  567       (*this)[0.985614] = 138.000;
 
  568       (*this)[0.987847] = 139.000;
 
  569       (*this)[0.990126] = 140.000;
 
  570       (*this)[0.991874] = 141.000;
 
  571       (*this)[0.993441] = 142.000;
 
  572       (*this)[0.994695] = 143.000;
 
  573       (*this)[0.995898] = 144.000;
 
  574       (*this)[0.996831] = 145.000;
 
  575       (*this)[0.997633] = 146.000;
 
  576       (*this)[0.998305] = 147.000;
 
  577       (*this)[0.998762] = 148.000;
 
  578       (*this)[0.999114] = 149.000;
 
  579       (*this)[0.999362] = 150.000;
 
  580       (*this)[0.999534] = 151.000;
 
  581       (*this)[0.999705] = 152.000;
 
  582       (*this)[0.999801] = 153.000;
 
  583       (*this)[0.999876] = 154.000;
 
  584       (*this)[0.999919] = 155.000;
 
  585       (*this)[0.999953] = 156.000;
 
  586       (*this)[0.999966] = 157.000;
 
  587       (*this)[0.999972] = 158.000;
 
  588       (*this)[0.999978] = 159.000;
 
  589       (*this)[0.999978] = 160.000;
 
  590       (*this)[0.999984] = 161.000;
 
  591       (*this)[0.999988] = 162.000;
 
  592       (*this)[0.999988] = 163.000;
 
  593       (*this)[0.999988] = 164.000;
 
  594       (*this)[0.999988] = 165.000;
 
  595       (*this)[0.999988] = 166.000;
 
  596       (*this)[0.999988] = 167.000;
 
  597       (*this)[0.999988] = 168.000;
 
  598       (*this)[0.999994] = 169.000;
 
  599       (*this)[0.999994] = 170.000;
 
  600       (*this)[0.999994] = 171.000;
 
  601       (*this)[0.999994] = 172.000;
 
  602       (*this)[0.999994] = 173.000;
 
  603       (*this)[0.999994] = 174.000;
 
  604       (*this)[0.999994] = 175.000;
 
  605       (*this)[0.999994] = 176.000;
 
  606       (*this)[0.999997] = 177.000;
 
  607       (*this)[0.999997] = 178.000;
 
  608       (*this)[0.999997] = 179.000;
 
  609       (*this)[0.999997] = 180.000;
 
  610       (*this)[1.000000] = 181.000;
 
  640     static double getBranchingRatio()
 
  649   static const JK40BetaDecay        k40_beta_decay;
 
  650   static const JK40ElectronCapture  k40_electron_capture;
 
  664   inline double get_angular_acceptance(
const double ct)
 
  666     const double w = 0.25*a*(1.0 + ct)*(1.0 + ct) - ct;
 
  682 int main(
int argc, 
char* argv[])
 
  703     JParser<> zap(
"Example program to calculate multiples rate.");
 
  708     zap[
'D'] = 
make_field(D_m)             =  JRange_t(0.216, 10);
 
  720   catch(
const exception &error) {
 
  721     FATAL(error.what() << endl);
 
  724   gRandom->SetSeed(seed);
 
  726   using namespace NAMESPACE;
 
  732   DEBUG(module << endl);
 
  736   const double  R_m = 17.0 * 2.54 * 0.5e-2;                
 
  737   const double  A   = 
PI * R_m * R_m;                      
 
  739   const double wmin = 280.0;   
 
  740   const double wmax = 700.0;   
 
  743   const double WAVELENGTH_EXPANSION =  (wmax-wmin) / (wmin*wmax) * (300.0*600.0)/(600.0-300.0);
 
  749   case +2: enigma = 
new JEnigma<+2>(D_m); 
break;
 
  750   case  0: enigma = 
new JEnigma< 0>(D_m); 
break;
 
  751   case -2: enigma = 
new JEnigma<-2>(D_m); 
break;
 
  756   const double vmin = 1.0 / wmax;    
 
  757   const double vmax = 1.0 / wmin;    
 
  761   for (
double w = wmin; 
w <= wmax; 
w += 1.0) {
 
  767   NOTICE(
"Maximal QE                  " << 
FIXED(5,3) << QEmax                << endl);
 
  768   NOTICE(
"Wavelength expansion        " << 
FIXED(5,3) << WAVELENGTH_EXPANSION << endl);
 
  769   NOTICE(
"Number of photons per decay " << 
FIXED(5,2) << ng                   << endl);
 
  773   JManager_t H1(
new TH1D(
"M[%]", NULL, 100, D_m.getLowerLimit(), D_m.getUpperLimit()));
 
  777   TH1D pmt(
"pmt", NULL, 1000, -1.0, +1.0);
 
  779   for (Int_t i = 1; i != pmt.GetNbinsX(); ++i) {
 
  781     const double dot = pmt.GetBinCenter(i);
 
  792       y = get_angular_acceptance(dot);
 
  796     pmt.SetBinContent(i, y);
 
  807   for (
counter_type event_count = 0; event_count != numberOfEvents; ++event_count) {
 
  809     if (event_count%10000 == 0) {
 
  810       STATUS(
"event: " << setw(10) << event_count << 
'\r'); 
DEBUG(endl);
 
  813     const JResult& 
result = enigma->next();
 
  815     const double D = result.D;
 
  816     const double V = result.V;
 
  821     double W = 
A / (4*
PI*(D-R_m)*(D-R_m));
 
  828     double x = gRandom->Rndm();      
 
  831     if      ((x -= k40_beta_decay      .getBranchingRatio()) <= 0.0)
 
  832       y = k40_beta_decay      (gRandom->Rndm());
 
  833     else if ((x -= k40_electron_capture.getBranchingRatio()) <= 0.0)
 
  834       y = k40_electron_capture(gRandom->Rndm());
 
  836     const int N = gRandom->Poisson(y  * WAVELENGTH_EXPANSION * QE * W * QEmax * focus);
 
  845       const double ct  = gRandom->Uniform(-1.0, +1.0);
 
  846       const double phi = gRandom->Uniform(-
PI,  +
PI);
 
  848       const double st  = sqrt((1.0 - ct) * (1.0 + ct));    
 
  856       for (
int i = 0; i != 
N; ++i) {
 
  860         const double v     = gRandom->Uniform(vmin, vmax);
 
  861         const double w     = 1.0 / 
v;
 
  867         for (
size_t pmt = 0; pmt != module.size(); ++pmt) {
 
  878             ERROR(
"Distance " << d << 
" < " << D << endl);
 
  898             p = get_angular_acceptance(dot) * 
getQE(w);
 
  902           P += pi[pmt] = U * p * 
exp(-d/l_abs);
 
  906           ERROR(
"Probability " << P << 
" > " << W << endl);
 
  909         if (W * QEmax * gRandom->Rndm() < 
P) {
 
  912           double y   = gRandom->Uniform(P);
 
  916           buffer.push_back(pmt);
 
  920       if (!buffer.empty()) {
 
  922         int M = buffer.size();
 
  926           sort(buffer.begin(), buffer.end());
 
  928           M = 
distance(buffer.begin(), unique(buffer.begin(), buffer.end()));
 
  934         for (
int i = 2; i <= 
M; ++i) {
 
  935           P2[i].put((
double) (buffer.size() - 
M) / (
double) 
M, 
V);
 
  943   for (JManager_t::iterator i = H1.begin(); i != H1.end(); ++i) {
 
  944     i->second->Scale(bequerel / (
double) numberOfEvents);
 
  947   for (
size_t M = 2; 
M != 7; ++
M) {
 
  948     cout << 
"Rate[" << 
M << 
"] = " 
  949          << 
FIXED(8,3) << bequerel * 
h1[
M].getTotal() / (double) numberOfEvents
 
  951          << 
FIXED(7,3) << bequerel * 
h1[
M].getError() / (double) numberOfEvents
 
  955   for (
size_t M = 2; 
M != 7; ++
M) {
 
  957       cout << 
"P2[" << 
M << 
"] = " << P2[
M].getMean() << endl;
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
Data structure for a composite optical module. 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
double getDot(const JNeutrinoDirection &first, const JNeutrinoDirection &second)
Dot product. 
 
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
 
then for HISTOGRAM in h0 h1
 
Long64_t counter_type
Type definition for counter. 
 
Dynamic ROOT object management. 
 
Auxiliary data structure for floating point format specification. 
 
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
 
Abstract interface for the generation of points in 3D space. 
 
Description of Monte Carlo event generation applications. 
 
Properties of KM3NeT PMT and deep-sea water. 
 
Type definition of range. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
I/O formatting auxiliaries. 
 
JDirection3D getDirection(const Vec &dir)
Get direction. 
 
Properties of KM3NeT PMT and deep-sea water. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
double getQE(const double R, const double mu)
Get QE for given ratio of hit probabilities and expectation value of the number of photo-electrons...
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
static const double PI
Mathematical constants. 
 
double getPhotocathodeArea()
Get photo-cathode area of PMT. 
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
double getLength() const 
Get length. 
 
General purpose messaging. 
 
static const JPhotocathodeArea2D getPhotocathodeArea2D
Function object for effective photo-cathode area of PMT. 
 
double getAbsorptionLength(const double lambda)
Get absorption length. 
 
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
Auxiliary class to define a range between two values. 
 
Utility class to parse command line options. 
 
int getCount(const T &hit)
Get hit count. 
 
Data structure for position in three dimensions. 
 
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
 
do echo Generating $dir eval D
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
 
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number 
 
#define DEBUG(A)
Message macros. 
 
Data structure for optical module. 
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT.