Skip to content
Snippets Groups Projects
Commit 984c3e4b authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'overlay/tile-ttl1-master' into 'master'

Do a proper Tile TTL1 overlay (master edition)

See merge request atlas/athena!16252

Former-commit-id: e05281df
parents 0fabc16b 0f6aab0d
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,12 @@ if DetFlags.overlay.LVL1_on():
if DetFlags.simulateLVL1.Tile_on():
include( "TileSimAlgs/TileTTL1_jobOptions.py" )
# If we are doing MC overlay
if not overlayFlags.isDataOverlay():
job.TileHitToTTL1.TileTTL1Container = overlayFlags.evtStore() + '+TileTTL1Cnt'
job.TileHitToTTL1.TileMBTSTTL1Container = overlayFlags.evtStore() + '+TileTTL1MBTS'
include( "TileSimAlgs/TileMuonReceiver_jobOptions.py" )
# Add special TTL1 overlay algorithm only for MC+MC overlay
......
from AthenaCommon.AlgSequence import AlgSequence
topSequence = AlgSequence()
from TileSimAlgs.TileTTL1FromHitsGetter import *
from TileSimAlgs.TileTTL1FromHitsGetter import TileTTL1FromHitsGetter
theTileTTL1FromHitsGetter = TileTTL1FromHitsGetter()
from TileSimAlgs.TileSimAlgsConf import *
theTileHitToTTL1=TileHitToTTL1()
from Digitization.DigitizationFlags import jobproperties
theTileHitToTTL1.RndmSvc=jobproperties.Digitization.rndmSvc()
topSequence.TileHitToTTL1.RndmSvc = jobproperties.Digitization.rndmSvc()
jobproperties.Digitization.rndmSeedList.addSeed("Tile_HitToTTL1", 4789899, 989240512)
from AthenaCommon.BeamFlags import jobproperties
......
......@@ -68,16 +68,19 @@ private:
SG::ReadHandleKey<LArTTL1Container> m_bkgEmTTL1Key{this,"BkgEmTTL1Key","OriginalEvent_SG+LArTTL1EM","ReadHandleKey for Background Input EM LArTTL1Container"};
SG::ReadHandleKey<LArTTL1Container> m_bkgHadTTL1Key{this,"BkgHadTTL1Key","OriginalEvent_SG+LArTTL1HAD","ReadHandleKey for Background Input Had LArTTL1Container"};
SG::ReadHandleKey<TileTTL1Container> m_bkgTileTTL1Key{this,"BkgTileTTL1Key","OriginalEvent_SG+TileTTL1Cnt","ReadHandleKey for Background Input TileTTL1Container"};
SG::ReadHandleKey<TileTTL1Container> m_bkgTileMBTSTTL1Key{this,"BkgTileMBTSTTL1Key","OriginalEvent_SG+TileTTL1MBTS","ReadHandleKey for Background Input MBTS TileTTL1Container"};
// locations of signal TTL1 data
SG::ReadHandleKey<LArTTL1Container> m_signalEmTTL1Key{this,"SignalEmTTL1Key","BkgEvent_0_SG+LArTTL1EM","ReadHandleKey for Signal Input EM LArTTL1Container"};
SG::ReadHandleKey<LArTTL1Container> m_signalHadTTL1Key{this,"SignalHadTTL1Key","BkgEvent_0_SG+LArTTL1HAD","ReadHandleKey for Signal Input Had LArTTL1Container"};
SG::ReadHandleKey<TileTTL1Container> m_signalTileTTL1Key{this,"SignalTileTTL1Key","BkgEvent_0_SG+TileTTL1Cnt","ReadHandleKey for Signal Input TileTTL1Container"};
SG::ReadHandleKey<TileTTL1Container> m_signalTileMBTSTTL1Key{this,"SignalTileMBTSTTL1Key","BkgEvent_0_SG+TileTTL1MBTS","ReadHandleKey for Signal Input MBTS TileTTL1Container"};
// locations of output TTL1 data
SG::WriteHandleKey<LArTTL1Container> m_outputEmTTL1Key{this,"OutputEmTTL1Key","StoreGateSvc+LArTTL1EM","WriteHandleKey for Output EM LArTTL1Container"};
SG::WriteHandleKey<LArTTL1Container> m_outputHadTTL1Key{this,"OutputHadTTL1Key","StoreGateSvc+LArTTL1HAD","WriteHandleKey for Output Had LArTTL1Container"};
SG::WriteHandleKey<TileTTL1Container> m_outputTileTTL1Key{this,"OutputTileTTL1Key","StoreGateSvc+TileTTL1Cnt","WriteHandleKey for Output TileTTL1Container"};
SG::WriteHandleKey<TileTTL1Container> m_outputTileMBTSTTL1Key{this,"OutputTileMBTSTTL1Key","StoreGateSvc+TileTTL1MBTS","WriteHandleKey for Output MBTS TileTTL1Container"};
/** overlay amplitudes from other TTL1 */
void groupLArTowers(SG::ReadHandle<LArTTL1Container>& towers, std::map<Identifier, std::vector<const LArTTL1*>> &towerMap) const;
......@@ -85,7 +88,7 @@ private:
/** specialised overlay functions */
StatusCode overlayLArTTL1(const SG::ReadHandleKey<LArTTL1Container> &bkgKey, const SG::ReadHandleKey<LArTTL1Container> &signalKey, const SG::WriteHandleKey<LArTTL1Container> &outputKey, const std::string &label);
StatusCode overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey);
StatusCode overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey, const std::string &label);
};
} // namespace LVL1
......
......@@ -5,9 +5,6 @@ from AthenaCommon import CfgMgr
def getTTL1Overlay(name="OverlayTTL1", **kwargs):
from OverlayCommonAlgs.OverlayFlags import overlayFlags
# Tile TTL1 overlay is currently not needed as Tile trigger towers are created from the overlaid container
enableTileTTL1Overlay = False
kwargs.setdefault("BkgEmTTL1Key", overlayFlags.dataStore() + "+LArTTL1EM");
kwargs.setdefault("SignalEmTTL1Key", overlayFlags.evtStore() + "+LArTTL1EM");
kwargs.setdefault("OutputEmTTL1Key", overlayFlags.outputStore() + "+LArTTL1EM");
......@@ -16,13 +13,12 @@ def getTTL1Overlay(name="OverlayTTL1", **kwargs):
kwargs.setdefault("SignalHadTTL1Key", overlayFlags.evtStore() + "+LArTTL1HAD");
kwargs.setdefault("OutputHadTTL1Key", overlayFlags.outputStore() + "+LArTTL1HAD");
if enableTileTTL1Overlay:
kwargs.setdefault("BkgTileTTL1Key", overlayFlags.dataStore() + "+TileTTL1Cnt");
kwargs.setdefault("SignalTileTTL1Key", overlayFlags.evtStore() + "+TileTTL1Cnt");
kwargs.setdefault("OutputTileTTL1Key", overlayFlags.outputStore() + "+TileTTL1Cnt");
else:
kwargs.setdefault("BkgTileTTL1Key", "");
kwargs.setdefault("SignalTileTTL1Key", "");
kwargs.setdefault("OutputTileTTL1Key", "");
kwargs.setdefault("BkgTileTTL1Key", overlayFlags.dataStore() + "+TileTTL1Cnt");
kwargs.setdefault("SignalTileTTL1Key", overlayFlags.evtStore() + "+TileTTL1Cnt");
kwargs.setdefault("OutputTileTTL1Key", overlayFlags.outputStore() + "+TileTTL1Cnt");
kwargs.setdefault("BkgTileMBTSTTL1Key", overlayFlags.dataStore() + "+TileTTL1MBTS");
kwargs.setdefault("SignalTileMBTSTTL1Key", overlayFlags.evtStore() + "+TileTTL1MBTS");
kwargs.setdefault("OutputTileMBTSTTL1Key", overlayFlags.outputStore() + "+TileTTL1MBTS");
return CfgMgr.LVL1__OverlayTTL1(name, **kwargs)
......@@ -23,7 +23,7 @@ StatusCode OverlayTTL1::initialize()
{
ATH_MSG_DEBUG("Initialising");
// StoreGate keys
// StoreGate keys for LAr
ATH_CHECK( m_bkgEmTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgEmTTL1Key);
ATH_CHECK( m_bkgHadTTL1Key.initialize() );
......@@ -37,13 +37,19 @@ StatusCode OverlayTTL1::initialize()
ATH_CHECK( m_outputHadTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputHadTTL1Key);
// Tile can be disabled
ATH_CHECK( m_bkgTileTTL1Key.initialize(!m_bkgTileTTL1Key.key().empty()) );
// StoreGate keys for Tile
ATH_CHECK( m_bkgTileTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgTileTTL1Key);
ATH_CHECK( m_signalTileTTL1Key.initialize(!m_signalTileTTL1Key.key().empty()) );
ATH_CHECK( m_bkgTileMBTSTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgTileMBTSTTL1Key);
ATH_CHECK( m_signalTileTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalTileTTL1Key);
ATH_CHECK( m_outputTileTTL1Key.initialize(!m_outputTileTTL1Key.key().empty()) );
ATH_CHECK( m_signalTileMBTSTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalTileMBTSTTL1Key);
ATH_CHECK( m_outputTileTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputTileTTL1Key);
ATH_CHECK( m_outputTileMBTSTTL1Key.initialize() );
ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputTileMBTSTTL1Key);
return StatusCode::SUCCESS;
}
......@@ -54,9 +60,8 @@ StatusCode OverlayTTL1::execute()
ATH_CHECK( overlayLArTTL1(m_bkgEmTTL1Key, m_signalEmTTL1Key, m_outputEmTTL1Key, "EM") );
ATH_CHECK( overlayLArTTL1(m_bkgHadTTL1Key, m_signalHadTTL1Key, m_outputHadTTL1Key, "Hadronic") );
if (!m_outputTileTTL1Key.key().empty()) {
ATH_CHECK( overlayTileTTL1(m_bkgTileTTL1Key, m_signalTileTTL1Key, m_outputTileTTL1Key) );
}
ATH_CHECK( overlayTileTTL1(m_bkgTileTTL1Key, m_signalTileTTL1Key, m_outputTileTTL1Key, "") );
ATH_CHECK( overlayTileTTL1(m_bkgTileMBTSTTL1Key, m_signalTileMBTSTTL1Key, m_outputTileMBTSTTL1Key, "MBTS") );
return StatusCode::SUCCESS;
}
......@@ -178,7 +183,7 @@ StatusCode OverlayTTL1::overlayLArTTL1(const SG::ReadHandleKey<LArTTL1Container>
return StatusCode::SUCCESS;
}
StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey)
StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey, const std::string &label)
{
// setup map
std::map<Identifier, std::vector<const TileTTL1*>> towerMap;
......@@ -186,7 +191,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
// Find Tile towers in TES
SG::ReadHandle<TileTTL1Container> bkgTowers(bkgKey);
if (!bkgTowers.isValid()) {
ATH_MSG_ERROR("Could not get background TileTTL1Container container " << bkgTowers.name() << " from store " << bkgTowers.store());
ATH_MSG_ERROR("Could not get background " << label << " TileTTL1Container container " << bkgTowers.name() << " from store " << bkgTowers.store());
return StatusCode::FAILURE;
}
......@@ -194,7 +199,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
/// So here we retrieve those, match them up and sum their amplitudes
SG::ReadHandle<TileTTL1Container> signalTowers(signalKey);
if (!signalTowers.isValid()) {
ATH_MSG_ERROR("Could not get signal TileTTL1Container container " << signalTowers.name() << " from store " << signalTowers.store());
ATH_MSG_ERROR("Could not get signal " << label << " TileTTL1Container container " << signalTowers.name() << " from store " << signalTowers.store());
return StatusCode::FAILURE;
}
......@@ -205,7 +210,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
SG::WriteHandle<TileTTL1Container> outputContainer(outputKey);
// Register the TTL1 container in the TES
ATH_CHECK( outputContainer.record(std::make_unique<TileTTL1Container>()) );
ATH_MSG_DEBUG( "Output TileTTL1Container registered successfully (" << outputKey.key() << ")" );
ATH_MSG_DEBUG( "Output " << label << " TileTTL1Container registered successfully (" << outputKey.key() << ")" );
// Then the process Tile TTL1 collection
for (std::map<Identifier, std::vector<const TileTTL1*>>::iterator itMap = towerMap.begin(); itMap != towerMap.end(); ++itMap) {
......@@ -217,7 +222,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
if (mergedAmps.size() == 0) mergedAmps = (*it)->fsamples();
else {
std::vector<float> amps = (*it)->fsamples();
if (amps.size() != mergedAmps.size()) ATH_MSG_WARNING("Tile vectors have different lengths: " << amps.size() << ", " << mergedAmps.size());
if (amps.size() != mergedAmps.size()) ATH_MSG_WARNING("Tile " << label << " vectors have different lengths: " << amps.size() << ", " << mergedAmps.size());
else for (unsigned int i = 0; i < amps.size(); ++i) mergedAmps[i] += amps[i];
}
}
......
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