Skip to content
Snippets Groups Projects
Commit 81bc380b authored by FU Chengdong's avatar FU Chengdong
Browse files

change global volume to envelope

parent 280a18d4
No related branches found
No related tags found
No related merge requests found
...@@ -52,6 +52,14 @@ ...@@ -52,6 +52,14 @@
<detectors> <detectors>
<detector id="1" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="VisibleBlue" sensitive="true"> <detector id="1" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="VisibleBlue" sensitive="true">
<envelope vis="SeeThrough">
<shape type="BooleanShape" operation="Union" material="Air">
<shape type="Tube" rmin="SDT_inner_chamber_radius_min" rmax="SDT_inner_chamber_radius_max" dz="SDT_half_length" />
<shape type="Tube" rmin="SDT_outer_chamber_radius_min" rmax="SDT_outer_chamber_radius_max" dz="SDT_half_length" />
</shape>
</envelope>
<type_flags type="DetType_TRACKER + DetType_BARREL + DetType_GASEOUS + DetType_WIRE"/>
<!-- Use cm as unit if you want to use Pandora for reconstruction --> <!-- Use cm as unit if you want to use Pandora for reconstruction -->
<sensitive type="SimpleDriftChamber"/> <sensitive type="SimpleDriftChamber"/>
</detector> </detector>
......
...@@ -68,13 +68,17 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, ...@@ -68,13 +68,17 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
dd4hep::DetElement sdet(det_name, x_det.id()); dd4hep::DetElement sdet(det_name, x_det.id());
dd4hep::Volume motherVol = theDetector.pickMotherVolume(sdet); Volume envelope = dd4hep::xml::createPlacedEnvelope( theDetector, e , sdet ) ;
dd4hep::xml::setDetectorTypeFlag( e, sdet ) ;
if( theDetector.buildType() == BUILD_ENVELOPE ) return sdet ;
dd4hep::Material det_mat(theDetector.material("Air")); dd4hep::Material det_mat(theDetector.material("Air"));
// - global // - global
dd4hep::Tube det_solid(chamber_radius_min, chamber_radius_max, chamber_length*0.5); Assembly det_vol( det_name+"_assembly" ) ;
dd4hep::Volume det_vol(det_name+"_vol", det_solid, det_mat);
// - inner // - inner
dd4hep::Tube det_inner_chamber_solid(inner_chamber_radius_min, inner_chamber_radius_max, inner_chamber_length*0.5); dd4hep::Tube det_inner_chamber_solid(inner_chamber_radius_min, inner_chamber_radius_max, inner_chamber_length*0.5);
...@@ -141,6 +145,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, ...@@ -141,6 +145,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
dd4hep::Position(0,0,0)); dd4hep::Position(0,0,0));
dd4hep::PlacedVolume det_inner_chamber_phy = det_vol.placeVolume(det_inner_chamber_vol, dd4hep::PlacedVolume det_inner_chamber_phy = det_vol.placeVolume(det_inner_chamber_vol,
transform_inner_chamber); transform_inner_chamber);
det_inner_chamber_phy.addPhysVolID("chamber", 0); det_inner_chamber_phy.addPhysVolID("chamber", 0);
// outer // outer
...@@ -148,19 +153,19 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, ...@@ -148,19 +153,19 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
dd4hep::Position(0,0,0)); dd4hep::Position(0,0,0));
dd4hep::PlacedVolume det_outer_chamber_phy = det_vol.placeVolume(det_outer_chamber_vol, dd4hep::PlacedVolume det_outer_chamber_phy = det_vol.placeVolume(det_outer_chamber_vol,
transform_inner_chamber); transform_inner_chamber);
det_outer_chamber_phy.addPhysVolID("chamber", 1); det_outer_chamber_phy.addPhysVolID("chamber", 1);
// - place in world // - place in world
dd4hep::Transform3D transform(dd4hep::Rotation3D(), dd4hep::Transform3D transform(dd4hep::Rotation3D(),
dd4hep::Position(0,0,0)); dd4hep::Position(0,0,0));
dd4hep::PlacedVolume phv = motherVol.placeVolume(det_vol,transform); dd4hep::PlacedVolume phv = envelope.placeVolume(det_vol,transform);
if ( x_det.hasAttr(_U(id)) ) { if ( x_det.hasAttr(_U(id)) ) {
phv.addPhysVolID("system",x_det.id()); phv.addPhysVolID("system",x_det.id());
} }
DetElement assDE( sdet , det_name+"_assembly" , x_det.id() ) ;
sdet.setPlacement(phv); assDE.setPlacement(phv);
MYDEBUG("Build Detector Drift Chamber successfully."); MYDEBUG("Build Detector Drift Chamber successfully.");
return sdet; return sdet;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment