Skip to content
Snippets Groups Projects
Commit 6fbd37ff authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

deleted: compact/gem_tracker_endcap.xml

	deleted:    src/TrapEndcapTracker_geo.cpp
parent e788265e
No related branches found
No related tags found
No related merge requests found
Pipeline #10136 failed
<lccdd>
<comment> Endcap Tracker </comment>
<define>
<constant name="GEMTrackerEndcap_zmin" value="BarrelTracking_length/2.0"/>
<constant name="GEMTrackerEndcap_NLayers" value="1"/>
<constant name="GEMTrackerEndcapFoilOpeningAngle" value="30.1*degree"/>
<constant name="GEMTrackerEndcapFoilX1" value="43.0 * mm"/>
<constant name="GEMTrackerEndcapLayer_thickness" value="ForwardTrackingGEMLength/GEMTrackerEndcap_NLayers"/>
<constant name="GEMTrackerEndcapFoil_rmin" value="GEMTrackerEndcapFoilX1/(tan(GEMTrackerEndcapFoilOpeningAngle/2.0)*2.0)"/>
<constant name="GEMTrackerEndcapFoilY" value="BarrelTracking_rmax- GEMTrackerEndcapFoil_rmin- 1.0*cm"/>
<constant name="GEMTrackerEndcapFoilX2" value="2*GEMTrackerEndcapFoilY*tan(GEMTrackerEndcapFoilOpeningAngle/2.0) + GEMTrackerEndcapFoilX1"/>
<constant name="GEMTrackerEndcapFoil_rmax" value="(GEMTrackerEndcapFoilY+GEMTrackerEndcapFoil_rmin)/(cos(GEMTrackerEndcapFoilOpeningAngle/2.0))"/>
// Frame parameters accoring to Kondo's sbsCrossSection.pdf file),
<constant name="GEMTrackerEndcapFrame_thickness" value="18.0 * mm"/>
<constant name="GEMTrackerEndcapFrameBotEdge_width" value="30.0 * mm"/>
<constant name="GEMTrackerEndcapFrameTopEdge_width" value="30.0 * mm"/>
<constant name="GEMTrackerEndcapFrameSideEdge_width" value=" 8.0 * mm"/>
<comment>
From https://github.com/eic/EicToyModel/blob/master/source/eicroot/GemGeoParData.cxx
// FIXME: put aluminum layer later as well),
mEntranceWindowMaterial ( "GemKapton"),
mEntranceWindowThickness ( 50.0 * etm::um),
// Use evaristo.pdf p.10 for the foil parameters:
// - drift foil : 50um kapton + 3um copper)
// - GEM foil : 30um kapton + 3um copper (80% area fraction))
// - readout foils : 30um kapton + 3um copper total)
mDriftFoilKaptonThickness ( 50.0 * etm::um),
mDriftFoilCopperThickness ( 3.0 * etm::um),
mGemFoilAreaFraction ( 0.80),
mGemFoilKaptonThickness ( 30.0 * etm::um),
mGemFoilCopperThickness ( 3.0 * etm::um),
mReadoutG10Thickness ( 0.0 * etm::mm),
mReadoutKaptonThickness ( 30.0 * etm::um),
mReadoutCopperThickness ( 3.0 * etm::um),
// 3mm thick Nomex honeycomb for SBS GEMs),
mReadoutSupportMaterial ( "GemNomex"),
mReadoutSupportThickness ( 3.0 * etm::mm),
mEntranceRegionLength ( 3.0 * etm::mm),
mDriftRegionLength ( 3.0 * etm::mm),
// Assume triple GEM layout),
mFirstTransferRegionLength ( 2.0 * etm::mm),
mSecondTransferRegionLength ( 2.0 * etm::mm),
mInductionRegionLength ( 2.0 * etm::mm)
</comment>
</define>
<limits>
</limits>
<regions>
</regions>
<display>
</display>
<detectors>
<detector
id="GEMTrackerEndcap_ID"
name="GEMTrackerEndcap"
type="refdet_GEMTrackerEndcap"
readout="GEMTrackerEndcapHits"
vis="AnlRed"
reflect="false">
<module name="GEMModule1" vis="AnlProcess_Blue">
<trd x1="GEMTrackerEndcapFoilX1/2.0" x2="GEMTrackerEndcapFoilX2/2.0" z="GEMTrackerEndcapFoilY/2"/>
<comment> Going from HV side to readout side</comment>
<module_component thickness="0.127 * mm" material="Mylar"/>
<module_component thickness="50.0*um" material="Kapton" name="entrance_window"/>
<module_component thickness=" 3.0*mm" material="Ar10CO2" name="entrance region" />
<module_component thickness="50.0*um" material="Kapton"/>
<module_component thickness=" 3.0*um" material="Copper"/>
<module_component thickness=" 3.0*mm" material="Ar10CO2" name="drift region"/>
<module_component thickness="30.0*um" material="Kapton" name="gem_foil"/>
<module_component thickness=" 3.0*um" material="Copper" name="gem_foil_Cu"/>
<module_component thickness=" 2.0*mm" material="Ar10CO2" name="transfer region I"/>
<module_component thickness="30.0*um" material="Kapton" name="gem_foil"/>
<module_component thickness=" 3.0*um" material="Copper" name="gem_foil_Cu"/>
<module_component thickness=" 2.0*mm" material="Ar10CO2" name="transfer region II"/>
<module_component thickness="30.0*um" material="Kapton" name="gem_foil"/>
<module_component thickness=" 3.0*um" material="Copper" name="gem_foil_Cu"/>
<module_component thickness=" 2.0*mm" material="Ar10CO2" name="induction region"/>
<module_component thickness="30.0*um" material="Kapton" name="readout" sensitive="true"/>
<module_component thickness=" 3.0*um" material="Copper" name="readout_Cu"/>
<module_component thickness="127.0*um" material="Mylar"/>
<module_component thickness="200.0*um" material="Epoxy" sensitive="true" vis="AnlProcess_Blue"/>
</module>
<module name="GEMSupportModule1" vis="AnlProcess_Blue">
<trd x1="GEMTrackerEndcapFoilX2/2.0" x2="GEMTrackerEndcapFoilX1/2.0" z="GEMTrackerEndcapFrameBotEdge_width"/>
<module_component thickness="GEMTrackerEndcapFrame_thickness" material="Mylar"/>
</module>
<module name="GEMSupportModule2" vis="AnlProcess_Blue">
<trd x1="GEMTrackerEndcapFrameSideEdge_width" x2="GEMTrackerEndcapFrameSideEdge_width" z="GEMTrackerEndcapFoilY/2"/>
<module_component thickness="4.0*mm" material="Mylar"/>
</module>
<layer id="1" >
<ring vis="AnlRed"
r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0"
zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness"
nmodules="12" dz="10 * mm" module="GEMModule1" />
<ring vis="AnlBlue" phi0="15.0*degree"
r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0"
zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness"
nmodules="12" dz="0 * mm" module="GEMSupportModule2" />
</layer>
</detector>
<detector
id="GEMTrackerEndcapN_ID"
name="GEMTrackerEndcapN"
type="refdet_GEMTrackerEndcap"
readout="GEMTrackerEndcapHits"
vis="AnlRed"
reflect="true">
<module name="GEMModule1" vis="AnlProcess_Blue">
<trd x1="GEMTrackerEndcapFoilX1/2.0" x2="GEMTrackerEndcapFoilX2/2.0" z="GEMTrackerEndcapFoilY/2"/>
<comment> Going from HV side to readout side</comment>
<module_component thickness="0.127 * mm" material="Mylar"/>
<module_component thickness="50.0*um" material="Kapton" name="entrance_window"/>
<module_component thickness=" 3.0*mm" material="Ar10CO2" name="entrance region" />
<module_component thickness="50.0*um" material="Kapton"/>
<module_component thickness=" 3.0*um" material="Copper"/>
<module_component thickness=" 3.0*mm" material="Ar10CO2" name="drift region"/>
<module_component thickness="30.0*um" material="Kapton" name="gem_foil"/>
<module_component thickness=" 3.0*um" material="Copper" name="gem_foil_Cu"/>
<module_component thickness=" 2.0*mm" material="Ar10CO2" name="transfer region I"/>
<module_component thickness="30.0*um" material="Kapton" name="gem_foil"/>
<module_component thickness=" 3.0*um" material="Copper" name="gem_foil_Cu"/>
<module_component thickness=" 2.0*mm" material="Ar10CO2" name="transfer region II"/>
<module_component thickness="30.0*um" material="Kapton" name="gem_foil"/>
<module_component thickness=" 3.0*um" material="Copper" name="gem_foil_Cu"/>
<module_component thickness=" 2.0*mm" material="Ar10CO2" name="induction region"/>
<module_component thickness="30.0*um" material="Kapton" name="readout" sensitive="true"/>
<module_component thickness=" 3.0*um" material="Copper" name="readout_Cu"/>
<module_component thickness="127.0*um" material="Mylar"/>
<module_component thickness="200.0*um" material="Epoxy" sensitive="true" vis="AnlProcess_Blue"/>
</module>
<module name="GEMSupportModule1" vis="AnlProcess_Blue">
<trd x1="GEMTrackerEndcapFoilX2/2.0" x2="GEMTrackerEndcapFoilX1/2.0" z="GEMTrackerEndcapFrameBotEdge_width"/>
<module_component thickness="GEMTrackerEndcapFrame_thickness" material="Mylar"/>
</module>
<module name="GEMSupportModule2" vis="AnlProcess_Blue">
<trd x1="GEMTrackerEndcapFrameSideEdge_width" x2="GEMTrackerEndcapFrameSideEdge_width" z="GEMTrackerEndcapFoilY/2"/>
<module_component thickness="4.0*mm" material="Mylar"/>
</module>
<layer id="1" >
<ring vis="AnlRed"
r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0"
zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness"
nmodules="12" dz="10 * mm" module="GEMModule1" />
<ring vis="AnlBlue" phi0="15.0*degree"
r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0"
zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness"
nmodules="12" dz="0 * mm" module="GEMSupportModule2" />
</layer>
</detector>
</detectors>
<readouts>
<readout name="GEMTrackerEndcapHits">
<segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" />
<id>system:8,barrel:2,layer:4,module:12,sensor:2,x:32:-16,y:-16</id>
</readout>
</readouts>
<plugins>
</plugins>
<fields>
</fields>
</lccdd>
//==========================================================================
// AIDA Detector description implementation
//--------------------------------------------------------------------------
// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
// All rights reserved.
//
// For the licensing terms see $DD4hepINSTALL/LICENSE.
// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
//
// Author : M.Frank
//
//==========================================================================
//
// Specialized generic detector constructor
//
//==========================================================================
#include <map>
#include "DD4hep/DetFactoryHelper.h"
using namespace std;
using namespace dd4hep;
using namespace dd4hep::detail;
static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector sens) {
typedef vector<PlacedVolume> Placements;
xml_det_t x_det = e;
Material vacuum = description.vacuum();
int det_id = x_det.id();
string det_name = x_det.nameStr();
bool reflect = x_det.reflect(false);
DetElement sdet(det_name, det_id);
Assembly assembly(det_name);
// Volume assembly (det_name,Box(10000,10000,10000),vacuum);
Volume motherVol = description.pickMotherVolume(sdet);
int m_id = 0, c_id = 0, n_sensor = 0;
map<string, Volume> modules;
map<string, Placements> sensitives;
PlacedVolume pv;
assembly.setVisAttributes(description.invisible());
sens.setType("tracker");
for (xml_coll_t mi(x_det, _U(module)); mi; ++mi, ++m_id) {
xml_comp_t x_mod = mi;
string m_nam = x_mod.nameStr();
xml_comp_t trd = x_mod.trd();
double posY;
double x1 = trd.x1();
double x2 = trd.x2();
double z = trd.z();
double y1, y2, total_thickness = 0.;
xml_coll_t ci(x_mod, _U(module_component));
for (ci.reset(), total_thickness = 0.0; ci; ++ci) total_thickness += xml_comp_t(ci).thickness();
y1 = y2 = total_thickness / 2;
Volume m_volume(m_nam, Trapezoid(x1, x2, y1, y2, z), vacuum);
m_volume.setVisAttributes(description.visAttributes(x_mod.visStr()));
for (ci.reset(), n_sensor = 1, c_id = 0, posY = -y1; ci; ++ci, ++c_id) {
xml_comp_t c = ci;
double c_thick = c.thickness();
auto comp_x1 = getAttrOrDefault(c, _Unicode(x1), x1);
auto comp_x2 = getAttrOrDefault(c, _Unicode(x2), x2);
auto comp_height = getAttrOrDefault(c, _Unicode(height), z);
Material c_mat = description.material(c.materialStr());
string c_name = _toString(c_id, "component%d");
Volume c_vol(c_name, Trapezoid(comp_x1, comp_x2, c_thick / 2e0, c_thick / 2e0, comp_height), c_mat);
c_vol.setVisAttributes(description.visAttributes(c.visStr()));
pv = m_volume.placeVolume(c_vol, Position(0, posY + c_thick / 2, 0));
if (c.isSensitive()) {
sdet.check(n_sensor > 2,
"SiTrackerEndcap2::fromCompact: " + c_name + " Max of 2 modules allowed!");
pv.addPhysVolID("sensor", n_sensor);
c_vol.setSensitiveDetector(sens);
sensitives[m_nam].push_back(pv);
++n_sensor;
}
posY += c_thick;
}
modules[m_nam] = m_volume;
}
for (xml_coll_t li(x_det, _U(layer)); li; ++li) {
xml_comp_t x_layer(li);
int l_id = x_layer.id();
int mod_num = 1;
for (xml_coll_t ri(x_layer, _U(ring)); ri; ++ri) {
xml_comp_t x_ring = ri;
double r = x_ring.r();
double phi0 = x_ring.phi0(0);
double zstart = x_ring.zstart();
double dz = x_ring.dz(0);
int nmodules = x_ring.nmodules();
string m_nam = x_ring.moduleStr();
Volume m_vol = modules[m_nam];
double iphi = 2 * M_PI / nmodules;
double phi = phi0;
Placements& sensVols = sensitives[m_nam];
for (int k = 0; k < nmodules; ++k) {
string m_base = _toString(l_id, "layer%d") + _toString(mod_num, "_module%d");
double x = -r * std::cos(phi);
double y = -r * std::sin(phi);
DetElement module(sdet, m_base + "_pos", det_id);
pv = assembly.placeVolume(m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2),
Position(x, y, zstart + dz)));
pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
module.setPlacement(pv);
for (size_t ic = 0; ic < sensVols.size(); ++ic) {
PlacedVolume sens_pv = sensVols[ic];
DetElement comp_elt(module, sens_pv.volume().name(), mod_num);
comp_elt.setPlacement(sens_pv);
}
if (reflect) {
pv =
assembly.placeVolume(m_vol, Transform3D(RotationZYX(M_PI, -M_PI / 2 - phi, -M_PI / 2),
Position(x, y, -zstart - dz)));
pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
DetElement r_module(sdet, m_base + "_neg", det_id);
r_module.setPlacement(pv);
for (size_t ic = 0; ic < sensVols.size(); ++ic) {
PlacedVolume sens_pv = sensVols[ic];
DetElement comp_elt(r_module, sens_pv.volume().name(), mod_num);
comp_elt.setPlacement(sens_pv);
}
}
dz = -dz;
phi += iphi;
++mod_num;
}
}
}
pv = motherVol.placeVolume(assembly);
pv.addPhysVolID("system", det_id);
sdet.setPlacement(pv);
return sdet;
}
// clang-format off
DECLARE_DETELEMENT(refdet_TrapEndcapTracker, create_detector)
DECLARE_DETELEMENT(refdet_GEMTrackerEndcap, create_detector)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment