From e47a203094ad22a14b038c0a63b431edf2c36c2c Mon Sep 17 00:00:00 2001 From: myliu <201916234@mail.sdu.edu.cn> Date: Wed, 23 Dec 2020 22:20:13 +0800 Subject: [PATCH] Add gas and add the material of the inner and outer walls --- .../DetDriftChamber/compact/materials.xml | 7 ++++ .../src/driftchamber/DriftChamber.cpp | 38 +++++++++---------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/Detector/DetDriftChamber/compact/materials.xml b/Detector/DetDriftChamber/compact/materials.xml index a86e3c48..44ee58bf 100644 --- a/Detector/DetDriftChamber/compact/materials.xml +++ b/Detector/DetDriftChamber/compact/materials.xml @@ -148,5 +148,12 @@ <fraction n="0.671054" ref="Bi" /> </material> + <!-- Driftchamber: material for the drift chamber --> + <material name="GasHe_90Isob_10"> + <D value="0.0003983999999999999" unit="g/cm3" /> + <fraction n="0.3826351004462046" ref="He"/> + <fraction n="0.011371937371285891" ref="H" /> + <fraction n="0.6059929621825095" ref="C" /> + </material> </materials> diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp index 27d2a4f9..8a978ef4 100644 --- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp +++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp @@ -107,9 +107,6 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, double wall_rmin[4] = {inner_chamber_inner_wall_rmin,inner_chamber_outer_wall_rmin,outer_chamber_inner_wall_rmin,outer_chamber_outer_wall_rmin}; double wall_rmax[4] = {inner_chamber_inner_wall_rmax,inner_chamber_outer_wall_rmax,outer_chamber_inner_wall_rmax,outer_chamber_outer_wall_rmax}; - dd4hep::Tube wall_solid; - dd4hep::Volume wall_vol; - // - wire dd4hep::Volume module_vol; dd4hep::Volume Module_vol; @@ -158,6 +155,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, double rmin,rmax,offset; std::string layer_name; dd4hep::Volume* current_vol_ptr = nullptr; + dd4hep::Material layer_mat(theDetector.material("GasHe_90Isob_10")); if( layer_id < inner_chamber_layer_number ) { current_vol_ptr = &det_inner_chamber_vol; rmin = inner_chamber_radius_min+(layer_id*chamber_layer_width); @@ -186,18 +184,18 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, DCHseg->setWiresInLayer(layer_id, numWire); dd4hep::Tube layer_solid(rmin,rmax,chamber_length*0.5); - dd4hep::Volume layer_vol(layer_name,layer_solid,det_mat); + dd4hep::Volume layer_vol(layer_name,layer_solid,layer_mat); layer_vol.setAttributes(theDetector,x_det.regionStr(),x_det.limitsStr(),x_det.visStr()); // - wire vol //phi <-------------------> -phi - // | F4 F3| - // | | - // | S F2| - // | | - // | F0 F1| - // --------------------- -// if(layer_id == 1) { + // | F8 F7 F6 F5| Only on the outermost layer. + // | | + // | S F4| + // | | + // | F0 F1 F2 F3| + // ----------------------- +// if(layer_id == 1|| layer_id == 2 || layer_id ==3) { for(int icell=0; icell< numWire; icell++) { double wire_phi = (icell+0.5)*layer_Phi + offset; // - signal wire @@ -205,9 +203,11 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::PlacedVolume module_phy = layer_vol.placeVolume(module_vol,transform_module); // - Field wire dd4hep::PlacedVolume Module_phy; - double radius[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}; - double phi[5] = {wire_phi,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi}; - for(int i=0; i<5; i++) { + 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 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==66||layer_id==129) { num = 9; } + for(int i=0; i<num ; i++) { dd4hep::Position tr3D = Position(radius[i]*std::cos(phi[i]),radius[i]*std::sin(phi[i]),0.); dd4hep::Transform3D transform_Module(dd4hep::Rotation3D(),tr3D); Module_phy = layer_vol.placeVolume(Module_vol,transform_Module); @@ -248,12 +248,12 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::Position(0,0,0)); dd4hep::PlacedVolume phv = envelope.placeVolume(det_vol,transform); // - place wall - dd4hep::PlacedVolume wall_phy; - for(int i=0; i<4 ; i++) { - wall_solid = Tube(wall_rmin[i],wall_rmax[i],chamber_length*0.5); - wall_vol = Volume(det_name+"_wall_vol",wall_solid,wall_mat); +// dd4hep::PlacedVolume wall_phy; + for(int i=0; i<4; i++) { + dd4hep::Tube wall_solid(wall_rmin[i],wall_rmax[i],chamber_length*0.5); + dd4hep::Volume wall_vol(det_name+"_wall_vol",wall_solid,wall_mat); wall_vol.setVisAttributes(theDetector,"VisibleGreen"); - wall_phy = envelope.placeVolume(wall_vol,transform); + dd4hep::PlacedVolume wall_phy = envelope.placeVolume(wall_vol,transform); } if ( x_det.hasAttr(_U(id)) ) { -- GitLab