Commit 36e0e10c authored by Robert Langenberg's avatar Robert Langenberg
Browse files

add Goetz' patch to setup IOVRange Keys in TGConfig, consolidate

parent 14990691
......@@ -132,9 +132,6 @@ if __name__=='__main__':
beginseq = cfg.getSequence("AthBeginSeq")
beginseq.Members.append(CompFactory.ForceIDConditionsAlg("ForceIDConditionsAlg"))
if len([_ for _ in cfg._conditionsAlgs if _.name=="MuonAlignmentCondAlg"]) > 0:
# create MuonDetectorCondAlg as pixel and SCT depend on it
from MuonConfig.MuonGeometryConfig import MuonDetectorCondAlgCfg
cfg.merge(MuonDetectorCondAlgCfg(ConfigFlags))
beginseq = cfg.getSequence("AthBeginSeq")
beginseq.Members.append(CompFactory.ForceMSConditionsAlg("ForceMSConditionsAlg"))
......
......@@ -89,28 +89,8 @@ if DetFlags.SCT_on() and ((not DetFlags.simulate.SCT_on()) or DetFlags.overlay.S
condSeq += SCT_AlignCondAlg(name = "SCT_AlignCondAlg",
UseDynamicAlignFolders = InDetGeometryFlags.useDynamicAlignFolders())
if not hasattr(condSeq, "SCT_DetectorElementCondAlg"):
# set up dependencies to limit IOV Range for athena MT
MuonMgrKey = ""
TRT_DetEltKey = ""
PixelAlignStore = ""
# To avoid setting up conditions algorithms in the right order, only set up for athena MT
print ("WL, InDetFolderAlign:",DetFlags.Muon_on(),overlayFlags.isDataOverlay(), DetFlags.writeRDOPool.Muon_on())
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
if jp.ConcurrencyFlags.NumThreads() > 0:
#if (DetFlags.Muon_on() and (overlayFlags.isDataOverlay() or not DetFlags.writeRDOPool.Muon_on())):
if (DetFlags.Muon_on() and not DetFlags.writeRDOPool.Muon_on()):
#MuonDetectorManager not part of the HIT2RDO configuration
MuonMgrKey = "MuonDetectorManager"
if DetFlags.TRT_on():
TRT_DetEltKey = "TRT_DetElementContainer"
if DetFlags.pixel_on():
PixelAlignStore = "PixelAlignmentStore"
from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConf import SCT_DetectorElementCondAlg
condSeq += SCT_DetectorElementCondAlg(name = "SCT_DetectorElementCondAlg",
MuonManagerKey = MuonMgrKey,
TRT_DetEltContKey = TRT_DetEltKey,
PixelAlignmentStore = PixelAlignStore)
condSeq += SCT_DetectorElementCondAlg(name = "SCT_DetectorElementCondAlg")
if DetFlags.pixel_on() and ((not DetFlags.simulate.pixel_on()) or DetFlags.overlay.pixel_on()):
if not hasattr(condSeq, "PixelAlignCondAlg"):
......@@ -120,22 +100,5 @@ if DetFlags.pixel_on() and ((not DetFlags.simulate.pixel_on()) or DetFlags.overl
condSeq += PixelAlignCondAlg(name = "PixelAlignCondAlg",
UseDynamicAlignFolders = InDetGeometryFlags.useDynamicAlignFolders())
if not hasattr(condSeq, "PixelDetectorElementCondAlg"):
# set up dependencies to limit IOV Range for athena MT
MuonMgrKey = ""
TRT_DetEltKey = ""
SCTAlignStore = ""
# To avoid setting up conditions algorithms in the right order, only set up for athena MT
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
if jp.ConcurrencyFlags.NumThreads() > 0:
if (DetFlags.Muon_on() and not DetFlags.writeRDOPool.Muon_on()):
MuonMgrKey = "MuonDetectorManager"
if DetFlags.TRT_on():
TRT_DetEltKey = "TRT_DetElementContainer"
if DetFlags.SCT_on():
SCTAlignStore = "SCTAlignmentStore"
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelDetectorElementCondAlg
condSeq += PixelDetectorElementCondAlg(name = "PixelDetectorElementCondAlg",
MuonManagerKey = MuonMgrKey,
TRT_DetEltContKey = TRT_DetEltKey,
SCTAlignmentStore = SCTAlignStore)
condSeq += PixelDetectorElementCondAlg(name = "PixelDetectorElementCondAlg")
......@@ -66,28 +66,10 @@ if DetFlags.SCT_on():
if not hasattr(condSeq, "SCT_AlignCondAlg"):
from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConf import SCT_AlignCondAlg
condSeq += SCT_AlignCondAlg(name = "SCT_AlignCondAlg",
UseDynamicAlignFolders = InDetGeometryFlags.useDynamicAlignFolders()
)
UseDynamicAlignFolders = InDetGeometryFlags.useDynamicAlignFolders())
if not hasattr(condSeq, "SCT_DetectorElementCondAlg"):
# set up dependencies to limit IOV Range for athena MT
MuonMgrKey = ""
TRT_DetEltKey = ""
PixelAlignStore = ""
# To avoid setting up conditions algorithms in the right order, only set up for athena MT
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
if jp.ConcurrencyFlags.NumThreads() > 0:
if DetFlags.Muon_on():
MuonMgrKey = "MuonDetectorManager"
if DetFlags.TRT_on():
TRT_DetEltKey = "TRT_DetElementContainer"
if DetFlags.pixel_on():
PixelAlignStore = "PixelAlignmentStore"
from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConf import SCT_DetectorElementCondAlg
condSeq += SCT_DetectorElementCondAlg(name = "SCT_DetectorElementCondAlg",
MuonManagerKey = MuonMgrKey,
TRT_DetEltContKey = TRT_DetEltKey,
PixelAlignmentStore = PixelAlignStore)
condSeq += SCT_DetectorElementCondAlg(name = "SCT_DetectorElementCondAlg")
if DetFlags.pixel_on():
if not hasattr(condSeq, "PixelAlignCondAlg"):
......@@ -95,22 +77,6 @@ if DetFlags.pixel_on():
condSeq += PixelAlignCondAlg(name = "PixelAlignCondAlg",
UseDynamicAlignFolders = InDetGeometryFlags.useDynamicAlignFolders())
if not hasattr(condSeq, "PixelDetectorElementCondAlg"):
# set up dependencies to limit IOV Range for athena MT
MuonMgrKey = ""
TRT_DetEltKey = ""
SCTAlignStore = ""
# To avoid setting up conditions algorithms in the right order, only set up for athena MT
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
if jp.ConcurrencyFlags.NumThreads() > 0:
if DetFlags.Muon_on():
MuonMgrKey = "MuonDetectorManager"
if DetFlags.TRT_on():
TRT_DetEltKey = "TRT_DetElementContainer"
if DetFlags.SCT_on():
SCTAlignStore = "SCTAlignmentStore"
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelDetectorElementCondAlg
condSeq += PixelDetectorElementCondAlg(name = "PixelDetectorElementCondAlg",
MuonManagerKey = MuonMgrKey,
TRT_DetEltContKey = TRT_DetEltKey,
SCTAlignmentStore = SCTAlignStore)
\ No newline at end of file
condSeq += PixelDetectorElementCondAlg(name = "PixelDetectorElementCondAlg")
......@@ -445,25 +445,18 @@ def PixelDetectorElementCondAlgCfg(flags, name="PixelDetectorElementCondAlg", **
acc = ComponentAccumulator()
acc.merge(PixelAlignCondAlgCfg(flags))
# set up dependencies to limit IOV Range for athena MT
MuonMgrKey = ""
TRT_DetEltKey = ""
SCTAlignStoreKey = ""
# To avoid setting up conditions algorithms in the right order, only set up for athena MT
if flags.Concurrency.NumThreads > 0:
if flags.Detector.GeometryMuon:
MuonMgrKey = "MuonDetectorManager"
if flags.Detector.GeometryTRT:
TRT_DetEltKey = "TRT_DetElementContainer"
if flags.Detector.GeometrySCT:
SCTAlignStoreKey = "SCTAlignmentStore"
kwargs.setdefault("MuonManagerKey", MuonMgrKey)
kwargs.setdefault("TRT_DetEltContKey", TRT_DetEltKey)
kwargs.setdefault("SCTAlignmentStore", SCTAlignStoreKey)
kwargs.setdefault("PixelAlignmentStore", "PixelAlignmentStore")
kwargs.setdefault("WriteKey", "PixelDetectorElementCollection")
acc.addCondAlgo(CompFactory.PixelDetectorElementCondAlg(name, **kwargs))
def merge_lists(a, b):
a.extend([item for item in b if item not in a])
return a
alg=CompFactory.PixelDetectorElementCondAlg(name, **kwargs)
alg._descriptors['MuonManagerKey'].semantics.merge = merge_lists
alg._descriptors['TRT_DetEltContKey'].semantics.merge = merge_lists
alg._descriptors['SCTAlignmentStore'].semantics.merge = merge_lists
acc.addCondAlgo(alg)
return acc
def PixelDistortionAlgCfg(flags, name="PixelDistortionAlg", **kwargs):
......
......@@ -37,15 +37,9 @@ StatusCode PixelDetectorElementCondAlg::initialize()
ATH_CHECK(detStore()->retrieve(m_detManager, m_detManagerName));
// used only if they exist
if(not m_trtDetElContKey.empty()){
ATH_CHECK(m_trtDetElContKey.initialize());
}
if(not m_muonManagerKey.empty()){
ATH_CHECK(m_muonManagerKey.initialize());
}
if(not m_SCT_readKey.empty()){
ATH_CHECK(m_SCT_readKey.initialize());
}
ATH_CHECK(m_trtDetElContKey.initialize());
ATH_CHECK(m_muonManagerKey.initialize());
ATH_CHECK(m_SCT_readKey.initialize());
return StatusCode::SUCCESS;
}
......@@ -85,24 +79,24 @@ StatusCode PixelDetectorElementCondAlg::execute(const EventContext& ctx) const
// Add dependency for IOV range
writeHandle.addDependency(readHandle);
// Additional dependencies for IOV range to limit lifetime to TrackingGeometry lifetime
if (not m_muonManagerKey.empty()){
SG::ReadCondHandle<MuonGM::MuonDetectorManager> muonDependency{m_muonManagerKey, ctx};
for (const SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> &key :m_muonManagerKey ) {
SG::ReadCondHandle<MuonGM::MuonDetectorManager> muonDependency{key, ctx};
if (*muonDependency != nullptr){
writeHandle.addDependency(muonDependency);
writeHandle.addDependency(muonDependency);
} else {
ATH_MSG_WARNING("MuonManager not found, ignoring Muons for PixelDetElement lifetime");
ATH_MSG_WARNING("MuonManager not found, ignoring Muons for PixelDetElement lifetime");
}
}
if (not m_trtDetElContKey.empty()){
SG::ReadCondHandle<InDetDD::TRT_DetElementContainer> trtDependency{m_trtDetElContKey, ctx};
for (const SG::ReadCondHandleKey<InDetDD::TRT_DetElementContainer> &key :m_trtDetElContKey ) {
SG::ReadCondHandle<InDetDD::TRT_DetElementContainer> trtDependency{key, ctx};
if (*trtDependency != nullptr){
writeHandle.addDependency(trtDependency);
} else {
ATH_MSG_WARNING("TRT DetEls not found, ignoring TRT for PixelDetElement lifetime");
}
}
if (not m_SCT_readKey.empty()){
SG::ReadCondHandle<GeoAlignmentStore> sctDependency{m_SCT_readKey, ctx};
for (const SG::ReadCondHandleKey<GeoAlignmentStore> &key :m_SCT_readKey ) {
SG::ReadCondHandle<GeoAlignmentStore> sctDependency{key, ctx};
if (*sctDependency != nullptr){
writeHandle.addDependency(sctDependency);
} else {
......
......@@ -14,6 +14,7 @@
#include "InDetReadoutGeometry/SiDetectorElementCollection.h"
#include "StoreGate/ReadCondHandleKey.h"
#include "StoreGate/WriteCondHandleKey.h"
#include "StoreGate/CondHandleKeyArray.h"
#include "GaudiKernel/ICondSvc.h"
......@@ -45,12 +46,12 @@ class PixelDetectorElementCondAlg : public AthReentrantAlgorithm
// The DetElement Collection must have a life time <= the Tracking Geometry due to DetElt-> Surface -> Layer connection,
// which is why we intersect with the IOV Ranges from the TG's dependencies.
SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_muonManagerKey
{this, "MuonManagerKey", "MuonDetectorManager", "MuonManager ReadKey for IOV Range intersection"};
SG::ReadCondHandleKey<InDetDD::TRT_DetElementContainer> m_trtDetElContKey
{this, "TRT_DetEltContKey", "TRT_DetElementContainer", "TRT ReadKey for IOV Range intersection"};
SG::ReadCondHandleKey<GeoAlignmentStore> m_SCT_readKey
{this, "SCTAlignmentStore", "SCTAlignmentStore", "SCTAlignmentStore ReadKey for IOV Range intersection "};
SG::ReadCondHandleKeyArray<MuonGM::MuonDetectorManager> m_muonManagerKey
{this, "MuonManagerKey", {}, "MuonManager ReadKey for IOV Range intersection"};
SG::ReadCondHandleKeyArray<InDetDD::TRT_DetElementContainer> m_trtDetElContKey
{this, "TRT_DetEltContKey", {}, "TRT ReadKey for IOV Range intersection"};
SG::ReadCondHandleKeyArray<GeoAlignmentStore> m_SCT_readKey
{this, "SCTAlignmentStore", {}, "SCTAlignmentStore ReadKey for IOV Range intersection "};
ServiceHandle<ICondSvc> m_condSvc{this, "CondSvc", "CondSvc"};
......
......@@ -36,15 +36,9 @@ StatusCode SCT_DetectorElementCondAlg::initialize()
ATH_CHECK(detStore()->retrieve(m_detManager, m_detManagerName));
// used only if they exist
if(not m_trtDetElContKey.empty()){
ATH_CHECK(m_trtDetElContKey.initialize());
}
if(not m_muonManagerKey.empty()){
ATH_CHECK(m_muonManagerKey.initialize());
}
if(not m_pixelReadKey.empty()){
ATH_CHECK(m_pixelReadKey.initialize());
}
ATH_CHECK(m_trtDetElContKey.initialize());
ATH_CHECK(m_muonManagerKey.initialize());
ATH_CHECK(m_pixelReadKey.initialize());
return StatusCode::SUCCESS;
}
......@@ -84,24 +78,24 @@ StatusCode SCT_DetectorElementCondAlg::execute(const EventContext& ctx) const
// Add dependency
writeHandle.addDependency(readHandle);
// Additional dependencies for IOV range to limit lifetime to TrackingGeometry lifetime
if (not m_muonManagerKey.empty()){
SG::ReadCondHandle<MuonGM::MuonDetectorManager> muonDependency{m_muonManagerKey, ctx};
for (const SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> &key :m_muonManagerKey ) {
SG::ReadCondHandle<MuonGM::MuonDetectorManager> muonDependency{key, ctx};
if (*muonDependency != nullptr){
writeHandle.addDependency(muonDependency);
} else {
ATH_MSG_WARNING("MuonManager not found, ignoring Muons for PixelDetElement lifetime");
}
}
if (not m_trtDetElContKey.empty()){
SG::ReadCondHandle<InDetDD::TRT_DetElementContainer> trtDependency{m_trtDetElContKey, ctx};
for (const SG::ReadCondHandleKey<InDetDD::TRT_DetElementContainer> &key :m_trtDetElContKey ) {
SG::ReadCondHandle<InDetDD::TRT_DetElementContainer> trtDependency{key, ctx};
if (*trtDependency != nullptr){
writeHandle.addDependency(trtDependency);
} else {
ATH_MSG_WARNING("TRT DetEls not found, ignoring TRT for PixelDetElement lifetime");
}
}
if (not m_pixelReadKey.empty()){
SG::ReadCondHandle<GeoAlignmentStore> pixelDependency{m_pixelReadKey, ctx};
for (const SG::ReadCondHandleKey<GeoAlignmentStore> &key :m_pixelReadKey ) {
SG::ReadCondHandle<GeoAlignmentStore> pixelDependency{key, ctx};
if (*pixelDependency != nullptr){
writeHandle.addDependency(pixelDependency);
} else {
......
......@@ -14,6 +14,7 @@
#include "InDetReadoutGeometry/SiDetectorElementCollection.h"
#include "StoreGate/ReadCondHandleKey.h"
#include "StoreGate/WriteCondHandleKey.h"
#include "StoreGate/CondHandleKeyArray.h"
#include "GaudiKernel/ICondSvc.h"
......@@ -43,12 +44,12 @@ class SCT_DetectorElementCondAlg : public AthReentrantAlgorithm
// The DetElement Collection must have a life time <= the Tracking Geometry due to DetElt-> Surface -> Layer connection,
// which is why we intersect with the IOV Ranges from the TG's dependencies.
SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_muonManagerKey
{this, "MuonManagerKey", "MuonDetectorManager", "MuonManager ReadKey for IOV Range intersection"};
SG::ReadCondHandleKey<InDetDD::TRT_DetElementContainer> m_trtDetElContKey
{this, "TRT_DetEltContKey", "TRT_DetElementContainer", "TRT ReadKey for IOV Range intersection"};
SG::ReadCondHandleKey<GeoAlignmentStore> m_pixelReadKey
{this, "PixelAlignmentStore", "PixelAlignmentStore", "PixelAlignmentStore ReadKey for IOV Range intersection"};
SG::ReadCondHandleKeyArray<MuonGM::MuonDetectorManager> m_muonManagerKey
{this, "MuonManagerKey", {}, "MuonManager ReadKey for IOV Range intersection"};
SG::ReadCondHandleKeyArray<InDetDD::TRT_DetElementContainer> m_trtDetElContKey
{this, "TRT_DetEltContKey", {}, "TRT ReadKey for IOV Range intersection"};
SG::ReadCondHandleKeyArray<GeoAlignmentStore> m_pixelReadKey
{this, "PixelAlignmentStore", {}, "PixelAlignmentStore ReadKey for IOV Range intersection"};
ServiceHandle<ICondSvc> m_condSvc{this, "CondSvc", "CondSvc"};
std::string m_detManagerName;
......
......@@ -38,24 +38,14 @@ def SCT_GeometryCfg( flags ):
def SCT_DetectorElementCondAlgCfg(flags, name = "SCT_DetectorElementCondAlg", **kwargs):
# set up dependencies to limit IOV Range for athena MT
MuonMgrKey = ""
TRT_DetEltKey = ""
PixelAlignStoreKey = ""
# To avoid setting up conditions algorithms in the right order, only set up for athena MT
if flags.Concurrency.NumThreads > 0:
if flags.Muon.enableAlignment:
MuonMgrKey = "MuonDetectorManager"
if flags.Detector.GeometryTRT:
TRT_DetEltKey = "TRT_DetElementContainer"
if flags.Detector.GeometryPixel:
PixelAlignStoreKey = "PixelAlignmentStore"
kwargs.setdefault("MuonManagerKey", MuonMgrKey)
kwargs.setdefault("TRT_DetEltContKey", TRT_DetEltKey)
kwargs.setdefault("PixelAlignmentStore", PixelAlignStoreKey)
def merge_lists(a, b):
a.extend([item for item in b if item not in a])
return a
SCT_DetectorElementCondAlg=CompFactory.SCT_DetectorElementCondAlg
sctDetectorElementCondAlg = SCT_DetectorElementCondAlg(name, **kwargs)
acc = ComponentAccumulator()
sctDetectorElementCondAlg._descriptors['MuonManagerKey'].semantics.merge = merge_lists
sctDetectorElementCondAlg._descriptors['TRT_DetEltContKey'].semantics.merge = merge_lists
sctDetectorElementCondAlg._descriptors['PixelAlignmentStore'].semantics.merge = merge_lists
acc.addCondAlgo(sctDetectorElementCondAlg)
return acc
......@@ -20,6 +20,18 @@ from AthenaCommon.DetFlags import DetFlags
#################################################################################
# Material for the Geometry comes from COOL or local database
#################################################################################
def modifyCondAlg(the_name, **props) :
from AthenaCommon.AlgSequence import AlgSequence
from AthenaCommon.AlgSequence import AthSequencer
cond_seq=AthSequencer("AthCondSeq")
for seq in [AlgSequence(),cond_seq] :
if hasattr(seq,the_name) :
alg = getattr(seq,the_name)
print('Modified %s' % the_name)
for k,v in props.items() :
setattr(alg,k,v)
print (alg)
return
from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags
......@@ -73,7 +85,25 @@ class ConfiguredTrackingGeometryCondAlg( Trk__TrackingGeometryCondAlg ) :
InDetTrackingGeometryBuilder.OutputLevel = TrkDetFlags.InDetBuildingOutputLevel()
# and give it to the Geometry Builder
AtlasGeometryBuilder.InDetTrackingGeometryBuilder = InDetTrackingGeometryBuilder
#
# artifical dependencies to Si-DetectorElement conditions algs to ensure that
# the IOV is identical to the IOV of the tracking geoemtry
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
if jp.ConcurrencyFlags.NumThreads() <= 0:
#REORDER cond_seq, NO INDENTATION BC STUFF IS MISSING TO PROVOKE ERROR
MuonManagerKey = ['MuonDetectorManager'] if (DetFlags.Muon_on() and not DetFlags.writeRDOPool.Muon_on()) else []
TRT_DetEltKey = ["TRT_DetElementContainer"] if DetFlags.TRT_on() else []
SCTAlignStore = ["SCTAlignmentStore"] if DetFlags.SCT_on() else []
PixelAlignStore = ["PixelAlignmentStore"] if DetFlags.pixel_on() else []
modifyCondAlg('SCT_DetectorElementCondAlg', MuonManagerKey = MuonManagerKey,
TRT_DetEltContKey = TRT_DetEltKey,
PixelAlignmentStore = PixelAlignStore)
modifyCondAlg('PixelDetectorElementCondAlg', MuonManagerKey = MuonManagerKey,
TRT_DetEltContKey = TRT_DetEltKey,
SCTAlignmentStore = SCTAlignStore)
# (Calo)
if DetFlags.Calo_on() :
from TrkDetDescrTools.TrkDetDescrToolsConf import Trk__CylinderVolumeCreator
......@@ -96,7 +126,7 @@ class ConfiguredTrackingGeometryCondAlg( Trk__TrackingGeometryCondAlg ) :
MuonTrackingGeometryBuilderCond.EnvelopeDefinitionSvc = AtlasEnvelopeSvc
# and give it to the Geometry Builder
AtlasGeometryBuilder.MuonTrackingGeometryBuilder = MuonTrackingGeometryBuilderCond
# processors
AtlasGeometryProcessors = []
......
......@@ -78,6 +78,14 @@ def _getInDetTrackingGeometryBuilder(name, flags,result, envelopeDefinitionSvc,
binnings += [ PixelLayerBinning ]
colors += [ 3 ]
# add artifical dependencies to Pixel DetectorElement conditions algs to ensure that the IOV
# is identical to the IOV of the tracking geoemtry cond alg
from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDetectorElementCondAlgCfg
result.merge(PixelDetectorElementCondAlgCfg(flags,
MuonManagerKey = ["MuonDetectorManager"] if flags.Muon.enableAlignment else [],
TRT_DetEltContKey = ["TRT_DetElementContainer"] if flags.Detector.GeometryTRT else [],
SCTAlignmentStore = ["SCTAlignmentStore"] if flags.Detector.GeometrySCT else []))
if flags.Detector.GeometrySCT:
# for SCT DetectorElement conditions data :
from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
......@@ -112,6 +120,13 @@ def _getInDetTrackingGeometryBuilder(name, flags,result, envelopeDefinitionSvc,
layerbuilders += [ SCT_LayerBuilder ]
binnings += [ SCT_LayerBinning ]
colors += [ 4 ]
if flags.Concurrency.NumThreads <= 0:
#ordering of algs is missing for single threaded athena
from SCT_GeoModel.SCT_GeoModelConfig import SCT_DetectorElementCondAlgCfg
result.merge(SCT_DetectorElementCondAlgCfg(flags,
MuonManagerKey = ["MuonDetectorManager"] if flags.Muon.enableAlignment else [],
TRT_DetEltContKey = ["TRT_DetElementContainer"] if flags.Detector.GeometryTRT else [],
PixelAlignmentStore = ["PixelAlignmentStore"] if flags.Detector.GeometryPixel else []))
if flags.Detector.GeometryTRT:
# for TRT DetectorElement conditions data :
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment