45 JParser<> zap(
"Demonstration program to plot RMS of arrival time of first hit as a function of the minimal distance of approach of a muon to the PMT.");
49 zap[
'E'] =
make_field(E_GeV,
"muon energy [GeV]");
50 zap[
'R'] =
make_field(R_Hz,
"background rate [Hz]");
51 zap[
'D'] =
make_field(dir,
"(theta, phi) of PMT [rad]");
56 catch(
const exception &error) {
57 FATAL(error.what() << endl);
61 typedef JSplineFunction1S_t JFunction1D_t;
62 typedef JMAPLIST<JPolint1FunctionalMap,
63 JPolint1FunctionalGridMap,
64 JPolint1FunctionalGridMap>::maplist JMapList_t;
65 typedef JPDFTable<JFunction1D_t, JMapList_t> JPDF_t;
67 JFunction1D_t::JSupervisor supervisor(
new JFunction1D_t::JDefaultResult(
zero));
74 const int N =
sizeof(pdf_t) /
sizeof(pdf_t[0]);
78 for (
int i = 0; i !=
N; ++i) {
82 const string file_name =
getFilename(inputFile, pdf_t[i]);
84 NOTICE(
"loading input from file " << file_name <<
"... " << flush);
86 pdf[i].load(file_name.c_str());
90 catch(
const JException& error) {
91 FATAL(error.what() << endl);
94 pdf[i].setExceptionHandler(supervisor);
122 os <<
"t[" << *i <<
"]";
124 buffer.push_back(
new TH1D(os.str().c_str(), NULL, 5000, -250.0, +250.0));
133 x.push_back(*i - 0.5*(*j-*i));
135 for (; j !=
X.end(); ++i, ++
j)
136 x.push_back(0.5*(*i+*j));
141 x.push_back(*j + 0.5*(*j-*i));
144 TH1D rms(
"rms", NULL,
X.size(), &x[0]);
147 JFunction1D_t::result_type p[4];
153 const double Tmin = -250.0;
154 const double Tmax = +250.0;
158 for (
size_t i = 0; i !=
X.size(); ++i) {
161 const double R =
X[i];
163 JSplineFunction1S_t zsp;
165 for (
int j = 1; j <= h->GetNbinsX(); ++
j) {
167 const double t1 = h->GetBinCenter(j);
173 for (
int k = 0;
k != 4; ++
k) {
174 p[
k] = pdf[
k](
R, dir.getTheta(), dir.getPhi(), t1);
183 R_Hz * 1e-9 * (t1 - Tmin);
191 R_Hz * 1e-9 * (Tmax - Tmin);
201 const double W =
exp(-v) * y / (1.0 -
exp(-V));
207 h->SetBinContent(j,W);
214 const double sig =
result.getFWHM() * 0.5 / sqrt(2.0*log(2.0));
218 NOTICE(
"integral " << R <<
' ' <<
result.getIntegral() << endl);
221 const float w = 1.0 / (float)
n;
224 timer.print(cout,
w);
Utility class to parse command line options.
then fatal No sound hydrophone file $HYDROPHONE_TXT fi JGraph f $HYDROPHONE_TXT o $HYDROPHONE_ROOT sort gr k
direct light from EM showers
static const JZero zero
Function object to assign zero value.
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))*exp(-0.5 *(y-[1])*(y-[1])/([2]*[2]))" JF2 -o $WORKDIR/f2.root -F "$FORMULA" -@ "p0
scattered light from muon
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
then break fi done getCenter read X Y Z let X
scattered light from EM showers
then usage $script[distance] fi case set_variable R
alias put_queue eval echo n
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
then usage $script[input file[working directory[option]]] nWhere option can be N