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

Merge branch 'FixTRT_Corrections_Master' into 'master'

Correct TRT tuning for Overlay jobs

See merge request atlas/athena!16653
parents 3c26612e 606a7a5e
No related branches found
No related tags found
No related merge requests found
......@@ -59,14 +59,15 @@ if DetFlags.overlay.pixel_on() or DetFlags.overlay.SCT_on() or DetFlags.overlay.
from TRT_ElectronPidTools.TRT_ElectronPidToolsConf import InDet__TRT_LocalOccupancy
TRT_LocalOccupancy = InDet__TRT_LocalOccupancy(name="TRT_LocalOccupancy", isTrigger= False )
ToolSvc += TRT_LocalOccupancy
job += CfgGetter.getAlgorithm("TRT_OverlayDigitization")
job += CfgGetter.getAlgorithm("TRTOverlay")
job.TRTOverlay.TRT_LocalOccupancyTool = TRT_LocalOccupancy
from InDetRecExample.InDetJobProperties import InDetFlags
include("InDetRecExample/InDetRecConditionsAccess.py")
job.InDetTRTStrawStatusSummarySvc = InDetTRTStrawStatusSummarySvc
if overlayFlags.isDataOverlay():
job.InDetTRTRawDataProvider.RDOKey = overlayFlags.dataStore()+"+TRT_RDOs"
#ServiceMgr.ByteStreamAddressProviderSvc.TypeNames += [ "TRT_RDO_Container/TRT_RDOs" ]
......
......@@ -28,7 +28,7 @@ atlas_add_component( InDetOverlay
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps IDC_OverlayBase GaudiKernel InDetRawData StoreGateLib SGtests CxxUtils GeneratorObjects InDetIdentifier InDetSimData TrkTrack )
LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps IDC_OverlayBase GaudiKernel InDetRawData StoreGateLib SGtests CxxUtils GeneratorObjects InDetIdentifier InDetSimData TrkTrack TRT_ConditionsServicesLib)
# Install files from the package:
atlas_install_headers( InDetOverlay )
......
......@@ -12,6 +12,7 @@
#include "GaudiKernel/ServiceHandle.h"
#include "InDetSimData/InDetSimDataCollection.h"
#include "TRT_ElectronPidTools/ITRT_LocalOccupancy.h"
#include "TRT_ConditionsServices/ITRT_StrawStatusSummarySvc.h"
class TRT_ID;
......@@ -63,6 +64,8 @@ private:
double m_HTOccupancyCorrectionB_noE;
double m_HTOccupancyCorrectionEC_noE;
ToolHandle<InDet::ITRT_LocalOccupancy> m_TRT_LocalOccupancyTool;
ServiceHandle<ITRT_StrawStatusSummarySvc> m_TRTStrawSummarySvc;
};
#endif // INDETOVERLAY_TRTOVERLAY_H
......@@ -44,8 +44,10 @@ def getTRTOverlay(name="TRTOverlay", **kwargs):
kwargs.setdefault("TRT_LocalOccupancyTool", "TRT_LocalOccupancy")
# HT hit correction fraction
kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrel", 0.160)
kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcap", 0.130)
kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrel", 0.110)
kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcap", 0.090)
kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelNoE", 0.060)
kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapNoE", 0.050)
return CfgMgr.TRTOverlay(name, **kwargs)
......
......@@ -70,17 +70,20 @@ TRTOverlay::TRTOverlay(const std::string &name, ISvcLocator *pSvcLocator)
m_rndmSvc("AtRndmGenSvc",name),
m_rndmEngineName("TRTOverlay"),
m_rndmEngine(nullptr),
m_TRT_LocalOccupancyTool("TRT_LocalOccupancy")
m_TRT_LocalOccupancyTool("TRT_LocalOccupancy",this),
m_TRTStrawSummarySvc("TRT_StrawStatusSummarySvc","TRT_StrawStatusSummarySvc")
{
declareProperty("RndmSvc", m_rndmSvc, "Random Number Service");
declareProperty("RndmEngine", m_rndmEngineName, "Random engine name");
declareProperty("TRT_LocalOccupancyTool", m_TRT_LocalOccupancyTool);
declareProperty("TRT_HT_OccupancyCorrectionBarrel", m_HTOccupancyCorrectionB=0.160);
declareProperty("TRT_HT_OccupancyCorrectionEndcap", m_HTOccupancyCorrectionEC=0.130);
declareProperty("TRT_HT_OccupancyCorrectionBarrelNoE", m_HTOccupancyCorrectionB_noE=0.105);
declareProperty("TRT_HT_OccupancyCorrectionEndcapNoE", m_HTOccupancyCorrectionEC_noE=0.080);
declareProperty("TRT_HT_OccupancyCorrectionBarrel", m_HTOccupancyCorrectionB=0.110);
declareProperty("TRT_HT_OccupancyCorrectionEndcap", m_HTOccupancyCorrectionEC=0.090);
declareProperty("TRT_HT_OccupancyCorrectionBarrelNoE", m_HTOccupancyCorrectionB_noE=0.060);
declareProperty("TRT_HT_OccupancyCorrectionEndcapNoE", m_HTOccupancyCorrectionEC_noE=0.050);
declareProperty("TRTStrawSummarySvc", m_TRTStrawSummarySvc);
}
StatusCode TRTOverlay::initialize()
......@@ -121,6 +124,17 @@ StatusCode TRTOverlay::initialize()
// Retrieve TRT local occupancy tool
CHECK(m_TRT_LocalOccupancyTool.retrieve());
if (!m_TRTStrawSummarySvc.empty() && m_TRTStrawSummarySvc.retrieve().isFailure() ) {
ATH_MSG_ERROR ("Failed to retrieve StrawStatus Summary " << m_TRTStrawSummarySvc);
ATH_MSG_ERROR ("configure as 'None' to avoid its loading.");
return StatusCode::FAILURE;
} else {
if ( !m_TRTStrawSummarySvc.empty())
ATH_MSG_INFO( "Retrieved tool " << m_TRTStrawSummarySvc );
}
return StatusCode::SUCCESS;
}
......@@ -335,6 +349,15 @@ void TRTOverlay::mergeTRTCollections(TRT_RDO_Collection *bkgCollection,
}
}
// Determine what type of straw was hit
bool isXenonStraw = false;
if (!m_TRTStrawSummarySvc.empty()) {
if (m_TRTStrawSummarySvc->getStatusHT(rdoId) == TRTCond::StrawStatus::Good) {
isXenonStraw = true;
}
}
unsigned int newword = 0;
//Get random number
......@@ -346,7 +369,7 @@ void TRTOverlay::mergeTRTCollections(TRT_RDO_Collection *bkgCollection,
HTOccupancyCorrection = abs(det) > 1 ? m_HTOccupancyCorrectionEC_noE : m_HTOccupancyCorrectionB_noE;
}
if( occupancy * HTOccupancyCorrection > CLHEP::RandFlat::shoot( m_rndmEngine, 0, 1) )
if( isXenonStraw && occupancy * HTOccupancyCorrection > CLHEP::RandFlat::shoot( m_rndmEngine, 0, 1) )
newword += 1 << (26-9);
//
TRT_LoLumRawData newrdo( pr1->identify(), newword);
......@@ -364,3 +387,4 @@ void TRTOverlay::mergeTRTCollections(TRT_RDO_Collection *bkgCollection,
outputCollection->push_back(p_rdo);
} // <= while
}
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