16 #include "CLHEP/Units/GlobalPhysicalConstants.h"
17 #include "CLHEP/Units/GlobalSystemOfUnits.h"
19 using namespace CLHEP;
22 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB info: Creating an instance";
30 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB info: Initialize";
32 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB IQUAD_MIN";
34 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB IQUAD_MAX";
36 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB Layers";
38 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB PRESH_Z_TOTAL";
40 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB material";
42 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB R_MAX";
44 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB R_MIN";
46 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB waf_intra_col_sep";
58 absorbx = double(nArgs[
"absorbx"]);
59 absorby = double(nArgs[
"absorby"]);
71 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB info: end initialize";
75 LogDebug(
"HCalGeom") <<
"******** DDEcalPreshowerAlgoTB execute!";
94 std::ostringstream
name;
95 name <<
"SF" << int((50 + I) / 10) << I - int(I / 10) * 10;
106 if (I == 7 || I == 15) {
132 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB debug : Child " << layer <<
" Copy 1 in " <<
parent().name()
133 <<
" with translation " << tran <<
" and rotation " <<
DDRotation();
140 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : doWedges()";
141 int nx(0), ny(0), icopy(0), icopyt(0);
142 double xpos(0), ypos(0), zpos(0);
151 for (
int I = 1;
I <= sz; ++
I) {
171 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
172 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
180 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
181 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
203 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
204 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
212 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
213 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
222 for (
int I = sz;
I >= 1; --
I) {
241 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
242 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
250 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
251 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
273 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
274 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
282 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
283 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
296 for (
int I = 1;
I <= sz; ++
I) {
315 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
316 << icopyt + nxt <<
") in Mother " <<
parent().name() <<
" translation " << tran
317 <<
" rotation " << rot1;
324 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
325 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
348 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
349 << icopyt + nxt <<
") in Mother " <<
parent().name() <<
" translation " << tran
350 <<
" rotation " << rot1;
357 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
358 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
367 for (
int I = sz;
I >= 1; --
I) {
386 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
387 << icopyt + nxt <<
") in Mother " <<
parent().name() <<
" translation " << tran
388 <<
" rotation " << rot1;
395 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
396 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
419 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name1 <<
" copy = " << icopy <<
" ("
420 << icopyt + nxt <<
") in Mother " <<
parent().name() <<
" translation " << tran
421 <<
" rotation " << rot1;
428 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << name2 <<
" copy = " << icopy <<
" ("
429 << icopyt <<
") in Mother " <<
parent().name() <<
" translation " << tran <<
" rotation "
437 double xpos(0), ypos(0);
444 for (
size_t i = 0;
i < 32; ++
i) {
448 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << child1 <<
"\ncopy number " <<
i + 1 <<
" in "
449 << mother1 <<
" translation " << tran <<
" rotation " <<
rot;
454 LogDebug(
"HCalGeom") <<
"DDEcalPreshowerAlgoTB::debug : Child " << child2 <<
"\ncopy number " <<
i + 1 <<
" in "
455 << mother2 <<
" translation " << tran <<
" rotation " <<
rot;
void doSens(DDCompactView &pos)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
std::vector< double > quadMax_
DDMaterial is used to define and access material information.
std::vector< std::string > materials_
DDName is used to identify DDD entities uniquely.
std::vector< double > micromodulesy
static std::string & ns()
std::string dummyMaterial
Compact representation of the geometrical detector hierarchy.
A DDSolid represents the shape of a part.
constexpr std::array< uint8_t, layerIndexSize > layer
Represents a uniquely identifyable rotation matrix.
std::vector< double > rminVec
std::string getMaterial(unsigned int i) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
const std::complex< double > I
std::vector< double > rmaxVec
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
double ywedge_ceramic_diff
void doLayers(DDCompactView &pos)
std::vector< double > thickLayers_
double zwedge_ceramic_diff
std::vector< double > quadMin_
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
void doWedges(DDCompactView &pos)
std::vector< double > micromodulesx
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
void execute(DDCompactView &pos) override