Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <MuFastSteering.h>
|
| MuFastSteering (const std::string &name, ISvcLocator *svc) |
| Constructor. More...
|
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | stop () override |
|
virtual StatusCode | execute (const EventContext &ctx) const override |
| execute(), main code of the algorithm for AthenaMT More...
|
|
StatusCode | findMuonSignature (const std::vector< const TrigRoiDescriptor * > &roi, const std::vector< const LVL1::RecMuonRoI * > &muonRoIs, DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID, TrigRoiDescriptorCollection &outputMS, const bool dynamicDeltaRpc, const EventContext &ctx) const |
| findMuonSignature(), includes reconstract algorithms More...
|
|
StatusCode | findMuonSignature (const std::vector< const TrigRoiDescriptor * > &roi, const std::vector< const xAOD::MuonRoI * > &muonRoIs, DataVector< xAOD::L2StandAloneMuon > &outputTracks, xAOD::TrigCompositeContainer &outputMuonCal, TrigRoiDescriptorCollection &outputID, TrigRoiDescriptorCollection &outputMS, const bool dynamicDeltaRpc, const EventContext &ctx) const |
|
StatusCode | findMuonSignatureIO (const xAOD::TrackParticleContainer &idtracks, const std::vector< const TrigRoiDescriptor * > &roids, const std::vector< const LVL1::RecMuonRoI * > &muonRoIs, DataVector< xAOD::L2CombinedMuon > &outputCBs, DataVector< xAOD::L2StandAloneMuon > &outputSAs, const bool dynamicDeltaRpc, const EventContext &ctx) const |
| findMuonSignatureIO(), includes reconstract algorithms for inside-out mode More...
|
|
StatusCode | findMuonSignatureIO (const xAOD::TrackParticleContainer &idtracks, const std::vector< const TrigRoiDescriptor * > &roids, const std::vector< const xAOD::MuonRoI * > &muonRoIs, DataVector< xAOD::L2CombinedMuon > &outputCBs, DataVector< xAOD::L2StandAloneMuon > &outputSAs, const bool dynamicDeltaRpc, const EventContext &ctx) const |
|
StatusCode | findMultiTrackSignature (const std::vector< const TrigRoiDescriptor * > &roi, const std::vector< const LVL1::RecMuonRoI * > &muonRoIs, DataVector< xAOD::L2StandAloneMuon > &outputTracks, const bool dynamicDeltaRpc, const EventContext &ctx) const |
| findMultiTrackSignature(), includes reconstract algorithms for multi-track mode More...
|
|
StatusCode | findMultiTrackSignature (const std::vector< const TrigRoiDescriptor * > &roi, const std::vector< const xAOD::MuonRoI * > &muonRoIs, DataVector< xAOD::L2StandAloneMuon > &outputTracks, const bool dynamicDeltaRpc, const EventContext &ctx) const |
|
int | L2MuonAlgoMap (const std::string &name) const |
|
virtual void | handle (const Incident &incident) override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
bool | updateOutputObjects (const LVL1::RecMuonRoI *roi, const TrigRoiDescriptor *roids, const TrigL2MuonSA::MuonRoad &muonRoad, const TrigL2MuonSA::MdtRegion &mdtRegion, const TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::TgcHits &tgcHits, const TrigL2MuonSA::RpcFitResult &rpcFitResult, const TrigL2MuonSA::TgcFitResult &tgcFitResult, const TrigL2MuonSA::MdtHits &mdtHits, const TrigL2MuonSA::CscHits &cscHits, const TrigL2MuonSA::StgcHits &stgcHits, const TrigL2MuonSA::MmHits &mmHits, const std::vector< TrigL2MuonSA::TrackPattern > &trackPatterns, DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID, TrigRoiDescriptorCollection &outputMS, const EventContext &ctx) const |
| Called at the end of the algorithm processing to set the steering navigation properly. More...
|
|
bool | updateOutputObjects (const xAOD::MuonRoI *roi, const TrigRoiDescriptor *roids, const TrigL2MuonSA::MuonRoad &muonRoad, const TrigL2MuonSA::MdtRegion &mdtRegion, const TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::TgcHits &tgcHits, const TrigL2MuonSA::RpcFitResult &rpcFitResult, const TrigL2MuonSA::TgcFitResult &tgcFitResult, const TrigL2MuonSA::MdtHits &mdtHits, const TrigL2MuonSA::CscHits &cscHits, const TrigL2MuonSA::StgcHits &stgcHits, const TrigL2MuonSA::MmHits &mmHits, const std::vector< TrigL2MuonSA::TrackPattern > &trackPatterns, DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID, TrigRoiDescriptorCollection &outputMS, const EventContext &ctx) const |
|
bool | storeMuonSA (const LVL1::RecMuonRoI *roi, const TrigRoiDescriptor *roids, const TrigL2MuonSA::MuonRoad &muonRoad, const TrigL2MuonSA::MdtRegion &mdtRegion, const TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::TgcHits &tgcHits, const TrigL2MuonSA::RpcFitResult &rpcFitResult, const TrigL2MuonSA::TgcFitResult &tgcFitResult, const TrigL2MuonSA::MdtHits &mdtHits, const TrigL2MuonSA::CscHits &cscHits, const TrigL2MuonSA::StgcHits &stgcHits, const TrigL2MuonSA::MmHits &mmHits, const TrigL2MuonSA::TrackPattern &pattern, DataVector< xAOD::L2StandAloneMuon > &outputTracks, const EventContext &ctx) const |
|
bool | storeMuonSA (const xAOD::MuonRoI *roi, const TrigRoiDescriptor *roids, const TrigL2MuonSA::MuonRoad &muonRoad, const TrigL2MuonSA::MdtRegion &mdtRegion, const TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::TgcHits &tgcHits, const TrigL2MuonSA::RpcFitResult &rpcFitResult, const TrigL2MuonSA::TgcFitResult &tgcFitResult, const TrigL2MuonSA::MdtHits &mdtHits, const TrigL2MuonSA::CscHits &cscHits, const TrigL2MuonSA::StgcHits &stgcHits, const TrigL2MuonSA::MmHits &mmHits, const TrigL2MuonSA::TrackPattern &pattern, DataVector< xAOD::L2StandAloneMuon > &outputTracks, const EventContext &ctx) const |
|
bool | storeMSRoiDescriptor (const TrigRoiDescriptor *roids, const TrigL2MuonSA::TrackPattern &pattern, const DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputMS) const |
|
bool | storeIDRoiDescriptor (const TrigRoiDescriptor *roids, const TrigL2MuonSA::TrackPattern &pattern, const DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID) const |
|
StatusCode | updateMonitor (const LVL1::RecMuonRoI *roi, const TrigL2MuonSA::MdtHits &mdtHits, std::vector< TrigL2MuonSA::TrackPattern > &trackPatterns) const |
| Update monitoring variables. More...
|
|
StatusCode | updateMonitor (const xAOD::MuonRoI *roi, const TrigL2MuonSA::MdtHits &mdtHits, std::vector< TrigL2MuonSA::TrackPattern > &trackPatterns) const |
|
void | renounceArray (SG::VarHandleKeyArray &handlesArray) |
| remove all handles from I/O resolution More...
|
|
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > | renounce (T &h) |
|
void | extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps) |
| Add StoreName to extra input/output deps as needed. More...
|
|
|
ServiceHandle< IIncidentSvc > | m_incidentSvc {this, "IncidentSvc", "IncidentSvc"} |
|
ServiceHandle< Gaudi::Interfaces::IOptionsSvc > | m_jobOptionsSvc {this, "JobOptionsSvc", "JobOptionsSvc", "Job options service to retrieve DataFlowConfig" } |
|
Gaudi::Property< float > | m_scaleRoadBarrelInner { this, "Scale_Road_BarrelInner", 1 } |
|
Gaudi::Property< float > | m_scaleRoadBarrelMiddle { this, "Scale_Road_BarrelMiddle", 1 } |
|
Gaudi::Property< float > | m_scaleRoadBarrelOuter { this, "Scale_Road_BarrelOuter", 1 } |
|
Gaudi::Property< bool > | m_use_mcLUT { this, "UseLUTForMC", true} |
|
Gaudi::Property< bool > | m_use_new_segmentfit { this, "USE_NEW_SEGMENTFIT", true} |
|
Gaudi::Property< bool > | m_use_rpc { this, "USE_RPC", true} |
|
Gaudi::Property< bool > | m_use_stgc { this, "USE_STGC", true} |
|
Gaudi::Property< bool > | m_use_mm { this, "USE_MM", true} |
|
Gaudi::Property< bool > | m_use_RoIBasedDataAccess_MDT { this, "USE_ROIBASEDACCESS_MDT", true} |
|
Gaudi::Property< bool > | m_use_RoIBasedDataAccess_RPC { this, "USE_ROIBASEDACCESS_RPC", true} |
|
Gaudi::Property< bool > | m_use_RoIBasedDataAccess_TGC { this, "USE_ROIBASEDACCESS_TGC", true} |
|
Gaudi::Property< bool > | m_use_RoIBasedDataAccess_CSC { this, "USE_ROIBASEDACCESS_CSC", true} |
|
Gaudi::Property< bool > | m_use_RoIBasedDataAccess_STGC { this, "USE_ROIBASEDACCESS_STGC", true} |
|
Gaudi::Property< bool > | m_use_RoIBasedDataAccess_MM { this, "USE_ROIBASEDACCESS_MM", true} |
|
Gaudi::Property< bool > | m_doCalStream { this, "DoCalibrationStream", true} |
|
Gaudi::Property< bool > | m_calDataScouting { this, "MuonCalDataScouting", false} |
|
Gaudi::Property< bool > | m_rpcErrToDebugStream { this, "RpcErrToDebugStream", false} |
|
Gaudi::Property< bool > | m_use_endcapInnerFromBarrel { this, "UseEndcapInnerFromBarrel", false} |
|
Gaudi::Property< int > | m_esd_rpc_size { this, "ESD_RPC_size", 100 } |
|
Gaudi::Property< int > | m_esd_tgc_size { this, "ESD_TGC_size", 50 } |
|
Gaudi::Property< int > | m_esd_mdt_size { this, "ESD_MDT_size", 100 } |
|
Gaudi::Property< int > | m_esd_csc_size { this, "ESD_CSC_size", 100 } |
|
Gaudi::Property< int > | m_esd_stgc_size { this, "ESD_STGC_size", 100 } |
|
Gaudi::Property< int > | m_esd_mm_size { this, "ESD_MM_size", 100 } |
|
Gaudi::Property< double > | m_rWidth_RPC_Failed { this, "R_WIDTH_RPC_FAILED", 400 } |
|
Gaudi::Property< double > | m_rWidth_TGC_Failed { this, "R_WIDTH_TGC_FAILED", 200 } |
|
Gaudi::Property< double > | m_winPt { this, "WinPt", 4.0 } |
|
Gaudi::Property< bool > | m_insideOut { this, "InsideOutMode", false, "" } |
|
Gaudi::Property< bool > | m_multiTrack { this, "multitrackMode", false, "" } |
|
Gaudi::Property< bool > | m_doEndcapForl2mt { this, "doEndcapForl2mt", false, "" } |
|
Gaudi::Property< float > | m_ftfminPt { this, "FTFminPt", 3500, "pT [MeV] threshold to FTF tracks for L2Muon Inside-out mode" } |
|
Gaudi::Property< bool > | m_topoRoad { this, "topoRoad", false, "create road in barrel not to highly overlap surrounding L1 RoIs" } |
|
Gaudi::Property< float > | m_dPhisurrRoI { this, "dPhisurrRoI", 99, "phi range to find surrounding L1 RoIs" } |
|
Gaudi::Property< float > | m_dEtasurrRoI { this, "dEtasurrRoI", 99, "eta range to find surrounding L1 RoIs" } |
|
Gaudi::Property< bool > | m_allowOksConfig { this, "AllowOksConfig", true} |
|
Gaudi::Property< std::string > | m_calBufferName { this, "MuonCalBufferName", "/tmp/testOutput"} |
|
Gaudi::Property< int > | m_calBufferSize { this, "MuonCalBufferSize", 1024*1024} |
|
Gaudi::Property< bool > | m_fill_FSIDRoI { this, "FILL_FSIDRoI", false, "Fill FS RoI for ID (will be used in cosmic run)"} |
|
Gaudi::Property< bool > | m_useRun3Config { this, "UseRun3Config", false, "use Run3 L1Muon EDM; xAOD::MuonRoI"} |
|
SG::ReadHandleKey< xAOD::EventInfo > | m_eventInfoKey |
|
SG::ReadHandleKey< TrigRoiDescriptorCollection > | m_roiCollectionKey |
|
SG::ReadHandleKey< DataVector< LVL1::RecMuonRoI > > | m_run2recRoiCollectionKey |
|
SG::ReadHandleKey< xAOD::MuonRoIContainer > | m_recRoiCollectionKey |
|
SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_FTFtrackKey |
|
SG::WriteHandleKey< xAOD::L2StandAloneMuonContainer > | m_muFastContainerKey |
|
SG::WriteHandleKey< xAOD::TrigCompositeContainer > | m_muCompositeContainerKey |
|
SG::WriteHandleKey< TrigRoiDescriptorCollection > | m_muIdContainerKey |
|
SG::WriteHandleKey< TrigRoiDescriptorCollection > | m_muMsContainerKey |
|
SG::WriteHandleKey< xAOD::L2CombinedMuonContainer > | m_outputCBmuonCollKey |
|
ToolHandle< GenericMonitoringTool > | m_monTool { this, "MonTool", "", "Monitoring tool" } |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 44 of file MuFastSteering.h.
◆ StoreGateSvc_t
◆ anonymous enum
Enumerator |
---|
ITIMER_DATA_PREPARATOR | |
ITIMER_PATTERN_FINDER | |
ITIMER_STATION_FITTER | |
ITIMER_TRACK_FITTER | |
ITIMER_TRACK_EXTRAPOLATOR | |
ITIMER_CALIBRATION_STREAMER | |
ITIMER_TOTAL_PROCESSING | |
Definition at line 47 of file MuFastSteering.h.
◆ MuFastSteering()
MuFastSteering::MuFastSteering |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
svc |
|
) |
| |
◆ cardinality()
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode MuFastSteering::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
execute(), main code of the algorithm for AthenaMT
Definition at line 232 of file MuFastSteering.cxx.
240 if (!roiCollectionHandle.isValid()){
242 return StatusCode::FAILURE;
249 if (!recRoiCollectionHandle.isValid()){
251 return StatusCode::FAILURE;
254 std::vector< const TrigRoiDescriptor* > internalRoI;
258 for(; p_roids != p_roidsEn; ++p_roids ) {
259 internalRoI.push_back(*p_roids);
260 ATH_MSG_DEBUG(
"REGTEST: " <<
m_roiCollectionKey.
key() <<
" eta = " <<
"(" << (*p_roids)->etaMinus() <<
")" << (*p_roids)->eta() <<
"(" << (*p_roids)->etaPlus() <<
")");
261 ATH_MSG_DEBUG(
"REGTEST: " <<
m_roiCollectionKey.
key() <<
" phi = " <<
"(" << (*p_roids)->phiMinus() <<
")" << (*p_roids)->phi() <<
"(" << (*p_roids)->phiPlus() <<
")");
262 ATH_MSG_DEBUG(
"REGTEST: " <<
m_roiCollectionKey.
key() <<
" zed = " <<
"(" << (*p_roids)->zedMinus() <<
")" << (*p_roids)->zed() <<
"(" << (*p_roids)->zedPlus() <<
")");
267 std::vector< const xAOD::MuonRoI* > recRoIVector;
268 std::vector< const xAOD::MuonRoI* > surrRoIs;
272 if( recRoI ==
nullptr )
continue;
273 recRoIVector.push_back(recRoI);
278 bool dynamicDeltaRpc =
false;
279 int nPassedBarrelSurrRoi = 0;
281 for(
const auto recRoI: *recRoiCollection ){
282 if(
std::find(recRoIVector.begin(), recRoIVector.end(), recRoI) != recRoIVector.end())
continue;
284 bool surrounding =
false;
285 for(
const auto matchedRoI: recRoIVector ){
286 float deta = std::abs(recRoI->
eta() - matchedRoI->eta());
287 float dphi = std::abs(recRoI->
phi() - matchedRoI->phi());
288 if( dphi >
M_PI )dphi = 2.*
M_PI - dphi;
294 surrRoIs.push_back(recRoI);
298 for(
const auto recRoI: surrRoIs ){
300 if( std::abs((recRoI)->
eta()) <= 1.05 && (recRoI)->getThrNumber() >= 1 )nPassedBarrelSurrRoi++;
302 ATH_MSG_DEBUG(
"nPassedBarrelSurrRoi = " << nPassedBarrelSurrRoi);
304 if( nPassedBarrelSurrRoi >= 1 )
305 dynamicDeltaRpc =
true;
310 ATH_CHECK(muFastContainer.record(std::make_unique<xAOD::L2StandAloneMuonContainer>(), std::make_unique<xAOD::L2StandAloneMuonAuxContainer>()));
313 ATH_CHECK(muCompositeContainer.record(std::make_unique<xAOD::TrigCompositeContainer>(), std::make_unique<xAOD::TrigCompositeAuxContainer>()));
316 ATH_CHECK(muIdContainer.record(std::make_unique<TrigRoiDescriptorCollection>()));
319 ATH_CHECK(muMsContainer.record(std::make_unique<TrigRoiDescriptorCollection>()));
327 ATH_CHECK( muonCBColl.record (std::make_unique<xAOD::L2CombinedMuonContainer>(),
328 std::make_unique<xAOD::L2CombinedMuonAuxContainer>()) );
331 if (!trackHandle.isValid()){
333 return StatusCode::FAILURE;
338 *muonCBColl, *muFastContainer, dynamicDeltaRpc, ctx ));
342 for (
const auto p_CBmuon : *muonCBColl){
356 *muFastContainer, *muCompositeContainer, *muIdContainer, *muMsContainer, dynamicDeltaRpc, ctx));
364 for (
auto p_muon : *muFastContainer) {
370 for (
auto p_muonID : *muIdContainer) {
375 for (
auto p_muonMS : *muMsContainer) {
385 if (!recRoiCollectionHandle.isValid()){
387 return StatusCode::FAILURE;
390 std::vector< const TrigRoiDescriptor* > internalRoI;
394 for(; p_roids != p_roidsEn; ++p_roids ) {
395 internalRoI.push_back(*p_roids);
396 ATH_MSG_DEBUG(
"REGTEST: " <<
m_roiCollectionKey.
key() <<
" eta = " <<
"(" << (*p_roids)->etaMinus() <<
")" << (*p_roids)->eta() <<
"(" << (*p_roids)->etaPlus() <<
")");
397 ATH_MSG_DEBUG(
"REGTEST: " <<
m_roiCollectionKey.
key() <<
" phi = " <<
"(" << (*p_roids)->phiMinus() <<
")" << (*p_roids)->phi() <<
"(" << (*p_roids)->phiPlus() <<
")");
398 ATH_MSG_DEBUG(
"REGTEST: " <<
m_roiCollectionKey.
key() <<
" zed = " <<
"(" << (*p_roids)->zedMinus() <<
")" << (*p_roids)->zed() <<
"(" << (*p_roids)->zedPlus() <<
")");
403 std::vector< const LVL1::RecMuonRoI* > recRoIVector;
404 std::vector< const LVL1::RecMuonRoI* > surrRoIs;
408 if( recRoI ==
nullptr )
continue;
409 recRoIVector.push_back(recRoI);
414 bool dynamicDeltaRpc =
false;
415 int nPassedBarrelSurrRoi = 0;
417 for(
const auto recRoI: *recRoiCollection ){
418 if(
std::find(recRoIVector.begin(), recRoIVector.end(), recRoI) != recRoIVector.end())
continue;
420 bool surrounding =
false;
421 for(
const auto matchedRoI: recRoIVector ){
422 float deta = std::abs(recRoI->
eta() - matchedRoI->eta());
423 float dphi = std::abs(recRoI->
phi() - matchedRoI->phi());
424 if( dphi >
M_PI )dphi = 2.*
M_PI - dphi;
430 surrRoIs.push_back(recRoI);
434 for(
const auto recRoI: surrRoIs ){
436 if( std::abs((recRoI)->
eta()) <= 1.05 && (recRoI)->getThresholdNumber() >= 1 )nPassedBarrelSurrRoi++;
438 ATH_MSG_DEBUG(
"nPassedBarrelSurrRoi = " << nPassedBarrelSurrRoi);
440 if( nPassedBarrelSurrRoi >= 1 )
441 dynamicDeltaRpc =
true;
446 ATH_CHECK(muFastContainer.record(std::make_unique<xAOD::L2StandAloneMuonContainer>(), std::make_unique<xAOD::L2StandAloneMuonAuxContainer>()));
449 ATH_CHECK(muCompositeContainer.record(std::make_unique<xAOD::TrigCompositeContainer>(), std::make_unique<xAOD::TrigCompositeAuxContainer>()));
452 ATH_CHECK(muIdContainer.record(std::make_unique<TrigRoiDescriptorCollection>()));
455 ATH_CHECK(muMsContainer.record(std::make_unique<TrigRoiDescriptorCollection>()));
463 ATH_CHECK( muonCBColl.record (std::make_unique<xAOD::L2CombinedMuonContainer>(),
464 std::make_unique<xAOD::L2CombinedMuonAuxContainer>()) );
467 if (!trackHandle.isValid()){
469 return StatusCode::FAILURE;
474 *muonCBColl, *muFastContainer, dynamicDeltaRpc, ctx ));
478 for (
const auto p_CBmuon : *muonCBColl){
492 *muFastContainer, *muIdContainer, *muMsContainer, dynamicDeltaRpc, ctx));
500 for (
auto p_muon : *muFastContainer) {
506 for (
auto p_muonID : *muIdContainer) {
511 for (
auto p_muonMS : *muMsContainer) {
518 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::execute() success");
519 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.
◆ filterPassed()
◆ findMultiTrackSignature() [1/2]
findMultiTrackSignature(), includes reconstract algorithms for multi-track mode
Definition at line 1776 of file MuFastSteering.cxx.
1782 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMultiTrackSignature start");
1787 std::vector<TrigL2MuonSA::RpcFitResult> clusterFitResults;
1788 std::vector< TrigL2MuonSA::MuonRoad > clusterRoad;
1789 std::vector<TrigL2MuonSA::MdtHits> mdtHits_cluster_normal;
1800 trackFitterTimer, trackExtraTimer, calibrationTimer );
1818 p_roids = roids.begin();
1819 for (p_roi=(muonRoIs).
begin(); p_roi!=(muonRoIs).
end(); ++p_roi) {
1822 std::vector<TrigL2MuonSA::TrackPattern> trackPatterns;
1827 rpcFitResult.
Clear();
1828 tgcFitResult.
Clear();
1829 mdtHits_normal.clear();
1830 mdtHits_overlap.clear();
1835 clusterFitResults.clear();
1836 clusterRoad.clear();
1837 mdtHits_cluster_normal.clear();
1853 mdtHits_cluster_normal,
1856 if (!
sc.isSuccess()) {
1864 for(
unsigned int i_road = 0; i_road < clusterRoad.size(); i_road++){
1866 std::vector<TrigL2MuonSA::TrackPattern> tmp_trkPats; tmp_trkPats.clear();
1868 patternTimer.start();
1870 mdtHits_cluster_normal.at(i_road),
1872 if (!
sc.isSuccess()) {
1876 patternTimer.stop();
1879 stationFitterTimer.start();
1881 clusterRoad.at(i_road),
1882 clusterFitResults.at(i_road),
1884 if (!
sc.isSuccess()) {
1889 stationFitterTimer.stop();
1892 trackFitterTimer.start();
1894 clusterFitResults.at(i_road),
1897 if (!
sc.isSuccess()) {
1901 trackFitterTimer.stop();
1904 const float ETA_LIMIT = 2.8;
1905 const float DELTA_ETA_LIMIT = 1.0;
1907 float roiEta = (*p_roi)->eta();
1909 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
1915 trackExtraTimer.start();
1920 if (
sc != StatusCode::SUCCESS) {
1925 trackExtraTimer.stop();
1927 if(tmp_trkPats.size() > 0){
1928 ATH_MSG_DEBUG(
"temp pT calculated 2mu-in-1RoI alg = " << tmp_trkPats[0].
pt <<
" GeV");
1929 if( (std::abs(tmp_trkPats[0].barrelSagitta) <
ZERO_LIMIT &&
1933 trackPatterns.push_back(tmp_trkPats[0]);
1936 storeMuonSA(*p_roi, *p_roids, clusterRoad.at(i_road), mdtRegion, rpcHits, tgcHits,
1937 clusterFitResults.at(i_road), tgcFitResult, mdtHits_cluster_normal.at(i_road), cscHits,
1938 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
1941 if(trackPatterns.empty()){
1942 ATH_MSG_DEBUG(
"multi-track SA falied to reconstruct muons");
1944 trackPatterns.push_back(trackPattern);
1945 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1946 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1947 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
1954 ATH_MSG_DEBUG(
"multi-track SA does nothings and skips for EndcapRoI");
1970 if (!
sc.isSuccess()) {
1973 trackPatterns.push_back(trackPattern);
1975 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1976 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1977 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
1983 patternTimer.start();
1992 if (!
sc.isSuccess()) {
1995 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1996 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1997 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2000 patternTimer.stop();
2003 stationFitterTimer.start();
2020 m_cscsegmaker->FindSuperPointCsc(cscHits,trackPatterns,tgcFitResult,muonRoad);
2022 if (!
sc.isSuccess()) {
2024 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2025 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2026 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2030 stationFitterTimer.stop();
2033 trackFitterTimer.start();
2039 if (!
sc.isSuccess()) {
2041 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2042 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2043 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2046 trackFitterTimer.stop();
2049 const float ETA_LIMIT = 2.8;
2050 const float DELTA_ETA_LIMIT = 1.0;
2052 float roiEta = (*p_roi)->eta();
2054 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
2060 trackExtraTimer.start();
2064 if (
sc != StatusCode::SUCCESS) {
2066 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2067 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2068 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2071 trackExtraTimer.stop();
2073 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2074 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2075 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2080 if (
sc != StatusCode::SUCCESS) {
2085 if (p_roids==roids.end())
break;
2088 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMultiTrackSignature success");
2089 return StatusCode::SUCCESS;
◆ findMultiTrackSignature() [2/2]
Definition at line 2096 of file MuFastSteering.cxx.
2102 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMultiTrackSignature start");
2107 std::vector<TrigL2MuonSA::RpcFitResult> clusterFitResults;
2108 std::vector< TrigL2MuonSA::MuonRoad > clusterRoad;
2109 std::vector<TrigL2MuonSA::MdtHits> mdtHits_cluster_normal;
2120 trackFitterTimer, trackExtraTimer, calibrationTimer );
2138 p_roids = roids.begin();
2139 for (p_roi=(muonRoIs).
begin(); p_roi!=(muonRoIs).
end(); ++p_roi) {
2142 std::vector<TrigL2MuonSA::TrackPattern> trackPatterns;
2147 rpcFitResult.
Clear();
2148 tgcFitResult.
Clear();
2149 mdtHits_normal.clear();
2150 mdtHits_overlap.clear();
2155 clusterFitResults.clear();
2156 clusterRoad.clear();
2157 mdtHits_cluster_normal.clear();
2173 mdtHits_cluster_normal,
2176 if (!
sc.isSuccess()) {
2184 for(
unsigned int i_road = 0; i_road < clusterRoad.size(); i_road++){
2186 std::vector<TrigL2MuonSA::TrackPattern> tmp_trkPats; tmp_trkPats.clear();
2188 patternTimer.start();
2190 mdtHits_cluster_normal.at(i_road),
2192 if (!
sc.isSuccess()) {
2196 patternTimer.stop();
2199 stationFitterTimer.start();
2201 clusterRoad.at(i_road),
2202 clusterFitResults.at(i_road),
2204 if (!
sc.isSuccess()) {
2209 stationFitterTimer.stop();
2212 trackFitterTimer.start();
2214 clusterFitResults.at(i_road),
2217 if (!
sc.isSuccess()) {
2221 trackFitterTimer.stop();
2224 const float ETA_LIMIT = 2.8;
2225 const float DELTA_ETA_LIMIT = 1.0;
2227 float roiEta = (*p_roi)->eta();
2229 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
2235 trackExtraTimer.start();
2240 if (
sc != StatusCode::SUCCESS) {
2245 trackExtraTimer.stop();
2247 if(tmp_trkPats.size() > 0){
2248 ATH_MSG_DEBUG(
"temp pT calculated 2mu-in-1RoI alg = " << tmp_trkPats[0].
pt <<
" GeV");
2249 if( (std::abs(tmp_trkPats[0].barrelSagitta) <
ZERO_LIMIT &&
2253 trackPatterns.push_back(tmp_trkPats[0]);
2256 storeMuonSA(*p_roi, *p_roids, clusterRoad.at(i_road), mdtRegion, rpcHits, tgcHits,
2257 clusterFitResults.at(i_road), tgcFitResult, mdtHits_cluster_normal.at(i_road), cscHits,
2258 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2261 if(trackPatterns.empty()){
2262 ATH_MSG_DEBUG(
"multi-track SA falied to reconstruct muons");
2264 trackPatterns.push_back(trackPattern);
2265 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2266 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2267 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2274 ATH_MSG_DEBUG(
"multi-track SA does nothings and skips for EndcapRoI");
2290 if (!
sc.isSuccess()) {
2293 trackPatterns.push_back(trackPattern);
2295 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2296 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2297 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2303 patternTimer.start();
2312 if (!
sc.isSuccess()) {
2315 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2316 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2317 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2320 patternTimer.stop();
2323 stationFitterTimer.start();
2340 m_cscsegmaker->FindSuperPointCsc(cscHits,trackPatterns,tgcFitResult,muonRoad);
2342 if (!
sc.isSuccess()) {
2344 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2345 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2346 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2350 stationFitterTimer.stop();
2353 trackFitterTimer.start();
2359 if (!
sc.isSuccess()) {
2361 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2362 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2363 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2366 trackFitterTimer.stop();
2369 const float ETA_LIMIT = 2.8;
2370 const float DELTA_ETA_LIMIT = 1.0;
2372 float roiEta = (*p_roi)->eta();
2374 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
2380 trackExtraTimer.start();
2384 if (
sc != StatusCode::SUCCESS) {
2386 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2387 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2388 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2391 trackExtraTimer.stop();
2393 storeMuonSA(*p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2394 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
2395 stgcHits, mmHits, trackPatterns.back(), outputTracks, ctx);
2400 if (
sc != StatusCode::SUCCESS) {
2405 if (p_roids==roids.end())
break;
2408 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMultiTrackSignature success");
2409 return StatusCode::SUCCESS;
◆ findMuonSignature() [1/2]
findMuonSignature(), includes reconstract algorithms
this function can be called from both execute()
Definition at line 525 of file MuFastSteering.cxx.
533 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignature start");
544 trackFitterTimer, trackExtraTimer, calibrationTimer );
562 p_roids = roids.begin();
563 for (p_roi=(muonRoIs).
begin(); p_roi!=(muonRoIs).
end(); ++p_roi) {
566 std::vector<TrigL2MuonSA::TrackPattern> trackPatterns;
571 rpcFitResult.
Clear();
572 tgcFitResult.
Clear();
573 mdtHits_normal.clear();
574 mdtHits_overlap.clear();
597 if (!
sc.isSuccess()) {
600 trackPatterns.push_back(trackPattern);
603 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
605 trackPatterns, outputTracks, outputID, outputMS, ctx);
611 patternTimer.start();
615 if (!
sc.isSuccess()) {
619 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
621 trackPatterns, outputTracks, outputID, outputMS, ctx);
627 stationFitterTimer.start();
632 if (!
sc.isSuccess()) {
636 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
638 trackPatterns, outputTracks, outputID, outputMS, ctx);
641 stationFitterTimer.stop();
644 trackFitterTimer.start();
649 if (!
sc.isSuccess()) {
653 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
655 trackPatterns, outputTracks, outputID, outputMS, ctx);
658 trackFitterTimer.stop();
677 if (!
sc.isSuccess()) {
680 trackPatterns.push_back(trackPattern);
683 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
685 trackPatterns, outputTracks, outputID, outputMS, ctx);
691 patternTimer.start();
700 if (!
sc.isSuccess()) {
704 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
706 trackPatterns, outputTracks, outputID, outputMS, ctx);
712 stationFitterTimer.start();
729 m_cscsegmaker->FindSuperPointCsc(cscHits,trackPatterns,tgcFitResult,muonRoad);
731 if (!
sc.isSuccess()) {
735 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
737 trackPatterns, outputTracks, outputID, outputMS, ctx);
741 stationFitterTimer.stop();
744 trackFitterTimer.start();
750 if (!
sc.isSuccess()) {
754 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
756 trackPatterns, outputTracks, outputID, outputMS, ctx);
759 trackFitterTimer.stop();
763 const float ETA_LIMIT = 2.8;
764 const float DELTA_ETA_LIMIT = 1.0;
767 float roiEta = (*p_roi)->eta();
769 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
775 trackExtraTimer.start();
779 if (
sc != StatusCode::SUCCESS) {
783 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
785 trackPatterns, outputTracks, outputID, outputMS, ctx);
788 trackExtraTimer.stop();
792 if (
sc != StatusCode::SUCCESS) {
796 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
798 trackPatterns, outputTracks, outputID, outputMS, ctx);
804 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
806 trackPatterns, outputTracks, outputID, outputMS, ctx);
810 if (p_roids==roids.end())
break;
813 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignature success");
814 return StatusCode::SUCCESS;
◆ findMuonSignature() [2/2]
Definition at line 820 of file MuFastSteering.cxx.
829 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignature start");
840 trackFitterTimer, trackExtraTimer, calibrationTimer );
858 p_roids = roids.begin();
859 for (p_roi=(muonRoIs).
begin(); p_roi!=(muonRoIs).
end(); ++p_roi) {
862 std::vector<TrigL2MuonSA::TrackPattern> trackPatterns;
867 rpcFitResult.
Clear();
868 tgcFitResult.
Clear();
869 mdtHits_normal.clear();
870 mdtHits_overlap.clear();
893 if (!
sc.isSuccess()) {
896 trackPatterns.push_back(trackPattern);
899 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
901 trackPatterns, outputTracks, outputID, outputMS, ctx);
907 patternTimer.start();
911 if (!
sc.isSuccess()) {
915 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
917 trackPatterns, outputTracks, outputID, outputMS, ctx);
923 stationFitterTimer.start();
928 if (!
sc.isSuccess()) {
932 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
934 trackPatterns, outputTracks, outputID, outputMS, ctx);
937 stationFitterTimer.stop();
940 trackFitterTimer.start();
945 if (!
sc.isSuccess()) {
949 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
951 trackPatterns, outputTracks, outputID, outputMS, ctx);
954 trackFitterTimer.stop();
973 if (!
sc.isSuccess()) {
976 trackPatterns.push_back(trackPattern);
979 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
981 trackPatterns, outputTracks, outputID, outputMS, ctx);
987 patternTimer.start();
996 if (!
sc.isSuccess()) {
1000 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1002 trackPatterns, outputTracks, outputID, outputMS, ctx);
1005 patternTimer.stop();
1008 stationFitterTimer.start();
1025 m_cscsegmaker->FindSuperPointCsc(cscHits,trackPatterns,tgcFitResult,muonRoad);
1027 if (!
sc.isSuccess()) {
1031 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1033 trackPatterns, outputTracks, outputID, outputMS, ctx);
1037 stationFitterTimer.stop();
1040 trackFitterTimer.start();
1046 if (!
sc.isSuccess()) {
1050 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1052 trackPatterns, outputTracks, outputID, outputMS, ctx);
1055 trackFitterTimer.stop();
1059 const float ETA_LIMIT = 2.8;
1060 const float DELTA_ETA_LIMIT = 1.0;
1063 float roiEta = (*p_roi)->eta();
1065 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
1071 trackExtraTimer.start();
1075 if (
sc != StatusCode::SUCCESS) {
1079 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1081 trackPatterns, outputTracks, outputID, outputMS, ctx);
1084 trackExtraTimer.stop();
1088 if (
sc != StatusCode::SUCCESS) {
1092 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1094 trackPatterns, outputTracks, outputID, outputMS, ctx);
1100 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1102 trackPatterns, outputTracks, outputID, outputMS, ctx);
1110 std::vector<uint32_t> localBuffer;
1117 if (
sc != StatusCode::SUCCESS ) {
1123 ATH_MSG_DEBUG(
"Retrieved the buffer, with size: " << localBuffer.size());
1130 ATH_MSG_DEBUG(
"The size of the TrigCompositeContainer is: " << outputMuonCal.
size() );
1133 tc->setDetail(
"MuonCalibrationStream", localBuffer );
1143 if (p_roids==roids.end())
break;
1146 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignature success");
1147 return StatusCode::SUCCESS;
◆ findMuonSignatureIO() [1/2]
findMuonSignatureIO(), includes reconstract algorithms for inside-out mode
Definition at line 1155 of file MuFastSteering.cxx.
1163 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignatureIO start");
1175 trackFitterTimer, trackExtraTimer, calibrationTimer );
1191 p_roids = roids.begin();
1192 for (
const auto p_roi : muonRoIs) {
1193 ATH_MSG_DEBUG(
"roi eta/phi: " << (*p_roi).eta() <<
"/" << (*p_roi).phi());
1196 if ( (idtracks).
empty() )
ATH_MSG_DEBUG(
"IO TEST: xAOD::TrackParticleContainer has 0 tracks --> Can not use FTF tracks...");
1197 else ATH_MSG_DEBUG(
"IO TEST: xAOD::TrackParticleContainer has " << (idtracks).
size() <<
" tracks --> Start inside-out mode!");
1199 std::vector<TrigL2MuonSA::TrackPattern> trackPatterns;
1200 int idtrack_idx = -1;
1201 for (
auto idtrack : idtracks) {
1217 rpcFitResult.
Clear();
1218 tgcFitResult.
Clear();
1219 mdtHits_normal.clear();
1220 mdtHits_overlap.clear();
1224 trackPatterns.clear();
1227 if (!
sc.isSuccess()) {
1234 if ( std::abs(idtrack->eta()) < 1.05 ){
1235 ATH_MSG_DEBUG(
"FTF track at IP is in Barrel: " << idtrack->eta());
1237 ATH_MSG_DEBUG(
"FTF track at IP is in Endcap: " << idtrack->eta());
1260 if (!
sc.isSuccess()) {
1269 patternTimer.start();
1273 if (!
sc.isSuccess()) {
1277 patternTimer.stop();
1280 stationFitterTimer.start();
1285 if (!
sc.isSuccess()) {
1289 stationFitterTimer.stop();
1292 trackFitterTimer.start();
1296 if (!
sc.isSuccess()) {
1300 trackFitterTimer.stop();
1320 if (!
sc.isSuccess()) {
1329 patternTimer.start();
1335 if (!
sc.isSuccess()) {
1339 patternTimer.stop();
1342 stationFitterTimer.start();
1350 m_cscsegmaker->FindSuperPointCsc(cscHits,trackPatterns,tgcFitResult,muonRoad);
1351 if (!
sc.isSuccess()) {
1355 stationFitterTimer.stop();
1358 trackFitterTimer.start();
1363 if (!
sc.isSuccess()) {
1367 trackFitterTimer.stop();
1373 const float ETA_LIMIT = 2.8;
1374 const float DELTA_ETA_LIMIT = 1.0;
1375 float roiEta = (*p_roi).eta();
1377 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
1378 trackPatterns.back().etaMap =
roiEta;
1383 if (
sc != StatusCode::SUCCESS) {
1388 if ( std::abs(trackPatterns.back().pt) >
ZERO_LIMIT ) {
1389 storeMuonSA(p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1390 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1392 trackPatterns.back(), outputSAs, ctx);
1397 muonCB->
setPt(idtrack->pt());
1398 muonCB->
setEta(idtrack->eta());
1399 muonCB->
setPhi(idtrack->phi());
1410 if(outputSAs.
size()==0) {
1416 rpcFitResult.
Clear();
1417 tgcFitResult.
Clear();
1418 mdtHits_normal.clear();
1422 trackPatterns.clear();
1424 storeMuonSA(p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1425 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1427 trackPattern, outputSAs, ctx);
1444 for (
auto outputSA : outputSAs){
1445 ATH_MSG_DEBUG(
"outputSA pt/eta/phi: " << outputSA->pt() <<
"/" << outputSA->etaMS() <<
"/" << outputSA->phiMS());
1449 for (
auto outputCB : outputCBs){
1450 ATH_MSG_DEBUG(
"outputCB pt/eta/phi: " << outputCB->pt() <<
"/" << outputCB->eta() <<
"/" << outputCB->phi());
1455 if (p_roids==roids.end())
break;
1458 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignatureIO success");
1459 return StatusCode::SUCCESS;
◆ findMuonSignatureIO() [2/2]
Definition at line 1467 of file MuFastSteering.cxx.
1475 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignatureIO start");
1487 trackFitterTimer, trackExtraTimer, calibrationTimer );
1503 p_roids = roids.begin();
1504 for (
const auto p_roi : muonRoIs) {
1505 ATH_MSG_DEBUG(
"roi eta/phi: " << (*p_roi).eta() <<
"/" << (*p_roi).phi());
1508 if ( (idtracks).
empty() )
ATH_MSG_DEBUG(
"IO TEST: xAOD::TrackParticleContainer has 0 tracks --> Can not use FTF tracks...");
1509 else ATH_MSG_DEBUG(
"IO TEST: xAOD::TrackParticleContainer has " << (idtracks).
size() <<
" tracks --> Start inside-out mode!");
1511 std::vector<TrigL2MuonSA::TrackPattern> trackPatterns;
1512 int idtrack_idx = -1;
1513 for (
auto idtrack : idtracks) {
1529 rpcFitResult.
Clear();
1530 tgcFitResult.
Clear();
1531 mdtHits_normal.clear();
1532 mdtHits_overlap.clear();
1536 trackPatterns.clear();
1539 if (!
sc.isSuccess()) {
1546 if ( std::abs(idtrack->eta()) < 1.05 ){
1547 ATH_MSG_DEBUG(
"FTF track at IP is in Barrel: " << idtrack->eta());
1549 ATH_MSG_DEBUG(
"FTF track at IP is in Endcap: " << idtrack->eta());
1572 if (!
sc.isSuccess()) {
1581 patternTimer.start();
1585 if (!
sc.isSuccess()) {
1589 patternTimer.stop();
1592 stationFitterTimer.start();
1597 if (!
sc.isSuccess()) {
1601 stationFitterTimer.stop();
1604 trackFitterTimer.start();
1608 if (!
sc.isSuccess()) {
1612 trackFitterTimer.stop();
1632 if (!
sc.isSuccess()) {
1641 patternTimer.start();
1647 if (!
sc.isSuccess()) {
1651 patternTimer.stop();
1654 stationFitterTimer.start();
1662 m_cscsegmaker->FindSuperPointCsc(cscHits,trackPatterns,tgcFitResult,muonRoad);
1663 if (!
sc.isSuccess()) {
1667 stationFitterTimer.stop();
1670 trackFitterTimer.start();
1675 if (!
sc.isSuccess()) {
1679 trackFitterTimer.stop();
1685 const float ETA_LIMIT = 2.8;
1686 const float DELTA_ETA_LIMIT = 1.0;
1687 float roiEta = (*p_roi).eta();
1689 && ( std::abs(
track.etaMap) > ETA_LIMIT || std::abs(
track.etaMap-
roiEta) > DELTA_ETA_LIMIT ) ) {
1690 trackPatterns.back().etaMap =
roiEta;
1695 if (
sc != StatusCode::SUCCESS) {
1700 if ( std::abs(trackPatterns.back().pt) >
ZERO_LIMIT ) {
1701 storeMuonSA(p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1702 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1704 trackPatterns.back(), outputSAs, ctx);
1709 muonCB->
setPt(idtrack->pt());
1710 muonCB->
setEta(idtrack->eta());
1711 muonCB->
setPhi(idtrack->phi());
1722 if(outputSAs.
size()==0) {
1728 rpcFitResult.
Clear();
1729 tgcFitResult.
Clear();
1730 mdtHits_normal.clear();
1734 trackPatterns.clear();
1736 storeMuonSA(p_roi, *p_roids, muonRoad, mdtRegion, rpcHits, tgcHits,
1737 rpcFitResult, tgcFitResult, mdtHits_normal, cscHits,
1739 trackPattern, outputSAs, ctx);
1755 for (
auto outputSA : outputSAs){
1756 ATH_MSG_DEBUG(
"outputSA pt/eta/phi: " << outputSA->pt() <<
"/" << outputSA->etaMS() <<
"/" << outputSA->phiMS());
1760 for (
auto outputCB : outputCBs){
1761 ATH_MSG_DEBUG(
"outputCB pt/eta/phi: " << outputCB->pt() <<
"/" << outputCB->eta() <<
"/" << outputCB->phi());
1765 if (p_roids==roids.end())
break;
1768 ATH_MSG_DEBUG(
"StatusCode MuFastSteering::findMuonSignatureIO success");
1769 return StatusCode::SUCCESS;
◆ getRoiSizeForID()
Definition at line 3497 of file MuFastSteering.cxx.
3502 float pt = muonSA->
pt();
3505 const int N_PARAMS = 2;
3508 const float etaMinWin_brl = 0.10;
3509 const float etaMinWin_ec1 = 0.10;
3510 const float etaMinWin_ec2 = 0.10;
3511 const float etaMinWin_ec3 = 0.10;
3512 const float etaMinWin_ecA = 0.10;
3513 const float etaMinWin_ecB = 0.10;
3515 const float etaMaxWin_brl = 0.20;
3516 const float etaMaxWin_ec1 = 0.20;
3517 const float etaMaxWin_ec2 = 0.20;
3518 const float etaMaxWin_ec3 = 0.20;
3519 const float etaMaxWin_ecA = 0.20;
3520 const float etaMaxWin_ecB = 0.20;
3522 const float etaParams_brl[N_PARAMS] = { 0.038, 0.284};
3523 const float etaParams_ec1[N_PARAMS] = { 0.011, 0.519};
3524 const float etaParams_ec2[N_PARAMS] = { 0.023, 0.253};
3525 const float etaParams_ec3[N_PARAMS] = { 0.018, 0.519};
3526 const float etaParams_ecA[N_PARAMS] = { 0.010, 0.431};
3527 const float etaParams_ecB[N_PARAMS] = { 0.023, 0.236};
3530 const float phiMinWin_brl = 0.125;
3531 const float phiMinWin_ec1 = 0.125;
3532 const float phiMinWin_ec2 = 0.125;
3533 const float phiMinWin_ec3 = 0.10;
3534 const float phiMinWin_ecA = 0.15;
3535 const float phiMinWin_ecB = 0.15;
3537 const float phiMaxWin_brl = 0.20;
3538 const float phiMaxWin_ec1 = 0.20;
3539 const float phiMaxWin_ec2 = 0.20;
3540 const float phiMaxWin_ec3 = 0.20;
3541 const float phiMaxWin_ecA = 0.25;
3542 const float phiMaxWin_ecB = 0.20;
3544 const float phiParams_brl[N_PARAMS] = { 0.000, 0.831};
3545 const float phiParams_ec1[N_PARAMS] = { 0.000, 0.885};
3546 const float phiParams_ec2[N_PARAMS] = { 0.015, 0.552};
3547 const float phiParams_ec3[N_PARAMS] = { 0.008, 0.576};
3548 const float phiParams_ecA[N_PARAMS] = { 0.000, 0.830};
3549 const float phiParams_ecB[N_PARAMS] = { 0.006, 1.331};
3558 minWin = etaMinWin_brl;
3559 maxWin = etaMaxWin_brl;
3563 minWin = phiMinWin_brl;
3564 maxWin = phiMaxWin_brl;
3573 minWin = etaMinWin_ecA;
3574 maxWin = etaMaxWin_ecA;
3578 minWin = phiMinWin_ecA;
3579 maxWin = phiMaxWin_ecA;
3585 minWin = etaMinWin_ecB;
3586 maxWin = etaMaxWin_ecB;
3590 minWin = phiMinWin_ecB;
3591 maxWin = phiMaxWin_ecB;
3595 if( std::abs(
eta) < 1.5 ) {
3598 minWin = etaMinWin_ec1;
3599 maxWin = etaMaxWin_ec1;
3603 minWin = phiMinWin_ec1;
3604 maxWin = phiMaxWin_ec1;
3607 else if( std::abs(
eta) < 2.0 ) {
3610 minWin = etaMinWin_ec2;
3611 maxWin = etaMaxWin_ec2;
3615 minWin = phiMinWin_ec2;
3616 maxWin = phiMaxWin_ec2;
3622 minWin = etaMinWin_ec3;
3623 maxWin = etaMaxWin_ec3;
3627 minWin = phiMinWin_ec3;
3628 maxWin = phiMaxWin_ec3;
3637 if(
x < minWin )
retval = minWin;
3638 if(
x > maxWin )
retval = maxWin;
◆ handle()
void MuFastSteering::handle |
( |
const Incident & |
incident | ) |
|
|
overridevirtual |
◆ initialize()
StatusCode MuFastSteering::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 30 of file MuFastSteering.cxx.
117 if (
m_jobOptionsSvc->has(
"MuonHltCalibrationConfig.MuonCalBufferName")) {
122 ATH_MSG_DEBUG(
"Could not parse MuonHltCalibrationConfig.MuonCalBufferName from JobOptionsSvc");
124 if (
m_jobOptionsSvc->has(
"MuonHltCalibrationConfig.MuonCalBufferSize")) {
130 ATH_MSG_DEBUG(
"Could not parse MuonHltCalibrationConfig.MuonCalBufferSize from JobOptionsSvc");
147 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
◆ L2MuonAlgoMap()
int MuFastSteering::L2MuonAlgoMap |
( |
const std::string & |
name | ) |
const |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
◆ stop()
StatusCode MuFastSteering::stop |
( |
| ) |
|
|
overridevirtual |
Definition at line 150 of file MuFastSteering.cxx.
156 if (
sc != StatusCode::SUCCESS ) {
163 return StatusCode::SUCCESS;
◆ storeIDRoiDescriptor()
Definition at line 3388 of file MuFastSteering.cxx.
3402 const double scalePhiWidthForFailure = 2;
3403 const double scaleRoIforZeroPt = 2;
3411 float phiHalfWidth = 0.1;
3412 float etaHalfWidth = 0.1;
3428 phiHalfWidth *= scalePhiWidthForFailure;
3434 pattern.etaVtx - etaHalfWidth,
3435 pattern.etaVtx + etaHalfWidth,
3437 pattern.phiVtx - phiHalfWidth,
3438 pattern.phiVtx + phiHalfWidth);
3441 <<
"pattern.etaVtx/pattern.phiVtx="
3445 <<
" phi=" << IDroiDescriptor->
phi()
3446 <<
", eta=" << IDroiDescriptor->
eta());
3456 roids->
eta() - (roids->
eta() - roids->
etaMinus()) * scaleRoIforZeroPt,
3457 roids->
eta() + (roids->
etaPlus() - roids->
eta()) * scaleRoIforZeroPt,
3462 ATH_MSG_VERBOSE(
"will Record an RoiDescriptor for Inner Detector in case with zero pT:"
3463 <<
" phi=" << IDroiDescriptor->
phi()
3464 <<
", phi min=" << IDroiDescriptor->
phiMinus()
3465 <<
", phi max=" << IDroiDescriptor->
phiPlus()
3466 <<
", eta=" << IDroiDescriptor->
eta()
3467 <<
", eta min=" << IDroiDescriptor->
etaMinus()
3468 <<
", eta max=" << IDroiDescriptor->
etaPlus());
◆ storeMSRoiDescriptor()
Definition at line 3342 of file MuFastSteering.cxx.
3356 mseta = roids->
eta();
3357 msphi = roids->
phi();
3361 const float phiHalfWidth = 0.1;
3362 const float etaHalfWidth = 0.1;
3368 mseta - etaHalfWidth,
3369 mseta + etaHalfWidth,
3371 msphi - phiHalfWidth,
3372 msphi + phiHalfWidth);
3376 << mseta <<
"/" << msphi);
3379 <<
" phi=" << MSroiDescriptor->
phi()
3380 <<
", eta=" << MSroiDescriptor->
eta());
◆ storeMuonSA() [1/2]
bool MuFastSteering::storeMuonSA |
( |
const LVL1::RecMuonRoI * |
roi, |
|
|
const TrigRoiDescriptor * |
roids, |
|
|
const TrigL2MuonSA::MuonRoad & |
muonRoad, |
|
|
const TrigL2MuonSA::MdtRegion & |
mdtRegion, |
|
|
const TrigL2MuonSA::RpcHits & |
rpcHits, |
|
|
const TrigL2MuonSA::TgcHits & |
tgcHits, |
|
|
const TrigL2MuonSA::RpcFitResult & |
rpcFitResult, |
|
|
const TrigL2MuonSA::TgcFitResult & |
tgcFitResult, |
|
|
const TrigL2MuonSA::MdtHits & |
mdtHits, |
|
|
const TrigL2MuonSA::CscHits & |
cscHits, |
|
|
const TrigL2MuonSA::StgcHits & |
stgcHits, |
|
|
const TrigL2MuonSA::MmHits & |
mmHits, |
|
|
const TrigL2MuonSA::TrackPattern & |
pattern, |
|
|
DataVector< xAOD::L2StandAloneMuon > & |
outputTracks, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
protected |
Set L2 muon algorithm ID
Set input TE ID
Set level-1 ID
Set lumi block
Set muon detector mask
Set RoI ID
Set RoI system ID
Set RoI subsystem ID
Set RoI sector ID
Set RoI number
Set RoI threshold number
Set RoI eta
Set RoIp phi
Set RoI word
Set size of storages to be reserved
Definition at line 2495 of file MuFastSteering.cxx.
2513 const int currentRoIId = roids->
roiId();
2515 const EventIDBase& eventID = ctx.eventID();
2527 int barrelinner = 0;
2528 int endcapinner = 3;
2549 ATH_MSG_DEBUG(
"### Hit patterns at the Muon Spectrometer ###");
2555 ATH_MSG_DEBUG(
"pattern#0: # of hits at endcap barrel inner =" <<
pattern.mdtSegments[barrelinner].size());
2559 ATH_MSG_DEBUG(
"pattern#0: # of hits at barrel endcap inner =" <<
pattern.mdtSegments[endcapinner].size());
2561 ATH_MSG_DEBUG(
"### ************************************* ###");
2617 pattern.superPoints[middle].Alin,
pattern.superPoints[middle].Blin,
pattern.superPoints[middle].Chi2);
2624 pattern.superPoints[barrelinner].Alin,
pattern.superPoints[barrelinner].Blin,
pattern.superPoints[barrelinner].Chi2);
2629 pattern.superPoints[endcapinner].Alin,
pattern.superPoints[endcapinner].Blin,
pattern.superPoints[endcapinner].Chi2);
2675 std::vector<std::string> mdtId;
2677 if ( mdtHit.isOutlier==0 || mdtHit.isOutlier==1 ) {
2678 muonSA->
setMdtHit(mdtHit.OnlineId, mdtHit.isOutlier, mdtHit.Chamber,
2679 mdtHit.R, mdtHit.Z, mdtHit.cPhi0, mdtHit.Residual,
2680 mdtHit.DriftTime, mdtHit.DriftSpace, mdtHit.DriftSigma);
2681 mdtId.push_back(mdtHit.Id.getString());
2685 accessor_mdthitid( *muonSA ) = mdtId;
2688 std::vector<float> cscResol;
2691 if ( cscHit.isOutlier==0 || cscHit.isOutlier==1 ) {
2692 muonSA->
setCscHit(cscHit.isOutlier, cscHit.Chamber, cscHit.StationName,
2693 cscHit.StationEta, cscHit.StationPhi,
2694 cscHit.ChamberLayer, cscHit.WireLayer, cscHit.MeasuresPhi, cscHit.Strip,
2695 cscHit.eta, cscHit.phi, cscHit.r, cscHit.z,
2696 cscHit.charge, cscHit.time, cscHit.Residual);
2697 cscResol.push_back(cscHit.resolution);
2699 <<
"OL=" << cscHit.isOutlier <<
","
2700 <<
"Ch=" << cscHit.Chamber <<
","
2701 <<
"StationName=" << cscHit.StationName <<
","
2702 <<
"StationEta=" << cscHit.StationEta <<
","
2703 <<
"StationPhi=" << cscHit.StationPhi <<
","
2704 <<
"ChamberLayer=" << cscHit.ChamberLayer <<
","
2705 <<
"WireLayer=" << cscHit.WireLayer <<
","
2706 <<
"MeasuresPhi=" << cscHit.MeasuresPhi <<
","
2707 <<
"Strip=" << cscHit.Strip <<
","
2708 <<
"eta=" << cscHit.eta <<
","
2709 <<
"phi=" << cscHit.phi <<
","
2710 <<
"r=" << cscHit.r <<
","
2711 <<
"z=" << cscHit.z <<
","
2712 <<
"charge=" << cscHit.charge <<
","
2713 <<
"Rs=" << cscHit.Residual <<
","
2714 <<
"t=" << cscHit.time);
2719 accessor_cschitresol( *muonSA ) = cscResol;
2722 float sumbeta[8]={0};
2723 float nhit_layer[8]={0};
2725 muonSA->
setRpcHit(rpcHit.layer, rpcHit.measuresPhi,
2726 rpcHit.x, rpcHit.y, rpcHit.z,
2727 rpcHit.time, rpcHit.distToEtaReadout, rpcHit.distToPhiReadout,
2728 rpcHit.stationName);
2730 <<
"stationName=" << rpcHit.stationName <<
","
2731 <<
"layer=" << rpcHit.layer <<
","
2732 <<
"measuresPhi=" << rpcHit.measuresPhi <<
","
2733 <<
"x=" << rpcHit.x <<
","
2734 <<
"y=" << rpcHit.y <<
","
2735 <<
"y=" << rpcHit.z);
2738 if(dRMS>0.05)
continue;
2740 float Tprop = rpcHit.distToPhiReadout/1000*4.8;
2742 sumbeta[rpcHit.layer]=sumbeta[rpcHit.layer]+
beta;
2743 nhit_layer[rpcHit.layer]=nhit_layer[rpcHit.layer]+1;
2746 std::vector<float> Avebeta_layer;
2747 for(
int i_layer=0;i_layer<8;i_layer++){
2748 if(nhit_layer[i_layer]!=0)Avebeta_layer.push_back( sumbeta[i_layer]/nhit_layer[i_layer] );
2750 if(Avebeta_layer.size()>0) muonSA->
setBeta(
std::accumulate(Avebeta_layer.begin(),Avebeta_layer.end(),0.0)/Avebeta_layer.size() );
2752 Avebeta_layer.clear();
2756 muonSA->
setTgcHit(tgcHit.eta, tgcHit.phi, tgcHit.r, tgcHit.z,
2757 tgcHit.width, tgcHit.sta, tgcHit.isStrip,
2758 tgcHit.bcTag, tgcHit.inRoad);
2760 <<
"eta=" << tgcHit.eta <<
","
2761 <<
"phi=" << tgcHit.phi <<
","
2762 <<
"r=" << tgcHit.r <<
","
2763 <<
"z=" << tgcHit.z <<
","
2764 <<
"width=" << tgcHit.width <<
","
2765 <<
"stationNum=" << tgcHit.sta <<
","
2766 <<
"isStrip=" << tgcHit.isStrip <<
","
2767 <<
"bcTag=" << tgcHit.bcTag <<
","
2768 <<
"inRoad=" << tgcHit.inRoad);
2773 for(
unsigned int i_hit=0; i_hit<stgcHits.size(); i_hit++) {
2774 if ( stgcHits[i_hit].isOutlier==0 || stgcHits[i_hit].isOutlier==1 ) {
2777 muonSA->
setStgcCluster(stgcHits[i_hit].layerNumber, stgcHits[i_hit].isOutlier, stgcHits[i_hit].channelType,
2778 stgcHits[i_hit].
eta, stgcHits[i_hit].
phi, stgcHits[i_hit].
r, stgcHits[i_hit].
z,
2779 stgcHits[i_hit].ResidualR, stgcHits[i_hit].ResidualPhi,
2783 <<
"eta=" << stgcHits[i_hit].
eta <<
","
2784 <<
"phi=" << stgcHits[i_hit].
phi <<
","
2785 <<
"r=" << stgcHits[i_hit].
r <<
","
2786 <<
"z=" << stgcHits[i_hit].
z <<
","
2787 <<
"z=" << stgcHits[i_hit].ResidualR <<
","
2788 <<
"z=" << stgcHits[i_hit].ResidualPhi);
2793 for(
unsigned int i_hit=0; i_hit<mmHits.size(); i_hit++) {
2794 if ( mmHits[i_hit].isOutlier==0 || mmHits[i_hit].isOutlier==1 ) {
2797 muonSA->
setMmCluster(mmHits[i_hit].layerNumber, mmHits[i_hit].isOutlier,
2798 mmHits[i_hit].
eta, mmHits[i_hit].
phi, mmHits[i_hit].
r, mmHits[i_hit].
z,
2799 mmHits[i_hit].ResidualR, mmHits[i_hit].ResidualPhi,
2803 <<
"eta=" << tgcHits[i_hit].
eta <<
","
2804 <<
"phi=" << tgcHits[i_hit].
phi <<
","
2805 <<
"r=" << tgcHits[i_hit].
r <<
","
2806 <<
"z=" << tgcHits[i_hit].
z <<
","
2807 <<
"width=" << tgcHits[i_hit].
width <<
","
2808 <<
"stationNum=" << tgcHits[i_hit].sta <<
","
2809 <<
"isStrip=" << tgcHits[i_hit].
isStrip <<
","
2810 <<
"bcTag=" << tgcHits[i_hit].
bcTag <<
","
2811 <<
"inRoad=" << tgcHits[i_hit].inRoad);
2819 for (
int i_station=0; i_station<8; i_station++) {
2820 for (
int i_sector=0; i_sector<2; i_sector++) {
2821 muonSA->
setRoad(i_station, i_sector, muonRoad.
aw[i_station][i_sector], muonRoad.
bw[i_station][i_sector]);
2822 muonSA->
setRegionZ(i_station, i_sector, mdtRegion.
zMin[i_station][i_sector], mdtRegion.
zMax[i_station][i_sector]);
2823 muonSA->
setRegionR(i_station, i_sector, mdtRegion.
rMin[i_station][i_sector], mdtRegion.
rMax[i_station][i_sector]);
2824 muonSA->
setRegionEta(i_station, i_sector, mdtRegion.
etaMin[i_station][i_sector], mdtRegion.
etaMax[i_station][i_sector]);
2874 double phi1 = tgcFitResult.
tgcMid1[1];
2875 double phi2 = tgcFitResult.
tgcMid2[1];
2876 if ( tgcFitResult.
tgcMid1[3]==0. || tgcFitResult.
tgcMid2[3]==0. ) {
2879 }
else if( phi1*phi2 < 0 && std::abs(phi1)>(
M_PI/2.) ) {
2880 double tmp1 = (phi1>0)? phi1 -
M_PI : phi1 +
M_PI;
2885 phi = (phi2+phi1)/2.;
◆ storeMuonSA() [2/2]
bool MuFastSteering::storeMuonSA |
( |
const xAOD::MuonRoI * |
roi, |
|
|
const TrigRoiDescriptor * |
roids, |
|
|
const TrigL2MuonSA::MuonRoad & |
muonRoad, |
|
|
const TrigL2MuonSA::MdtRegion & |
mdtRegion, |
|
|
const TrigL2MuonSA::RpcHits & |
rpcHits, |
|
|
const TrigL2MuonSA::TgcHits & |
tgcHits, |
|
|
const TrigL2MuonSA::RpcFitResult & |
rpcFitResult, |
|
|
const TrigL2MuonSA::TgcFitResult & |
tgcFitResult, |
|
|
const TrigL2MuonSA::MdtHits & |
mdtHits, |
|
|
const TrigL2MuonSA::CscHits & |
cscHits, |
|
|
const TrigL2MuonSA::StgcHits & |
stgcHits, |
|
|
const TrigL2MuonSA::MmHits & |
mmHits, |
|
|
const TrigL2MuonSA::TrackPattern & |
pattern, |
|
|
DataVector< xAOD::L2StandAloneMuon > & |
outputTracks, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
protected |
Set L2 muon algorithm ID
Set input TE ID
Set level-1 ID
Set lumi block
Set muon detector mask
Set RoI ID
Set RoI system ID (or system ID; Barrel=0, Endcap=1, Forward=2)
Set RoI subsystem ID (0=-z,1=+z)
Set RoI sector ID
Set RoI number
Set RoI threshold number
Set RoI eta
Set RoIp phi
Set RoI word
Set size of storages to be reserved
Definition at line 2918 of file MuFastSteering.cxx.
2936 const int currentRoIId = roids->
roiId();
2938 const EventIDBase& eventID = ctx.eventID();
2950 int barrelinner = 0;
2951 int endcapinner = 3;
2972 ATH_MSG_DEBUG(
"### Hit patterns at the Muon Spectrometer ###");
2978 ATH_MSG_DEBUG(
"pattern#0: # of hits at endcap barrel inner =" <<
pattern.mdtSegments[barrelinner].size());
2982 ATH_MSG_DEBUG(
"pattern#0: # of hits at barrel endcap inner =" <<
pattern.mdtSegments[endcapinner].size());
2984 ATH_MSG_DEBUG(
"### ************************************* ###");
3040 pattern.superPoints[middle].Alin,
pattern.superPoints[middle].Blin,
pattern.superPoints[middle].Chi2);
3047 pattern.superPoints[barrelinner].Alin,
pattern.superPoints[barrelinner].Blin,
pattern.superPoints[barrelinner].Chi2);
3052 pattern.superPoints[endcapinner].Alin,
pattern.superPoints[endcapinner].Blin,
pattern.superPoints[endcapinner].Chi2);
3098 std::vector<std::string> mdtId;
3100 if ( mdtHit.isOutlier==0 || mdtHit.isOutlier==1 ) {
3101 muonSA->
setMdtHit(mdtHit.OnlineId, mdtHit.isOutlier, mdtHit.Chamber,
3102 mdtHit.R, mdtHit.Z, mdtHit.cPhi0, mdtHit.Residual,
3103 mdtHit.DriftTime, mdtHit.DriftSpace, mdtHit.DriftSigma);
3104 mdtId.push_back(mdtHit.Id.getString());
3108 accessor_mdthitid( *muonSA ) = mdtId;
3111 std::vector<float> cscResol;
3114 if ( cscHit.isOutlier==0 || cscHit.isOutlier==1 ) {
3115 muonSA->
setCscHit(cscHit.isOutlier, cscHit.Chamber, cscHit.StationName,
3116 cscHit.StationEta, cscHit.StationPhi,
3117 cscHit.ChamberLayer, cscHit.WireLayer, cscHit.MeasuresPhi, cscHit.Strip,
3118 cscHit.eta, cscHit.phi, cscHit.r, cscHit.z,
3119 cscHit.charge, cscHit.time, cscHit.Residual);
3120 cscResol.push_back(cscHit.resolution);
3122 <<
"OL=" << cscHit.isOutlier <<
","
3123 <<
"Ch=" << cscHit.Chamber <<
","
3124 <<
"StationName=" << cscHit.StationName <<
","
3125 <<
"StationEta=" << cscHit.StationEta <<
","
3126 <<
"StationPhi=" << cscHit.StationPhi <<
","
3127 <<
"ChamberLayer=" << cscHit.ChamberLayer <<
","
3128 <<
"WireLayer=" << cscHit.WireLayer <<
","
3129 <<
"MeasuresPhi=" << cscHit.MeasuresPhi <<
","
3130 <<
"Strip=" << cscHit.Strip <<
","
3131 <<
"eta=" << cscHit.eta <<
","
3132 <<
"phi=" << cscHit.phi <<
","
3133 <<
"r=" << cscHit.r <<
","
3134 <<
"z=" << cscHit.z <<
","
3135 <<
"charge=" << cscHit.charge <<
","
3136 <<
"Rs=" << cscHit.Residual <<
","
3137 <<
"t=" << cscHit.time);
3142 accessor_cschitresol( *muonSA ) = cscResol;
3145 float sumbeta[8]={0};
3146 float nhit_layer[8]={0};
3148 muonSA->
setRpcHit(rpcHit.layer, rpcHit.measuresPhi,
3149 rpcHit.x, rpcHit.y, rpcHit.z,
3150 rpcHit.time, rpcHit.distToEtaReadout, rpcHit.distToPhiReadout,
3151 rpcHit.stationName);
3153 <<
"stationName=" << rpcHit.stationName <<
","
3154 <<
"layer=" << rpcHit.layer <<
","
3155 <<
"measuresPhi=" << rpcHit.measuresPhi <<
","
3156 <<
"x=" << rpcHit.x <<
","
3157 <<
"y=" << rpcHit.y <<
","
3158 <<
"y=" << rpcHit.z);
3161 if(dRMS>0.05)
continue;
3163 float Tprop = rpcHit.distToPhiReadout/1000*4.8;
3165 sumbeta[rpcHit.layer]=sumbeta[rpcHit.layer]+
beta;
3166 nhit_layer[rpcHit.layer]=nhit_layer[rpcHit.layer]+1;
3169 std::vector<float> Avebeta_layer;
3170 for(
int i_layer=0;i_layer<8;i_layer++){
3171 if(nhit_layer[i_layer]!=0)Avebeta_layer.push_back( sumbeta[i_layer]/nhit_layer[i_layer] );
3173 if(Avebeta_layer.size()>0) muonSA->
setBeta(
std::accumulate(Avebeta_layer.begin(),Avebeta_layer.end(),0.0)/Avebeta_layer.size() );
3175 Avebeta_layer.clear();
3179 muonSA->
setTgcHit(tgcHit.eta, tgcHit.phi, tgcHit.r, tgcHit.z,
3180 tgcHit.width, tgcHit.sta, tgcHit.isStrip,
3181 tgcHit.bcTag, tgcHit.inRoad);
3183 <<
"eta=" << tgcHit.eta <<
","
3184 <<
"phi=" << tgcHit.phi <<
","
3185 <<
"r=" << tgcHit.r <<
","
3186 <<
"z=" << tgcHit.z <<
","
3187 <<
"width=" << tgcHit.width <<
","
3188 <<
"stationNum=" << tgcHit.sta <<
","
3189 <<
"isStrip=" << tgcHit.isStrip <<
","
3190 <<
"bcTag=" << tgcHit.bcTag <<
","
3191 <<
"inRoad=" << tgcHit.inRoad);
3196 for(
unsigned int i_hit=0; i_hit<stgcHits.size(); i_hit++) {
3197 if ( stgcHits[i_hit].isOutlier==0 || stgcHits[i_hit].isOutlier==1 ) {
3200 muonSA->
setStgcCluster(stgcHits[i_hit].layerNumber, stgcHits[i_hit].isOutlier, stgcHits[i_hit].channelType,
3201 stgcHits[i_hit].
eta, stgcHits[i_hit].
phi, stgcHits[i_hit].
r, stgcHits[i_hit].
z,
3202 stgcHits[i_hit].ResidualR, stgcHits[i_hit].ResidualPhi,
3206 <<
"eta=" << stgcHits[i_hit].
eta <<
","
3207 <<
"phi=" << stgcHits[i_hit].
phi <<
","
3208 <<
"r=" << stgcHits[i_hit].
r <<
","
3209 <<
"z=" << stgcHits[i_hit].
z <<
","
3210 <<
"z=" << stgcHits[i_hit].ResidualR <<
","
3211 <<
"z=" << stgcHits[i_hit].ResidualPhi);
3216 for(
unsigned int i_hit=0; i_hit<mmHits.size(); i_hit++) {
3217 if ( mmHits[i_hit].isOutlier==0 || mmHits[i_hit].isOutlier==1 ) {
3220 muonSA->
setMmCluster(mmHits[i_hit].layerNumber, mmHits[i_hit].isOutlier,
3221 mmHits[i_hit].
eta, mmHits[i_hit].
phi, mmHits[i_hit].
r, mmHits[i_hit].
z,
3222 mmHits[i_hit].ResidualR, mmHits[i_hit].ResidualPhi,
3226 <<
"eta=" << tgcHits[i_hit].
eta <<
","
3227 <<
"phi=" << tgcHits[i_hit].
phi <<
","
3228 <<
"r=" << tgcHits[i_hit].
r <<
","
3229 <<
"z=" << tgcHits[i_hit].
z <<
","
3230 <<
"width=" << tgcHits[i_hit].
width <<
","
3231 <<
"stationNum=" << tgcHits[i_hit].sta <<
","
3232 <<
"isStrip=" << tgcHits[i_hit].
isStrip <<
","
3233 <<
"bcTag=" << tgcHits[i_hit].
bcTag <<
","
3234 <<
"inRoad=" << tgcHits[i_hit].inRoad);
3242 for (
int i_station=0; i_station<8; i_station++) {
3243 for (
int i_sector=0; i_sector<2; i_sector++) {
3244 muonSA->
setRoad(i_station, i_sector, muonRoad.
aw[i_station][i_sector], muonRoad.
bw[i_station][i_sector]);
3245 muonSA->
setRegionZ(i_station, i_sector, mdtRegion.
zMin[i_station][i_sector], mdtRegion.
zMax[i_station][i_sector]);
3246 muonSA->
setRegionR(i_station, i_sector, mdtRegion.
rMin[i_station][i_sector], mdtRegion.
rMax[i_station][i_sector]);
3247 muonSA->
setRegionEta(i_station, i_sector, mdtRegion.
etaMin[i_station][i_sector], mdtRegion.
etaMax[i_station][i_sector]);
3297 double phi1 = tgcFitResult.
tgcMid1[1];
3298 double phi2 = tgcFitResult.
tgcMid2[1];
3299 if ( tgcFitResult.
tgcMid1[3]==0. || tgcFitResult.
tgcMid2[3]==0. ) {
3302 }
else if( phi1*phi2 < 0 && std::abs(phi1)>(
M_PI/2.) ) {
3303 double tmp1 = (phi1>0)? phi1 -
M_PI : phi1 +
M_PI;
3308 phi = (phi2+phi1)/2.;
◆ sysExecute()
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.
◆ sysInitialize()
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateMonitor() [1/2]
Update monitoring variables.
Definition at line 3646 of file MuFastSteering.cxx.
3663 std::vector<float> t_eta, t_phi;
3664 std::vector<float> f_eta, f_phi;
3665 std::vector<float> r_inner, r_middle, r_outer;
3666 std::vector<float> f_residuals;
3675 f_residuals.clear();
3687 invalid_rpc_roi_number,
3689 track_eta, track_phi, failed_eta, failed_phi,
3690 res_inner, res_middle, res_outer, fit_residuals );
3694 if( trackPatterns.size() > 0 ) {
3701 float count_inner = 0;
3702 float count_middle = 0;
3703 float count_outer = 0;
3707 if (std::abs(mdtHit.DriftSpace) <
ZERO_LIMIT)
continue;
3709 char st = mdtHit.cType[1];
3713 r_inner.push_back(mdtHit.Residual/
norm);
3714 if (mdtHit.isOutlier==0) f_residuals.push_back(mdtHit.Residual/
norm);
3719 r_middle.push_back(mdtHit.Residual/
norm);
3720 if (mdtHit.isOutlier==0) f_residuals.push_back(mdtHit.Residual/
norm);
3725 r_outer.push_back(mdtHit.Residual/
norm);
3726 if (mdtHit.isOutlier==0) f_residuals.push_back(mdtHit.Residual/
norm);
3730 inner_mdt_hits = count_inner;
3731 middle_mdt_hits = count_middle;
3732 outer_mdt_hits = count_outer;
3735 absolute_pt = std::abs(track_pt);
3738 t_eta.push_back(
pattern.etaMap);
3739 t_phi.push_back(
pattern.phiMS);
3742 f_eta.push_back(roi->
eta());
3743 f_phi.push_back(roi->
phi());
3751 return StatusCode::SUCCESS;
◆ updateMonitor() [2/2]
Definition at line 3757 of file MuFastSteering.cxx.
3774 std::vector<float> t_eta, t_phi;
3775 std::vector<float> f_eta, f_phi;
3776 std::vector<float> r_inner, r_middle, r_outer;
3777 std::vector<float> f_residuals;
3786 f_residuals.clear();
3798 invalid_rpc_roi_number,
3800 track_eta, track_phi, failed_eta, failed_phi,
3801 res_inner, res_middle, res_outer, fit_residuals );
3805 if( trackPatterns.size() > 0 ) {
3812 float count_inner = 0;
3813 float count_middle = 0;
3814 float count_outer = 0;
3818 if (std::abs(mdtHit.DriftSpace) <
ZERO_LIMIT)
continue;
3820 char st = mdtHit.cType[1];
3824 r_inner.push_back(mdtHit.Residual/
norm);
3825 if (mdtHit.isOutlier==0) f_residuals.push_back(mdtHit.Residual/
norm);
3830 r_middle.push_back(mdtHit.Residual/
norm);
3831 if (mdtHit.isOutlier==0) f_residuals.push_back(mdtHit.Residual/
norm);
3836 r_outer.push_back(mdtHit.Residual/
norm);
3837 if (mdtHit.isOutlier==0) f_residuals.push_back(mdtHit.Residual/
norm);
3841 inner_mdt_hits = count_inner;
3842 middle_mdt_hits = count_middle;
3843 outer_mdt_hits = count_outer;
3846 absolute_pt = std::abs(track_pt);
3849 t_eta.push_back(
pattern.etaMap);
3850 t_phi.push_back(
pattern.phiMS);
3853 f_eta.push_back(roi->
eta());
3854 f_phi.push_back(roi->
phi());
3862 return StatusCode::SUCCESS;
◆ updateOutputObjects() [1/2]
bool MuFastSteering::updateOutputObjects |
( |
const LVL1::RecMuonRoI * |
roi, |
|
|
const TrigRoiDescriptor * |
roids, |
|
|
const TrigL2MuonSA::MuonRoad & |
muonRoad, |
|
|
const TrigL2MuonSA::MdtRegion & |
mdtRegion, |
|
|
const TrigL2MuonSA::RpcHits & |
rpcHits, |
|
|
const TrigL2MuonSA::TgcHits & |
tgcHits, |
|
|
const TrigL2MuonSA::RpcFitResult & |
rpcFitResult, |
|
|
const TrigL2MuonSA::TgcFitResult & |
tgcFitResult, |
|
|
const TrigL2MuonSA::MdtHits & |
mdtHits, |
|
|
const TrigL2MuonSA::CscHits & |
cscHits, |
|
|
const TrigL2MuonSA::StgcHits & |
stgcHits, |
|
|
const TrigL2MuonSA::MmHits & |
mmHits, |
|
|
const std::vector< TrigL2MuonSA::TrackPattern > & |
trackPatterns, |
|
|
DataVector< xAOD::L2StandAloneMuon > & |
outputTracks, |
|
|
TrigRoiDescriptorCollection & |
outputID, |
|
|
TrigRoiDescriptorCollection & |
outputMS, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
protected |
Called at the end of the algorithm processing to set the steering navigation properly.
Definition at line 2415 of file MuFastSteering.cxx.
2434 if( trackPatterns.size() > 0 ) {
2439 storeMuonSA(roi, roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2440 rpcFitResult, tgcFitResult, mdtHits, cscHits,
2447 ATH_MSG_DEBUG(
"Not update output objects because trackPatterns has no object");
◆ updateOutputObjects() [2/2]
bool MuFastSteering::updateOutputObjects |
( |
const xAOD::MuonRoI * |
roi, |
|
|
const TrigRoiDescriptor * |
roids, |
|
|
const TrigL2MuonSA::MuonRoad & |
muonRoad, |
|
|
const TrigL2MuonSA::MdtRegion & |
mdtRegion, |
|
|
const TrigL2MuonSA::RpcHits & |
rpcHits, |
|
|
const TrigL2MuonSA::TgcHits & |
tgcHits, |
|
|
const TrigL2MuonSA::RpcFitResult & |
rpcFitResult, |
|
|
const TrigL2MuonSA::TgcFitResult & |
tgcFitResult, |
|
|
const TrigL2MuonSA::MdtHits & |
mdtHits, |
|
|
const TrigL2MuonSA::CscHits & |
cscHits, |
|
|
const TrigL2MuonSA::StgcHits & |
stgcHits, |
|
|
const TrigL2MuonSA::MmHits & |
mmHits, |
|
|
const std::vector< TrigL2MuonSA::TrackPattern > & |
trackPatterns, |
|
|
DataVector< xAOD::L2StandAloneMuon > & |
outputTracks, |
|
|
TrigRoiDescriptorCollection & |
outputID, |
|
|
TrigRoiDescriptorCollection & |
outputMS, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
protected |
Definition at line 2456 of file MuFastSteering.cxx.
2475 if( trackPatterns.size() > 0 ) {
2480 storeMuonSA(roi, roids, muonRoad, mdtRegion, rpcHits, tgcHits,
2481 rpcFitResult, tgcFitResult, mdtHits, cscHits,
2488 ATH_MSG_DEBUG(
"Not update output objects because trackPatterns has no object");
◆ updateVHKA()
◆ m_allowOksConfig
Gaudi::Property< bool > MuFastSteering::m_allowOksConfig { this, "AllowOksConfig", true} |
|
private |
◆ m_backExtrapolatorTool
Initial value:{
this, "BackExtrapolator", "TrigMuonBackExtrapolator", "public tool for back extrapolating the muon tracks to the IV" }
Handle to MuonBackExtrapolator tool.
Definition at line 236 of file MuFastSteering.h.
◆ m_calBufferName
Gaudi::Property< std::string > MuFastSteering::m_calBufferName { this, "MuonCalBufferName", "/tmp/testOutput"} |
|
private |
◆ m_calBufferSize
Gaudi::Property< int > MuFastSteering::m_calBufferSize { this, "MuonCalBufferSize", 1024*1024} |
|
private |
◆ m_calDataScouting
Gaudi::Property< bool > MuFastSteering::m_calDataScouting { this, "MuonCalDataScouting", false} |
|
private |
◆ m_calStreamer
Initial value:{
this, "CalibrationStreamer", "TrigL2MuonSA::MuCalStreamerTool", "calibration stream" }
Definition at line 240 of file MuFastSteering.h.
◆ m_cscsegmaker
Initial value:{
this, "CscSegmentMaker", "TrigL2MuonSA::CscSegmentMaker", "" }
Definition at line 247 of file MuFastSteering.h.
◆ m_dataPreparator
Initial value:{
this, "DataPreparator", "TrigL2MuonSA::MuFastDataPreparator", "data preparator" }
Definition at line 222 of file MuFastSteering.h.
◆ m_dEtasurrRoI
Gaudi::Property< float > MuFastSteering::m_dEtasurrRoI { this, "dEtasurrRoI", 99, "eta range to find surrounding L1 RoIs" } |
|
private |
◆ m_detStore
◆ m_doCalStream
Gaudi::Property< bool > MuFastSteering::m_doCalStream { this, "DoCalibrationStream", true} |
|
private |
◆ m_doEndcapForl2mt
Gaudi::Property< bool > MuFastSteering::m_doEndcapForl2mt { this, "doEndcapForl2mt", false, "" } |
|
private |
◆ m_dPhisurrRoI
Gaudi::Property< float > MuFastSteering::m_dPhisurrRoI { this, "dPhisurrRoI", 99, "phi range to find surrounding L1 RoIs" } |
|
private |
◆ m_esd_csc_size
Gaudi::Property< int > MuFastSteering::m_esd_csc_size { this, "ESD_CSC_size", 100 } |
|
private |
◆ m_esd_mdt_size
Gaudi::Property< int > MuFastSteering::m_esd_mdt_size { this, "ESD_MDT_size", 100 } |
|
private |
◆ m_esd_mm_size
Gaudi::Property< int > MuFastSteering::m_esd_mm_size { this, "ESD_MM_size", 100 } |
|
private |
◆ m_esd_rpc_size
Gaudi::Property< int > MuFastSteering::m_esd_rpc_size { this, "ESD_RPC_size", 100 } |
|
private |
◆ m_esd_stgc_size
Gaudi::Property< int > MuFastSteering::m_esd_stgc_size { this, "ESD_STGC_size", 100 } |
|
private |
◆ m_esd_tgc_size
Gaudi::Property< int > MuFastSteering::m_esd_tgc_size { this, "ESD_TGC_size", 50 } |
|
private |
◆ m_eventInfoKey
Initial value:{
this, "EventInfo", "EventInfo", "Name of the xAOD::EventInfo object"}
Definition at line 310 of file MuFastSteering.h.
◆ m_evtStore
◆ m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 114 of file AthCommonReentrantAlgorithm.h.
◆ m_fill_FSIDRoI
Gaudi::Property< bool > MuFastSteering::m_fill_FSIDRoI { this, "FILL_FSIDRoI", false, "Fill FS RoI for ID (will be used in cosmic run)"} |
|
private |
◆ m_ftfminPt
Gaudi::Property< float > MuFastSteering::m_ftfminPt { this, "FTFminPt", 3500, "pT [MeV] threshold to FTF tracks for L2Muon Inside-out mode" } |
|
private |
◆ m_ftfRoadDefiner
Initial value:{
this, "FtfRoadDefiner", "TrigL2MuonSA::FtfRoadDefiner", "ftf road definer" }
Definition at line 232 of file MuFastSteering.h.
◆ m_FTFtrackKey
Initial value:{
this, "TrackParticlesContainerName", "HLT_xAODTracks_Muon", "Name of the input data on xAOD::TrackParticleContainer produced by FTF for Inside-Out mode"}
Definition at line 324 of file MuFastSteering.h.
◆ m_incidentSvc
ServiceHandle< IIncidentSvc > MuFastSteering::m_incidentSvc {this, "IncidentSvc", "IncidentSvc"} |
|
private |
◆ m_insideOut
Gaudi::Property< bool > MuFastSteering::m_insideOut { this, "InsideOutMode", false, "" } |
|
private |
◆ m_jobOptionsSvc
ServiceHandle<Gaudi::Interfaces::IOptionsSvc> MuFastSteering::m_jobOptionsSvc {this, "JobOptionsSvc", "JobOptionsSvc", "Job options service to retrieve DataFlowConfig" } |
|
private |
◆ m_monTool
◆ m_muCompositeContainerKey
Initial value:{
this, "MuonCalibrationStream", "MuonCalibrationStream", "Name of the decisions object attached by MuFastSteering"}
Definition at line 332 of file MuFastSteering.h.
◆ m_muFastContainerKey
Initial value:{
this, "MuonL2SAInfo", "MuonL2SAInfo", "Name of the output data on xAOD::L2StandAloneMuonContainer"}
Definition at line 328 of file MuFastSteering.h.
◆ m_muIdContainerKey
Initial value:{
this, "forID", "forID", "Name of the output data for Inner Detector"}
Definition at line 336 of file MuFastSteering.h.
◆ m_multiTrack
Gaudi::Property< bool > MuFastSteering::m_multiTrack { this, "multitrackMode", false, "" } |
|
private |
◆ m_muMsContainerKey
Initial value:{
this, "forMS", "forMS", "Name of the output data for MS"}
Definition at line 340 of file MuFastSteering.h.
◆ m_outputCBmuonCollKey
Initial value:{
this, "L2IOCB", "MuonL2CBInfo", "output CB Muon container name"}
Definition at line 344 of file MuFastSteering.h.
◆ m_patternFinder
Initial value:{
this, "PatternFinder", "TrigL2MuonSA::MuFastPatternFinder", "pattern finder" }
Definition at line 224 of file MuFastSteering.h.
◆ m_recMuonRoIUtils
◆ m_recRoiCollectionKey
Initial value:{
this, "RecMuonRoI", "LVL1MuonRoIs", "Name of the input data on xAOD::MuonRoI"}
Definition at line 320 of file MuFastSteering.h.
◆ m_roiCollectionKey
Initial value:{
this, "MuRoIs", "HLT_MURoIs", "Name of the input data from HLTSeeding"}
Definition at line 314 of file MuFastSteering.h.
◆ m_rpcErrToDebugStream
Gaudi::Property< bool > MuFastSteering::m_rpcErrToDebugStream { this, "RpcErrToDebugStream", false} |
|
private |
◆ m_run2recRoiCollectionKey
Initial value:{
this, "Run2RecMuonRoI", "HLT_RecMURoIs", "Name of the input data on LVL1::RecMuonRoI produced by HLTSeeding"}
Definition at line 318 of file MuFastSteering.h.
◆ m_rWidth_RPC_Failed
Gaudi::Property< double > MuFastSteering::m_rWidth_RPC_Failed { this, "R_WIDTH_RPC_FAILED", 400 } |
|
private |
◆ m_rWidth_TGC_Failed
Gaudi::Property< double > MuFastSteering::m_rWidth_TGC_Failed { this, "R_WIDTH_TGC_FAILED", 200 } |
|
private |
◆ m_scaleRoadBarrelInner
Gaudi::Property< float > MuFastSteering::m_scaleRoadBarrelInner { this, "Scale_Road_BarrelInner", 1 } |
|
private |
◆ m_scaleRoadBarrelMiddle
Gaudi::Property< float > MuFastSteering::m_scaleRoadBarrelMiddle { this, "Scale_Road_BarrelMiddle", 1 } |
|
private |
◆ m_scaleRoadBarrelOuter
Gaudi::Property< float > MuFastSteering::m_scaleRoadBarrelOuter { this, "Scale_Road_BarrelOuter", 1 } |
|
private |
◆ m_stationFitter
Initial value:{
this, "StationFitter", "TrigL2MuonSA::MuFastStationFitter", "station fitter" }
Definition at line 226 of file MuFastSteering.h.
◆ m_topoRoad
Gaudi::Property< bool > MuFastSteering::m_topoRoad { this, "topoRoad", false, "create road in barrel not to highly overlap surrounding L1 RoIs" } |
|
private |
◆ m_trackExtrapolator
Initial value:{
this, "TrackExtrapolator", "TrigL2MuonSA::MuFastTrackExtrapolator", "track extrapolator" }
Definition at line 230 of file MuFastSteering.h.
◆ m_trackFitter
Initial value:{
this, "TrackFitter", "TrigL2MuonSA::MuFastTrackFitter", "track fitter" }
Definition at line 228 of file MuFastSteering.h.
◆ m_use_endcapInnerFromBarrel
Gaudi::Property< bool > MuFastSteering::m_use_endcapInnerFromBarrel { this, "UseEndcapInnerFromBarrel", false} |
|
private |
◆ m_use_mcLUT
Gaudi::Property< bool > MuFastSteering::m_use_mcLUT { this, "UseLUTForMC", true} |
|
private |
◆ m_use_mm
Gaudi::Property< bool > MuFastSteering::m_use_mm { this, "USE_MM", true} |
|
private |
◆ m_use_new_segmentfit
Gaudi::Property< bool > MuFastSteering::m_use_new_segmentfit { this, "USE_NEW_SEGMENTFIT", true} |
|
private |
◆ m_use_RoIBasedDataAccess_CSC
Gaudi::Property< bool > MuFastSteering::m_use_RoIBasedDataAccess_CSC { this, "USE_ROIBASEDACCESS_CSC", true} |
|
private |
◆ m_use_RoIBasedDataAccess_MDT
Gaudi::Property< bool > MuFastSteering::m_use_RoIBasedDataAccess_MDT { this, "USE_ROIBASEDACCESS_MDT", true} |
|
private |
◆ m_use_RoIBasedDataAccess_MM
Gaudi::Property< bool > MuFastSteering::m_use_RoIBasedDataAccess_MM { this, "USE_ROIBASEDACCESS_MM", true} |
|
private |
◆ m_use_RoIBasedDataAccess_RPC
Gaudi::Property< bool > MuFastSteering::m_use_RoIBasedDataAccess_RPC { this, "USE_ROIBASEDACCESS_RPC", true} |
|
private |
◆ m_use_RoIBasedDataAccess_STGC
Gaudi::Property< bool > MuFastSteering::m_use_RoIBasedDataAccess_STGC { this, "USE_ROIBASEDACCESS_STGC", true} |
|
private |
◆ m_use_RoIBasedDataAccess_TGC
Gaudi::Property< bool > MuFastSteering::m_use_RoIBasedDataAccess_TGC { this, "USE_ROIBASEDACCESS_TGC", true} |
|
private |
◆ m_use_rpc
Gaudi::Property< bool > MuFastSteering::m_use_rpc { this, "USE_RPC", true} |
|
private |
◆ m_use_stgc
Gaudi::Property< bool > MuFastSteering::m_use_stgc { this, "USE_STGC", true} |
|
private |
◆ m_useRun3Config
Gaudi::Property< bool > MuFastSteering::m_useRun3Config { this, "UseRun3Config", false, "use Run3 L1Muon EDM; xAOD::MuonRoI"} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_winPt
Gaudi::Property< double > MuFastSteering::m_winPt { this, "WinPt", 4.0 } |
|
private |
The documentation for this class was generated from the following files:
Gaudi::Property< bool > m_use_mm
Gaudi::Property< bool > m_use_RoIBasedDataAccess_CSC
ServiceHandle< Gaudi::Interfaces::IOptionsSvc > m_jobOptionsSvc
void setDeltaEta(float value)
Set error of eta.
ToolHandle< TrigL2MuonSA::CscSegmentMaker > m_cscsegmaker
constexpr uint8_t stationPhi
station Phi 1 to 8
StatusCode updateMonitor(const LVL1::RecMuonRoI *roi, const TrigL2MuonSA::MdtHits &mdtHits, std::vector< TrigL2MuonSA::TrackPattern > &trackPatterns) const
Update monitoring variables.
void setMmClustersCapacity(const int value)
Set size of storage for MM clusters.
void setStrategy(int value)
set algorithm strategy flag
bool storeIDRoiDescriptor(const TrigRoiDescriptor *roids, const TrigL2MuonSA::TrackPattern &pattern, const DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID) const
ToolHandle< TrigL2MuonSA::MuFastDataPreparator > m_dataPreparator
@ ITIMER_TRACK_EXTRAPOLATOR
Const iterator class for DataVector/DataList.
Group
Properties of a chain group.
void setTgcMidF(float rhoChi2, long rhoN, float phiChi2, long phiN)
unsigned int subsysID() const
returns sub-system ID ROI (0=-z,1=+z)
void setScales(double inner, double middle, double outer)
Scalar phi() const
phi method
void setEtaBin(int value)
Set eta bin of pT LUT.
void setEndcapAlpha(float value)
Set the fitted value in the endcap.
float etaMS() const
Get the eta at muon spectrometer.
std::string find(const std::string &s)
return a remapped string
void setEtaMap(float value)
Set eta used to refer pT LUT.
std::vector< RpcHitData > RpcHits
void setRegionEta(int station, int sector, float min, float max)
Eta range.
TrigComposite_v1 TrigComposite
Declare the latest version of the class.
Gaudi::Property< float > m_dEtasurrRoI
Helper class to provide type-safe access to aux data.
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
void setPhi(float phi)
Set the azimuthal angle ( ) of the muon.
ToolHandle< TrigL2MuonSA::MuFastTrackExtrapolator > m_trackExtrapolator
void setPhiBin(int value)
Set phi bin of pT LUT.
Class describing standalone muons reconstructed in the LVL2 trigger.
Scalar eta() const
pseudorapidity method
void setAlgoId(int value)
ToolHandle< TrigL2MuonSA::MuFastTrackFitter > m_trackFitter
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
ToolHandle< TrigL2MuonSA::MuCalStreamerTool > m_calStreamer
SG::WriteHandleKey< xAOD::L2CombinedMuonContainer > m_outputCBmuonCollKey
Gaudi::Property< std::string > m_calBufferName
TrigL2MuonSA::RecMuonRoIUtils m_recMuonRoIUtils
T wrapToPi(T phi)
Wrap angle in radians to [-pi, pi].
void setIsRpcFailure(int value)
Set flag to record if RPC is properly read.
@ BEE
BEE measurement point.
@ EndcapExtra
Extra station in the endcap spectrometer.
Scalar theta() const
theta method
void setRoiSubsystem(uint32_t value)
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
ToolHandle< ITrigMuonBackExtrapolator > m_backExtrapolatorTool
Handle to MuonBackExtrapolator tool.
ToolHandle< TrigL2MuonSA::MuFastPatternFinder > m_patternFinder
std::vector< MdtHitData > MdtHits
std::vector< TgcHitData > TgcHits
bool storeMSRoiDescriptor(const TrigRoiDescriptor *roids, const TrigL2MuonSA::TrackPattern &pattern, const DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputMS) const
double bw[N_STATION][N_SECTOR]
void setTgcInn(float eta, float phi, float r, float z)
Set the results of TGC fit.
Gaudi::Property< bool > m_topoRoad
void setMdtHit(uint32_t onlineId, int isOutier, int chamber, float r, float z, float phi, float residual, float time, float space, float sigma)
Set the properties of each MDT tube.
void setPt(float pt)
Set the transverse momentum ( ) of the muon.
@ BME
BME measurement point.
virtual unsigned int roiWord() const override final
Gaudi::Property< float > m_scaleRoadBarrelInner
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
@ BarrelInner
Inner station in the barrel spectrometer.
float eta() const
The pseudorapidity ( ) of the muon candidate.
std::vector< SG::VarHandleKeyArray * > m_vhka
ServiceHandle< IIncidentSvc > m_incidentSvc
Gaudi::Property< bool > m_doEndcapForl2mt
void setRoiSector(uint32_t value)
bool msgLvl(const MSG::Level lvl) const
ToolHandle< TrigL2MuonSA::MuFastStationFitter > m_stationFitter
void setDeltaPhi(float value)
Set error of phi.
void setSuperPoint(int chamber, float r, float z, float slope, float intercept=0., float chi2=0.)
Set the properties of one particular super point measurement.
void setPhiMS(float value)
Set the phi at muon spectrometer.
void setEtaMS(float value)
Set the eta at muon spectrometer.
void setRpcFitInn(float phi, float slope, float offset)
Set the results of RPC fit.
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
float phiMS() const
Get the phi at muon spectrometer.
setTeId setLumiBlock setRoiId setRoiSubsystem setRoiNumber roiEta
SG::WriteHandleKey< TrigRoiDescriptorCollection > m_muMsContainerKey
setSAddress setEtaMS setDirPhiMS setDirZMS barrelRadius
void setCharge(float value)
set seeding muon charge
Gaudi::Property< int > m_esd_csc_size
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_FTFtrackKey
Hemisphere getHemisphere() const
Returns the hemisphere that detected the muon candidate.
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
Gaudi::Property< bool > m_use_rpc
virtual double eta() const
returns eta coord of ROI
int workerID() const
assigned worker ID from processing unit
std::vector< CscHitData > CscHits
void setRMS(float value)
Set the R at muon spectrometer.
int chamberType[11][2][2]
unsigned int getThresholdNumber() const
returns the Threshold Number (1 to 6) associated with this RecRoI
double aw[N_STATION][N_SECTOR]
virtual unsigned int roiWord() const
returns roi word
void setEta(float eta)
Set the pseudorapidity ( ) of the muon.
float getRoiSizeForID(bool isEta, const xAOD::L2StandAloneMuon *muonSA) const
void setTgcHitsCapacity(int value)
Set size of storage for TGC hits.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
virtual void setOwner(IDataHandleHolder *o)=0
An algorithm that can be simultaneously executed in multiple threads.
void setTgcInnF(float rhoStd, long rhoN, float phiStd, long phiN)
Gaudi::Property< bool > m_fill_FSIDRoI
@ ITIMER_CALIBRATION_STREAMER
Class describing combined muon reconstructed in the LVL2 trigger.
Gaudi::Property< bool > m_doCalStream
void setPtEndcapBeta(float value)
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Gaudi::Property< bool > m_use_RoIBasedDataAccess_RPC
void setBeta(float value)
Set beta.
Gaudi::Property< bool > m_calDataScouting
SG::ReadHandleKey< xAOD::MuonRoIContainer > m_recRoiCollectionKey
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
void setEta(float eta)
Set the pseudorapidity ( ) of the muon.
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
@ ITIMER_TOTAL_PROCESSING
Gaudi::Property< bool > m_useRun3Config
void setRoad(int station, int sector, float aw, float bw)
Road.
This class defines the reconstructed Muon ROI.
Gaudi::Property< bool > m_use_stgc
Gaudi::Property< bool > m_multiTrack
void setPhi(float phi)
Set the azimuthal angle ( ) of the muon.
void setBarrelSagitta(float value)
Set the fitted sagitta of the muon in the barrel.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
int sAddress() const
Get the station address of the muon.
Gaudi::Property< float > m_scaleRoadBarrelMiddle
void setMmCluster(const unsigned int layer, const int isOutlier, const float eta, const float phi, const float r, const float z, const float residualR, const float residualPhi, const int stationEta, const int stationPhi, const int stationName)
Set MM hits.
Gaudi::Property< bool > m_use_new_segmentfit
void setSAddress(int value)
Set the station address of the muon.
ToolHandle< GenericMonitoringTool > m_monTool
void setRoiSystem(uint32_t value)
Gaudi::Property< float > m_ftfminPt
::StatusCode StatusCode
StatusCode definition for legacy code.
void setRoiId(uint32_t value)
void setChamberType2(int station, int sector, int chamberType)
void setPtEndcapAlpha(float value)
bool storeMuonSA(const LVL1::RecMuonRoI *roi, const TrigRoiDescriptor *roids, const TrigL2MuonSA::MuonRoad &muonRoad, const TrigL2MuonSA::MdtRegion &mdtRegion, const TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::TgcHits &tgcHits, const TrigL2MuonSA::RpcFitResult &rpcFitResult, const TrigL2MuonSA::TgcFitResult &tgcFitResult, const TrigL2MuonSA::MdtHits &mdtHits, const TrigL2MuonSA::CscHits &cscHits, const TrigL2MuonSA::StgcHits &stgcHits, const TrigL2MuonSA::MmHits &mmHits, const TrigL2MuonSA::TrackPattern &pattern, DataVector< xAOD::L2StandAloneMuon > &outputTracks, const EventContext &ctx) const
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
bool isBarrel(const LVL1::RecMuonRoI *p_roi) const
StatusCode findMultiTrackSignature(const std::vector< const TrigRoiDescriptor * > &roi, const std::vector< const LVL1::RecMuonRoI * > &muonRoIs, DataVector< xAOD::L2StandAloneMuon > &outputTracks, const bool dynamicDeltaRpc, const EventContext &ctx) const
findMultiTrackSignature(), includes reconstract algorithms for multi-track mode
Class describing a LVL1 muon region of interest.
RoISource getSource() const
Returns the system that detected the muon candidate.
StatusCode findMuonSignature(const std::vector< const TrigRoiDescriptor * > &roi, const std::vector< const LVL1::RecMuonRoI * > &muonRoIs, DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID, TrigRoiDescriptorCollection &outputMS, const bool dynamicDeltaRpc, const EventContext &ctx) const
findMuonSignature(), includes reconstract algorithms
virtual unsigned int l1Id() const override final
unsigned int sectorID() const
returns sector ID ROI
SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roiCollectionKey
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Gaudi::Property< bool > m_use_endcapInnerFromBarrel
AthROOTErrorHandlerSvc * svc
SG::WriteHandleKey< TrigRoiDescriptorCollection > m_muIdContainerKey
int L2MuonAlgoMap(const std::string &name) const
Class used to describe composite objects in the HLT.
bool updateOutputObjects(const LVL1::RecMuonRoI *roi, const TrigRoiDescriptor *roids, const TrigL2MuonSA::MuonRoad &muonRoad, const TrigL2MuonSA::MdtRegion &mdtRegion, const TrigL2MuonSA::RpcHits &rpcHits, const TrigL2MuonSA::TgcHits &tgcHits, const TrigL2MuonSA::RpcFitResult &rpcFitResult, const TrigL2MuonSA::TgcFitResult &tgcFitResult, const TrigL2MuonSA::MdtHits &mdtHits, const TrigL2MuonSA::CscHits &cscHits, const TrigL2MuonSA::StgcHits &stgcHits, const TrigL2MuonSA::MmHits &mmHits, const std::vector< TrigL2MuonSA::TrackPattern > &trackPatterns, DataVector< xAOD::L2StandAloneMuon > &outputTracks, TrigRoiDescriptorCollection &outputID, TrigRoiDescriptorCollection &outputMS, const EventContext &ctx) const
Called at the end of the algorithm processing to set the steering navigation properly.
int getRoI() const
Get the "RoI number" (position inside the sector)
void setCscHit(int isOutlier, int chamber, uint32_t stationName, int stationEta, int stationPhi, int chamberLayer, int wireLayer, int measuresPhi, int strip, float eta, float phi, float r, float z, int charge, float time, float residual)
Set the properties of each CSC tube.
void setRegionZ(int station, int sector, float min, float max)
Z range.
void setRpcFitOut(float phi, float slope, float offset)
void setMuonDetMask(uint32_t value)
void setChamberType1(int station, int sector, int chamberType)
Set the muon road information.
virtual void renounce()=0
Gaudi::Property< int > m_esd_rpc_size
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
void setStgcCluster(const unsigned int layer, const int isOutlier, const int type, const float eta, const float phi, const float r, const float z, const float residualR, const float residualPhi, const int stationEta, const int stationPhi, const int stationName)
Set sTGC hits.
ElementLink implementation for ROOT usage.
virtual double phi() const
returns phi coord of ROI
Gaudi::Property< bool > m_insideOut
void setIsTgcFailure(int value)
Set flag to record if TGC is properly read.
@ EndcapMiddle
Middle station in the endcap spectrometer.
Gaudi::Property< bool > m_use_RoIBasedDataAccess_MM
void setEndcapBeta(float value)
Set the fitted value in the endcap.
void setIdTrackLink(const ElementLink< xAOD::TrackParticleContainer > &link)
set ID track used to make the CB muon
std::string to_string(const DetectorType &type)
unsigned int sysID() const
returns system ID ROI (Barrel=0, Endcap=1, Forward=2)
Gaudi::Property< int > m_esd_tgc_size
void setDirPhiMS(float value)
Set tan phi at muon spectrometer.
void setRpcHitsCapacity(int value)
Size of storage to be reserved.
void setBarrelRadius(float value)
Set the fitted radius of the muon in the barrel.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
void makePrivateStore()
Create a new (empty) private store for this object.
void setRpcHit(uint32_t layer, uint32_t measuresPhi, float x, float y, float z, float time, float distEta, float distPhi, const std::string &stationName)
Set RPC hits.
void setMdtHitsCapacity(int value)
Set size of storage for MDT hits.
ToolHandle< TrigL2MuonSA::FtfRoadDefiner > m_ftfRoadDefiner
L2CombinedMuon_v1 L2CombinedMuon
Define the latest version of the muon CB class.
Gaudi::Property< float > m_scaleRoadBarrelOuter
static const std::string & type()
Incident type.
Gaudi::Property< double > m_rWidth_TGC_Failed
void setMuSATrackLink(const ElementLink< xAOD::L2StandAloneMuonContainer > &link)
set SA muon used to make the CB muon
Gaudi::Property< double > m_winPt
virtual unsigned int roiId() const override final
these quantities probably don't need to be used any more
void setPt(float pt)
Set the transverse momentum ( ) of the muon.
void setRoiEta(float value)
Gaudi::Property< float > m_dPhisurrRoI
void setZMS(float value)
Set the Z at muon spectrometer.
void setRoiThreshold(uint32_t value)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
void setRpcFitMid(float phi, float slope, float offset)
const LVL1::RecMuonRoI * matchingRecRoI(uint32_t roiWord, const DataVector< LVL1::RecMuonRoI > &collection)
virtual double etaPlus() const override final
gets eta at zedPlus
accumulate
Update flags based on parser line args.
void setTgcPt(float value)
std::vector< MmHitData > MmHits
bool empty() const noexcept
#define ATH_MSG_WARNING(x)
virtual double phi() const override final
Methods to retrieve data members.
@ EndcapInner
Inner station in the endcap spectrometer.
@ BarrelOuter
Outer station in the barrel spectrometer.
std::vector< StgcHitData > StgcHits
void setRegionR(int station, int sector, float min, float max)
R range.
unsigned bcTag(unsigned bcBitMap)
Gaudi::Property< bool > m_use_mcLUT
SG::WriteHandleKey< xAOD::L2StandAloneMuonContainer > m_muFastContainerKey
void setRoiNumber(uint32_t value)
SG::ReadHandleKey< DataVector< LVL1::RecMuonRoI > > m_run2recRoiCollectionKey
void setLvl1Id(uint32_t value)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
StatusCode findMuonSignatureIO(const xAOD::TrackParticleContainer &idtracks, const std::vector< const TrigRoiDescriptor * > &roids, const std::vector< const LVL1::RecMuonRoI * > &muonRoIs, DataVector< xAOD::L2CombinedMuon > &outputCBs, DataVector< xAOD::L2StandAloneMuon > &outputSAs, const bool dynamicDeltaRpc, const EventContext &ctx) const
findMuonSignatureIO(), includes reconstract algorithms for inside-out mode
virtual double eta() const override final
void setPtCSC(float value)
virtual double pt() const
The transverse momentum ( ) of the particle.
virtual StatusCode sysInitialize() override
Override sysInitialize.
unsigned int getRoINumber() const
return RoI number in hardware numbering scheme
Athena::TPCnvVers::Current TrigRoiDescriptor
void setRoIWord(uint32_t value)
Set the RoI ID of the seeding LVL1 muon.
Gaudi::Property< double > m_rWidth_RPC_Failed
const T * at(size_type n) const
Access an element, as an rvalue.
Gaudi::Property< int > m_calBufferSize
int getSectorID() const
Get the sector ID number.
Declare a monitored scalar variable.
Gaudi::Property< bool > m_use_RoIBasedDataAccess_MDT
virtual double phiPlus() const override final
gets phiPlus
constexpr uint8_t stationEta
1 to 3
void setTgcHit(float eta, float phi, float r, float z, float width, int stationNum, bool isStrip, int bcTag, bool inRoad)
Set TGC hits.
void setCscHitsCapacity(int value)
Set size of storage for CSC hits.
L2StandAloneMuon_v2 L2StandAloneMuon
Define the latest version of the muon SA class.
virtual double etaMinus() const override final
gets eta at zMinus
void setStgcClustersCapacity(const int value)
Set size of storage for sTGC clusters.
void setPtEndcapRadius(float value)
void setDirZMS(float value)
Set dRdZ at muon spectrometer.
int getThrNumber() const
Get the logic number of the highest threshold this RoI passed.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
void setErrorFlag(int value)
set algorithm error flag
void setPhiMap(float value)
Set phi used to refer pT LUT.
void setEndcapRadius(float value)
Set the fitted radius of the muon in the endcap.
Gaudi::Property< int > m_esd_mdt_size
virtual double phiMinus() const override final
gets phiMinus
void setDeltaPt(float value)
Set error of pT.
Gaudi::Property< int > m_esd_mm_size
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
@ BarrelMiddle
Middle station in the barrel spectrometer.
void setLumiBlock(uint32_t value)
@ EndcapOuter
Outer station in the endcap spectrometer.
Gaudi::Property< int > m_esd_stgc_size
uint32_t roiWord() const
The "raw" RoI word describing the muon candidate.
Gaudi::Property< bool > m_use_RoIBasedDataAccess_TGC
void setTgcMid2(float eta, float phi, float r, float z)
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
void setTgcMid1(float eta, float phi, float r, float z)
void setTrackPosition(float r, float z, float eta, float phi)
Set position of muon track.
void setRoiPhi(float value)
SG::WriteHandleKey< xAOD::TrigCompositeContainer > m_muCompositeContainerKey
ECRegions whichECRegion(const float eta, const float phi)
float phi() const
The azimuthal angle ( ) of the muon candidate.
Gaudi::Property< bool > m_use_RoIBasedDataAccess_STGC