13 #include "CLHEP/Units/GlobalSystemOfUnits.h" 14 #include "CLHEP/Units/GlobalPhysicalConstants.h" 24 edm::LogVerbatim(
"HFShower") <<
"HFFibre:: Speed of light in fibre " << cFibre <<
" m/ns";
38 std::stringstream ss1;
39 for (
int it = 0; it <
nBinAtt; it++) {
40 if (it / 10 * 10 == it) {
43 ss1 <<
" " <<
attL[it] * cm;
45 edm::LogVerbatim(
"HFShower") <<
"HFFibre: " << nBinAtt <<
" attL(1/cm): " << ss1.str();
50 lambLim[0] =
static_cast<int>(nvec[0]);
51 lambLim[1] =
static_cast<int>(nvec[1]);
57 std::stringstream ss2;
58 for (
int it = 0; it < nb; it++) {
59 if (it / 10 * 10 == it) {
62 ss2 <<
" " <<
longFL[it] / cm;
64 edm::LogVerbatim(
"HFShower") <<
"HFFibre: " << nb <<
" Long Fibre Length(cm):" << ss2.str();
67 std::stringstream ss3;
68 for (
int it = 0; it < nb; it++) {
69 if (it / 10 * 10 == it) {
74 edm::LogVerbatim(
"HFShower") <<
"HFFibre: " << nb <<
" Short Fibre Length(cm):" << ss3.str();
76 edm::LogError(
"HFShower") <<
"HFFibre: cannot get filtered view for " << attribute <<
" matching " <<
name;
77 throw cms::Exception(
"Unknown",
"HFFibre") <<
"cannot match " << attribute <<
" to " << name <<
"\n";
87 std::stringstream sss;
89 if (
i / 10 * 10 ==
i) {
105 double att =
attL[j];
107 edm::LogVerbatim(
"HFShower") <<
"HFFibre::attLength for Lambda " << lambda <<
" index " << i <<
" " << j
108 <<
" Att. Length " << att;
114 double zFibre =
zShift(point, depth, fromEndAbs);
117 edm::LogVerbatim(
"HFShower") <<
"HFFibre::tShift for point " << point <<
" ( depth = " << depth
118 <<
", traversed length = " << zFibre / cm <<
" cm) = " << time / ns <<
" ns";
126 double hR =
sqrt((point.x()) * (point.x()) + (point.y()) * (point.y()));
128 double length = 250 * cm;
129 if (fromEndAbs < 0) {
130 zFibre = 0.5 *
gpar[1] - point.z();
135 ieta =
nBinR - i - 1;
138 if ((
int)(
shortFL.size()) > ieta)
141 if ((
int)(
longFL.size()) > ieta)
145 if (fromEndAbs > 0) {
148 double zz = 0.5 *
gpar[1] + point.z();
156 edm::LogVerbatim(
"HFShower") <<
"HFFibre::zShift for point " << point <<
" (R = " << hR / cm
157 <<
" cm, Index = " << ieta <<
", depth = " << depth <<
", Fibre Length = " << length / cm
158 <<
" cm = " << zFibre / cm <<
" cm)";
165 edm::LogVerbatim(
"HFShower") <<
"HFFibre:getDDDArray called for " << str <<
" with nMin " << nmin;
172 const std::vector<double>& fvec = value.
doubles();
173 int nval = fvec.size();
176 edm::LogError(
"HFShower") <<
"HFFibre : # of " << str <<
" bins " << nval <<
" < " << nmin <<
" ==> illegal";
177 throw cms::Exception(
"Unknown",
"HFFibre") <<
"nval < nmin for array " << str <<
"\n";
180 if (nval < 1 && nmin != 0) {
181 edm::LogError(
"HFShower") <<
"HFFibre : # of " << str <<
" bins " << nval <<
" < 1 ==> illegal (nmin=" << nmin
183 throw cms::Exception(
"Unknown",
"HFFibre") <<
"nval < 1 for array " << str <<
"\n";
191 throw cms::Exception(
"Unknown",
"HFFibre") <<
"cannot get array " << str <<
"\n";
193 std::vector<double> fvec;
double tShift(const G4ThreeVector &point, int depth, int fromEndAbs=0)
std::vector< double > gpar
T getParameter(std::string const &) const
std::vector< double > getDDDArray(const std::string &, const DDsvalues_type &, int &)
const std::vector< double > & doubles() const
a reference to the double-valued values stored in the given instance of DDValue
void initRun(const HcalDDDSimConstants *)
double attLength(double lambda)
double zShift(const G4ThreeVector &point, int depth, int fromEndAbs=0)
std::vector< double > radius
Compact representation of the geometrical detector hierarchy.
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
HFFibre(const std::string &name, const DDCompactView &cpv, edm::ParameterSet const &p)
const std::vector< double > & getRTableHF() const
std::vector< double > shortFL
std::vector< double > attL
const std::vector< double > & getGparHF() const
DDsvalues_type mergedSpecifics() const
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
bool firstChild()
set the current node to the first child ...
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
std::vector< double > longFL