28 int det_id = x_det.id();
29 string det_name = x_det.nameStr();
49 solenoidData->inner_symmetry = 0;
50 solenoidData->outer_symmetry = 0;
51 solenoidData->layoutType = rec::LayeredCalorimeterData::BarrelLayout ;
53 double inner_radius= std::numeric_limits<double>::max();
54 double outer_radius= 0;
60 string l_name = det_name+
_toString(n,
"_layer%d");
61 double z = x_layer.outer_z();
62 double rmin = x_layer.inner_r();
65 Tube l_tub (rmin,2*rmin,z);
66 Volume l_vol(l_name,l_tub,air);
73 string s_name= l_name+
_toString(m,
"_slice%d");
74 double thickness = x_slice.thickness();
78 rec::LayeredCalorimeterData::Layer solenoidLayer;
79 solenoidLayer.distance = r;
81 solenoidLayer.inner_thickness = thickness/2.;
82 solenoidLayer.outer_thickness = solenoidLayer.inner_thickness ;
84 solenoidLayer.cellSize0 = 0;
85 solenoidLayer.cellSize1 = z;
86 solenoidData->layers.push_back(solenoidLayer);
89 Volume s_vol(s_name, s_tub, mat);
92 if ( x_slice.isSensitive() ) {
94 s_vol.setSensitiveDetector(sens);
97 s_vol.setAttributes(description,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
98 pv = l_vol.placeVolume(s_vol);
102 l_tub.setDimensions(rmin,r,z);
104 if (rmin < inner_radius)
113 l_vol.setVisAttributes(description,x_layer.visStr());
117 layer.setPlacement(pv);
119 if ( x_det.hasAttr(
_U(combineHits)) ) {
120 sdet.setCombineHits(x_det.combineHits(),sens);
124 solenoidData->extent[0] = inner_radius ;
125 solenoidData->extent[1] = outer_radius ;
126 solenoidData->extent[2] = 0. ;
127 solenoidData->extent[3] = detZ;