Skip to content
Snippets Groups Projects

Add tracker frame to detector geometry

Merged Dave Casper requested to merge dcasper/calypso:master-tracker-frame into master
2 files
+ 41
1
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -10,6 +10,8 @@
#include "SCT_GeometryManager.h"
#include "SCT_GeneralParameters.h"
#include "TrackerReadoutGeometry/SCT_DetectorManager.h"
#include "GeoModelKernel/GeoShape.h"
#include "GeoModelKernel/GeoShapeShift.h"
#include "GeoModelKernel/GeoShapeUnion.h"
@@ -17,6 +19,8 @@
#include "GeoModelKernel/GeoBox.h"
#include "GeoModelKernel/GeoLogVol.h"
#include "GeoModelKernel/GeoFullPhysVol.h"
#include "GeoModelKernel/GeoNameTag.h"
#include "GeoModelKernel/GeoIdentifierTag.h"
#include "GeoModelKernel/GeoTransform.h"
#include "GeoModelKernel/GeoAlignableTransform.h"
#include "GeoModelKernel/GeoMaterial.h"
@@ -44,6 +48,10 @@ SCT_Frame::getParameters()
m_thickness = barrelParameters->frameThickness();
m_width = barrelParameters->frameWidth();
m_height = barrelParameters->frameHeight();
m_etaHalfPitch = barrelParameters->etaHalfPitch();
m_phiHalfPitch = barrelParameters->phiHalfPitch();
m_depthHalfPitch = barrelParameters->depthHalfPitch();
m_sideHalfPitch = barrelParameters->sideHalfPitch();
m_stagger = 0.0;
if (getName().find("Upstream") != std::string::npos)
@@ -89,6 +97,34 @@ GeoVPhysVol *
SCT_Frame::build(SCT_Identifier)
{
GeoFullPhysVol* plane = new GeoFullPhysVol(m_logVolume);
for (int module = 0; module < 4; module++)
{
int iz = 1 - 2 * (module % 2);
int iy = -3 + 2 * module;
int ix = iz;
int iEta = iz * etaSign;
plane->add(new GeoNameTag("Module#" + intToString(module)));
plane->add(new GeoIdentifierTag(module));
id.setPhiModule(module);
id.setEtaModule(iEta);
GeoTrf::Transform3D position(GeoTrf::Translation3D(ix * m_depthHalfPitch, iy * m_phiHalfPitch, iz * m_etaHalfPitch));
GeoAlignableTransform* transform = nullptr;
if ( module%2 == 0 )
{
transform = new GeoAlignableTransform(position * GeoTrf::RotateX3D(180*Gaudi::Units::deg));
}
else
{
transform = new GeoAlignableTransform(position);
}
plane->add(transform);
GeoVPhysVol* modulePV = m_module->build(id);
plane->add(modulePV);
m_detectorManager->addAlignableTransform(1, id.getWaferId(), transform, modulePV);
}
return new GeoFullPhysVol(m_logVolume);
}
Loading