Skip to content
Snippets Groups Projects
Commit 9cbe7f1e authored by myliu@ihep.ac.cn's avatar myliu@ihep.ac.cn
Browse files

Add layer volume to shorten initialization time

parent 61649729
No related branches found
No related tags found
No related merge requests found
......@@ -113,7 +113,6 @@
<segmentation type="GridDriftChamber" cell_size="SDT_chamber_cell_width" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_rbegin="DC_chamber_layer_rbegin" DC_rend="DC_chamber_layer_rend" DC_rmin="SDT_chamber_radius_min" DC_rmax="SDT_chamber_radius_max" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/>
<!-- <id>system:8,chamber:1,layer:8,cellID:16</id> -->
<id>system:5,layer:7:9,chamber:8,cellID:32:16</id>
</readout>
</readouts>
......
......@@ -59,6 +59,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
double chamber_layer_rend = theDetector.constant<double>("DC_chamber_layer_rend");
int chamber_layer_number = floor((chamber_layer_rend-chamber_layer_rbegin)/chamber_layer_width);
double safe_distance = theDetector.constant<double>("DC_safe_distance");
double epsilon = theDetector.constant<double>("Epsilon");
// =======================================================================
......@@ -83,12 +84,6 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
// - chamber volume
dd4hep::Tube det_chamber_solid(chamber_radius_min, chamber_radius_max, chamber_half_length);
dd4hep::Volume det_chamber_vol(det_name+"_chamber_vol", det_chamber_solid, chamber_mat);
if ( x_det.isSensitive() ) {
det_chamber_vol.setRegion(theDetector,x_det.regionStr());
det_chamber_vol.setLimitSet(theDetector,x_det.limitsStr());
det_chamber_vol.setSensitiveDetector(sens);
sd.setType("tracker");
}
// - wall
double chamber_inner_wall_rmin = theDetector.constant<double>("SDT_chamber_inner_wall_radius_min");
......@@ -177,6 +172,18 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
DCHseg->setGeomParams(chamber_id, layerIndex, layer_Phi, rmid, epsilon, offset);
DCHseg->setWiresInLayer(chamber_id, layerIndex, numWire);
dd4hep::Tube layer_vol_solid(rmin,rmax,chamber_half_length);
dd4hep::Volume layer_vol(det_name+"_layer_vol",layer_vol_solid,det_mat);
current_vol_ptr = &layer_vol;
if ( x_det.isSensitive() ) {
layer_vol.setRegion(theDetector,x_det.regionStr());
layer_vol.setLimitSet(theDetector,x_det.limitsStr());
layer_vol.setSensitiveDetector(sens);
sd.setType("tracker");
}
// - wire vol
//phi <-------------------> -phi
// | F8 F7 F6 F5| Only on the outermost layer.
......@@ -185,7 +192,6 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
// | |
// | F0 F1 F2 F3|
// -----------------------
if(layer_id == 0 || layer_id == 1 || layer_id == 2 || layer_id == 99) {
for(int icell=0; icell< numWire; icell++) {
double wire_phi = (icell+0.5)*layer_Phi + offset;
// - signal wire
......@@ -193,7 +199,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
dd4hep::PlacedVolume module_phy = (*current_vol_ptr).placeVolume(module_vol,transform_module);
// - Field wire
dd4hep::PlacedVolume Module_phy;
double radius[9] = {rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5};
double radius[9] = {rmid-chamber_layer_width*0.5+safe_distance,rmid-chamber_layer_width*0.5+safe_distance,rmid-chamber_layer_width*0.5+safe_distance,rmid-chamber_layer_width*0.5+safe_distance,rmid,rmid+chamber_layer_width*0.5-safe_distance,rmid+chamber_layer_width*0.5-safe_distance,rmid+chamber_layer_width*0.5-safe_distance,rmid+chamber_layer_width*0.5-safe_distance};
double phi[9] = {wire_phi+layer_Phi*0.25,wire_phi,wire_phi-layer_Phi*0.25,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.25,wire_phi,wire_phi+layer_Phi*0.25};
int num = 5;
if(layer_id==(chamber_layer_number-1)) {
......@@ -206,9 +212,11 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
Module_phy = (*current_vol_ptr).placeVolume(Module_vol,transform_Module);
}
}
}
}
dd4hep::Transform3D transform_layer(dd4hep::Rotation3D(),
dd4hep::Position(0,0,0));
dd4hep::PlacedVolume layer_phy = det_chamber_vol.placeVolume(layer_vol ,transform_layer);
layer_phy.addPhysVolID("layer", layer_id);
}
// - place in det
// - chamber
......
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