Skip to content
Snippets Groups Projects
Commit 314d828b authored by Jihee Kim's avatar Jihee Kim
Browse files

Added endcaps ladder

parent d95da8c2
No related branches found
No related tags found
1 merge request!36Resolve "Implement cb_VTX"
Pipeline #8203 failed
......@@ -31,7 +31,9 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
Volume detVol("cb_VTX_GVol_Logic", cb_VTX_GVol_Solid, Vacuum);
detVol.setVisAttributes(desc.visAttributes(x_det.visStr()));
//////////////////
// Barrel Ladder
//////////////////
xml_comp_t x_layer = x_det.child(_U(layer));
const int repeat = x_layer.repeat();
......@@ -57,7 +59,8 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
lay_Dx[4] = 0.150 * mm; lay_Dy[4] = 4.0 * cm; lay_Dz[4] = 36.0 * cm; lay_Rin[4] = 13.5 * cm;
lay_Dx[5] = 0.150 * mm; lay_Dy[5] = 4.0 * cm; lay_Dz[5] = 48.0 * cm; lay_Rin[5] = 15.5 * cm;
int i_module = 0.0;
int i_layer = 0;
int i_module = 0;
// Loop over layers
for(int i = 0; i < repeat; i++) {
double cb_VTX_ladder_DZ = lay_Dz[i];
......@@ -83,6 +86,7 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
ladderVol.setVisAttributes(desc,x_layer.visStr());
sens.setType("tracker");
ladderVol.setSensitiveDetector(sens);
i_layer++;
for (int ia = 0; ia < laddersCount; ia++) {
phi = (ia * (cb_VTX_ladder_deltaphi));
......@@ -94,7 +98,109 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
string ladderName = detName + _toString(i, "_ladder_Phys_%d") + _toString(ia, "_%d");
PlacedVolume ladderPV = detVol.placeVolume(ladderVol, Transform3D(ladder_rot, ladder_pos));
i_module++;
ladderPV.addPhysVolID("layer", i+1).addPhysVolID("module", i_module);
ladderPV.addPhysVolID("layer", i_layer).addPhysVolID("module", i_module);
}
}
// TODO: Pixels
//////////////////
// Endcaps Ladder
//////////////////
int lay = 0;
int NUMF;
phi = 0.0; x = 0.0; y = 0.0; z = 0.0;
double Fdeltaphi, Ftheta, F2theta;
double RxF[10], RyF[10], RzF[10], RxF2[10], RyF2[10], RzF2[10];
double Rzshift = 24.0 * cm;
double fVTX_END_EDY = 12.0 * cm;
double fVTX_END_EDZ = 0.05 * cm;
double fVTX_END_EDX1 = 6.0 * cm;
double fVTX_END_EDX2 = 4.0 * cm;
for (lay = 0; lay < 3; lay++) {
if (lay == 3) {
fVTX_END_EDY = 18.0 * cm;
NUMF = 24;
Fdeltaphi = 15.0 * deg;
Ftheta = -40.0 * deg;
RxF[lay] = 1.3 * cm;
RyF[lay] = RxF[lay];
RzF[lay] = -Rzshift - 5.5 * cm;
RxF2[lay] = 1.3 * cm;
RyF2[lay] = RxF2[lay];
RzF2[lay] = Rzshift + 5.5 * cm;
}
if (lay == 2) {
NUMF = 20;
fVTX_END_EDY = 16.0 * cm;
Fdeltaphi = 18.0 * deg;
Ftheta = -38.0 * deg;
RxF[lay] = 1.1 * cm;
RyF[lay] = RxF[lay];
RzF[lay] = -Rzshift - 5.5 * cm;
RxF2[lay] = 1.1 * cm;
RyF2[lay] = RxF2[lay];
RzF2[lay] = Rzshift + 5.5 * cm;
}
if (lay == 1) {
NUMF = 18;
fVTX_END_EDY = 14.0 * cm;
Fdeltaphi = 20.0 * deg;
Ftheta = -44.0 * deg;
RxF[lay] = 1.0 * cm;
RyF[lay] = RxF[lay];
RzF[lay] = -Rzshift + 1.0 * cm;
RxF2[lay] = 1.0 * cm;
RyF2[lay] = RxF2[lay];
RzF2[lay] = Rzshift - 1.0 * cm;
}
if (lay == 0) {
NUMF = 12;
fVTX_END_EDY = 12.0 * cm;
Fdeltaphi = 30.0 * deg;
Ftheta = -55.0 * deg;
RxF[lay] = 0.8 * cm;
RyF[lay] = RxF[lay];
RzF[lay] = -Rzshift + 7.0 * cm;
RxF2[lay] = 0.8 * cm;
RyF2[lay] = RxF2[lay];
RzF2[lay] = Rzshift - 7.0 * cm;
}
i_layer++;
// Electron going side Endcap
string logicladderENDEName = detName + _toString(lay, "_logic_ladder_END_E%d");
Volume ladderENDEVol(logicladderENDEName,Trap(fVTX_END_EDZ,fVTX_END_EDY + lay * 2.0, fVTX_END_EDX1, fVTX_END_EDX2), slice_mat);
for (int ia = 0; ia < NUMF; ia++) {
phi = ia * Fdeltaphi;
x = -RxF[lay] * cos(phi) * cm;
y = -RyF[lay] * sin(phi) * cm;
z = RzF[lay];
RotationZYX ladder_ENDE_rot = RotationZYX(-90.0 + (Fdeltaphi * (ia + 1)), 0.0, Ftheta);
Position ladder_ENDE_pos = Position(x,y,z);
string ladderName = detName + _toString(lay, "_ladder_END_E_Phys_%d") + _toString(ia, "_%d");
PlacedVolume ladderENDEPV = detVol.placeVolume(ladderENDEVol, Transform3D(ladder_ENDE_rot, ladder_ENDE_pos));
i_module++;
ladderENDEPV.addPhysVolID("layer", i_layer).addPhysVolID("module", i_module);
}
// Hadron going side Endcap
string logicladderENDHName = detName + _toString(lay, "_logic_ladder_END_H%d");
Volume ladderENDHVol(logicladderENDHName,Trap(fVTX_END_EDZ, fVTX_END_EDY, fVTX_END_EDX1, fVTX_END_EDX2), slice_mat);
for (int ia = 0; ia < NUMF; ia++) {
phi = ia * Fdeltaphi;
x = -RxF2[lay] * cos(phi) * cm;
y = -RyF2[lay] * sin(phi) * cm;
z = RzF2[lay];
RotationZYX ladder_ENDH_rot = RotationZYX(-90.0 + (Fdeltaphi * (ia + 1)), 0.0, -Ftheta);
Position ladder_ENDH_pos = Position(x,y,z);
string ladderName = detName + _toString(lay, "_ladder_END_H_Phys_%d") + _toString(ia, "_%d");
PlacedVolume ladderENDHPV = detVol.placeVolume(ladderENDHVol, Transform3D(ladder_ENDH_rot, ladder_ENDH_pos));
i_module++;
ladderENDHPV.addPhysVolID("layer", i_layer).addPhysVolID("module", i_module);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment