702     JParser<> zap(
"Example program to calculate multiples rate.");
 
  719   catch(
const exception &error) {
 
  720     FATAL(error.what() << endl);
 
  723   gRandom->SetSeed(seed);
 
  731   DEBUG(module << endl);
 
  735   const double  R_m = 17.0 * 2.54 * 0.5e-2;                
 
  736   const double  A   = 
PI * R_m * R_m;                      
 
  738   const double wmin = 280.0;   
 
  739   const double wmax = 700.0;   
 
  742   const double WAVELENGTH_EXPANSION =  (wmax-wmin) / (wmin*wmax) * (300.0*600.0)/(600.0-300.0);
 
  748   case +2: enigma = 
new JEnigma<+2>(D_m); 
break;
 
  749   case  0: enigma = 
new JEnigma< 0>(D_m); 
break;
 
  750   case -2: enigma = 
new JEnigma<-2>(D_m); 
break;
 
  755   const double vmin = 1.0 / wmax;    
 
  756   const double vmax = 1.0 / wmin;    
 
  760   for (
double w = wmin; 
w <= wmax; 
w += 1.0) {
 
  766   NOTICE(
"Maximal QE                  " << 
FIXED(5,3) << QEmax                << endl);
 
  767   NOTICE(
"Wavelength expansion        " << 
FIXED(5,3) << WAVELENGTH_EXPANSION << endl);
 
  768   NOTICE(
"Number of photons per decay " << 
FIXED(5,2) << ng                   << endl);
 
  772   JManager_t H1(
new TH1D(
"M[%]", NULL, 100, D_m.getLowerLimit(), D_m.getUpperLimit()));
 
  776   TH1D 
pmt(
"pmt", NULL, 1000, -1.0, +1.0);
 
  778   for (Int_t i = 1; i != 
pmt.GetNbinsX(); ++i) {
 
  780     const double dot = 
pmt.GetBinCenter(i);
 
  791       y = get_angular_acceptance(dot);
 
  795     pmt.SetBinContent(i, y);
 
  806   for (
counter_type event_count = 0; event_count != numberOfEvents; ++event_count) {
 
  808     if (event_count%10000 == 0) {
 
  809       STATUS(
"event: " << setw(10) << event_count << 
'\r'); 
DEBUG(endl);
 
  812     const JResult& 
result = enigma->next();
 
  814     const double D = result.D;
 
  815     const double V = result.V;
 
  820     double W = 
A / (4*
PI*(D-R_m)*(D-R_m));
 
  827     double x = gRandom->Rndm();      
 
  830     if      ((x -= k40_beta_decay      .getBranchingRatio()) <= 0.0)
 
  831       y = k40_beta_decay      (gRandom->Rndm());
 
  832     else if ((x -= k40_electron_capture.getBranchingRatio()) <= 0.0)
 
  833       y = k40_electron_capture(gRandom->Rndm());
 
  835     const int N = gRandom->Poisson(y  * WAVELENGTH_EXPANSION * QE * W * QEmax * focus);
 
  844       const double ct  = gRandom->Uniform(-1.0, +1.0);
 
  845       const double phi = gRandom->Uniform(-
PI,  +
PI);
 
  847       const double st  = sqrt((1.0 - ct) * (1.0 + ct));    
 
  855       for (
int i = 0; i != 
N; ++i) {
 
  859         const double v     = gRandom->Uniform(vmin, vmax);
 
  860         const double w     = 1.0 / 
v;
 
  866         for (
size_t pmt = 0; 
pmt != module.size(); ++
pmt) {
 
  872           const double d   = pos.getLength();
 
  877             ERROR(
"Distance " << d << 
" < " << D << endl);
 
  897             p = get_angular_acceptance(dot) * 
getQE(w);
 
  901           P += pi[
pmt] = U * p * 
exp(-d/l_abs);
 
  905           ERROR(
"Probability " << P << 
" > " << W << endl);
 
  908         if (W * QEmax * gRandom->Rndm() < 
P) {
 
  911           double y   = gRandom->Uniform(P);
 
  915           buffer.push_back(pmt);
 
  919       if (!buffer.empty()) {
 
  921         int M = buffer.size();
 
  925           sort(buffer.begin(), buffer.end());
 
  927           M = 
distance(buffer.begin(), unique(buffer.begin(), buffer.end()));
 
  933         for (
int i = 2; i <= 
M; ++i) {
 
  934           P2[i].put((
double) (buffer.size() - 
M) / (
double) 
M, V);
 
  942   for (JManager_t::iterator i = H1.begin(); i != H1.end(); ++i) {
 
  943     i->second->Scale(bequerel / (
double) numberOfEvents);
 
  946   for (
size_t M = 2; M != 7; ++
M) {
 
  947     cout << 
"Rate[" << M << 
"] = " 
  948          << 
FIXED(7,3) << bequerel * 
h1[
M].getTotal() / (double) numberOfEvents
 
  950          << 
FIXED(7,3) << bequerel * 
h1[
M].getError() / (double) numberOfEvents
 
  954   for (
size_t M = 2; M != 7; ++
M) {
 
  956       cout << 
"P2[" << M << 
"] = " << P2[
M].getMean() << endl;
 
Utility class to parse command line options. 
 
do echo Generating $dir eval D
 
const double getPhotocathodeArea()
Photo-cathode area 10 inch PMT. 
 
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 for HISTOGRAM in h0 h1
 
Long64_t counter_type
Type definition for counter. 
 
Auxiliary data structure for floating point format specification. 
 
fi JEventTimesliceWriter a
 
Abstract interface for the generation of points in 3D space. 
 
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
 
Description of Monte Carlo event generation applications. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. 
 
#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...
 
then print_variable DETECTOR INPUT_FILE INTERMEDIATE_FILE check_input_file $DETECTOR $INPUT_FILE check_output_file $INTERMEDIATE_FILE $OUTPUT_FILE JMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
JRange< Double_t > JRange_t
 
double getAbsorptionLength(const double lambda)
Absoption length. 
 
int getCount(const T &hit)
Get hit count. 
 
JDirection3D getDirection(const Vec &v)
Get direction. 
 
Data structure for position in three dimensions. 
 
static const JPhotocathodeArea2D getPhotocathodeArea2D
Function object for photo-cathode area 3 inch PMT. 
 
then usage $script[input file[working directory[option]]] nWhere option can be N
 
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 
 
#define DEBUG(A)
Message macros. 
 
JPosition3D getPosition(const Vec &v)
Get position. 
 
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT.