Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • EIC/detectors/athena
  • zwzhao/athena
  • FernandoTA/athena
  • palspeic/athena
4 results
Show changes
Commits on Source (2)
<lccdd>
<define>
<constant name="CrystalEndcap_rmin" value="VertexTrackerBarrel_rmin"/>
<constant name="CrystalEndcap_rmax" value="EcalEndcapN_rmin"/>
<constant name="CrystalBox_x_length" value="20.0*mm"/>
<constant name="CrystalBox_y_length" value="20.0*mm"/>
<constant name="CrystalBox_z_length" value="200.0*mm"/>
<constant name="CrystalBox_offset" value="0.000001*mm"/>
<constant name="CrystalEndcap_x_pos" value="0.0*m"/>
<constant name="CrystalEndcap_y_pos" value="0.0*m"/>
<constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/>
</define>
<limits>
</limits>
<regions>
</regions>
<!-- Common Generic visualization attributes -->
<comment>Common Generic visualization attributes</comment>
<display>
</display>
<detectors>
<comment>
-------------------------------
Backwards Endcap EM Calorimeter
-------------------------------
A layered EM calorimeter with tungsten and silicon (or scintillator) strips
</comment>
<detector id="ECalEndcapN_ID"
name="EcalEndcapN"
type="refdet_PolyhedraEndcapCalorimeter2"
reflect="true"
readout="EcalEndcapHits"
vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP">
<position x="0" y="0" z="0"/>
<dimensions
numsides="CaloSides"
zmin="EcalEndcapN_zmin"
rmin="EcalEndcapN_rmin"
rmax="EcalBarrel_rmin " />
<layer repeat="EcalEndcapNLayer1_NRepeat">
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapNLayer2_NRepeat">
<slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapNLayer3_NRepeat">
<slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
</detector>
<comment>
-------------------
Crystal Calorimeter
-------------------
Backward (negative pseudorapidity) angle electron detector
</comment>
<detector
id="CrystalEndcap_ID"
name="ElectronECAL"
type="CrystalCalorimeterEndcap"
readout="CrystalEcalHits"
vis="GreenVis">
<position x="CrystalEndcap_x_pos" y="CrystalEndcap_y_pos" z="CrystalEndcap_z_pos" />
<dimensions rmin="CrystalEndcap_rmin" rmax="CrystalEndcap_rmax" x="CrystalBox_x_length" y="CrystalBox_y_length" z="CrystalBox_z_length" delta="CrystalBox_offset"/>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<!--
<readout name="PlaneTrackerHits">
<segmentation type="CartesianGridXY" grid_size_x="20.0*mm" grid_size_y="20.0*mm" />
<id>system:5,module:4,x:32:-16,y:-16</id>
</readout>
-->
<readout name="CrystalEcalHits">
<segmentation type="CartesianGridXY" grid_size_x="CrystalBox_x_length" grid_size_y="CrystalBox_y_length" />
<id>system:8,sector:4,module:20,x:48:-8,y:-8</id>
</readout>
<readout name="EcalEndcapHits">
<segmentation type="CartesianGridXY" grid_size_x="3.5 * mm" grid_size_y="3.5 * mm"/>
<id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout>
</readouts>
<plugins>
</plugins>
</lccdd>
<lccdd>
<define>
</define>
<detectors>
<detector id="ECalEndcapN_ID"
name="EcalEndcapN"
type="HomogeneousCalorimeter"
readout="EcalEndcapNHits"
vis="InvisibleWithDaughters">
<dimensions shape="disk" rmax="EcalBarrel_rmin" rmin="VertexTrackerBarrel_rmin" length="40*cm + 1*mm"/>
<position x="0" y="0" z="-EcalEndcapN_zmin"/>
<rotation x="0" y="0" z="0"/>
<placements>
<disk rmax="EcalEndcapN_rmin" rmin="VertexTrackerBarrel_rmin" sector="1">
<position z="0"/>
<module sizex="2.05*cm" sizey="2.05*cm" sizez="20*cm" material="PbWO4" vis="AnlTeal"/>
</disk>
<disk rmax="EcalBarrel_rmin" rmin="EcalEndcapN_rmin" sector="2">
<position z="0"/>
<module sizex="4*cm" sizey="4*cm" sizez="40*cm" material="PbGlass" vis="AnlBlue"/>
</disk>
</placements>
</detector>
</detectors>
<readouts>
<readout name="EcalEndcapNHits">
<id>system:8,sector:4,module:20</id>
</readout>
</readouts>
</lccdd>
<lccdd>
<define>
<constant name="CrystalEndcap_rmin" value="VertexTrackerBarrel_rmin"/>
<constant name="CrystalEndcap_rmax" value="EcalEndcapN_rmin"/>
<constant name="CrystalBox_x_length" value="20.0*mm"/>
<constant name="CrystalBox_y_length" value="20.0*mm"/>
<constant name="CrystalBox_z_length" value="200.0*mm"/>
<constant name="CrystalBox_offset" value="0.000001*mm"/>
<constant name="CrystalEndcap_x_pos" value="0.0*m"/>
<constant name="CrystalEndcap_y_pos" value="0.0*m"/>
<constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/>
<constant name="EcalEndcapP_rmax" value="Solenoid_rmax "/>
</define>
......@@ -29,6 +17,8 @@
</display>
<include ref="ecal_barrel.xml"/>
<!--<include ref="ce_ecal.xml"/>-->
<include ref="ce_ecal_outer_glass.xml"/>
<detectors>
<comment>
......@@ -41,7 +31,7 @@
name="EcalEndcapP"
reflect="false"
type="refdet_PolyhedraEndcapCalorimeter2"
readout="EcalEndcapHits"
readout="EcalEndcapPHits"
vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP" >
<position x="0" y="0" z="-0"/>
......@@ -73,65 +63,6 @@
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
</detector>
<comment>
-------------------------------
Backwards Endcap EM Calorimeter
-------------------------------
A layered EM calorimeter with tungsten and silicon (or scintillator) strips
</comment>
<detector id="ECalEndcapN_ID"
name="EcalEndcapN"
type="refdet_PolyhedraEndcapCalorimeter2"
reflect="true"
readout="EcalEndcapHits"
vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP">
<position x="0" y="0" z="0"/>
<dimensions
numsides="CaloSides"
zmin="EcalEndcapN_zmin"
rmin="EcalEndcapN_rmin"
rmax="EcalBarrel_rmin " />
<layer repeat="EcalEndcapNLayer1_NRepeat">
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapNLayer2_NRepeat">
<slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapNLayer3_NRepeat">
<slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
</detector>
<comment>
-------------------
Crystal Calorimeter
-------------------
Backward (negative pseudorapidity) angle electron detector
</comment>
<detector
id="CrystalEndcap_ID"
name="ElectronECAL"
type="CrystalCalorimeterEndcap"
readout="CrystalEcalHits"
vis="GreenVis">
<position x="CrystalEndcap_x_pos" y="CrystalEndcap_y_pos" z="CrystalEndcap_z_pos" />
<dimensions rmin="CrystalEndcap_rmin" rmax="CrystalEndcap_rmax" x="CrystalBox_x_length" y="CrystalBox_y_length" z="CrystalBox_z_length" delta="CrystalBox_offset"/>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
......@@ -142,11 +73,7 @@
<id>system:5,module:4,x:32:-16,y:-16</id>
</readout>
-->
<readout name="CrystalEcalHits">
<segmentation type="CartesianGridXY" grid_size_x="CrystalBox_x_length" grid_size_y="CrystalBox_y_length" />
<id>system:8,sector:4,module:20,x:48:-8,y:-8</id>
</readout>
<readout name="EcalEndcapHits">
<readout name="EcalEndcapPHits">
<segmentation type="CartesianGridXY" grid_size_x="3.5 * mm" grid_size_y="3.5 * mm"/>
<id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout>
......
......@@ -73,10 +73,10 @@ using namespace dd4hep::detail;
* <blocks sector="1"/>
* <module sizex="2.05*cm" sizey="2.05*cm" sizez="20*cm" vis="GreenVis" material="PbWO4"/>
* <wrapper thickness="0.015*cm" material="Epoxy" vis="WhiteVis"/>
* <placement x="1*cm" y="1*cm" z="0"/>
* <placement x="-1*cm" y="1*cm" z="0"/>
* <placement x="1*cm" y="-1*cm" z="0"/>
* <placement x="-1*cm" y="-1*cm" z="0"/>
* <placement x="1*cm" y="1*cm" z="0" id="1"/>
* <placement x="-1*cm" y="1*cm" z="0" id="2"/>
* <placement x="1*cm" y="-1*cm" z="0" id="3"/>
* <placement x="-1*cm" y="-1*cm" z="0" id="4"/>
* </blocks>
* </placements>
* </detector>
......@@ -260,21 +260,21 @@ static void add_array(Detector& desc, Volume &env, xml::Collection_t &plm, Sensi
}
}
// place modules
// place modules, id must be provided
static void add_blocks(Detector& desc, Volume &env, xml::Collection_t &plm, SensitiveDetector &sens, int sid)
{
Position modSize;
auto modVol = build_module(desc, plm, sens, modSize);
int sector_id = dd4hep::getAttrOrDefault<int>(plm, _Unicode(sector), sid);
int mid = 1;
for (xml::Collection_t pl(plm, _Unicode(placement)); pl; ++pl, ++mid) {
for (xml::Collection_t pl(plm, _Unicode(placement)); pl; ++pl) {
Position pos(dd4hep::getAttrOrDefault<double>(pl, _Unicode(x), 0.),
dd4hep::getAttrOrDefault<double>(pl, _Unicode(y), 0.),
dd4hep::getAttrOrDefault<double>(pl, _Unicode(z), 0.));
Position rot(dd4hep::getAttrOrDefault<double>(pl, _Unicode(rotx), 0.),
dd4hep::getAttrOrDefault<double>(pl, _Unicode(roty), 0.),
dd4hep::getAttrOrDefault<double>(pl, _Unicode(rotz), 0.));
auto mid = pl.attr<int>(_Unicode(id));
Transform3D tr = Translation3D(pos.x(), pos.y(), pos.z())
* RotationZYX(rot.z(), rot.y(), rot.x());
auto modPV = env.placeVolume(modVol, tr);
......