11 #include "CLHEP/Units/GlobalSystemOfUnits.h" 22 const std::vector<std::string>& fvec =
val.strings();
24 throw cms::Exception(
"HcalParametersFromDD") <<
"Failed to get " << s <<
" tag.";
39 throw cms::Exception(
"HcalParametersFromDD") <<
"Failed to get " << s <<
" tag.";
51 const int nEtaMax = 100;
54 std::unique_ptr<HcalGeomParameters>
geom = std::make_unique<HcalGeomParameters>();
55 geom->loadGeometry(fv1, php);
56 php.
modHB = geom->getModHalfHBHE(0);
57 php.
modHE = geom->getModHalfHBHE(1);
58 php.
dzVcal = geom->getConstDzHF();
59 geom->getConstRHO(php.
rHO);
66 for (
unsigned int i = 1;
i <= nEtaMax; ++
i) {
67 std::stringstream sstm;
68 sstm <<
"layerGroupSimEta" <<
i;
95 throw cms::Exception(
"HcalParametersFromDD") <<
"Not found " << attribute.c_str() <<
" but needed.";
97 for (
unsigned int i = 0;
i < php.
rTable.size(); ++
i) {
98 unsigned int k = php.
rTable.size() -
i - 1;
102 attribute =
"OnlyForHcalRecNumbering";
108 int topoMode = getTopologyMode(
"TopologyMode", sv,
true);
109 int trigMode = getTopologyMode(
"TriggerMode", sv,
false);
110 php.
topologyMode = ((trigMode & 0xFF) << 8) | (topoMode & 0xFF);
113 for (
unsigned int i = 1;
i <= nEtaMax; ++
i) {
114 std::stringstream sstm;
115 sstm <<
"layerGroupRecEta" <<
i;
125 throw cms::Exception(
"HcalParametersFromDD") <<
"Not found " << attribute.c_str() <<
" but needed.";
134 std::stringstream ss0;
135 for (
unsigned int it = 0; it < php.
maxDepth.size(); it++) {
136 if (it / 10 * 10 == it) {
139 ss0 <<
" [" << it <<
"] " << php.
maxDepth[it];
142 std::stringstream ss1;
143 for (
unsigned int it = 0; it < php.
modHB.size(); it++) {
144 if (it / 10 * 10 == it) {
147 ss1 <<
" [" << it <<
"] " << php.
modHB[it];
149 edm::LogVerbatim(
"HCalGeom") <<
"HcalParametersFromDD::modHB: " << php.
modHB.size() <<
": " << ss1.str();
150 std::stringstream ss2;
151 for (
unsigned int it = 0; it < php.
modHE.size(); it++) {
152 if (it / 10 * 10 == it) {
155 ss2 <<
" [" << it <<
"] " << php.
modHE[it];
157 edm::LogVerbatim(
"HCalGeom") <<
"HcalParametersFromDD::modHE: " << php.
modHE.size() <<
": " << ss2.str();
158 std::stringstream ss3;
159 for (
unsigned int it = 0; it < php.
phioff.size(); it++) {
160 if (it / 10 * 10 == it) {
165 edm::LogVerbatim(
"HCalGeom") <<
"HcalParametersFromDD::phiOff: " << php.
phioff.size() <<
": " << ss3.str();
166 std::stringstream ss4;
167 for (
unsigned int it = 0; it < php.
etaTable.size(); it++) {
168 if (it / 10 * 10 == it) {
171 ss4 <<
" [" << it <<
"] " << php.
etaTable[it];
174 std::stringstream ss5;
175 for (
unsigned int it = 0; it < php.
rTable.size(); it++) {
176 if (it / 10 * 10 == it) {
181 edm::LogVerbatim(
"HCalGeom") <<
"HcalParametersFromDD::rTable: " << php.
rTable.size() <<
": " << ss5.str();
182 std::stringstream ss6;
183 for (
unsigned int it = 0; it < php.
phibin.size(); it++) {
184 if (it / 10 * 10 == it) {
189 edm::LogVerbatim(
"HCalGeom") <<
"HcalParametersFromDD:phibin: " << php.
phibin.size() <<
": " << ss6.str();
190 std::stringstream ss7;
191 for (
unsigned int it = 0; it < php.
phitable.size(); it++) {
192 if (it / 10 * 10 == it) {
199 std::vector<int>::const_iterator kt;
200 std::vector<double>::const_iterator it;
207 std::cout <<
"HcalParametersFromDD: " << php.
etaMin.size() <<
" etaMin values";
208 for (kt = php.
etaMin.begin(), i = 0; kt != php.
etaMin.end(); ++kt)
209 std::cout <<
" [" << ++i <<
"] = " << (*kt);
211 std::cout <<
"HcalParametersFromDD: " << php.
etaMax.size() <<
" etaMax values";
212 for (kt = php.
etaMax.begin(), i = 0; kt != php.
etaMax.end(); ++kt)
213 std::cout <<
" [" << ++i <<
"] = " << (*kt);
215 std::cout <<
"HcalParametersFromDD: " << php.
etaRange.size() <<
" etaRange values";
217 std::cout <<
" [" << ++i <<
"] = " << (*it);
219 std::cout <<
"HcalParametersFromDD: " << php.
gparHF.size() <<
" gparHF values";
220 for (it = php.
gparHF.begin(), i = 0; it != php.
gparHF.end(); ++it)
221 std::cout <<
" [" << ++i <<
"] = " << (*it) / CLHEP::cm;
223 std::cout <<
"HcalParametersFromDD: " << php.
noff.size() <<
" noff values";
224 for (kt = php.
noff.begin(), i = 0; kt != php.
noff.end(); ++kt)
225 std::cout <<
" [" << ++i <<
"] = " << (*kt);
227 std::cout <<
"HcalParametersFromDD: " << php.
Layer0Wt.size() <<
" Layer0Wt values";
229 std::cout <<
" [" << ++i <<
"] = " << (*it);
231 std::cout <<
"HcalParametersFromDD: " << php.
HBGains.size() <<
" Shift/Gains values for HB";
232 for (
unsigned k = 0;
k < php.
HBGains.size(); ++
k)
235 std::cout <<
"HcalParametersFromDD: " << php.
HEGains.size() <<
" Shift/Gains values for HE";
236 for (
unsigned k = 0;
k < php.
HEGains.size(); ++
k)
239 std::cout <<
"HcalParametersFromDD: " << php.
HFGains.size() <<
" Shift/Gains values for HF";
240 for (
unsigned k = 0;
k < php.
HFGains.size(); ++
k)
243 std::cout <<
"HcalParametersFromDD: " << php.
etagroup.size() <<
" etagroup values";
245 std::cout <<
" [" << ++i <<
"] = " << (*kt);
247 std::cout <<
"HcalParametersFromDD: " << php.
phigroup.size() <<
" phigroup values";
249 std::cout <<
" [" << ++i <<
"] = " << (*kt);
std::vector< double > etaTable
std::vector< int > etagroup
bool build(const DDCompactView *, HcalParameters &)
std::vector< double > etaRange
constexpr NumType convertRadToDeg(NumType radians)
std::vector< double > HBGains
std::vector< int > HEShift
Compact representation of the geometrical detector hierarchy.
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
std::vector< double > etaTableHF
std::vector< int > etaMax
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
std::vector< LayerItem > layerGroupEtaSim
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
bool check(const std::string &)
std::vector< double > rHO
std::vector< int > layerGroup
Tan< T >::type tan(const T &t)
std::vector< int > HFShift
std::vector< double > get(const std::string &)
std::vector< double > HEGains
std::vector< double > phioff
std::vector< double > gparHF
DDsvalues_type mergedSpecifics() const
std::vector< double > Layer0Wt
std::vector< double > rTable
std::vector< double > phitable
std::vector< double > phibin
std::vector< LayerItem > layerGroupEtaRec
bool firstChild()
set the current node to the first child ...
std::vector< double > HFGains
constexpr NumType convertMmToCm(NumType millimeters)
std::vector< int > HBShift
std::vector< int > maxDepth
std::vector< int > phigroup
std::vector< int > etaMin
T parseString(const std::string &value)