46 const int N =
sizeof(pdf_t) /
sizeof(pdf_t[0]);
50 double> JFunction1D_t;
51 typedef JPDFTable<JFunction1D_t, JNPEMaplist_t> JPDF_t;
54 const JNPE_t::JSupervisor supervisor(
new JNPE_t::JDefaultResult(
zero));
56 for (
int i = 0; i !=
N; ++i) {
60 const string file_name =
getFilename(fileDescriptor, pdf_t[i]);
62 cout <<
"loading PDF from file " << file_name <<
"... " << flush;
64 pdf.load(file_name.c_str());
68 pdf.setExceptionHandler(supervisor);
78 cout <<
"adding PDFs... " << flush;
80 Y1[1].add(
Y1[0]);
Y1.erase(
Y1.begin());
81 YB[1].add(
YB[0]);
YB.erase(
YB.begin());
102 const double phi)
const
106 const double yA =
getNPE(
Y1, R, theta, phi);
107 const double yB =
getNPE(
YB, R, theta, phi);
140 if (R <= i->getXmax()) {
144 const double y =
get_value((*i)(std::max(R, i->getXmin()), theta, phi));
150 catch(
const exception& error) {
151 cerr << error.what() << endl;
191 const int N =
sizeof(pdf_t) /
sizeof(pdf_t[0]);
195 double> JFunction1D_t;
196 typedef JPDFTable<JFunction1D_t, JNPEMaplist_t> JPDF_t;
199 const JNPE_t::JSupervisor supervisor(
new JNPE_t::JDefaultResult(
zero));
201 for (
int i = 0; i !=
N; ++i) {
203 const string file_name =
getFilename(fileDescriptor, pdf_t[i]);
205 cout <<
"loading input from file " << file_name <<
"... " << flush;
209 pdf.load(file_name.c_str());
211 pdf.setExceptionHandler(supervisor);
220 cout <<
"OK" << endl;
242 const double phi)
const
257 const double __D = sqrt(D*D - 2.0*(D*cd)*z + z*z);
258 const double __cd = (D * cd - z) / __D;
261 Y += W * npe (__D, __cd, theta, phi);
263 catch(
const exception& error) {
271 Y = npe(D, cd, theta, phi);
273 catch(
const exception& error) {
JPP::JMAPLIST< JPP::JPolint1FunctionalMap, JPP::JPolint1FunctionalMap, JPP::JPolint1FunctionalGridMap, JPP::JPolint1FunctionalGridMap >::maplist JNPEMaplist_t
double calculate(const double E, const double R, const double theta, const double phi) const
Get PDF.
do echo Generating $dir eval D
JShowerNPE_t(const std::string &fileDescriptor, const int numberOfPoints=0)
Constructor.
The elements in a collection are sorted according to their abscissa values and a given distance opera...
std::vector< JNPE_t > Y1
light from muon
JPP::JNPETable< double, double, JNPEMaplist_t > JNPE_t
then check_input_file $DETECTOR $INPUT_FILE for OPTION in A B C D E F
scattered light from EM shower
JMuonNPE_t(const std::string &fileDescriptor)
Constructor.
JPP::JNPETable< double, double, JNPEMaplist_t > JNPE_t
Auxiliary data structure for shower PDF.
direct light from EM showers
static const JZero zero
Function object to assign zero value.
JPP::JMAPLIST< JPP::JPolint1FunctionalMap, JPP::JPolint1FunctionalGridMap, JPP::JPolint1FunctionalGridMap >::maplist JNPEMaplist_t
Definition of zero value for any class.
Numbering scheme for PDF types.
void add(const JNPETable &input)
Add NPE table.
bool is_bremsstrahlung(const int pdf)
Test if given PDF type corresponds to Cherenkov light from Bremsstrahlung.
scattered light from muon
static double getNPE(const std::vector< JNPE_t > &NPE, const double R, const double theta, const double phi)
Get number of photo-electrons.
static const JGeanz geanz(1.85, 0.62, 0.54)
Function object for longitudinal EM-shower profile.
direct light from EM shower
scattered light from EM showers
General purpose class for a collection of sorted elements.
then usage $script[distance] fi case set_variable R
std::vector< JNPE_t > YB
light from EM showers
Auxiliary data structure for muon PDF.
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
Longitudinal emission profile EM-shower.
double getLength(const double E, const double P, const double eps=1.0e-3) const
Get shower length for a given integrated probability.
then usage $script[input file[working directory[option]]] nWhere option can be N
double calculate(const double E, const double D, const double cd, const double theta, const double phi) const
Get PDF.
then usage $script[input file[working directory[option]]] nWhere option can be E
JNPE_t npe
PDF for shower.