Skip to content

Commit

Permalink
SimpleCylinder from FCCDetectors/common migrated to detector/other di…
Browse files Browse the repository at this point in the history
…rectory in k4geo
  • Loading branch information
atolosadelgado committed Sep 21, 2023
1 parent 1031b52 commit c596669
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 17 deletions.
28 changes: 14 additions & 14 deletions FCCee/ALLEGRO/compact/ALLEGRO_o1_v01/FCCee_EcalEndcaps_coneCryo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,33 +70,33 @@

<detectors>
<!-- positive side: cryostat -->
<detector name="CalEndcapCryoFront_positive" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoFront_positive" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_front_rmin" rmax="CryoEndcap_rmax"
dz="CryoEMECThicknessFront/2." z_offset="CryoEndcap_z1+CryoEMECThicknessFront/2." material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapCryoBack_positive" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoBack_positive" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_back_rmin" rmax="CryoEndcap_rmax"
dz="CryoEMECThicknessBack/2." z_offset="CryoEndcap_z2-CryoEMECThicknessBack/2." material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapCryoOuter_positive" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoOuter_positive" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_rmax-CryoEMECThicknessOuter" rmax="CryoEndcap_rmax"
dz="(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2."
z_offset="CryoEndcap_z1+CryoEMECThicknessFront+(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2." material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapCryoInner_positive" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoInner_positive" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_front_rmin" rmax="CryoEndcap_front_rmin+CryoEMECThicknessInner"
dz="(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2."
z_offset="CryoEndcap_z1+CryoEMECThicknessFront+(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2." material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapBathFront_positive" type="SimpleCylinder" vis="emec_bath_vis">
<detector name="CalEndcapBathFront_positive" type="SimpleCylinder_o1_v01" vis="emec_bath_vis">
<dimensions rmin="CryoEndcap_front_rmin+CryoEMECThicknessInner" rmax="EMEC_rmax"
dz="BathThicknessFront/2." z_offset="EMEC_z1-BathThicknessFront/2." material="LAr" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapBathBack_positive" type="SimpleCylinder" vis="emec_bath_vis">
<detector name="CalEndcapBathBack_positive" type="SimpleCylinder_o1_v01" vis="emec_bath_vis">
<dimensions rmin="EMEC_rmin1" rmax="EMEC_rmax"
dz="BathThicknessBack/2." z_offset="EMEC_z2+BathThicknessBack/2." material="LAr" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapBathOuter_positive" type="SimpleCylinder" vis="emec_bath_vis">
<detector name="CalEndcapBathOuter_positive" type="SimpleCylinder_o1_v01" vis="emec_bath_vis">
<dimensions rmin="CryoEndcap_rmax-CryoEMECThicknessOuter-BathThicknessOuter" rmax="CryoEndcap_rmax-CryoEMECThicknessOuter"
dz="(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2."
z_offset="CryoEndcap_z1+CryoEMECThicknessFront+(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2." material="LAr" phi0="0" deltaphi="360*deg"/>
Expand Down Expand Up @@ -131,33 +131,33 @@
</readout>
</detector>
<!-- negative side: cryostat -->
<detector name="CalEndcapCryoFront_negative" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoFront_negative" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_front_rmin" rmax="CryoEndcap_rmax"
dz="CryoEMECThicknessFront/2." z_offset="-(CryoEndcap_z1+CryoEMECThicknessFront/2.)" material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapCryoBack_negative" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoBack_negative" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_back_rmin" rmax="CryoEndcap_rmax"
dz="CryoEMECThicknessBack/2." z_offset="-(CryoEndcap_z2-CryoEMECThicknessBack/2.)" material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapCryoOuter_negative" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoOuter_negative" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_rmax-CryoEMECThicknessOuter" rmax="CryoEndcap_rmax"
dz="(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2."
z_offset="-(CryoEndcap_z1+CryoEMECThicknessFront+(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2.)" material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapCryoInner_negative" type="SimpleCylinder" vis="emec_cryo_vis">
<detector name="CalEndcapCryoInner_negative" type="SimpleCylinder_o1_v01" vis="emec_cryo_vis">
<dimensions rmin="CryoEndcap_front_rmin" rmax="CryoEndcap_front_rmin+CryoEMECThicknessInner"
dz="(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2."
z_offset="-(CryoEndcap_z1+CryoEMECThicknessFront+(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2.)" material="Aluminum" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapBathFront_negative" type="SimpleCylinder" vis="emec_bath_vis">
<detector name="CalEndcapBathFront_negative" type="SimpleCylinder_o1_v01" vis="emec_bath_vis">
<dimensions rmin="CryoEndcap_front_rmin+CryoEMECThicknessInner" rmax="EMEC_rmax"
dz="BathThicknessFront/2." z_offset="-(EMEC_z1-BathThicknessFront/2.)" material="LAr" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapBathBack_negative" type="SimpleCylinder" vis="emec_bath_vis">
<detector name="CalEndcapBathBack_negative" type="SimpleCylinder_o1_v01" vis="emec_bath_vis">
<dimensions rmin="EMEC_rmin1" rmax="EMEC_rmax"
dz="BathThicknessBack/2." z_offset="-(EMEC_z2+BathThicknessBack/2.)" material="LAr" phi0="0" deltaphi="360*deg"/>
</detector>
<detector name="CalEndcapBathOuter_negative" type="SimpleCylinder" vis="emec_bath_vis">
<detector name="CalEndcapBathOuter_negative" type="SimpleCylinder_o1_v01" vis="emec_bath_vis">
<dimensions rmin="CryoEndcap_rmax-CryoEMECThicknessOuter-BathThicknessOuter" rmax="CryoEndcap_rmax-CryoEMECThicknessOuter"
dz="(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2."
z_offset="-(CryoEndcap_z1+CryoEMECThicknessFront+(CryoEndcap_z2-CryoEndcap_z1-CryoEMECThicknessFront-CryoEMECThicknessBack)/2.)" material="LAr" phi0="0" deltaphi="360*deg"/>
Expand Down
6 changes: 3 additions & 3 deletions FCCee/ALLEGRO/compact/ALLEGRO_o1_v01/MuonTagger.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,19 @@

<detectors>
<!-- positive side: cryostat -->
<detector id="DetID_Muon_Barrel" name="MuonTaggerBarrel" type="SimpleCylinder" sensitive="true" vis="muon_vis" readout="MuonTaggerPhiEta">
<detector id="DetID_Muon_Barrel" name="MuonTaggerBarrel" type="SimpleCylinder_o1_v01" sensitive="true" vis="muon_vis" readout="MuonTaggerPhiEta">
<sensitive type="SimpleTrackerSD"/>
<dimensions rmin="MuonTagger_inner_radius" rmax="MuonTagger_outer_radius"
dz="MuonTagger_half_length" z_offset = "0" material="Polystyrene" phi0="0" deltaphi="360*deg" vis="muon_vis"/>
</detector>

<detector id="DetID_Muon_Endcap_1" name="MuonTaggerEndcap_positive" type="SimpleCylinder" sensitive="true" vis="muon_vis" readout="MuonTaggerPhiEta">
<detector id="DetID_Muon_Endcap_1" name="MuonTaggerEndcap_positive" type="SimpleCylinder_o1_v01" sensitive="true" vis="muon_vis" readout="MuonTaggerPhiEta">
<sensitive type="SimpleTrackerSD"/>
<dimensions rmin="MuonTaggerEndcap_inner_radius" rmax="MuonTaggerEndcap_outer_radius"
dz="(MuonTaggerEndcap_max_z - MuonTaggerEndcap_min_z)*0.5" z_offset = "MuonTaggerEndcap_min_z + (MuonTaggerEndcap_max_z - MuonTaggerEndcap_min_z)*0.5" material="Polystyrene" phi0="0" deltaphi="360*deg" vis="muon_vis"/>
</detector>

<detector id="DetID_Muon_Endcap_2" name="MuonTaggerEndcap_negative" type="SimpleCylinder" sensitive="true" vis="muon_vis" readout="MuonTaggerPhiEta">
<detector id="DetID_Muon_Endcap_2" name="MuonTaggerEndcap_negative" type="SimpleCylinder_o1_v01" sensitive="true" vis="muon_vis" readout="MuonTaggerPhiEta">
<sensitive type="SimpleTrackerSD"/>
<dimensions rmin="MuonTaggerEndcap_inner_radius" rmax="MuonTaggerEndcap_outer_radius"
dz="(MuonTaggerEndcap_max_z - MuonTaggerEndcap_min_z)*0.5" z_offset = "-MuonTaggerEndcap_max_z + (MuonTaggerEndcap_max_z - MuonTaggerEndcap_min_z)*0.5" material="Polystyrene" phi0="0" deltaphi="360*deg" vis="muon_vis"/>
Expand Down
50 changes: 50 additions & 0 deletions detector/other/SimpleCylinder_geo_o1_v01.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include "DD4hep/DetFactoryHelper.h"

namespace det {
/**
Simple cylinder using Tube to be used to define cylinder composed of 1 single material
@author Clement Helsens
**/
static dd4hep::Ref_t
createSimpleCylinder(dd4hep::Detector& lcdd, xml_h e, dd4hep::SensitiveDetector sensDet) {
xml_det_t x_det = e;
std::string name = x_det.nameStr();
dd4hep::DetElement cylinderDet(name, x_det.id());

dd4hep::Volume experimentalHall = lcdd.pickMotherVolume(cylinderDet);

xml_comp_t cylinderDim(x_det.child(_U(dimensions)));

dd4hep::Tube cylinder(
cylinderDim.rmin(), cylinderDim.rmax(), cylinderDim.dz(), cylinderDim.phi0(), cylinderDim.deltaphi());

dd4hep::Volume cylinderVol(
x_det.nameStr() + "_SimpleCylinder", cylinder, lcdd.material(cylinderDim.materialStr()));

if (x_det.isSensitive()) {
dd4hep::xml::Dimension sdType(x_det.child(_U(sensitive)));
cylinderVol.setSensitiveDetector(sensDet);
sensDet.setType(sdType.typeStr());
}

dd4hep::PlacedVolume cylinderPhys;

double zoff = cylinderDim.z_offset();
if (fabs(zoff) > 0.000000000001) {
dd4hep::Position trans(0., 0., zoff);
cylinderPhys = experimentalHall.placeVolume(cylinderVol,
dd4hep::Transform3D(dd4hep::RotationZ(0.), trans));
} else
cylinderPhys = experimentalHall.placeVolume(cylinderVol);

cylinderPhys.addPhysVolID("system", x_det.id());

cylinderDet.setPlacement(cylinderPhys);

cylinderDet.setVisAttributes(lcdd, x_det.visStr(), cylinderVol);

return cylinderDet;
}
}
DECLARE_DETELEMENT(SimpleCylinder_o1_v01, det::createSimpleCylinder)

0 comments on commit c596669

Please sign in to comment.