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. 
 
Abstract interface for the generation of points in 3D space. 
 
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"` typeset -Z 4 STRING JOpera1D -f hydrophone.root
 
Description of Monte Carlo event generation applications. 
 
Properties of KM3NeT PMT and deep-sea water. 
 
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. 
 
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
 
int getCount(const T &hit)
Get hit count. 
 
Data structure for position in three dimensions. 
 
do echo Generating $dir eval D
 
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
 
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number 
 
Data structure for optical module. 
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT.