Skip to content
Snippets Groups Projects
Commit 701a7d16 authored by Edward Moyse's avatar Edward Moyse
Browse files

Merge branch 'TrackingGeometrySvc2CondAlg/MuonTGMeasAssocAlg' into 'master'

TrackingGeometrySvc2CondAlg/MuonTGMeasAssocAlg

See merge request atlas/athena!38918
parents b3a93338 3839c71e
No related branches found
No related tags found
No related merge requests found
......@@ -85,8 +85,8 @@ class MuonTGMeasAssocAlg : public AthAlgorithm {
bool m_misAlign;
bool m_allowGeomAssoc;
mutable const Trk::TrackingGeometry* m_trackingGeometry;
std::string m_trackingGeometryName;
SG::ReadCondHandleKey<Trk::TrackingGeometry> m_trackingGeometryReadKey;
ToolHandle<Muon::IMuonTGMeasTool> m_muonTgTool{
this,
......
......@@ -9,23 +9,25 @@ MuonStandAloneGeometryBuilder = Trk__GeometryBuilder( name = "MuonStandAloneGeom
ToolSvc += MuonStandAloneGeometryBuilder
ToolSvc.MuonStandAloneGeometryBuilder.InDetTrackingGeometry = False
ToolSvc.MuonStandAloneGeometryBuilder.CaloTrackingGeometry = False
ToolSvc.MuonStandAloneGeometryBuilder.MuonTrackingGeometry = True
ToolSvc.MuonStandAloneGeometryBuilder.MuonTrackingGeometry = True
print MuonStandAloneGeometryBuilder
# combined tracking geometry options
from TrkDetDescrSvc.TrkDetDescrSvcConf import TrackingGeometrySvc
MuonTrackingGeometrySvc = TrackingGeometrySvc( name ="MuonTrackingGeometrySvc",
TrackingGeometryName = "MuonStandaloneTrackingGeometry",
GeometryBuilder = MuonStandAloneGeometryBuilder,
BuildGeometryFromTagInfo = False,
AssignMaterialFromCOOL = False )
theApp.CreateSvc += [ "TrackingGeometrySvc/MuonTrackingGeometrySvc" ]
from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlg import ConfiguredTrackingGeometryCondAlg
MuonTrkGeoCondAlg = ConfiguredTrackingGeometryCondAlg(name = "MuonTrackingGeometryCondAlg",
GeometryBuilder = MuonStandAloneGeometryBuilder,
BuildGeometryFromTagInfo = False,
TrackingGeometryWriteKey = 'MuonStandaloneTrackingGeometry')
# navigator
from AthenaCommon.AlgSequence import AthSequencer
condSeq = AthSequencer("AthCondSeq")
condSeq+= TrkGeoCondAlg
# navigator
from TrkExTools.TrkExToolsConf import Trk__Navigator
MuonNavigator = Trk__Navigator(name = "MuonNavigator" )
ToolSvc += MuonNavigator
ToolSvc.MuonNavigator.TrackingGeometrySvc = "MuonTrackingGeometrySvc"
ToolSvc.MuonNavigator.TrackingGeometrySvc = "MuonTrackingGeometrySvc"
ToolSvc.MuonNavigator.OutputLevel = 5
print MuonNavigator
......@@ -35,7 +37,7 @@ MuonMatUpdator = Trk__MaterialEffectsUpdator( name = "MuonMatUpdator" )
ToolSvc += MuonMatUpdator
print MuonMatUpdator
# propagator
# propagator
from TrkExSTEP_Propagator.TrkExSTEP_PropagatorConf import Trk__STEP_Propagator
MuonPropagator = Trk__STEP_Propagator(name = 'MuonPropagator')
ToolSvc += MuonPropagator
......@@ -44,7 +46,7 @@ print MuonPropagator
# extrapolator
from TrkExTools.TrkExToolsConf import Trk__Extrapolator
MuonExtrapolator = Trk__Extrapolator( name = 'MuonExtrapolator',
MuonExtrapolator = Trk__Extrapolator( name = 'MuonExtrapolator',
Propagators = [ MuonPropagator ] ,
Navigator = MuonNavigator,
MaterialEffectsUpdators = [ MuonMatUpdator ]
......@@ -57,7 +59,7 @@ print MuonExtrapolator
#
from MuonTGMeasAssocAlg.MuonTGMeasAssocAlgConf import Muon__MuonTGMeasAssocAlg
MuonTGMeasAssocAlg = Muon__MuonTGMeasAssocAlg( name = 'MuonTGMeasAssocAlg',
Extrapolator = MuonExtrapolator,
Extrapolator = MuonExtrapolator,
TrackingGeometry = 'MuonStandaloneTrackingGeometry',
ProcessSegments = True )
topSequence += MuonTGMeasAssocAlg
......
......@@ -39,8 +39,7 @@ Muon::MuonTGMeasAssocAlg::MuonTGMeasAssocAlg(const std::string& name, ISvcLocato
m_reAlign(false),
m_misAlign(false),
m_allowGeomAssoc(true),
m_trackingGeometry(0),
m_trackingGeometryName("AtlasTrackingGeometry"),
m_trackingGeometryReadKey("AtlasTrackingGeometry"),
m_inputSegmentCollectionMoore("MooreSegments"),
m_inputSegmentCollectionMoMu("MuonSegments_MoMu"),
m_inputSegmentCollectionMBoy("ConvertedMBoySegments"),
......@@ -56,7 +55,6 @@ Muon::MuonTGMeasAssocAlg::MuonTGMeasAssocAlg(const std::string& name, ISvcLocato
m_allHits(0),
m_allSegments(0)
{
declareProperty("TrackingGeometry", m_trackingGeometryName);
declareProperty("ProcessMdtHits", m_mdtIn);
declareProperty("ProcessRpcHits", m_rpcIn);
declareProperty("ProcessCscHits", m_cscIn);
......@@ -85,6 +83,8 @@ Muon::MuonTGMeasAssocAlg::initialize()
ATH_CHECK(m_DetectorManagerKey.initialize());
ATH_CHECK(m_trackingGeometryReadKey.initialize());
// Get an Identifier helper object
ATH_CHECK(service("ActiveStoreSvc", m_activeStore));
ATH_CHECK(m_idHelperSvc.retrieve());
......@@ -144,14 +144,18 @@ Muon::MuonTGMeasAssocAlg::execute()
StatusCode sc;
if (!m_trackingGeometry) {
ATH_CHECK(detStore()->retrieve(m_trackingGeometry, m_trackingGeometryName));
ATH_MSG_DEBUG("tracking geometry Svc \"" << m_trackingGeometryName << "\" booked ");
//Set up read handle
SG::ReadCondHandle<Trk::TrackingGeometry> readHandle{m_trackingGeometryReadKey};
if (!readHandle.isValid() || *readHandle == nullptr) {
ATH_MSG_WARNING(m_trackingGeometryReadKey.fullKey() << " is not available.");
return StatusCode::FAILURE;
}
const Trk::TrackingGeometry* trkGeom = *readHandle;
// create station map if not done already ; misalign stations if required
if (!m_stationMap.size()) {
const Trk::TrackingVolume* vol = m_trackingGeometry->highestTrackingVolume();
const Trk::TrackingVolume* vol = trkGeom->highestTrackingVolume();
ATH_MSG_INFO("creating station map ");
createStationMap(vol, MuonDetMgr);
ATH_MSG_INFO("station map created with " << m_stationMap.size() << " members ");
......@@ -371,6 +375,13 @@ Muon::MuonTGMeasAssocAlg::createStationSegmentCollection(const MuonGM::MuonDetec
m_allSegments = new MuonTGSegments;
SG::ReadCondHandle<Trk::TrackingGeometry> readHandle{m_trackingGeometryReadKey};
if (!readHandle.isValid() || *readHandle == nullptr) {
ATH_MSG_WARNING(m_trackingGeometryReadKey.fullKey() << " is not available.");
return StatusCode::FAILURE;
}
const Trk::TrackingGeometry* trkGeom = *readHandle;
for (unsigned int ic = 0; ic < segmColls.size(); ic++) {
const Trk::SegmentCollection* segmColl = segmColls[ic];
for (Trk::SegmentCollection::const_iterator iter = segmColl->begin(); iter != segmColl->end(); ++iter) {
......@@ -381,7 +392,7 @@ Muon::MuonTGMeasAssocAlg::createStationSegmentCollection(const MuonGM::MuonDetec
// retrieve station
const Trk::DetachedTrackingVolume* detVol = 0;
const std::vector<const Trk::DetachedTrackingVolume*>* detVols =
m_trackingGeometry->lowestDetachedTrackingVolumes(segment->globalPosition());
trkGeom->lowestDetachedTrackingVolumes(segment->globalPosition());
if (detVols) {
if (detVols->size() > 1) ATH_MSG_INFO("station overlaps ? ");
if (detVols->size()) detVol = detVols->front();
......@@ -406,7 +417,7 @@ Muon::MuonTGMeasAssocAlg::createStationSegmentCollection(const MuonGM::MuonDetec
const MuonGM::TgcReadoutElement* tgcROE = MuonDetMgr->getTgcReadoutElement(id);
pos = tgcROE->channelPos(id);
}
const Trk::Layer* lay = m_trackingGeometry->associatedLayer(pos);
const Trk::Layer* lay = trkGeom->associatedLayer(pos);
if (lay) detVol = lay->enclosingDetachedTrackingVolume();
if (detVol) ATH_MSG_DEBUG(" enclosing detached volume retrieved:" << detVol->name());
}
......@@ -970,8 +981,15 @@ Muon::MuonTGMeasAssocAlg::associatedLayer(int techn, Identifier id, const MuonGM
// Get the TgcReadoutElement and the tube position from it
const MuonGM::TgcReadoutElement* tgcROE = MuonDetMgr->getTgcReadoutElement(id);
Amg::Vector3D pos = tgcROE->channelPos(id);
std::vector<const Trk::DetachedTrackingVolume*>* detVols =
m_trackingGeometry->lowestDetachedTrackingVolumes(pos);
//Get the TrackingGeometry
SG::ReadCondHandle<Trk::TrackingGeometry> readHandle{m_trackingGeometryReadKey};
if (!readHandle.isValid() || *readHandle == nullptr) {
ATH_MSG_WARNING(m_trackingGeometryReadKey.fullKey() << " is not available.");
}
const Trk::TrackingGeometry* trkGeom = *readHandle;
std::vector<const Trk::DetachedTrackingVolume*>* detVols = trkGeom->lowestDetachedTrackingVolumes(pos);
for (unsigned int i = 0; i < detVols->size(); i++) {
Identifier sId((*detVols)[i]->layerRepresentation()->layerType());
ATH_MSG_INFO("geom assoc with station:" << (*detVols)[i] << "," << (*detVols)[i]->name() << ","
......
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