51 const int N =
sizeof(pdf_t) /
sizeof(pdf_t[0]);
55 double> JFunction1D_t;
56 typedef JPDFTable<JFunction1D_t, JNPEMaplist_t> JPDF_t;
59 const JNPE_t::JSupervisor supervisor(
new JNPE_t::JDefaultResult(
zero));
61 for (
int i = 0;
i !=
N; ++
i) {
66 const string file_name =
getFilename(fileDescriptor, type);
68 cout <<
"loading PDF from file " << file_name <<
"... " << flush;
70 pdf.load(file_name.c_str());
74 pdf.setExceptionHandler(supervisor);
86 cout <<
"adding PDFs... " << flush;
88 Y1[1].add(
Y1[0]);
Y1.erase(
Y1.begin());
89 YA[1].add(
YA[0]);
YA.erase(
YA.begin());
90 YB[1].add(
YB[0]);
YB.erase(
YB.begin());
111 const double phi)
const
115 const double y1 =
getNPE(
Y1, R, theta, phi);
116 const double yA =
getNPE(
YA, R, theta, phi);
117 const double yB =
getNPE(
YB, R, theta, phi);
151 if (R <= i->getXmax()) {
155 const double y =
get_value((*
i)(std::max(R,
i->getXmin()), theta, phi));
161 catch(
const exception& error) {
162 cerr << error.what() << endl;
202 const int N =
sizeof(pdf_t) /
sizeof(pdf_t[0]);
206 double> JFunction1D_t;
207 typedef JPDFTable<JFunction1D_t, JNPEMaplist_t> JPDF_t;
210 const JNPE_t::JSupervisor supervisor(
new JNPE_t::JDefaultResult(
zero));
212 for (
int i = 0;
i !=
N; ++
i) {
214 const string file_name =
getFilename(fileDescriptor, pdf_t[
i]);
216 cout <<
"loading input from file " << file_name <<
"... " << flush;
220 pdf.load(file_name.c_str());
222 pdf.setExceptionHandler(supervisor);
231 cout <<
"OK" << endl;
253 const double phi)
const
268 const double __D = sqrt(D*D - 2.0*(D*cd)*z + z*z);
269 const double __cd = (D * cd - z) / __D;
272 Y += W * npe (__D, __cd, theta, phi);
274 catch(
const exception& error) {
282 Y = npe(D, cd, theta, phi);
284 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.
JShowerNPE_t(const std::string &fileDescriptor, const int numberOfPoints=0)
Constructor.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
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
scattered light from EM shower
JMuonNPE_t(const std::string &fileDescriptor)
Constructor.
JPP::JNPETable< double, double, JNPEMaplist_t > JNPE_t
static const double MASS_MUON
muon mass [GeV]
static const double INDEX_OF_REFRACTION_WATER
Average index of refraction of water corresponding to the group velocity.
Auxiliary data structure for shower PDF.
direct light from EM showers
static const JZero zero
Function object to assign zero value.
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
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.
scattered light from delta-rays
direct light from EM shower
scattered light from EM showers
General purpose class for a collection of sorted elements.
direct light from delta-rays
then JCookie sh JDataQuality D $DETECTOR_ID R
std::vector< JNPE_t > YB
light from EM showers
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
std::vector< JNPE_t > YA
light from delta-rays
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.
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.
do echo Generating $dir eval D
double calculate(const double E, const double D, const double cd, const double theta, const double phi) const
Get PDF.
JNPE_t npe
PDF for shower.