Skip to content

Commit

Permalink
Merge pull request #35065 from bsunanda/Run3-trk08
Browse files Browse the repository at this point in the history
Run3-trk08 Make sure the dd4hep algorithms provide the namespace to all created solids/volumes
  • Loading branch information
cmsbuild committed Aug 31, 2021
2 parents 810a7a9 + 7533c07 commit 16e8ec0
Show file tree
Hide file tree
Showing 25 changed files with 819 additions and 609 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,9 @@ static long algorithm(dd4hep::Detector& /* description */, cms::DDParsingContext
segments[segments.size() - 1],
dd4hep::Position(0., 0., offsets[segments.size() - 1] - shift));

edm::LogVerbatim("TrackerGeom") << "DDCutTubsFromPoints: " << solid.name() << " Union solid with " << segments.size()
<< " segments";

// remove the common offset from the input, to get sth. aligned at z=0.
float offset = -shift + (min_z + 0.5 * (max_z - min_z));

Expand Down
95 changes: 48 additions & 47 deletions Geometry/TrackerCommonData/plugins/dd4hep/DDPixBarLayerAlgo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ static long algorithm(Detector& description, cms::DDParsingContext& ctxt, xml_h
DDAlgoArguments args(ctxt, e);
string parentName = args.parentName();

LogDebug("PixelGeom") << "+++ Parsing arguments for Algorithm:" << args.name << " rParent:" << parentName;
edm::LogVerbatim("PixelGeom") << "+++ Parsing arguments for Algorithm:" << args.name << " rParent:" << parentName;
string genMat = args.value<string>("GeneralMaterial");
int number = args.value<int>("Ladders");
double layerDz = args.value<double>("LayerDz");
Expand All @@ -26,18 +26,18 @@ static long algorithm(Detector& description, cms::DDParsingContext& ctxt, xml_h
double coolDist = args.value<double>("CoolDist");
string coolMat = args.value<string>("CoolMaterial");
string tubeMat = args.value<string>("CoolTubeMaterial");
LogDebug("PixelGeom") << "Parent " << parentName << " NameSpace " << ns.name() << "\n"
<< "\tLadders " << number << "\tGeneral Material " << genMat << "\tLength " << layerDz
<< "\tSensorEdge " << sensorEdge << "\tSpecification of Cooling Pieces:\n"
<< "\tLength " << coolDz << " Width " << coolWidth << " Side " << coolSide
<< " Thickness of Shell " << coolThick << " Radial distance " << coolDist << " Materials "
<< coolMat << ", " << tubeMat;
edm::LogVerbatim("PixelGeom") << "Parent " << parentName << " NameSpace " << ns.name() << "\n"
<< "\tLadders " << number << "\tGeneral Material " << genMat << "\tLength " << layerDz
<< "\tSensorEdge " << sensorEdge << "\tSpecification of Cooling Pieces:\n"
<< "\tLength " << coolDz << " Width " << coolWidth << " Side " << coolSide
<< " Thickness of Shell " << coolThick << " Radial distance " << coolDist
<< " Materials " << coolMat << ", " << tubeMat;
vector<string> ladder = args.value<vector<string> >("LadderName");
vector<double> ladderWidth = args.value<vector<double> >("LadderWidth");
vector<double> ladderThick = args.value<vector<double> >("LadderThick");
LogDebug("PixelGeom") << "Full Ladder " << ladder[0] << " width/thickness " << ladderWidth[0] << ", "
<< ladderThick[0] << "\tHalf Ladder " << ladder[1] << " width/thickness " << ladderWidth[1]
<< ", " << ladderThick[1];
edm::LogVerbatim("PixelGeom") << "Full Ladder " << ladder[0] << " width/thickness " << ladderWidth[0] << ", "
<< ladderThick[0] << "\tHalf Ladder " << ladder[1] << " width/thickness "
<< ladderWidth[1] << ", " << ladderThick[1];

const std::string idName = ns.objName(parentName);
double dphi = 2_pi / number;
Expand All @@ -48,39 +48,40 @@ static long algorithm(Detector& description, cms::DDParsingContext& ctxt, xml_h
double rmin = (coolDist - 0.5 * (d1 + d2)) * cos(0.5 * dphi) - 0.5 * ladderThick[0];
double rmax = (coolDist + 0.5 * (d1 + d2)) * cos(0.5 * dphi) + 0.5 * ladderThick[0];
double rmxh = rmax - 0.5 * ladderThick[0] + ladderThick[1];
LogDebug("PixelGeom") << "Rmin/Rmax " << rmin << ", " << rmax << " d1/d2 " << d1 << ", " << d2 << " x1/x2 " << x1
<< ", " << x2;
edm::LogVerbatim("PixelGeom") << "Rmin/Rmax " << rmin << ", " << rmax << " d1/d2 " << d1 << ", " << d2 << " x1/x2 "
<< x1 << ", " << x2;

double rtmi = rmin + 0.5 * ladderThick[0] - ladderThick[1];
double rtmx = sqrt(rmxh * rmxh + ladderWidth[1] * ladderWidth[1]);
Solid solid = ns.addSolid(idName, Tube(rtmi, rtmx, 0.5 * layerDz, 0, 2_pi));
LogDebug("PixelGeom") << "IDname " << idName << " Tubs made of " << genMat << " from 0 to " << convertRadToDeg(2_pi)
<< " with Rin " << rtmi << " Rout " << rtmx << " ZHalf " << 0.5 * layerDz;
Solid solid = ns.addSolid(ns.prepend(idName), Tube(rtmi, rtmx, 0.5 * layerDz, 0, 2_pi));
edm::LogVerbatim("PixelGeom") << "IDname " << solid.name() << " Tubs made of " << genMat << " from 0 to "
<< convertRadToDeg(2_pi) << " with Rin " << rtmi << " Rout " << rtmx << " ZHalf "
<< 0.5 * layerDz;

Volume layer = ns.addVolume(Volume(idName, solid, ns.material(genMat)));
Volume layer = ns.addVolume(Volume(solid.name(), solid, ns.material(genMat)));
double rr = 0.5 * (rmax + rmin);
double dr = 0.5 * (rmax - rmin);
double h1 = 0.5 * coolSide * cos(0.5 * dphi);
std::string name = idName + "CoolTube";
solid = ns.addSolid(name, Trap(0.5 * coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0));
LogDebug("PixelGeom") << "Solid " << solid.name() << " Trap made of " << tubeMat << " of dimensions " << 0.5 * coolDz
<< ", 0, 0, " << h1 << ", " << d2 << ", " << d1 << ", 0, " << h1 << ", " << d2 << ", " << d1
<< ", 0";
solid = ns.addSolid(ns.prepend(name), Trap(0.5 * coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0));
edm::LogVerbatim("PixelGeom") << "Solid " << solid.name() << " Trap made of " << tubeMat << " of dimensions "
<< 0.5 * coolDz << ", 0, 0, " << h1 << ", " << d2 << ", " << d1 << ", 0, " << h1 << ", "
<< d2 << ", " << d1 << ", 0";

Volume coolTube = ns.addVolume(Volume(name, solid, description.material(tubeMat)));
Volume coolTube = ns.addVolume(Volume(solid.name(), solid, description.material(tubeMat)));
h1 -= coolThick;
d1 -= coolThick;
d2 -= coolThick;
name = idName + "Coolant";
solid = ns.addSolid(name, Trap(0.5 * coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0));
LogDebug("PixelGeom") << "Solid " << solid.name() << " Trap made of " << coolMat << " of dimensions " << 0.5 * coolDz
<< ", 0, 0, " << h1 << ", " << d2 << ", " << d1 << ", 0, " << h1 << ", " << d2 << ", " << d1
<< ", 0";
solid = ns.addSolid(ns.prepend(name), Trap(0.5 * coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0));
edm::LogVerbatim("PixelGeom") << "Solid " << solid.name() << " Trap made of " << coolMat << " of dimensions "
<< 0.5 * coolDz << ", 0, 0, " << h1 << ", " << d2 << ", " << d1 << ", 0, " << h1 << ", "
<< d2 << ", " << d1 << ", 0";

Volume cool = ns.addVolume(Volume(name, solid, description.material(coolMat)));
Volume cool = ns.addVolume(Volume(solid.name(), solid, description.material(coolMat)));
pv = coolTube.placeVolume(cool, 1);
LogDebug("PixelGeom") << "Cool " << cool.name() << " number 1 positioned in " << coolTube.name()
<< " at (0,0,0) with no rotation";
edm::LogVerbatim("PixelGeom") << "Cool " << cool.name() << " number 1 positioned in " << coolTube.name()
<< " at (0,0,0) with no rotation";

string ladderFull = ladder[0];
string ladderHalf = ladder[1];
Expand All @@ -102,33 +103,33 @@ static long algorithm(Detector& description, cms::DDParsingContext& ctxt, xml_h
rots = idName + std::to_string(copy);
phix = phi - 90_deg;
phiy = 90_deg + phix;
LogDebug("PixelGeom") << "Creating a new "
<< "rotation: " << rots << "\t90., " << convertRadToDeg(phix) << ", 90.,"
<< convertRadToDeg(phiy) << ", 0, 0";
edm::LogVerbatim("PixelGeom") << "Creating a new "
<< "rotation: " << rots << "\t90., " << convertRadToDeg(phix) << ", 90.,"
<< convertRadToDeg(phiy) << ", 0, 0";
rot = makeRotation3D(90_deg, phix, 90_deg, phiy, 0., 0.);

//cpv.position(ladderHalf, layer, copy, tran, rot);
pv = layer.placeVolume(ladderHalfVol, copy, Transform3D(rot, tran));
if (!pv.isValid()) {
}
LogDebug("PixelGeom") << "ladderHalfVol: " << ladderHalfVol.name() << " number " << copy << " positioned in "
<< layer.name() << " at " << tran << " with " << rot;
edm::LogVerbatim("PixelGeom") << "ladderHalfVol: " << ladderHalfVol.name() << " number " << copy
<< " positioned in " << layer.name() << " at " << tran << " with " << rot;
copy++;
iup = -1;
rrr = rr - dr - 0.5 * (ladderThick[1] - ladderThick[0]);
tran = Position(-xx, rrr * sin(phi), 0);
rots = idName + std::to_string(copy);
phix = phi + 90_deg;
phiy = 90_deg + phix;
LogDebug("PixelGeom") << "Creating a new rotation: " << rots << "\t90., " << convertRadToDeg(phix) << ", 90.,"
<< convertRadToDeg(phiy) << ", 0, 0";
edm::LogVerbatim("PixelGeom") << "Creating a new rotation: " << rots << "\t90., " << convertRadToDeg(phix)
<< ", 90.," << convertRadToDeg(phiy) << ", 0, 0";
rot = makeRotation3D(90_deg, phix, 90_deg, phiy, 0., 0.);
//cpv.position(ladderHalf, layer, copy, tran, rot);
pv = layer.placeVolume(ladderHalfVol, copy, Transform3D(rot, tran));
if (!pv.isValid()) {
}
LogDebug("PixelGeom") << "ladderHalfVol: " << ladderHalfVol.name() << " number " << copy << " positioned in "
<< layer.name() << " at " << tran << " with " << rot;
edm::LogVerbatim("PixelGeom") << "ladderHalfVol: " << ladderHalfVol.name() << " number " << copy
<< " positioned in " << layer.name() << " at " << tran << " with " << rot;
copy++;
} else {
iup = -iup;
Expand All @@ -140,17 +141,17 @@ static long algorithm(Detector& description, cms::DDParsingContext& ctxt, xml_h
else
phix = phi + 90_deg;
phiy = phix + 90._deg;
LogDebug("PixelGeom") << "DDPixBarLayerAlgo test: Creating a new "
<< "rotation: " << rots << "\t90., " << convertRadToDeg(phix) << ", 90.,"
<< convertRadToDeg(phiy) << ", 0, 0";
edm::LogVerbatim("PixelGeom") << "DDPixBarLayerAlgo test: Creating a new "
<< "rotation: " << rots << "\t90., " << convertRadToDeg(phix) << ", 90.,"
<< convertRadToDeg(phiy) << ", 0, 0";
rot = makeRotation3D(90_deg, phix, 90_deg, phiy, 0., 0.);

//cpv.position(ladderFull, layer, copy, tran, rot);
pv = layer.placeVolume(ladderFullVol, copy, Transform3D(rot, tran));
if (!pv.isValid()) {
}
LogDebug("PixelGeom") << "test: " << ladderFullVol.name() << " number " << copy << " positioned in "
<< layer.name() << " at " << tran << " with " << rot;
edm::LogVerbatim("PixelGeom") << "test: " << ladderFullVol.name() << " number " << copy << " positioned in "
<< layer.name() << " at " << tran << " with " << rot;
copy++;
}
rrr = coolDist * cos(0.5 * dphi);
Expand All @@ -160,17 +161,17 @@ static long algorithm(Detector& description, cms::DDParsingContext& ctxt, xml_h
if (iup > 0)
phix += 180_deg;
phiy = phix + 90._deg;
LogDebug("PixelGeom") << "Creating a new rotation: " << rots << "\t90., " << convertRadToDeg(phix) << ", 90.,"
<< convertRadToDeg(phiy) << ", 0, 0";
edm::LogVerbatim("PixelGeom") << "Creating a new rotation: " << rots << "\t90., " << convertRadToDeg(phix)
<< ", 90.," << convertRadToDeg(phiy) << ", 0, 0";

rot = makeRotation3D(90_deg, phix, 90_deg, phiy, 0., 0.);
pv = layer.placeVolume(coolTube, i + 1, Transform3D(rot, tran));
if (!pv.isValid()) {
}
LogDebug("PixelGeom") << "coolTube: " << coolTube.name() << " number " << i + 1 << " positioned in " << layer.name()
<< " at " << tran << " with " << rot;
edm::LogVerbatim("PixelGeom") << "coolTube: " << coolTube.name() << " number " << i + 1 << " positioned in "
<< layer.name() << " at " << tran << " with " << rot;
}
LogDebug("PixelGeom") << "Layer: " << layer.name();
edm::LogVerbatim("PixelGeom") << "Layer: " << layer.name();
return 1;
}

Expand Down

0 comments on commit 16e8ec0

Please sign in to comment.