Skip to content
Snippets Groups Projects

WIP: Detector Template XML file

Closed Jihee Kim requested to merge det_template into master
2 files
+ 53
9
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 36
0
 
#include <XML/Helper.h>
 
 
using namespace dd4hep;
 
 
static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens) {
 
xml::DetElement detElem = handle;
 
std::string detName = detElem.nameStr();
 
int detID = detElem.id();
 
 
xml::Component dims = detElem.dimensions();
 
double rInner = dims.inner_radius();
 
double rMin = dims.rmin();
 
double thickness = dims.thickness();
 
double innerZ = dims.inner_z();
 
double angle = dims.angle();
 
 
Material mat = desc.material(detElem.materialStr());
 
 
Tube outerTubeShape(rMin, rInner + thickness, innerZ + thickness);
 
Tube innerTubeShape(0, rInner, innerZ);
 
SubtractionSolid unchamferedShape(outerTubeShape, innerTubeShape);
 
Cone chamferShape(thickness, 0, rMin, 0, rMin + 2 * tan(angle) * thickness);
 
SubtractionSolid detShape(unchamferedShape, chamferShape, Position(0, 0, innerZ + thickness));
 
Volume detVol(detName, detShape, mat);
 
 
detVol.setVisAttributes(desc.visAttributes(detElem.visStr()));
 
 
DetElement det(detName, detID);
 
Volume motherVol = desc.pickMotherVolume(det);
 
PlacedVolume detPV = motherVol.placeVolume(detVol);
 
det.setPlacement(detPV);
 
return det;
 
}
 
 
// clang-format off
 
DECLARE_DETELEMENT(TestDetector, createDetector)
Loading