Skip to content
Snippets Groups Projects
Commit 2d5f50a1 authored by Dave Casper's avatar Dave Casper
Browse files

Merge branch 'master-tracker-hits' into 'master'

Add SCT geometry to test/example algorithm

See merge request faser/calypso!32
parents b9df78da acd9b8ad
No related branches found
No related tags found
1 merge request!32Add SCT geometry to test/example algorithm
Pipeline #1094331 passed
......@@ -11,6 +11,7 @@ atlas_depends_on_subdirs( PRIVATE
DetectorDescription/GeoModel/GeoModelInterfaces
DetectorDescription/GeoModel/GeoModelUtilities
Scintillator/ScintDetDescr/ScintReadoutGeometry
Tracker/TrackerDetDescr/TrackerReadoutGeometry
)
# External dependencies:
......@@ -21,7 +22,7 @@ atlas_add_component( GeoModelTest
src/GeoModelTestAlg.cxx
src/components/GeoModelTest_entries.cxx
INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS}
LINK_LIBRARIES ${GEOMODEL_LIBRARIES} AthenaBaseComps GeoModelUtilities ScintReadoutGeometry )
LINK_LIBRARIES ${GEOMODEL_LIBRARIES} AthenaBaseComps GeoModelUtilities ScintReadoutGeometry TrackerReadoutGeometry )
atlas_add_test( GeoModelCheck
SCRIPT python/GeoModelTestConfig.py
......
......@@ -15,9 +15,16 @@ class GeoModelTestAlg : public AthAlgorithm
private:
StatusCode testVeto();
StatusCode testSCT();
// Independently specify the "right" number of elements, for comparison with what we get from detector store
Gaudi::Property<int> m_numVetoStations {this, "NumVetoStations", 2, "Number of stations in the Veto detector"};
Gaudi::Property<int> m_numVetoPlatesPerStation {this, "NumVetoPlatesPerStation", 2, "Number of plates per station in the Veto detector"};
Gaudi::Property<int> m_numVetoPmtsPerPlate {this, "NumVetoPmtsPerPlate", 1, "Number of pmts per plate in the Veto detector"};
Gaudi::Property<int> m_numSctStations {this, "NumSCTStations", 3, "Number of stations in the SCT detector"};
Gaudi::Property<int> m_numSctPlanesPerStation {this, "NumSCTPlanesPerStation", 3, "Number of planes per station in the SCT detector"};
Gaudi::Property<int> m_numSctRowsPerPlane {this, "NumSCTRowsPerPlane", 4, "Number of rows of modules per plane in the SCT detector"};
Gaudi::Property<int> m_numSctModulesPerRow {this, "NumSCTModulesPerRow", 2, "Number of modules per row in the SCT detector"};
Gaudi::Property<int> m_numSctStripsPerSensor {this, "NumSCTStripsPerSensor", 768,"Number of readout strips per sensor in the SCT detector"};
};
\ No newline at end of file
......@@ -36,27 +36,41 @@ namespace TrackerDD {
/** Number of barrels. Normally 3. */
int numBarrels() const;
int numStations() const;
// /** Barrel/endcap identifier for each barrel. Normally barrelId(0) = -1 */
int barrelId(int index) const;
int stationId(int index) const;
/** Number of layers */
int numLayers() const;
/** Number of sectors in phi for a layer */
int numPhiModulesForLayer(int layer) const;
int numPhiModulesForLayer() const;
/** Number of sectors in phi for a ring in a disk */
int numEtaModulesForLayer(int layer) const;
int numEtaModulesForLayer() const;
/** First eta_module number for a layer */
int beginEtaModuleForLayer(int layer) const;
int beginEtaModuleForLayer() const;
/** Last eta_module number + 1 */
int endEtaModuleForLayer(int layer) const;
int endEtaModuleForLayer() const;
/** Check if eta_module=0 exists */
bool skipEtaZeroForLayer(int layer) const;
bool skipEtaZeroForLayer() const;
// Check presence of layer/disk
/** Check if layer exists */
......
......@@ -9,11 +9,21 @@ inline int SiNumerology::numBarrels() const
return m_barrelIds.size();
}
inline int SiNumerology::numStations() const
{
return m_barrelIds.size();
}
inline int SiNumerology::barrelId(int index) const
{
return m_barrelIds[index];
}
inline int SiNumerology::stationId(int index) const
{
return m_barrelIds[index];
}
inline int SiNumerology::numLayers() const
{
return m_numLayers;
......@@ -24,22 +34,42 @@ inline int SiNumerology::numPhiModulesForLayer(int layer) const
return m_phiModulesForLayer[layer];
}
inline int SiNumerology::numPhiModulesForLayer() const
{
return m_maxNumBarrelPhiModules;
}
inline int SiNumerology::numEtaModulesForLayer(int layer) const
{
return m_etaModulesForLayer[layer];
}
inline int SiNumerology::numEtaModulesForLayer() const
{
return m_maxNumBarrelEta;
}
inline int SiNumerology::beginEtaModuleForLayer(int layer) const
{
// Assume symmetric about zero.
return -m_etaModulesForLayer[layer]/2;
}
inline int SiNumerology::beginEtaModuleForLayer() const
{
return -m_maxNumBarrelEta/2;
}
// these are both 1 past the end, like an iterator ::end()
inline int SiNumerology::endEtaModuleForLayer(int layer) const
{
// Assume symmetric about zero.
return m_etaModulesForLayer[layer]/2+1;
}
inline int SiNumerology::endEtaModuleForLayer() const
{
return m_maxNumBarrelEta/2 + 1;
}
inline bool SiNumerology::skipEtaZeroForLayer(int layer) const
{
......@@ -47,6 +77,11 @@ inline bool SiNumerology::skipEtaZeroForLayer(int layer) const
return !(m_etaModulesForLayer[layer]%2);
}
inline bool SiNumerology::skipEtaZeroForLayer() const
{
return !(m_maxNumBarrelEta%2);
}
inline int SiNumerology::maxNumBarrelEta() const
{
return m_maxNumBarrelEta;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment