33 int main(
int argc,
char **argv)
38 typedef JAbstractHistogram<double> JHistogram_t;
52 JParser<> zap(
"Auxiliary program to determine PDF of L1 hit.");
56 zap[
'E'] =
make_field(
E,
"muon energy [GeV]") = 1.0;
57 zap[
'R'] =
make_field(
R,
"distance of approach [m]");
58 zap[
'D'] =
make_field(dir,
"(theta, phi) of PMT [rad]");
59 zap[
'T'] =
make_field(T_ns,
"time window [ns]") = 10.0;
60 zap[
'B'] =
make_field(R_Hz,
"background rate [Hz]") = 0.0;
66 catch(
const exception &error) {
67 FATAL(error.what() << endl);
70 typedef JSplineFunction1S_t JFunction1D_t;
71 typedef JMAPLIST<JPolint1FunctionalMap,
72 JPolint1FunctionalGridMap,
73 JPolint1FunctionalGridMap>::maplist JMapList_t;
74 typedef JPDFTable<JFunction1D_t, JMapList_t> JPDF_t;
76 JFunction1D_t::JSupervisor supervisor(
new JFunction1D_t::JDefaultResult(
zero));
85 const int N =
sizeof(pdf_t) /
sizeof(pdf_t[0]);
89 for (
int i = 0;
i !=
N; ++
i) {
93 const string file_name =
getFilename(inputFile, pdf_t[
i]);
95 NOTICE(
"loading input from file " << file_name <<
"... " << flush);
97 pdf[
i].load(file_name.c_str());
101 catch(
const JException& error) {
102 FATAL(error.what() << endl);
105 pdf[
i].setExceptionHandler(supervisor);
116 JModule module = getModule<JKM3NeT_t>(1);
118 module.rotate(JRotation3D(dir));
125 JSplineFunction1S_t zsp;
127 for (
double t1 =
histogram.getLowerLimit(); t1 <=
histogram.getUpperLimit(); t1 += 0.1) {
129 const double t2 = t1 + T_ns;
131 JFunction1D_t::result_type y1;
132 JFunction1D_t::result_type y2;
134 for (
int i = 0;
i !=
N; ++
i) {
136 JFunction1D_t::result_type
p1;
137 JFunction1D_t::result_type
p2;
141 for (
const auto& pmt : module) {
142 p1 += pdf[
i](
R, pmt.getTheta(), pmt.getPhi(), t1);
143 p2 += pdf[
i](
R, pmt.getTheta(), pmt.getPhi(), t2);
161 y1.v += R_Hz * 1e-9 * (t1 -
histogram.getLowerLimit());
162 y2.v += R_Hz * 1e-9 * (t2 -
histogram.getLowerLimit());
164 zsp[t1] = y1.f * (1.0 -
exp(y1.v - y2.v));
169 for (
int ix = 1; ix <= h0.GetNbinsX(); ++ix) {
171 const double t1 = h0.GetBinCenter(ix);
175 const JFunction1D_t::result_type
result = zsp(t1);
177 const double W =
exp(-result.v) * result.f / (1.0 -
exp(-result.V));
179 h0.SetBinContent(ix, W);
181 catch(
const exception&) {}
Utility class to parse command line options.
int main(int argc, char *argv[])
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
direct light from EM showers
static const JZero zero
Function object to assign zero value.
then warning Cannot perform comparison test for histogram
Various implementations of functional maps.
Numbering scheme for PDF types.
bool is_bremsstrahlung(const int pdf)
Test if given PDF type corresponds to Cherenkov light from Bremsstrahlung.
scattered light from muon
I/O formatting auxiliaries.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
scattered light from delta-rays
scattered light from EM showers
General purpose messaging.
direct light from delta-rays
then JCookie sh JDataQuality D $DETECTOR_ID R
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
Utility class to parse command line options.
bool is_deltarays(const int pdf)
Test if given PDF type corresponds to Cherenkov light from delta-rays.
double getDeltaRaysFromMuon(const double E)
Equivalent EM-shower energy due to delta-rays per unit muon track length.
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
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
Data structure for optical module.