Skip to content
Snippets Groups Projects

Fix construction of emulsion detector

Merged Dave Casper requested to merge dcasper/calypso:master-emulsion-geofix into master
2 files
+ 26
9
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -50,7 +50,8 @@ EmulsionPlates::getParameters()
m_tungstenWidth = platesParameters->platesWidth();
m_tungstenHeight = platesParameters->platesHeight();
m_tungstenThickness = platesParameters->platesThickness();
m_material = m_materials->getMaterial(platesParameters->platesMaterial());
m_absorberMaterial = m_materials->getMaterial(platesParameters->platesMaterial());
m_airMaterial = m_materials->gasMaterial();
m_nBasesPerModule = generalParameters->nBasesPerModule();
m_nModules = generalParameters->nModules();
@@ -94,7 +95,10 @@ EmulsionPlates::preBuild()
const GeoBox* platesShape = new GeoBox(0.5*m_width, 0.5*m_height, 0.5*m_thickness);
// GeoLogVol * platesLog = new GeoLogVol(getName(), platesShape, m_materials->gasMaterial());
GeoLogVol * platesLog = new GeoLogVol(getName(), platesShape, m_material);
GeoLogVol * platesLog = new GeoLogVol(getName(), platesShape, m_airMaterial);
const GeoBox* absorberShape = new GeoBox(m_tungstenWidth/2, m_tungstenHeight/2, m_tungstenThickness/2);
m_absorberVolume = new GeoLogVol(getName()+"_absorber", absorberShape, m_absorberMaterial);
// m_baseboardPos = new GeoTrf::Translate3D(0.0, 0.0, 0.0);
// m_frontPos = new GeoTrf::Translate3D(0.0, 0.0, -(m_baseThickness + m_filmThickness)/2);
@@ -106,7 +110,12 @@ EmulsionPlates::preBuild()
GeoVPhysVol *
EmulsionPlates::build(EmulsionIdentifier id)
{
GeoFullPhysVol * plates = new GeoFullPhysVol(m_logVolume);
GeoFullPhysVol * plates = new GeoFullPhysVol(m_logVolume);
GeoPhysVol * physAbsorber = new GeoPhysVol(m_absorberVolume);
GeoAlignableTransform* absorberTransform = new GeoAlignableTransform( GeoTrf::Translate3D { 0.0, 0.0, m_zShift} );
plates->add(absorberTransform);
plates->add(new GeoNameTag("Absorber"));
plates->add(physAbsorber);
int nBases = 0;
int nBasesTotal = m_nModules * m_nBasesPerModule;
@@ -120,12 +129,18 @@ EmulsionPlates::build(EmulsionIdentifier id)
for (int base = 0; base < m_nBasesPerModule; base++)
{
id.setBase(base);
GeoAlignableTransform* theTransform = new GeoAlignableTransform( GeoTrf::Translate3D {0.0, 0.0, m_zShift + m_firstBaseZ + ((m_lastBaseZ - m_firstBaseZ)/(nBasesTotal-1))*nBases++} );
plates->add(theTransform);
plates->add(new GeoNameTag("Base#"+intToString(module*100 + base)));
plates->add(new GeoIdentifierTag(module*100 + base));
// GeoAlignableTransform* theTransform = new GeoAlignableTransform( GeoTrf::Translate3D {0.0, 0.0, m_zShift + m_firstBaseZ + ((m_lastBaseZ - m_firstBaseZ)/(nBasesTotal-1))*nBases++} );
// plates->add(theTransform);
// plates->add(new GeoNameTag("Base#"+intToString(module*100 + base)));
// plates->add(new GeoIdentifierTag(module*100 + base));
// GeoVPhysVol* physBase = m_base->build(id);
// plates->add(physBase);
GeoAlignableTransform* theTransform = new GeoAlignableTransform( GeoTrf::Translate3D {0.0, 0.0, m_firstBaseZ + ((m_lastBaseZ - m_firstBaseZ)/(nBasesTotal-1))*nBases++} );
physAbsorber->add(theTransform);
physAbsorber->add(new GeoNameTag("Base#"+intToString(module*100 + base)));
physAbsorber->add(new GeoIdentifierTag(module*100 + base));
GeoVPhysVol* physBase = m_base->build(id);
plates->add(physBase);
physAbsorber->add(physBase);
m_detectorManager->addAlignableTransform(1, id.getFilmId(), theTransform, physBase);
}
m_detectorManager->numerology().useModule(module);
Loading