Skip to content
Snippets Groups Projects

Resolve "Implement ci_GEM"

Merged Marshall Scott requested to merge 20-implement-ci_gem into master
2 files
+ 142
0
Compare changes
  • Side-by-side
  • Inline
Files
2
src/ci_HCAL.cpp 0 → 100644
+ 68
0
 
#include <XML/Helper.h>
 
///////////////////////////
 
// Central Ion GEM
 
///////////////////////////
 
 
using namespace dd4hep;
 
 
static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens)
 
{
 
 
xml::DetElement detElem = handle;
 
std::string detName = "ci_HCAL";
 
int detID = 1;
 
 
//xml::Component dims = detElem.dimensions();
 
//Envelope volume specs
 
double RIn = 0. * dd4hep::cm;
 
double ROut = 300. * dd4hep::cm;
 
double SizeZ = 160. * dd4hep::cm;
 
double ShiftZ = 5. * dd4hep::cm;
 
double PosZ = 0. * dd4hep::cm;
 
double det_RIn = 80. * dd4hep::cm;
 
Material mat_iron = desc.material("Iron");
 
Material mat_air = desc.material("Air");
 
Material mat_vac = desc.material("Vacuum")
 
 
 
 
Tube ci_Hcal_Solid(RIn, ROut, SizeZ / 2., 0., 360 * deg);
 
Volume envelopeVol("ci_Hcal_Logic", ci_Hcal_Solid, mat_vac);//check that this one is iron
 
envelopeVol.setVisAttributes(0.3, 0, 3.0, 0.1);
 
 
//Layer Specs
 
double det_ROut = ROut - 1. * dd4hep::cm;
 
double det_ThicknessZ = 2. * dd4hep::cm;
 
double det_GapZ = 2. * dd4hep::cm;
 
double Nlay = 20;
 
 
Tube ci_Hcal_detSolid(RIn, det_ROut, det_ThicknessZ / 2., 0., 360 * deg);
 
//Volume detVol("ci_Hcal_det_Logic", ci_Hcal_detSolid, mat_iron);//extraneous
 
//detVol.setVisAttributes(0.6, 0, 0.6, 1);
 
 
 
 
//Adding layers to placed detector volume
 
for (int lNum = 0; lNum < Nlay; lNum++){
 
//xml_comp_t x_layer = c;
 
string layer_name = detName + _toString(lNum, "_layer%d");
 
double layer_Posz = -SizeZ / 2. + (lNum + 1) * det_ThicknessZ + (lNum + 1) * 5. * ddphep::cm;
 
 
Volume layer_vol(layer_name, ci_Hcal_detSolid, mat_iron);
 
Position layer_pos(0, 0, layer_Posz);
 
//DetElement layer(envelope_det, layer_name, detID);
 
//layer.setVisAttributes(desc.visAttributes(det.visStr()));
 
//layer.setAttributes(desc, layer_vol, desc.region(), desc.limits(), );//(region, limits, visable).
 
PlacedVolume layer_phv = envelopeVol.placeVolume(layer_vol, layer_pos);
 
layer_phv.addPhysVolID("layer", layerNum);
 
}
 
 
DetElement det(detName, detID);
 
Volume motherVol = desc.pickMotherVolume(det);
 
PlacedVolume detPV = motherVol.placeVolume(envelopeVol, RotationZYX(0,0,0));
 
det.setPlacement(detPV);
 
 
return det;
 
}
 
// clang-format off
 
DECLARE_DETELEMENT(ci_GEM, createDetector)
Loading