From c75f4b831c203f1fd321553e26a852954cb9d857 Mon Sep 17 00:00:00 2001 From: myliu <201916234@mail.sdu.edu.cn> Date: Sun, 13 Dec 2020 20:25:27 +0800 Subject: [PATCH] Put the signal wire --- Detector/DetDriftChamber/compact/det.xml | 14 +++++++- .../src/driftchamber/DriftChamber.cpp | 33 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml index f588fd48..ef069511 100644 --- a/Detector/DetDriftChamber/compact/det.xml +++ b/Detector/DetDriftChamber/compact/det.xml @@ -46,7 +46,7 @@ <vis name="Invisible" showDaughters="false" visible="false"/> <vis name="InvisibleWithChildren" showDaughters="true" visible="false"/> <vis name="VisibleRed" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/> - <vis name="VisibleBlue" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/> + <vis name="VisibleBlue" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> <vis name="VisibleGreen" alpha="1.0" r="0.0" g="1.0" b="0.0" drawingStyle="solid" lineStyle="solid" showDaughters="true" visible="true"/> </display> @@ -59,6 +59,18 @@ </shape> </envelope> + <module id="0" repeat="1" name="SignalWire" type="Tube" rmin="0*mm" rmax="0.01*mm"> + <tubs name="W" type="Tube" rmin="0*mm" rmax="0.007*mm" material="Tungsten"/> + <tubs name="Au" type="Tube" rmin="0.007*mm" rmax="0.01*mm" material="Gold"/> + </module> + + <module id="1" repeat="3" name="FieldWire" type="Tube" rmin="0*mm" rmax="0.02*mm"> + <tubs name="Al" type="Tube" rmin="0*mm" rmax="0.017*mm" material="Aluminum"/> + <tubs name="Ag" type="Tube" rmin="0.017*mm" rmax="0.02*mm" material="Silver"/> + </module> + +<!-- <tubs name="SignalWire" rmin="0*mm" rmax="0.01*mm" material="Tungsten"/>--> + <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_GASEOUS + DetType_WIRE"/> <!-- Use cm as unit if you want to use Pandora for reconstruction --> <sensitive type="SimpleDriftChamber"/> diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp index 79df65c4..cf88d66c 100644 --- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp +++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp @@ -130,6 +130,39 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::Tube layer_solid(rmin,rmax,chamber_length*0.5); dd4hep::Volume layer_vol(layer_name,layer_solid,det_mat); + layer_vol.setAttributes(theDetector,x_det.regionStr(),x_det.limitsStr(),x_det.visStr()); + + // - wire vol + if(layer_id==0) { + for(int icell=0; icell< numWire; icell++) { + double wire_phi = (icell+0.5)*layer_Phi + offset; + for(xml_coll_t c(x_det,_U(module)); c; ++c) { + xml_comp_t x_module = c; + if(x_module.id()==0) { + double module_rmin = x_module.rmin(); + double module_rmax = x_module.rmax(); + std::string module_name = x_module.nameStr(); + dd4hep::Tube module_solid(module_rmin,module_rmax,chamber_length*0.5); + std::string Module_name = layer_name + module_name; + dd4hep::Volume module_vol(Module_name,module_solid,det_mat); + for(xml_coll_t l(x_module,_U(tubs)); l; ++l) { + xml_comp_t x_tube =l; + double tube_rmin = x_tube.rmin(); + double tube_rmax = x_tube.rmax(); + std::string tube_name = x_tube.nameStr(); + std::string wire_name= Module_name + _toString(icell,"_%d") + tube_name; + dd4hep::Material tube_mat = theDetector.material(x_tube.materialStr()); + dd4hep::Tube wire_solid(tube_rmin,tube_rmax,chamber_length*0.5); + dd4hep::Volume wire_vol(wire_name,wire_solid,tube_mat); + dd4hep::Transform3D transform_wire(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.)); + dd4hep::PlacedVolume wire_phy = module_vol.placeVolume(wire_vol,transform_wire); + } + dd4hep::Transform3D transform_module(dd4hep::Rotation3D(),dd4hep::Position(rmid*std::cos(wire_phi),rmid*std::sin(wire_phi),0.)); + dd4hep::PlacedVolume module_phy = layer_vol.placeVolume(module_vol,transform_module); + } + } + } + } dd4hep::Transform3D transform_layer(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.)); dd4hep::PlacedVolume layer_phy = (*current_vol_ptr).placeVolume(layer_vol, transform_layer); layer_phy.addPhysVolID("layer",layer_id); -- GitLab