ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimLogicalHitsProcessAlg Class Reference

#include <FPGATrackSimLogicalHitsProcessAlg.h>

Inheritance diagram for FPGATrackSimLogicalHitsProcessAlg:

Public Member Functions

 FPGATrackSimLogicalHitsProcessAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~FPGATrackSimLogicalHitsProcessAlg ()=default
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) override
 Execute method with EventContext.
virtual StatusCode finalize () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual StatusCode execute ()
 Execute method without EventContext (deprecated).
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode writeOutputData (const std::vector< FPGATrackSimRoad > &roads_1st, std::vector< FPGATrackSimTrack > const &tracks_1st, FPGATrackSimDataFlowInfo const *dataFlowInfo)
void printHitSubregions (std::vector< FPGATrackSimHit > const &hits)
bool passesChi2Cut (const FPGATrackSimTrack &track)
std::vector< unsigned > PickHitsToUse (layer_bitmask_t) const
void MakeSeedTracks (std::vector< FPGATrackSimTrack > &tracks)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::string m_description
ToolHandle< FPGATrackSimSpacePointsToolIm_spacepointsTool {this, "SpacePointTool", "FPGATrackSimSpacePointsTool/FPGATrackSimSpacePointsTool", "Space Points Tool"}
ToolHandle< FPGATrackSimRoadUnionToolm_roadFinderTool {this, "RoadFinder", "FPGATrackSimPatternMatchTool", "Road Finder Tool"}
ToolHandle< FPGATrackSimLLPRoadFilterToolm_LRTRoadFilterTool {this, "LRTRoadFilter", "FPGATrackSimLLPRoadFilterTool/FPGATrackSimLLPRoadFilterTool", "LRT Road Filter Tool"}
ToolHandle< IFPGATrackSimRoadFinderToolm_LRTRoadFinderTool {this, "LRTRoadFinder", "FPGATrackSimHoughTransform_d0phi0_Tool/FPGATrackSimHoughTransform_d0phi0_Tool", "LRT Road Finder Tool"}
ToolHandle< IFPGATrackSimRoadFilterToolm_roadFilterTool {this, "RoadFilter", "FPGATrackSimEtaPatternFilterTool", "Road Filter Tool"}
ToolHandle< IFPGATrackSimRoadFilterToolm_roadFilterTool2 {this, "RoadFilter2", "FPGATrackSimPhiRoadFilterTool", "Road Filter2 Tool"}
ToolHandle< FPGATrackSimNNTrackToolm_NNTrackTool {this, "NNTrackTool", "FPGATrackSimNNTrackTool/FPGATrackSimNNTrackTool", "NN Track Tool"}
ToolHandle< FPGATrackSimHoughRootOutputToolm_houghRootOutputTool {this, "HoughRootOutputTool", "FPGATrackSimHoughRootOutputTool/FPGATrackSimHoughRootOutputTool", "Hough ROOT Output Tool"}
ToolHandle< FPGATrackSimTrackFitterToolm_trackFitterTool_1st {this, "TrackFitter_1st", "FPGATrackSimTrackFitterTool/FPGATrackSimTrackFitterTool_1st", "1st stage track fit tool"}
ToolHandle< FPGATrackSimOverlapRemovalToolm_overlapRemovalTool_1st {this, "OverlapRemoval_1st", "FPGATrackSimOverlapRemovalTool/FPGATrackSimOverlapRemovalTool_1st", "1st stage overlap removal tool"}
ToolHandle< FPGATrackSimOutputHeaderToolm_writeOutputTool {this, "OutputTool", "FPGATrackSimOutputHeaderTool/FPGATrackSimOutputHeaderTool", "Output tool"}
ToolHandle< FPGATrackSimSlicingEngineToolm_slicingEngineTool {this, "SlicingEngineTool", "FPGATrackSimSlicingEngineTool/FPGATrackSimSlicingEngineTool", "Slicing engine tool"}
ServiceHandle< IFPGATrackSimMappingSvcm_FPGATrackSimMapping {this, "FPGATrackSimMapping", "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"}
ServiceHandle< IFPGATrackSimEventSelectionSvcm_evtSel {this, "eventSelector", "", "Event selection Svc"}
ToolHandle< GenericMonitoringToolm_monTool {this,"MonTool", "", "Monitoring tool"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_road_monitor {this, "FirstStageRoadMonitor", "FPGATrackSimTrackMonitor", "First Stage Road Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_road_post_filter_1_monitor {this, "FirstStageRoadPostFilter1Monitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Filter1 Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_road_post_OLR_monitor {this, "FirstStageRoadPostOverlapRemovalMonitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Overlap Removal Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_road_post_filter_2_monitor {this, "FirstStageRoadPostFilter2Monitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Filter2 Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_track_monitor {this, "FirstStageTrackMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_track_post_setTruth_monitor {this, "FirstStageTrackPostSetTruthMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Set to TruthTracks Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_track_post_chi2_monitor {this, "FirstStageTrackPostChi2Monitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Chi2 Monitor"}
ToolHandle< FPGATrackSimTrackMonitorm_1st_stage_track_post_OLR_monitor {this, "FirstStageTrackPostOverlapRemovalTrackMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Overlap Removal Monitor"}
ServiceHandle< IChronoStatSvc > m_chrono {this,"ChronoStatSvc","ChronoStatSvc"}
Gaudi::Property< int > m_SetTruthParametersForTracks {this, "SetTruthParametersForTracks", -1, "flag to override track parameters and set them to the truth values"}
Gaudi::Property< bool > m_doSpacepoints {this, "Spacepoints", false, "flag to enable the spacepoint formation"}
Gaudi::Property< bool > m_doTracking {this, "tracking", false, "flag to enable the tracking"}
Gaudi::Property< bool > m_doMultiTruth {this, "doMultiTruth", true, "flag to enable the use of multi-truth information for hits"}
Gaudi::Property< bool > m_doOverlapRemoval {this, "doOverlapRemoval", true , "flag to enable the overlap removal"}
Gaudi::Property< bool > m_doMissingHitsChecks {this, "DoMissingHitsChecks", false}
Gaudi::Property< bool > m_filterRoads {this, "FilterRoads", false, "enable first road filter"}
Gaudi::Property< bool > m_filterRoads2 {this, "FilterRoads2", false, "enable second road filter"}
Gaudi::Property< bool > m_doHoughRootOutput1st {this, "DoHoughRootOutput1st", false, "Dump output from the Hough Transform to flat ntuples"}
Gaudi::Property< bool > m_doNNTrack {this, "DoNNTrack_1st", false, "Run NN track filtering for 1st stage"}
Gaudi::Property< bool > m_doGNNTrack {this, "DoGNNTrack", false, "Run tracking algorithm for GNN" }
Gaudi::Property< bool > m_doGNNPixelSeeding {this, "DoGNNPixelSeeding", false, "Flag to configure for GNN Pixel Seeding" }
Gaudi::Property< bool > m_doLRT {this, "doLRT", false, "Enable Large Radius Tracking"}
Gaudi::Property< bool > m_doLRTHitFiltering {this, "LRTHitFiltering", false, "flag to enable hit/cluster filtering for LRT"}
Gaudi::Property< bool > m_writeOutputData {this, "writeOutputData", true,"write the output TTree"}
Gaudi::Property< float > m_trackScoreCut {this, "TrackScoreCut", 25.0, "Minimum track score (e.g. chi2 or NN)." }
Gaudi::Property< std::vector< float > > m_track_Chi2PhiCut {this, "Chi2PhiCut", {-1.0,-1.0}, "Minimum Phi specific Chi2 cuts for vector starting with zero missed hits and counting up, negative is not active" }
Gaudi::Property< std::vector< float > > m_track_Chi2EtaCut {this, "Chi2EtaCut", {-1.0,-1.0}, "Minimum Eta specific Chi2 cuts for vector starting with zero missed hits and counting up, negative is not active" }
Gaudi::Property< int > m_keepHitsStrategy {this, "keepHitsStrategy", -1, "If this is less than 0, do nothing. If 1, pick 3 hits furthest apart. If 2, pick 3 inner hits. If 3, pick 3 outer hits. If 4, drop only middle hit for 5/5 otherwise keep all 4 hits for 4/5"}
Gaudi::Property< bool > m_writeOutNonSPStripHits {this, "writeOutNonSPStripHits", true, "Write tracks to RootOutput if they have strip hits which are not SPs"}
Gaudi::Property< int > m_NumOfHitPerGrouping { this, "NumOfHitPerGrouping", 5, "Number of minimum overlapping hits for a track candidate to be removed in the HoughRootOutputTool"}
Gaudi::Property< bool > m_passLowestChi2TrackOnly {this,"passLowestChi2TrackOnly", false, "case when passing only lowest chi2 track per road"}
Gaudi::Property< bool > m_secondStageStrips {this, "secondStageStrips", true, "If set to true, strip hits/SPs go to the second stage. Otherwise they go to the first." }
Gaudi::Property< bool > m_outputRoadUnionTool {this, "outputRoadUnionTool", false, "If set to true, create LogicalEventInputHeader in output ROOT file using road union tool."}
Gaudi::Property< int > m_region {this, "Region", 0, "Region ID to assign to tracks"}
Gaudi::Property< bool > m_writeInputBranches {this, "writeInputBranches", true, "If set to false, never write input branches"}
Gaudi::Property< int > m_writeRegion {this,"writeRegion", -1, "Only output selected region, default is -1 which means not requirement"}
Gaudi::Property< bool > m_noHitFilter {this, "noHitFilter", false, "Disable filtering of hits"}
Gaudi::Property< std::string > m_sliceBranch {this, "SliceBranchName", "LogicalEventSlicedHeader", "Name of the branch for sliced hits in output ROOT file." }
Gaudi::Property< std::string > m_outputBranch {this, "outputBranchName", "LogicalEventOutputHeader", "Name of the branch for output data in output ROOT file." }
Gaudi::Property< std::string > m_sliceFirstPixelBranch {this, "FirstPixelBranchName", "LogicalEventFirstPixelHeader", "Name of the branch for first stage pixel hits in output ROOT file"}
Gaudi::Property< std::string > m_sliceSecondPixelBranch {this, "SecondPixelBranchName", "LogicalEventSecondPixelHeader", "Name of the branch for second stage pixel hits in output ROOT file"}
Gaudi::Property< std::string > m_sliceStripBranch {this, "StripBranchName", "LogicalEventSpacepointHeader", "Name of the branch for (post-SP) strip hits in output ROOT file"}
Gaudi::Property< std::string > m_sliceStripBranchPreSP {this, "StripPreSPBranchName", "LogicalEventStripHeader", "Name of the branch for (pre-SP) strip hits in output ROOT file"}
FPGATrackSimLogicalEventInputHeaderm_slicedHitHeader = nullptr
FPGATrackSimLogicalEventInputHeaderm_slicedFirstPixelHeader = nullptr
FPGATrackSimLogicalEventInputHeaderm_slicedSecondPixelHeader = nullptr
FPGATrackSimLogicalEventInputHeaderm_slicedStripHeader = nullptr
FPGATrackSimLogicalEventInputHeaderm_slicedStripHeaderPreSP = nullptr
FPGATrackSimLogicalEventOutputHeaderm_logicEventOutputHeader = nullptr
std::vector< FPGATrackSimTrackm_tracks_1st_guessedcheck
std::vector< FPGATrackSimTrackm_tracks_1st_nomiss
std::vector< FPGATrackSimTrackm_tracks_2nd_guessedcheck
std::vector< FPGATrackSimTrackm_tracks_2nd_nomiss
double m_evt = 0
long m_nRoadsTot = 0
long m_nTracksTot = 0
long m_nTracksChi2Tot = 0
long m_nTracksChi2OLRTot = 0
double m_evt_truth = 0
long m_nRoadsFound = 0
long m_nTracksFound = 0
long m_nTracksChi2Found = 0
long m_nTracksChi2OLRFound = 0
unsigned long m_maxNRoadsFound = 0
unsigned long m_maxNTracksTot = 0
unsigned long m_maxNTracksChi2Tot = 0
unsigned long m_maxNTracksChi2OLRTot = 0
SG::ReadHandleKey< FPGATrackSimHitCollectionm_FPGAHitKey {this, "FPGATrackSimHitKey","FPGAHits", "FPGATrackSim hits key"}
SG::WriteHandleKey< FPGATrackSimClusterCollectionm_FPGASpacePointsKey {this, "FPGATrackSimSpacePoints1stKey","FPGASpacePoints_1st","FPGATrackSim SpacePoints key"}
SG::WriteHandleKey< ConstDataVector< FPGATrackSimHitCollection > > m_FPGAHitKey_1st {this, "FPGATrackSimHitKey_1st","FPGAHits_1st","FPGATrackSim 1st stage hits key"}
SG::WriteHandleKey< ConstDataVector< FPGATrackSimHitCollection > > m_FPGAHitKey_2nd {this, "FPGATrackSimHitKey_2nd","FPGAHits_2nd","FPGATrackSim 2nd stage hits key"}
SG::WriteHandleKey< FPGATrackSimHitCollectionm_FPGAHitFilteredKey {this, "FPGATrackSimHitFiltered1stKey","FPGAHitsFiltered_1st","FPGATrackSim Filtered Hits 1st stage key"}
SG::WriteHandleKey< FPGATrackSimRoadCollectionm_FPGARoadKey {this, "FPGATrackSimRoad1stKey","FPGARoads_1st","FPGATrackSim Roads 1st stage key"}
SG::WriteHandleKey< FPGATrackSimTrackCollectionm_FPGATrackKey {this, "FPGATrackSimTrack1stKey","FPGATracks_1st","FPGATrackSim Tracks 1st stage key"}
SG::ReadHandleKey< FPGATrackSimTruthTrackCollectionm_FPGATruthTrackKey {this, "FPGATrackSimTruthTrackKey", "FPGATruthTracks", "FPGATrackSim truth tracks"}
SG::ReadHandleKey< FPGATrackSimOfflineTrackCollectionm_FPGAOfflineTrackKey {this, "FPGATrackSimOfflineTrackKey", "FPGAOfflineTracks", "FPGATrackSim offline tracks"}
SG::ReadHandleKey< FPGATrackSimEventInfom_FPGAEventInfoKey {this, "FPGATrackSimEventInfoKey", "FPGAEventInfo", "FPGATrackSim event info"}
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 69 of file FPGATrackSimLogicalHitsProcessAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ FPGATrackSimLogicalHitsProcessAlg()

FPGATrackSimLogicalHitsProcessAlg::FPGATrackSimLogicalHitsProcessAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 45 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

45 :
46 AthAlgorithm(name, pSvcLocator)
47{
48}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:

◆ ~FPGATrackSimLogicalHitsProcessAlg()

virtual FPGATrackSimLogicalHitsProcessAlg::~FPGATrackSimLogicalHitsProcessAlg ( )
virtualdefault

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute() [1/2]

virtual StatusCode AthAlgorithm::execute ( )
inlinevirtualinherited

Execute method without EventContext (deprecated).

Override this method if the EventContext is not needed.

Reimplemented in AthenaMonManager, AthPrescaler, BuildVertexPointingAlg, CP::AsgClassificationDecorationAlg, CP::AsgEnergyDecoratorAlg, CP::AsgEventScaleFactorAlg, CP::AsgLeptonTrackDecorationAlg, CP::AsgObjectScaleFactorAlg, CP::AsgPriorityDecorationAlg, CP::AsgSelectionAlg, CP::AsgShallowCopyAlg, CP::AsgUnionPreselectionAlg, CP::AsgUnionSelectionAlg, CP::AsgViewFromSelectionAlg, CP::AsgxAODNTupleMakerAlg, CP::BJetCalibrationAlg, CP::BootstrapGeneratorAlg, CP::BTaggingEfficiencyAlg, CP::BTaggingInformationDecoratorAlg, CP::BTaggingTriggerEfficiencyAlg, CP::BTaggingTriggerMatchingAlg, CP::ChargeSelectorAlg, CP::CopyNominalSelectionAlg, CP::DileptonInvariantMassSelectorAlg, CP::DileptonInvariantMassWindowSelectorAlg, CP::DileptonOSSFInvariantMassWindowSelectorAlg, CP::DiTauEfficiencyCorrectionsAlg, CP::DiTauMassCalculatorAlg, CP::DiTauSmearingAlg, CP::DiTauTruthMatchingAlg, CP::EgammaCalibrationAndSmearingAlg, CP::EgammaFSRForMuonsCollectorAlg, CP::EgammaIsolationCorrectionAlg, CP::EgammaIsolationSelectionAlg, CP::ElectronEfficiencyCorrectionAlg, CP::ElectronSiHitDecAlg, CP::EventCutFlowHistAlg, CP::EventFlagSelectionAlg, CP::EventSelectionByObjectFlagAlg, CP::EventStatusSelectionAlg, CP::FakeBkgCalculatorAlg, CP::InDetTrackBiasingAlg, CP::InDetTrackExtraVarDecoratorAlg, CP::InDetTrackSelectionAlg, CP::InDetTrackSmearingAlg, CP::JetCalibAlg, CP::JetCalibrationAlg, CP::JetDecoratorAlg, CP::JetFFSmearingAlg, CP::JetGhostMuonAssociationAlg, CP::JetModifierAlg, CP::JetNGhostSelectorAlg, CP::JetReclusteringAlg, CP::JetSelectionAlg, CP::JetTriggerDecoratorAlg, CP::JetUncertaintiesAlg, CP::JvtEfficiencyAlg, CP::JvtUpdateAlg, CP::KinematicHistAlg, CP::LeptonSFCalculatorAlg, CP::MCTCDecorationAlg, CP::MetadataHistAlg, CP::MetBuilderAlg, CP::MetMakerAlg, CP::MetSignificanceAlg, CP::MissingETPlusTransverseMassSelectorAlg, CP::MissingETSelectorAlg, CP::MuonCalibrationAndSmearingAlg, CP::MuonEfficiencyScaleFactorAlg, CP::MuonIsolationAlg, CP::MuonSelectionAlgV2, CP::MuonTriggerEfficiencyScaleFactorAlg, CP::NJetDecoratorAlg, CP::NLargeRJetMassWindowSelectorAlg, CP::NObjectMassSelectorAlg, CP::NObjectPtSelectorAlg, CP::ObjectCutFlowHistAlg, CP::OverlapRemovalAlg, CP::PhotonEfficiencyCorrectionAlg, CP::PhotonExtraVariablesAlg, CP::PhotonShowerShapeFudgeAlg, CP::PileupReweightingAlg, CP::PileupReweightingProvider, CP::PMGTruthWeightAlg, CP::RNtupleTreeMakerAlg, CP::RunNumberSelectorAlg, CP::RunPartonHistoryAlg, CP::SaveFilterAlg, CP::SecVertexTruthMatchAlg, CP::SSVWeightsAlg, CP::SumNLeptonPtSelectorAlg, CP::SysListDumperAlg, CP::SysTruthWeightAlg, CP::TauCombineMuonRMTausAlg, CP::TauEfficiencyCorrectionsAlg, CP::TauSmearingAlg, CP::TauTruthMatchingAlg, CP::TransverseMassSelectorAlg, CP::TreeFillerAlg, CP::TreeMakerAlg, CP::TrigEventSelectionAlg, CP::TrigGlobalEfficiencyAlg, CP::TrigMatchingAlg, CP::TrigPrescalesAlg, CP::VGammaORAlg, CP::xAODWriterAlg, CP::XbbEfficiencyAlg, CP::XbbInformationDecoratorAlg, DecoratePhotonPointingAlg, DecorateVertexScoreAlg, DumpEventDataToJsonAlg, DumpGeo, EL::AnaAlgorithm, EL::UnitTestAlg2, EL::UnitTestAlg3, EL::UnitTestAlg4, EL::UnitTestAlg5, EL::UnitTestAlg7, EventReco::KLFitterFinalizeOutputAlg, EventReco::RunKLFitterAlg, GRLSelectorAlg, IdDictCnvTest, InDetUpdateCaches, JetGlobalEventSetup, LArAutoCorrAlgToDB, LArAutoCorrFromStdNtuple, LArBadChannelHunter, LArBlockCorrections, LArCalibCopyAlg< CONDITIONSCONTAINER >, LArCalibCopyAlg< LArDAC2uAMC >, LArCalibCopyAlg< LArPhysWaveContainer >, LArCalibCopyAlg< LArTdriftComplete >, LArCalibPatchingAlg< CONDITIONSCONTAINER >, LArCalibPatchingAlg< LArAutoCorrComplete >, LArCalibPatchingAlg< LArCaliWaveContainer >, LArCalibPatchingAlg< LArMphysOverMcalComplete >, LArCalibPatchingAlg< LArRampComplete >, LArCalibValidationAlg< CONDITIONSCONTAINER, REFCONTAINER >, LArCalibValidationAlg< LArAutoCorrComplete, LArAutoCorrComplete >, LArCalibValidationAlg< LArCaliWaveContainer, LArCaliWaveContainer >, LArCalibValidationAlg< LArPedestalComplete, ILArPedestal >, LArCalibValidationAlg< LArRampComplete, ILArRamp >, LArCaliWaveSelector, LArCompleteToFlat, LArDeltaRespPredictor, LArDSPThresholdFillInline, LArDuplicateConstants, LArFillDSPConfig, LArFlatFromFile, LArGeoWeightsFill, LArMasterWaveBuilder, LArMphysOverMcalFromTuple, LArOFCAlg, LArOFCBin_PhysCaliTdiffFromStdNtuple, LArOFCtoOFC, LArOFPhaseFill, LArParamsFromStdNtuple, LArPhysWaveFromAscii, LArPhysWaveFromStdNtuple, LArPhysWaveFromTuple, LArPhysWavePredictor, LArPhysWaveShifter, LArRampAdHocPatchingAlg, LArReadParamsFromFile< DATA >, LArReadParamsFromFile< LArCableAttenuationComplete >, LArReadParamsFromFile< LArCableLengthComplete >, LArReadParamsFromFile< LArCaliPulseParamsComplete >, LArReadParamsFromFile< LArDetCellParamsComplete >, LArReadParamsFromFile< LArEMEC_CphiComplete >, LArReadParamsFromFile< LArEMEC_HValphaComplete >, LArReadParamsFromFile< LArEMEC_HVbetaComplete >, LArReadParamsFromFile< LArMphysOverMcalComplete >, LArReadParamsFromFile< LArPhysCaliTdiffComplete >, LArReadParamsFromFile< LArRinjComplete >, LArReadParamsFromFile< LArTdriftComplete >, LArReadParamsFromFile< LArTshaperComplete >, LArRTMParamExtractor, LArShapeFromStdNtuple, LArTimePhysPrediction, LisNtuple, LVL1::eFEXDriver, LVL1::L1CaloTriggerTowerDecoratorAlg, LVL1::L1TopoSimulation, LVL1::TrigT1MBTS, OverlapRemovalGenUseAlg, PyAthena::Alg, SelectorBase< Derived >, SGInputLoader, SUSYToolsAlg, TBBPCRec, TBMWPCRec, TBScintillatorRec, TBTailCatcherRec, TBTrackInfoFromTag, TestAthenaConstraintFit, Trig::TrigMatchTestAlg, TrkEDMTestAlg, ZdcLEDNtuple, and ZdcNtuple.

Definition at line 76 of file AthAlgorithm.h.

76 {
77 throw GaudiException( "execute() or execute(const EventContext&) needs to be implemented", name(),
78 StatusCode::FAILURE );
79 }

◆ execute() [2/2]

StatusCode FPGATrackSimLogicalHitsProcessAlg::execute ( const EventContext & )
overridevirtual

Execute method with EventContext.

Override this method if acccess to the EventContext is needed.

(first track monitor, after getting tracks) create a vector of references from a vector of instances

(second track monitor, after set track parameters to truth) create a vector of references from a vector of instances

Reimplemented from AthAlgorithm.

Definition at line 148 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

149{
150
151 // Get reference to hits from StoreGate.
152 SG::ReadHandle<FPGATrackSimHitCollection> FPGAHits(m_FPGAHitKey, ctx);
153 if (!FPGAHits.isValid()) {
154 if (m_evt == 0) {
155 ATH_MSG_WARNING("Didn't receive " << FPGAHits.key() << " on first event; assuming no input events.");
156 }
157 SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
158 if (!appMgr) {
159 ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
160 return StatusCode::FAILURE;
161 }
162 return appMgr->stopRun();
163 }
164
165 // Set up write handles.
166 SG::WriteHandle<ConstDataVector<FPGATrackSimHitCollection>> FPGAHits_1st (m_FPGAHitKey_1st,ctx);
167 SG::WriteHandle<ConstDataVector<FPGATrackSimHitCollection>> FPGAHits_2nd (m_FPGAHitKey_2nd,ctx);
168 SG::WriteHandle<FPGATrackSimRoadCollection> FPGARoads_1st (m_FPGARoadKey, ctx);
169
170 // Use ConstDataVector with VIEW_ELEMENTS for non-owning const pointer storage
171 ATH_CHECK( FPGAHits_1st.record (std::make_unique<ConstDataVector<FPGATrackSimHitCollection>>(SG::VIEW_ELEMENTS)) );
172 ATH_CHECK( FPGAHits_2nd.record (std::make_unique<ConstDataVector<FPGATrackSimHitCollection>>(SG::VIEW_ELEMENTS)) );
173 auto* FPGAHits_1st_cdv = FPGAHits_1st.ptr();
174 auto* FPGAHits_2nd_cdv = FPGAHits_2nd.ptr();
175
176 ATH_CHECK( FPGARoads_1st.record (std::make_unique<FPGATrackSimRoadCollection>()));
177
178 SG::WriteHandle<FPGATrackSimTrackCollection> FPGATracks_1stHandle (m_FPGATrackKey, ctx);
179 ATH_CHECK(FPGATracks_1stHandle.record (std::make_unique<FPGATrackSimTrackCollection>()));
180
181 SG::WriteHandle<FPGATrackSimHitCollection> FPGAHitsFiltered_1st (m_FPGAHitFilteredKey, ctx);
182 ATH_CHECK( FPGAHitsFiltered_1st.record (std::make_unique<FPGATrackSimHitCollection>()));
183
184 SG::WriteHandle<FPGATrackSimClusterCollection> FPGASpacePoints (m_FPGASpacePointsKey, ctx);
185 ATH_CHECK( FPGASpacePoints.record (std::make_unique<FPGATrackSimClusterCollection>()));
186
187 // Query the event selection service to make sure this event passed cuts.
188 if (!m_evtSel->getSelectedEvent()) {
189
190 // Potentially write the output data, now it's empty and reset, but this keeps things synchronized over trees
191 if (m_writeOutputData) {
192 std::vector<FPGATrackSimRoad> roads_1st;
193 std::vector<FPGATrackSimTrack> tracks_1st;
194 auto dataFlowInfo = std::make_unique<FPGATrackSimDataFlowInfo>();
195 ATH_CHECK(writeOutputData(roads_1st, tracks_1st, dataFlowInfo.get()));
196 }
197
198 return StatusCode::SUCCESS;
199 }
200 ATH_MSG_INFO("Event accepted by: " << m_evtSel->name());
201 if ((m_writeRegion>=0)&&(m_writeRegion==m_evtSel->getRegionID())) {
202 m_writeOutputTool->activateEventOutput();
203 }
204
205 // Event passes cuts, count it. technically, DataPrep does this now.
206 m_evt++;
207 // Read event info structure. all we need this for is to propagate to our event info structures.
208 SG::ReadHandle<FPGATrackSimEventInfo> FPGAEventInfo(m_FPGAEventInfoKey, ctx);
209 if (!FPGAEventInfo.isValid()) {
210 ATH_MSG_ERROR("Could not find FPGA Event Info with key " << FPGAEventInfo.key());
211 return StatusCode::FAILURE;
212 }
213 FPGATrackSimEventInfo eventInfo = *FPGAEventInfo.cptr();
214 m_slicedFirstPixelHeader->newEvent(eventInfo);
215 m_slicedSecondPixelHeader->newEvent(eventInfo);
216 m_slicedStripHeader->newEvent(eventInfo);
217 m_slicedStripHeaderPreSP->newEvent(eventInfo);
218
219 std::vector<std::shared_ptr<const FPGATrackSimHit>> phits_output, phits_all, phits_1st, phits_2nd;
220 std::vector<const FPGATrackSimHit*> phits_strips; // this should store pointers to strip hits for this region
221
222 {
223 std::optional<Athena::Chrono> chronoSplitHits;
224 if constexpr (enableBenchmark) chronoSplitHits.emplace("1st Stage: Split hits to 1st and 2nd stage", m_chrono.get());
225
226 phits_1st.reserve(FPGAHits->size());
227 phits_2nd.reserve(FPGAHits->size());
228 ATH_MSG_DEBUG("Incoming Hits: " << FPGAHits->size());
229 auto noDelete = [](const FPGATrackSimHit*) {};
230 for (const FPGATrackSimHit* hit : *(FPGAHits.cptr())) {
231 //vectors are non-owning due to no-op deleter.
232 //should use some mechanism other than shared_ptr here (std::reference_wrapper? bare pointer?)
233 auto sharedHit = std::shared_ptr<const FPGATrackSimHit>{hit, noDelete};
234 phits_all.push_back(sharedHit);
235 if(m_noHitFilter) {
236 phits_1st.push_back(sharedHit);
237 phits_2nd.push_back(std::move(sharedHit));
238 if(hit->isStrip()) phits_strips.push_back(hit);
239 }
240 }
241
242 // Use the slicing engine tool to do the stage-based separation. Does not use the pmap.
243 if(!m_noHitFilter) m_slicingEngineTool->sliceHits(phits_all, phits_1st, phits_2nd, phits_strips);
244 }
245
246 // record 1st stage hits in SG (VIEW_ELEMENTS - no copy, just store pointers)
247 for (auto& hit : phits_1st) {
248 FPGAHits_1st_cdv->push_back(hit.get());
249 }
250
252 // The slicing engine puts strip hits into a logical event input header. That header now needs to go
253 // to the spacepoint tool if it's turned on. Those hits then get added to phits_1st or phits_2nd as appropriate.
254 if (m_doSpacepoints) {
255 std::vector<FPGATrackSimCluster> spacepoints;
256 std::optional<Athena::Chrono> chronoSPFormation;
257 if constexpr (enableBenchmark) chronoSPFormation.emplace("1st Stage: SP formation", m_chrono.get());
258 ATH_CHECK(m_spacepointsTool->DoSpacePoints(*m_slicedStripHeader, spacepoints));
259 // Move spacepoints into the output container to avoid unnecessary copies
260 for (FPGATrackSimCluster& cluster : spacepoints) {
261 FPGASpacePoints->push_back(std::move(cluster));
262 }
263
264 // Add spacepoint hits to appropriate stage (using FPGASpacePoints directly from StoreGate)
265 for (const auto& cluster : *FPGASpacePoints) {
266 // Keep the exact constituent hits of the spacepoint (not just the cluster-equivalent summary)
267 for (const auto& hit : cluster.getHitList()) {
268 (m_secondStageStrips ? phits_2nd : phits_1st).emplace_back(&hit, [](const FPGATrackSimHit*){});
269 }
270 }
271 } else {
272 // If spacepoints are disabled, add strip hits from phits_strips (filled by slicing engine)
273 // These pointers point to hits in FPGAHits, which has stable lifetime in StoreGate
274 for (const FPGATrackSimHit* hit : phits_strips) {
275 (m_secondStageStrips ? phits_2nd : phits_1st).emplace_back(hit, [](const FPGATrackSimHit*){});
276 }
277 }
278
279 // VIEW_ELEMENTS - no copy, just store pointers
280 for (auto& hit : phits_2nd) {
281 FPGAHits_2nd_cdv->push_back(hit.get());
282 }
283
284 // Add all hits including SPs to this for the HoughRootOutputTool
285 for (const FPGATrackSimHit* hit : *(FPGAHits_2nd.cptr())) {
286 phits_output.emplace_back(hit, [](const FPGATrackSimHit*){});
287 }
288 ATH_MSG_DEBUG("1st stage hits: " << phits_1st.size() << " 2nd stage hits: " << phits_2nd.size() );
289 if (phits_1st.empty()) {
290 // Potentially write the output data, now it's empty and reset, but this keeps things synchronized over trees
291 if (m_writeOutputData) {
292 std::vector<FPGATrackSimRoad> roads_1st;
293 std::vector<FPGATrackSimTrack> tracks_1st;
294 auto dataFlowInfo = std::make_unique<FPGATrackSimDataFlowInfo>();
295 ATH_CHECK(writeOutputData(roads_1st, tracks_1st, dataFlowInfo.get()));
296 }
297 return StatusCode::SUCCESS;
298 }
299
300 // Get truth tracks from DataPrep as well.
301 SG::ReadHandle<FPGATrackSimTruthTrackCollection> FPGATruthTracks(m_FPGATruthTrackKey, ctx);
302 if (!FPGATruthTracks.isValid()) {
303 ATH_MSG_ERROR("Could not find FPGA Truth Track Collection with key " << FPGATruthTracks.key());
304 return StatusCode::FAILURE;
305 }
306 // Same for offline tracks.
307 SG::ReadHandle<FPGATrackSimOfflineTrackCollection> FPGAOfflineTracks(m_FPGAOfflineTrackKey, ctx);
308 if (!FPGAOfflineTracks.isValid()) {
309 ATH_MSG_ERROR("Could not find FPGA Offline Track Collection with key " << FPGAOfflineTracks.key());
310 return StatusCode::FAILURE;
311 }
312
313
315 // roads //
317
319 const std::vector<FPGATrackSimTruthTrack>& truthtracks = *FPGATruthTracks;
321 auto nLogicalLayers = m_FPGATrackSimMapping->PlaneMap_1st(0)->getNLogiLayers();
324 auto monitorRoads = [&](auto& monitor, const auto& roads) {
325 if (!monitor.empty()) {
326 monitor->fillRoad(roads, truthtracks, nLogicalLayers);
327 }
328 };
329
330 std::vector<FPGATrackSimRoad> roads_1st;
331 {
332 std::optional<Athena::Chrono> chronoGetRoads;
333 if constexpr (enableBenchmark) chronoGetRoads.emplace("1st Stage: GetRoads", m_chrono.get());
334 // get roads
335 ATH_CHECK(m_roadFinderTool->getRoads(phits_1st, roads_1st, *(FPGATruthTracks.cptr())));
336 monitorRoads(m_1st_stage_road_monitor, roads_1st);
337 }
338
339
340 {
341 // Standard road Filter
342 std::optional<Athena::Chrono> chronoRoadFiltering;
343 if constexpr (enableBenchmark) chronoRoadFiltering.emplace("1st Stage: RoadFiltering", m_chrono.get());
344 std::vector<FPGATrackSimRoad> postfilter_roads;
345 if (m_filterRoads) {
346 ATH_CHECK(m_roadFilterTool->filterRoads(roads_1st, postfilter_roads));
347 roads_1st = std::move(postfilter_roads);
348 }
350 monitorRoads(m_1st_stage_road_post_filter_1_monitor, roads_1st);
351 }
352
353
354 {
355 // overlap removal
356 std::optional<Athena::Chrono> chronoOverlapRemoval;
357 if constexpr (enableBenchmark) chronoOverlapRemoval.emplace("1st Stage: OverlapRemoval", m_chrono.get());
358 if (m_doOverlapRemoval) ATH_CHECK(m_overlapRemovalTool_1st->runOverlapRemoval(roads_1st));
360 monitorRoads(m_1st_stage_road_post_OLR_monitor, roads_1st);
361 }
362
363
364 {
365 // Road Filter2
366 std::optional<Athena::Chrono> chronoRoadFiltering2;
367 if constexpr (enableBenchmark) chronoRoadFiltering2.emplace("1st Stage: RoadFiltering2", m_chrono.get());
368 std::vector<FPGATrackSimRoad> postfilter2_roads;
369 if (m_filterRoads2) {
370 ATH_CHECK(m_roadFilterTool2->filterRoads(roads_1st, postfilter2_roads));
371 roads_1st = std::move(postfilter2_roads);
372 }
374 monitorRoads(m_1st_stage_road_post_filter_2_monitor, roads_1st);
375 }
376
378 // tracks //
380
382 auto monitorTracks = [&](auto& monitor, const auto& tracks) {
383 if (monitor.empty()) return;
384 // prepare vector<const FPGATrackSimTrack*> regardless of input type
385 std::vector<const FPGATrackSimTrack*> track_ptrs;
386 track_ptrs.reserve(tracks.size());
387 // transform tracks into a vector of pointers
388 if constexpr (std::is_pointer_v<typename std::decay_t<decltype(tracks)>::value_type>) {
389 // tracks is std::vector<const FPGATrackSimTrack*>
390 track_ptrs.insert(track_ptrs.end(), tracks.begin(), tracks.end());
391 } else {
392 // tracks is std::vector<FPGATrackSimTrack>
393 std::transform(tracks.begin(), tracks.end(), std::back_inserter(track_ptrs), [](const auto& t) { return &t; });
394 }
395 // monitor using track pointers
396 monitor->fillTrack(track_ptrs, truthtracks, 1.e15);
397 };
398
399 std::vector<FPGATrackSimTrack> tracks_1st;
400 {
401 // Get tracks
402 std::optional<Athena::Chrono> chronoGettingTracks;
403 if constexpr (enableBenchmark) chronoGettingTracks.emplace("1st Stage: Getting Tracks", m_chrono.get());
404 if (m_doTracking) {
405 if (m_doNNTrack) {
406 ATH_MSG_DEBUG("Performing NN tracking");
407 ATH_CHECK(m_NNTrackTool->getTracks_1st(roads_1st, tracks_1st));
408 if (m_doGNNTrack) {
409 ATH_MSG_DEBUG("Performing track parameter estimation");
410 ATH_CHECK(m_NNTrackTool->setTrackParameters(tracks_1st,true,m_evtSel->getMin(), m_evtSel->getMax()));
411 }
412 } else {
413 ATH_MSG_DEBUG("Performing Linear tracking");
414 if (m_passLowestChi2TrackOnly) { // Pass only the lowest chi2 track per road
415 // Loop over roads and keep only the best track for each road
416 for (const auto& road : roads_1st) {
417 std::vector<FPGATrackSimTrack> tracksForCurrentRoad;
418
419 // Collect tracks for this road
420 std::vector<FPGATrackSimRoad> roadVec = {road};
421 ATH_CHECK(m_trackFitterTool_1st->getTracks(roadVec, tracksForCurrentRoad, m_evtSel->getMin(), m_evtSel->getMax()));
422
423 // Find the best track for this road
424 if (!tracksForCurrentRoad.empty()) {
425 auto bestTrackIter = std::min_element(
426 tracksForCurrentRoad.begin(), tracksForCurrentRoad.end(),
427 [](const FPGATrackSimTrack& a, const FPGATrackSimTrack& b) {
428 return a.getChi2ndof() < b.getChi2ndof();
429 });
430
431 if (bestTrackIter != tracksForCurrentRoad.end() && bestTrackIter->getChi2ndof() < 1.e15) {
432 tracks_1st.push_back(*bestTrackIter);
433 }
434 }
435 }
436 } else { // Pass all tracks with chi2 < 1e15
437 ATH_CHECK(m_trackFitterTool_1st->getTracks(roads_1st, tracks_1st, m_evtSel->getMin(), m_evtSel->getMax()));
438 }
439 }
440 } else { // No tracking;
441 ATH_MSG_DEBUG("No tracking. Just running dummy road2track algorith");
442 if(m_doGNNPixelSeeding) { //For GNNPixelSeeding, convert the roads to a track in the simplest form
443 for (const auto& road : roads_1st) {
444 std::vector<std::shared_ptr<const FPGATrackSimHit>> track_hits;
445 for (unsigned layer = 0; layer < road.getNLayers(); ++layer) {
446 track_hits.insert(track_hits.end(), road.getHitPtrs(layer).begin(), road.getHitPtrs(layer).end());
447 }
448
449 FPGATrackSimTrack track_cand;
450 track_cand.setNLayers(track_hits.size());
451 for (size_t ihit = 0; ihit < track_hits.size(); ++ihit) {
452 track_cand.setFPGATrackSimHit(ihit, track_hits[ihit]);
453 }
454 tracks_1st.push_back(std::move(track_cand));
455 }
456 }
457 else { roadsToTrack(roads_1st, tracks_1st, m_FPGATrackSimMapping->PlaneMap_1st(0)); }
458 }
459
460 // calculateTruth() before any monitors
461 // this explicitly calculates barcode, barcodeFrac and eventIndex
462 ATH_MSG_DEBUG("doMultiTruth = " << m_doMultiTruth);
463 if (m_doMultiTruth)
464 for (auto &track : tracks_1st)
465 track.calculateTruth();
466
469 monitorTracks(m_1st_stage_track_monitor, tracks_1st);
470 }
471
472
473 {
474 // set track parameters to truth
475 std::optional<Athena::Chrono> chronoSetTruthParams;
476 if constexpr (enableBenchmark) chronoSetTruthParams.emplace("1st Stage: Set Track Parameters to Truth", m_chrono.get());
477 //Loop over tracks and set the region for all of them, also optionally set track parameters to truth
478 for (FPGATrackSimTrack& track : tracks_1st) {
479 track.setRegion(m_region);
480 if (m_SetTruthParametersForTracks >= 0 && truthtracks.size() > 0) {
482 track.setQOverPt(truthtracks.front().getQOverPt());
483 else if (m_SetTruthParametersForTracks != 1)
484 track.setD0(truthtracks.front().getD0());
485 else if (m_SetTruthParametersForTracks != 2)
486 track.setPhi(truthtracks.front().getPhi());
487 else if (m_SetTruthParametersForTracks != 3)
488 track.setZ0(truthtracks.front().getZ0());
489 else if (m_SetTruthParametersForTracks != 4)
490 track.setEta(truthtracks.front().getEta());
491 }
492 }
495 monitorTracks(m_1st_stage_track_post_setTruth_monitor, tracks_1st);
496 }
497
498 // Loop over roads and store them in SG (after track finding to also copy the sector information)
499 for (auto const& road : roads_1st) {
500 FPGARoads_1st->push_back(road);
501 }
502
503 // Do some simple monitoring of efficiencies for truth before anything else
504 if (truthtracks.size() > 0) {
505 m_evt_truth++;
506 if (roads_1st.size() > 0) m_nRoadsFound++;
507 if (roads_1st.size() > m_maxNRoadsFound) m_maxNRoadsFound = roads_1st.size();
508 if (tracks_1st.size() > 0) {
510 if (tracks_1st.size() > m_maxNTracksTot) m_maxNTracksTot = tracks_1st.size();
511 }
512 }
513
514
515 // Apply OLR but remove tracks that failed chi2 first
516 for (auto itrack = tracks_1st.begin(); itrack != tracks_1st.end();) {
517 if (!passesChi2Cut(*itrack)) itrack = tracks_1st.erase(itrack);
518 else ++itrack;
519 }
520 // do monitoring of chi2
521 m_nTracksChi2Tot += tracks_1st.size();
523 monitorTracks(m_1st_stage_track_post_chi2_monitor, tracks_1st);
524
525 {
526 // overlap removal
527 std::optional<Athena::Chrono> chronoOverlapRemoval2;
528 if constexpr (enableBenchmark) chronoOverlapRemoval2.emplace("1st Stage: OverlapRemoval", m_chrono.get());
529 if (m_doOverlapRemoval) ATH_CHECK(m_overlapRemovalTool_1st->runOverlapRemoval(tracks_1st));
530 // monitor variables (vectors of pointers)
531 std::vector<const FPGATrackSimTrack*> tracks_1st_after_chi2;
532 std::vector<const FPGATrackSimTrack*> tracks_1st_after_overlap;
533 for (const FPGATrackSimTrack& track : tracks_1st) {
534 if (track.passedOR()) {
535 tracks_1st_after_overlap.push_back(&track);
537 }
538 }
540 monitorTracks(m_1st_stage_track_post_OLR_monitor, tracks_1st_after_overlap);
541 }
542
543 m_nRoadsTot += roads_1st.size();
544 m_nTracksTot += tracks_1st.size();
545 // Do some simple monitoring of efficiencies now for tracks passing chi2 and potentially OLR
546 if (truthtracks.size() > 0) {
547
548 unsigned npasschi2(0);
549 unsigned npasschi2OLR(0);
550 if (tracks_1st.size() > 0) {
551 for (const auto& track : tracks_1st) { // these passed the chi2
552 npasschi2++;
553 if (track.passedOR()) {
554 npasschi2OLR++;
555 }
556 }
557 }
558 if (npasschi2 > m_maxNTracksChi2Tot) m_maxNTracksChi2Tot = npasschi2;
559 if (npasschi2OLR > m_maxNTracksChi2OLRTot) m_maxNTracksChi2OLRTot = npasschi2OLR;
560 if (npasschi2 > 0) m_nTracksChi2Found++;
561 if (npasschi2OLR > 0) m_nTracksChi2OLRFound++;
562 }
563
564 // Now pick hits for seeding, this changes the tracks to have fewer hits
565 if (m_keepHitsStrategy > 0) MakeSeedTracks(tracks_1st);
566
567 for (const FPGATrackSimTrack& track : tracks_1st) {
568 FPGATracks_1stHandle->push_back(track);
569 }
570
571 // Now, we may want to do large-radius tracking on the hits not used by the first stage tracking.
572 // This follows overlap removal.
573 std::vector<FPGATrackSimRoad> roadsLRT;
574 std::vector<FPGATrackSimTrack> tracksLRT; // currently empty
575 if (m_doLRT) {
576 // Filter out hits that are on successful first-stage tracks
577 std::vector<std::shared_ptr<const FPGATrackSimHit>> remainingHits;
578
580 ATH_MSG_DEBUG("Doing hit filtering based on prompt tracks.");
581 ATH_CHECK(m_LRTRoadFilterTool->filterUsedHits(tracks_1st, phits_1st, remainingHits));
582
583 for (const auto &Hit : remainingHits) FPGAHitsFiltered_1st->push_back(new FPGATrackSimHit(*Hit));
584
585 } else {
586 ATH_MSG_DEBUG("No hit filtering requested; using all hits for LRT.");
587 remainingHits = std::move(phits_1st);
588 }
589
590 // Get LRT roads with remaining hits
591 ATH_MSG_DEBUG("Finding LRT roads");
592 ATH_CHECK(m_LRTRoadFinderTool->getRoads( remainingHits, roadsLRT ));
593 }
594
595 auto dataFlowInfo = std::make_unique<FPGATrackSimDataFlowInfo>();
596
597 // Write the output and reset
598 if (m_writeOutputData) {
599 ATH_CHECK(writeOutputData(roads_1st, tracks_1st, dataFlowInfo.get()));
600 }
601
602 // This one we can do-- by passing in truth and offline tracks via storegate above (*FPGAOfflineTracks).
604 ATH_MSG_DEBUG("Running HoughRootOutputTool in 1st stage.");
605
606 SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
607 if (!appMgr) {
608 ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
609 return StatusCode::FAILURE;
610 }
611
612 // Create output ROOT file
613 ATH_CHECK(m_houghRootOutputTool->fillTree(tracks_1st, truthtracks, *FPGAOfflineTracks, phits_output, m_writeOutNonSPStripHits, false));
614 }
615
616 // Reset data pointers
619
620 return StatusCode::SUCCESS;
621}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
void roadsToTrack(std::vector< FPGATrackSimRoad > &roads, std::vector< FPGATrackSimTrack > &track_cands, const FPGATrackSimPlaneMap *pmap)
static Double_t a
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_monitor
FPGATrackSimLogicalEventInputHeader * m_slicedHitHeader
ToolHandle< FPGATrackSimSpacePointsToolI > m_spacepointsTool
ToolHandle< FPGATrackSimOverlapRemovalTool > m_overlapRemovalTool_1st
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_post_OLR_monitor
ToolHandle< FPGATrackSimSlicingEngineTool > m_slicingEngineTool
FPGATrackSimLogicalEventInputHeader * m_slicedStripHeaderPreSP
SG::WriteHandleKey< ConstDataVector< FPGATrackSimHitCollection > > m_FPGAHitKey_1st
ToolHandle< FPGATrackSimHoughRootOutputTool > m_houghRootOutputTool
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_post_filter_2_monitor
void MakeSeedTracks(std::vector< FPGATrackSimTrack > &tracks)
FPGATrackSimLogicalEventInputHeader * m_slicedFirstPixelHeader
ToolHandle< IFPGATrackSimRoadFilterTool > m_roadFilterTool
FPGATrackSimLogicalEventInputHeader * m_slicedSecondPixelHeader
SG::WriteHandleKey< FPGATrackSimRoadCollection > m_FPGARoadKey
ToolHandle< FPGATrackSimNNTrackTool > m_NNTrackTool
ToolHandle< FPGATrackSimLLPRoadFilterTool > m_LRTRoadFilterTool
bool passesChi2Cut(const FPGATrackSimTrack &track)
ToolHandle< IFPGATrackSimRoadFinderTool > m_LRTRoadFinderTool
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_post_OLR_monitor
ToolHandle< FPGATrackSimOutputHeaderTool > m_writeOutputTool
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_post_setTruth_monitor
SG::ReadHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey
ToolHandle< FPGATrackSimTrackFitterTool > m_trackFitterTool_1st
ToolHandle< IFPGATrackSimRoadFilterTool > m_roadFilterTool2
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_post_chi2_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_monitor
StatusCode writeOutputData(const std::vector< FPGATrackSimRoad > &roads_1st, std::vector< FPGATrackSimTrack > const &tracks_1st, FPGATrackSimDataFlowInfo const *dataFlowInfo)
FPGATrackSimLogicalEventOutputHeader * m_logicEventOutputHeader
SG::WriteHandleKey< FPGATrackSimClusterCollection > m_FPGASpacePointsKey
SG::WriteHandleKey< ConstDataVector< FPGATrackSimHitCollection > > m_FPGAHitKey_2nd
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_post_filter_1_monitor
SG::ReadHandleKey< FPGATrackSimOfflineTrackCollection > m_FPGAOfflineTrackKey
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
ToolHandle< FPGATrackSimRoadUnionTool > m_roadFinderTool
SG::WriteHandleKey< FPGATrackSimTrackCollection > m_FPGATrackKey
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_evtSel
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitFilteredKey
SG::ReadHandleKey< FPGATrackSimTruthTrackCollection > m_FPGATruthTrackKey
SG::ReadHandleKey< FPGATrackSimEventInfo > m_FPGAEventInfoKey
FPGATrackSimLogicalEventInputHeader * m_slicedStripHeader
void setFPGATrackSimHit(unsigned i, std::shared_ptr< const FPGATrackSimHit > hit)
void setNLayers(int)
set the number of layers in the track.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
@ layer
Definition HitInfo.h:79
constexpr bool enableBenchmark

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ filterPassed()

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return execState( Gaudi::Hive::currentContext() ).filterPassed();
96}

◆ finalize()

StatusCode FPGATrackSimLogicalHitsProcessAlg::finalize ( )
overridevirtual

Definition at line 659 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

660{
661 ATH_MSG_INFO("PRINTING FPGATRACKSIM SIMPLE STATS");
662 ATH_MSG_INFO("========================================================================================");
663 ATH_MSG_INFO("Ran on events = " << m_evt);
664 ATH_MSG_INFO("Inclusive efficiency to find a road = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nRoadsFound/(float)m_evt_truth)));
666 ATH_MSG_INFO("New Inclusive efficiency to find a road = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_road_monitor->getNElements()/(float)m_evt_truth)));
668 ATH_MSG_INFO("New Inclusive efficiency to find a road passing filter1 = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_road_post_filter_1_monitor->getNElements()/(float)m_evt_truth)));
670 ATH_MSG_INFO("New Inclusive efficiency to find a road passing OLR = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_road_post_OLR_monitor->getNElements()/(float)m_evt_truth)));
672 ATH_MSG_INFO("New Inclusive efficiency to find a road passing filter2 = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_road_post_filter_2_monitor->getNElements()/(float)m_evt_truth)));
673
675 ATH_MSG_INFO("Inclusive efficiency to find a track = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nTracksFound/(float)m_evt_truth)));
676 ATH_MSG_INFO("New Inclusive efficiency to find a track = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_track_monitor->getNElements()/(float)m_evt_truth)));
678 ATH_MSG_INFO("New Inclusive efficiency to find a track after set truth= " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_track_post_setTruth_monitor->getNElements()/(float)m_evt_truth)));
680 ATH_MSG_INFO("Inclusive efficiency to find a track passing chi2 = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nTracksChi2Found/(float)m_evt_truth)));
681 ATH_MSG_INFO("New Inclusive efficiency to find a track passing chi2 = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_track_post_chi2_monitor->getNElements()/(float)m_evt_truth)));
683 ATH_MSG_INFO("Inclusive efficiency to find a track passing chi2 and OLR = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nTracksChi2OLRFound/(float)m_evt_truth)));
684 ATH_MSG_INFO("New Inclusive efficiency to find a track passing chi2 and OLR = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_1st_stage_track_post_OLR_monitor->getNElements()/(float)m_evt_truth)));
685
686
687 ATH_MSG_INFO("Number of 1st stage roads/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nRoadsTot/(float)m_evt)));
689 ATH_MSG_INFO("New Number of 1st stage roads/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_road_monitor->getTotNElements()/(float)m_evt)));
691 ATH_MSG_INFO("New Number of 1st stage roads passing filter1/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_road_post_filter_1_monitor->getTotNElements()/(float)m_evt)));
693 ATH_MSG_INFO("New Number of 1st stage roads passing OLR/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_road_post_OLR_monitor->getTotNElements()/(float)m_evt)));
695 ATH_MSG_INFO("New Number of 1st stage roads passing filter2/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_road_post_filter_2_monitor->getTotNElements()/(float)m_evt)));
696
698 ATH_MSG_INFO("Number of 1st stage track combinations/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nTracksTot/(float)m_evt)));
699 ATH_MSG_INFO("New Number of 1st stage track combinations/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_track_monitor->getTotNElements()/(float)m_evt)));
701 ATH_MSG_INFO("New Number of 1st stage track after set truth/event= " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_track_post_setTruth_monitor->getTotNElements()/(float)m_evt)));
703 ATH_MSG_INFO("Number of 1st stage tracks passing chi2/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nTracksChi2Tot/(float)m_evt)));
704 ATH_MSG_INFO("New Number of 1st stage track passing chi2/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_track_post_chi2_monitor->getTotNElements()/(float)m_evt)));
706 ATH_MSG_INFO("Number of 1st stage tracks passing chi2 and OLR/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nTracksChi2OLRTot/(float)m_evt)));
707 ATH_MSG_INFO("New Number of 1st stage track passing chi2 and OLR/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_1st_stage_track_post_OLR_monitor->getTotNElements()/(float)m_evt)));
708 ATH_MSG_INFO("========================================================================================");
709
710 ATH_MSG_INFO("Max number of 1st stage roads in an event = " << m_maxNRoadsFound);
712 ATH_MSG_INFO("New Max number of 1st stage roads in an event = " << m_1st_stage_road_monitor->getMaxNElements());
714 ATH_MSG_INFO("New Max number of 1st stage roads passing filter1 in an event = " << m_1st_stage_road_post_filter_1_monitor->getMaxNElements());
716 ATH_MSG_INFO("New Max number of 1st stage roads passing OLR in an event = " << m_1st_stage_road_post_OLR_monitor->getMaxNElements());
718 ATH_MSG_INFO("New Max number of 1st stage roads passing filter2 in an event = " << m_1st_stage_road_post_filter_2_monitor->getMaxNElements());
719
721 ATH_MSG_INFO("Max number of 1st stage track combinations in an event = " << m_maxNTracksTot);
722 ATH_MSG_INFO("New Max number of 1st stage track combinations in an event = " << m_1st_stage_track_monitor->getMaxNElements());
724 ATH_MSG_INFO("New Max number of 1st stage tracks after set truth in an event = " << m_1st_stage_track_post_setTruth_monitor->getMaxNElements());
726 ATH_MSG_INFO("Max number of 1st stage tracks passing chi2 in an event = " << m_maxNTracksChi2Tot);
727 ATH_MSG_INFO("New Max number of 1st stage tracks passing chi2 in an event = " << m_1st_stage_track_post_chi2_monitor->getMaxNElements());
729 ATH_MSG_INFO("Max number of 1st stage tracks passing chi2 and OLR in an event = " << m_maxNTracksChi2OLRTot);
730 ATH_MSG_INFO("New Max number of 1st stage tracks passing chi2 and OLR in an event = " << m_1st_stage_track_post_OLR_monitor->getMaxNElements());
731 ATH_MSG_INFO("========================================================================================");
732
733 return StatusCode::SUCCESS;
734}

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ initialize()

StatusCode FPGATrackSimLogicalHitsProcessAlg::initialize ( )
overridevirtual

Definition at line 51 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

52{
53 // Dump the configuration to make sure it propagated through right
54 const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
55 for( Gaudi::Details::PropertyBase* prop : props ) {
56 if (prop->ownerTypeName()==this->type()) {
57 ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
58 }
59 }
60
61 std::stringstream ss(m_description);
62 std::string line;
63 ATH_MSG_INFO("Tag config:");
64 if (!m_description.empty()) {
65 while (std::getline(ss, line, '\n')) {
66 ATH_MSG_INFO('\t' << line);
67 }
68 }
69 ATH_CHECK(m_roadFinderTool.retrieve());
70 ATH_CHECK(m_LRTRoadFilterTool.retrieve(EnableTool{m_doLRT}));
71 ATH_CHECK(m_LRTRoadFinderTool.retrieve(EnableTool{m_doLRT}));
72 ATH_CHECK(m_houghRootOutputTool.retrieve(EnableTool{m_doHoughRootOutput1st}));
73 ATH_CHECK(m_NNTrackTool.retrieve(EnableTool{m_doNNTrack}));
74 ATH_CHECK(m_roadFilterTool.retrieve(EnableTool{m_filterRoads}));
75 ATH_CHECK(m_roadFilterTool2.retrieve(EnableTool{m_filterRoads2}));
76
77 ATH_CHECK(m_spacepointsTool.retrieve(EnableTool{m_doSpacepoints}));
78
79 ATH_CHECK(m_trackFitterTool_1st.retrieve(EnableTool{m_doTracking}));
81 ATH_CHECK(m_writeOutputTool.retrieve());
84
85
99
100
101
102 ATH_MSG_DEBUG("initialize() Instantiating root objects");
103
104 // ROOT branches created for test vectors.
105 m_logicEventOutputHeader = m_writeOutputTool->addOutputBranch(m_outputBranch.value(), true);
106
108
109 // Updated slicing engine test vectors will have three streams.
113
114 // We also need a pre- and post- SP copy of the SPs.
116
117 // Connect the slicing tools accordingly. We probably no longer need to hook up the roadfinder here.
120
121 ATH_MSG_DEBUG("initialize() Setting branch");
122
123 if (!m_monTool.empty())
124 ATH_CHECK(m_monTool.retrieve());
125
126 ATH_CHECK( m_FPGASpacePointsKey.initialize() );
127 ATH_CHECK( m_FPGAHitFilteredKey.initialize() );
128 ATH_CHECK( m_FPGARoadKey.initialize() );
129 ATH_CHECK( m_FPGATrackKey.initialize() );
130 ATH_CHECK( m_FPGAHitKey.initialize() );
131 ATH_CHECK( m_FPGAHitKey_1st.initialize() );
132 ATH_CHECK( m_FPGAHitKey_2nd.initialize() );
133 ATH_CHECK( m_FPGATruthTrackKey.initialize() );
134 ATH_CHECK( m_FPGAOfflineTrackKey.initialize() );
135 ATH_CHECK( m_FPGAEventInfoKey.initialize() );
136
137 ATH_CHECK( m_chrono.retrieve() );
138 ATH_MSG_DEBUG("initialize() Finished");
139
140 return StatusCode::SUCCESS;
141}
static Double_t ss
Gaudi::Property< std::string > m_sliceSecondPixelBranch
ToolHandle< GenericMonitoringTool > m_monTool
Gaudi::Property< std::string > m_sliceStripBranchPreSP
Gaudi::Property< std::string > m_sliceFirstPixelBranch

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 118 of file AthAlgorithm.h.

118{ return false; }

◆ MakeSeedTracks()

void FPGATrackSimLogicalHitsProcessAlg::MakeSeedTracks ( std::vector< FPGATrackSimTrack > & tracks)
private

Definition at line 779 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

780{
781 for (auto &track : tracks) {
782 const auto& hitptrs = track.getFPGATrackSimHitPtrs();
783 layer_bitmask_t hitmask = 0x0;
784 for (unsigned ihit = 0; ihit < hitptrs.size(); ihit++) { // can't just use hit mask directly from track because that is for coordinates
785 if (hitptrs[ihit] && hitptrs[ihit]->isReal()) hitmask |= (0x1 << ihit);
786 }
787 std::vector<unsigned> toUse = PickHitsToUse(hitmask);
788 track.setNLayers(hitptrs.size()); //clears old hits
789 for (unsigned lyrToUse : toUse) {
790 track.setFPGATrackSimHit(lyrToUse, hitptrs.at(lyrToUse));
791 }
792 }
793}
uint32_t layer_bitmask_t
std::vector< unsigned > PickHitsToUse(layer_bitmask_t) const

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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.

◆ passesChi2Cut()

bool FPGATrackSimLogicalHitsProcessAlg::passesChi2Cut ( const FPGATrackSimTrack & track)
private

Definition at line 755 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

755 {
756 bool retv = track.getChi2ndof() < m_trackScoreCut.value();
757
758 if (int(track.getFPGATrackSimHitPtrs().size()) < track.getNHits())
759 ATH_MSG_FATAL("More hits than layers on track");
760
761 unsigned missedhits = track.getFPGATrackSimHitPtrs().size() - track.getNHits();
762 if ((missedhits>=m_track_Chi2PhiCut.value().size()) ||
763 (missedhits>=m_track_Chi2EtaCut.value().size())) {
764 ATH_MSG_ERROR("More missed hits than entries in Chi2 cut " <<missedhits << " " << m_track_Chi2PhiCut.value().size() << " " <<m_track_Chi2EtaCut.value().size()
765 << track.getFPGATrackSimHitPtrs().size() << " " << track.getNHits());
766 }
767
768 if (m_track_Chi2PhiCut.value().at(missedhits) > 0) {
769 retv &= track.getChi2Phi() < m_track_Chi2PhiCut.value().at(missedhits);
770 }
771 if (m_track_Chi2EtaCut.value().at(missedhits) > 0) {
772 retv &= track.getChi2Eta() < m_track_Chi2EtaCut.value().at(missedhits);
773 }
774
775
776 return retv;
777}
#define ATH_MSG_FATAL(x)
Gaudi::Property< std::vector< float > > m_track_Chi2PhiCut
Gaudi::Property< std::vector< float > > m_track_Chi2EtaCut

◆ PickHitsToUse()

std::vector< unsigned > FPGATrackSimLogicalHitsProcessAlg::PickHitsToUse ( layer_bitmask_t hitmask) const
private

Definition at line 796 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

797{
798 std::vector<unsigned> toUse;
799 switch (m_keepHitsStrategy) {
800 case 1: // try and pick hits furthest apart, use only 3
801 {
802 if (hitmask == 0x1f) { // miss no hits
803 toUse = {0,2,4};
804 }
805 else if (hitmask == 0x1e) { // miss inner layer, ie layer 0
806 toUse = {1,3,4};
807 }
808 else if (hitmask == 0x1d) { // miss layer 1
809 toUse = {0,2,4};
810 }
811 else if (hitmask == 0x1b) { // miss layer 2
812 toUse = {0,3,4};
813 }
814 else if (hitmask == 0x17) { // miss layer 3
815 toUse = {0,2,4};
816 }
817 else if (hitmask == 0x0f) { // miss layer 4
818 toUse = {0,2,3};
819 }
820 }
821 break;
822 case 2: // pick inner hits, use only 3
823 {
824 if (hitmask == 0x1f) { // miss no hits
825 toUse = {0,1,2};
826 }
827 else if (hitmask == 0x1e) { // miss inner layer, ie layer 0
828 toUse = {1,2,3};
829 }
830 else if (hitmask == 0x1d) { // miss layer 1
831 toUse = {0,2,3};
832 }
833 else if (hitmask == 0x1b) { // miss layer 2
834 toUse = {0,1,3};
835 }
836 else if (hitmask == 0x17) { // miss layer 3
837 toUse = {0,1,2};
838 }
839 else if (hitmask == 0x0f) { // miss layer 4
840 toUse = {0,1,2};
841 }
842 }
843 break;
844 case 3: // pick outer hits, use only 3
845 {
846 if (hitmask == 0x1f) { // miss no hits
847 toUse = {2,3,4};
848 }
849 else if (hitmask == 0x1e) { // miss inner layer, ie layer 0
850 toUse = {2,3,4};
851 }
852 else if (hitmask == 0x1d) { // miss layer 1
853 toUse = {2,3,4};
854 }
855 else if (hitmask == 0x1b) { // miss layer 2
856 toUse = {1,3,4};
857 }
858 else if (hitmask == 0x17) { // miss layer 3
859 toUse = {1,2,4};
860 }
861 else if (hitmask == 0x0f) { // miss layer 4
862 toUse = {1,2,3};
863 }
864 }
865 break;
866 case 4: // keep 4 hits, choose middle one to drop if necessary
867 {
868 if (hitmask == 0x1f) { // miss no hits
869 toUse = {0,1,2,3};
870 }
871 else if (hitmask == 0x1e) { // miss inner layer, ie layer 0
872 toUse = {1,2,3,4};
873 }
874 else if (hitmask == 0x1d) { // miss layer 1
875 toUse = {0,2,3,4};
876 }
877 else if (hitmask == 0x1b) { // miss layer 2
878 toUse = {0,1,3,4};
879 }
880 else if (hitmask == 0x17) { // miss layer 3
881 toUse = {0,1,2,4};
882 }
883 else if (hitmask == 0x0f) { // miss layer 4
884 toUse = {0,1,2,3};
885 }
886 }
887 break;
888 }
889 return toUse;
890}

◆ printHitSubregions()

void FPGATrackSimLogicalHitsProcessAlg::printHitSubregions ( std::vector< FPGATrackSimHit > const & hits)
private

Definition at line 740 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

741{
742 ATH_MSG_WARNING("Hit regions:");
743 for (const auto& hit : hits)
744 {
745 std::vector<uint32_t> regions = m_FPGATrackSimMapping->SubRegionMap()->getRegions(hit);
746 std::stringstream ss;
747 for (auto r : regions)
748 ss << r << ",";
749 ATH_MSG_WARNING("\t[" << ss.str() << "]");
750 }
751}
static const std::vector< std::string > regions
int r
Definition globals.cxx:22

◆ renounce()

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 > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
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)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 execState( Gaudi::Hive::currentContext() ).setFilterPassed(state);
100}

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

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 AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

◆ writeOutputData()

StatusCode FPGATrackSimLogicalHitsProcessAlg::writeOutputData ( const std::vector< FPGATrackSimRoad > & roads_1st,
std::vector< FPGATrackSimTrack > const & tracks_1st,
FPGATrackSimDataFlowInfo const * dataFlowInfo )
private

Definition at line 628 of file FPGATrackSimLogicalHitsProcessAlg.cxx.

631{
633
634 ATH_MSG_DEBUG("NFPGATrackSimRoads_1st = " << roads_1st.size() << ", NFPGATrackSimTracks_1st = " << tracks_1st.size());
635
636 if (!m_writeOutputData) return StatusCode::SUCCESS;
637 m_logicEventOutputHeader->reserveFPGATrackSimRoads_1st(roads_1st.size());
638 m_logicEventOutputHeader->addFPGATrackSimRoads_1st(roads_1st);
639
640 m_logicEventOutputHeader->reserveFPGATrackSimTracks_1st(tracks_1st.size());
641 m_logicEventOutputHeader->addFPGATrackSimTracks_1st(tracks_1st);
642
643 m_logicEventOutputHeader->setDataFlowInfo(*dataFlowInfo);
644 ATH_MSG_DEBUG(m_logicEventOutputHeader->getDataFlowInfo());
645
646 // It would be nice to rearrange this so both algorithms use one instance of this tool, I think.
647 // Which means that dataprep can't call writeData because that does Fill().
648 ATH_CHECK(m_writeOutputTool->writeData());
649
650
651
652 return StatusCode::SUCCESS;
653}

Member Data Documentation

◆ m_1st_stage_road_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_monitor {this, "FirstStageRoadMonitor", "FPGATrackSimTrackMonitor", "First Stage Road Monitor"}
private

Definition at line 106 of file FPGATrackSimLogicalHitsProcessAlg.h.

106{this, "FirstStageRoadMonitor", "FPGATrackSimTrackMonitor", "First Stage Road Monitor"};

◆ m_1st_stage_road_post_filter_1_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_post_filter_1_monitor {this, "FirstStageRoadPostFilter1Monitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Filter1 Monitor"}
private

Definition at line 108 of file FPGATrackSimLogicalHitsProcessAlg.h.

108{this, "FirstStageRoadPostFilter1Monitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Filter1 Monitor"};

◆ m_1st_stage_road_post_filter_2_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_post_filter_2_monitor {this, "FirstStageRoadPostFilter2Monitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Filter2 Monitor"}
private

Definition at line 112 of file FPGATrackSimLogicalHitsProcessAlg.h.

112{this, "FirstStageRoadPostFilter2Monitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Filter2 Monitor"};

◆ m_1st_stage_road_post_OLR_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_post_OLR_monitor {this, "FirstStageRoadPostOverlapRemovalMonitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Overlap Removal Monitor"}
private

Definition at line 110 of file FPGATrackSimLogicalHitsProcessAlg.h.

110{this, "FirstStageRoadPostOverlapRemovalMonitor", "FPGATrackSimTrackMonitor", "First Stage Road Post Overlap Removal Monitor"};

◆ m_1st_stage_track_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_monitor {this, "FirstStageTrackMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Monitor"}
private

Definition at line 115 of file FPGATrackSimLogicalHitsProcessAlg.h.

115{this, "FirstStageTrackMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Monitor"};

◆ m_1st_stage_track_post_chi2_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_post_chi2_monitor {this, "FirstStageTrackPostChi2Monitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Chi2 Monitor"}
private

Definition at line 119 of file FPGATrackSimLogicalHitsProcessAlg.h.

119{this, "FirstStageTrackPostChi2Monitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Chi2 Monitor"};

◆ m_1st_stage_track_post_OLR_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_post_OLR_monitor {this, "FirstStageTrackPostOverlapRemovalTrackMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Overlap Removal Monitor"}
private

Definition at line 121 of file FPGATrackSimLogicalHitsProcessAlg.h.

121{this, "FirstStageTrackPostOverlapRemovalTrackMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Overlap Removal Monitor"};

◆ m_1st_stage_track_post_setTruth_monitor

ToolHandle<FPGATrackSimTrackMonitor> FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_post_setTruth_monitor {this, "FirstStageTrackPostSetTruthMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Set to TruthTracks Monitor"}
private

Definition at line 117 of file FPGATrackSimLogicalHitsProcessAlg.h.

117{this, "FirstStageTrackPostSetTruthMonitor", "FPGATrackSimTrackMonitor", "First Stage Track Post Set to TruthTracks Monitor"};

◆ m_chrono

ServiceHandle<IChronoStatSvc> FPGATrackSimLogicalHitsProcessAlg::m_chrono {this,"ChronoStatSvc","ChronoStatSvc"}
private

Definition at line 125 of file FPGATrackSimLogicalHitsProcessAlg.h.

125{this,"ChronoStatSvc","ChronoStatSvc"};

◆ m_description

std::string FPGATrackSimLogicalHitsProcessAlg::m_description
private

Definition at line 81 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doGNNPixelSeeding

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doGNNPixelSeeding {this, "DoGNNPixelSeeding", false, "Flag to configure for GNN Pixel Seeding" }
private

Definition at line 139 of file FPGATrackSimLogicalHitsProcessAlg.h.

139{this, "DoGNNPixelSeeding", false, "Flag to configure for GNN Pixel Seeding" };

◆ m_doGNNTrack

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doGNNTrack {this, "DoGNNTrack", false, "Run tracking algorithm for GNN" }
private

Definition at line 138 of file FPGATrackSimLogicalHitsProcessAlg.h.

138{this, "DoGNNTrack", false, "Run tracking algorithm for GNN" };

◆ m_doHoughRootOutput1st

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doHoughRootOutput1st {this, "DoHoughRootOutput1st", false, "Dump output from the Hough Transform to flat ntuples"}
private

Definition at line 136 of file FPGATrackSimLogicalHitsProcessAlg.h.

136{this, "DoHoughRootOutput1st", false, "Dump output from the Hough Transform to flat ntuples"};

◆ m_doLRT

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doLRT {this, "doLRT", false, "Enable Large Radius Tracking"}
private

Definition at line 140 of file FPGATrackSimLogicalHitsProcessAlg.h.

140{this, "doLRT", false, "Enable Large Radius Tracking"};

◆ m_doLRTHitFiltering

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doLRTHitFiltering {this, "LRTHitFiltering", false, "flag to enable hit/cluster filtering for LRT"}
private

Definition at line 141 of file FPGATrackSimLogicalHitsProcessAlg.h.

141{this, "LRTHitFiltering", false, "flag to enable hit/cluster filtering for LRT"};

◆ m_doMissingHitsChecks

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doMissingHitsChecks {this, "DoMissingHitsChecks", false}
private

Definition at line 133 of file FPGATrackSimLogicalHitsProcessAlg.h.

133{this, "DoMissingHitsChecks", false};

◆ m_doMultiTruth

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doMultiTruth {this, "doMultiTruth", true, "flag to enable the use of multi-truth information for hits"}
private

Definition at line 131 of file FPGATrackSimLogicalHitsProcessAlg.h.

131{this, "doMultiTruth", true, "flag to enable the use of multi-truth information for hits"};

◆ m_doNNTrack

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doNNTrack {this, "DoNNTrack_1st", false, "Run NN track filtering for 1st stage"}
private

Definition at line 137 of file FPGATrackSimLogicalHitsProcessAlg.h.

137{this, "DoNNTrack_1st", false, "Run NN track filtering for 1st stage"};

◆ m_doOverlapRemoval

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doOverlapRemoval {this, "doOverlapRemoval", true , "flag to enable the overlap removal"}
private

Definition at line 132 of file FPGATrackSimLogicalHitsProcessAlg.h.

132{this, "doOverlapRemoval", true , "flag to enable the overlap removal"}; // defaul true to not change functionality

◆ m_doSpacepoints

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doSpacepoints {this, "Spacepoints", false, "flag to enable the spacepoint formation"}
private

Definition at line 129 of file FPGATrackSimLogicalHitsProcessAlg.h.

129{this, "Spacepoints", false, "flag to enable the spacepoint formation"};

◆ m_doTracking

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_doTracking {this, "tracking", false, "flag to enable the tracking"}
private

Definition at line 130 of file FPGATrackSimLogicalHitsProcessAlg.h.

130{this, "tracking", false, "flag to enable the tracking"};

◆ m_evt

double FPGATrackSimLogicalHitsProcessAlg::m_evt = 0
private

Definition at line 179 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_evt_truth

double FPGATrackSimLogicalHitsProcessAlg::m_evt_truth = 0
private

Definition at line 185 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_evtSel

ServiceHandle<IFPGATrackSimEventSelectionSvc> FPGATrackSimLogicalHitsProcessAlg::m_evtSel {this, "eventSelector", "", "Event selection Svc"}
private

Definition at line 97 of file FPGATrackSimLogicalHitsProcessAlg.h.

97{this, "eventSelector", "", "Event selection Svc"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 121 of file AthAlgorithm.h.

◆ m_filterRoads

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_filterRoads {this, "FilterRoads", false, "enable first road filter"}
private

Definition at line 134 of file FPGATrackSimLogicalHitsProcessAlg.h.

134{this, "FilterRoads", false, "enable first road filter"};

◆ m_filterRoads2

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_filterRoads2 {this, "FilterRoads2", false, "enable second road filter"}
private

Definition at line 135 of file FPGATrackSimLogicalHitsProcessAlg.h.

135{this, "FilterRoads2", false, "enable second road filter"};

◆ m_FPGAEventInfoKey

SG::ReadHandleKey<FPGATrackSimEventInfo> FPGATrackSimLogicalHitsProcessAlg::m_FPGAEventInfoKey {this, "FPGATrackSimEventInfoKey", "FPGAEventInfo", "FPGATrackSim event info"}
private

Definition at line 221 of file FPGATrackSimLogicalHitsProcessAlg.h.

221{this, "FPGATrackSimEventInfoKey", "FPGAEventInfo", "FPGATrackSim event info"};

◆ m_FPGAHitFilteredKey

SG::WriteHandleKey<FPGATrackSimHitCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitFilteredKey {this, "FPGATrackSimHitFiltered1stKey","FPGAHitsFiltered_1st","FPGATrackSim Filtered Hits 1st stage key"}
private

Definition at line 215 of file FPGATrackSimLogicalHitsProcessAlg.h.

215{this, "FPGATrackSimHitFiltered1stKey","FPGAHitsFiltered_1st","FPGATrackSim Filtered Hits 1st stage key"};

◆ m_FPGAHitKey

SG::ReadHandleKey<FPGATrackSimHitCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitKey {this, "FPGATrackSimHitKey","FPGAHits", "FPGATrackSim hits key"}
private

Definition at line 207 of file FPGATrackSimLogicalHitsProcessAlg.h.

207{this, "FPGATrackSimHitKey","FPGAHits", "FPGATrackSim hits key"};

◆ m_FPGAHitKey_1st

SG::WriteHandleKey<ConstDataVector<FPGATrackSimHitCollection> > FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitKey_1st {this, "FPGATrackSimHitKey_1st","FPGAHits_1st","FPGATrackSim 1st stage hits key"}
private

Definition at line 213 of file FPGATrackSimLogicalHitsProcessAlg.h.

213{this, "FPGATrackSimHitKey_1st","FPGAHits_1st","FPGATrackSim 1st stage hits key"};

◆ m_FPGAHitKey_2nd

SG::WriteHandleKey<ConstDataVector<FPGATrackSimHitCollection> > FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitKey_2nd {this, "FPGATrackSimHitKey_2nd","FPGAHits_2nd","FPGATrackSim 2nd stage hits key"}
private

Definition at line 214 of file FPGATrackSimLogicalHitsProcessAlg.h.

214{this, "FPGATrackSimHitKey_2nd","FPGAHits_2nd","FPGATrackSim 2nd stage hits key"};

◆ m_FPGAOfflineTrackKey

SG::ReadHandleKey<FPGATrackSimOfflineTrackCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGAOfflineTrackKey {this, "FPGATrackSimOfflineTrackKey", "FPGAOfflineTracks", "FPGATrackSim offline tracks"}
private

Definition at line 220 of file FPGATrackSimLogicalHitsProcessAlg.h.

220{this, "FPGATrackSimOfflineTrackKey", "FPGAOfflineTracks", "FPGATrackSim offline tracks"};

◆ m_FPGARoadKey

SG::WriteHandleKey<FPGATrackSimRoadCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGARoadKey {this, "FPGATrackSimRoad1stKey","FPGARoads_1st","FPGATrackSim Roads 1st stage key"}
private

Definition at line 216 of file FPGATrackSimLogicalHitsProcessAlg.h.

216{this, "FPGATrackSimRoad1stKey","FPGARoads_1st","FPGATrackSim Roads 1st stage key"};

◆ m_FPGASpacePointsKey

SG::WriteHandleKey<FPGATrackSimClusterCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGASpacePointsKey {this, "FPGATrackSimSpacePoints1stKey","FPGASpacePoints_1st","FPGATrackSim SpacePoints key"}
private

Definition at line 210 of file FPGATrackSimLogicalHitsProcessAlg.h.

210{this, "FPGATrackSimSpacePoints1stKey","FPGASpacePoints_1st","FPGATrackSim SpacePoints key"};

◆ m_FPGATrackKey

SG::WriteHandleKey<FPGATrackSimTrackCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGATrackKey {this, "FPGATrackSimTrack1stKey","FPGATracks_1st","FPGATrackSim Tracks 1st stage key"}
private

Definition at line 217 of file FPGATrackSimLogicalHitsProcessAlg.h.

217{this, "FPGATrackSimTrack1stKey","FPGATracks_1st","FPGATrackSim Tracks 1st stage key"};

◆ m_FPGATrackSimMapping

ServiceHandle<IFPGATrackSimMappingSvc> FPGATrackSimLogicalHitsProcessAlg::m_FPGATrackSimMapping {this, "FPGATrackSimMapping", "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"}
private

Definition at line 96 of file FPGATrackSimLogicalHitsProcessAlg.h.

96{this, "FPGATrackSimMapping", "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};

◆ m_FPGATruthTrackKey

SG::ReadHandleKey<FPGATrackSimTruthTrackCollection> FPGATrackSimLogicalHitsProcessAlg::m_FPGATruthTrackKey {this, "FPGATrackSimTruthTrackKey", "FPGATruthTracks", "FPGATrackSim truth tracks"}
private

Definition at line 219 of file FPGATrackSimLogicalHitsProcessAlg.h.

219{this, "FPGATrackSimTruthTrackKey", "FPGATruthTracks", "FPGATrackSim truth tracks"};

◆ m_houghRootOutputTool

ToolHandle<FPGATrackSimHoughRootOutputTool> FPGATrackSimLogicalHitsProcessAlg::m_houghRootOutputTool {this, "HoughRootOutputTool", "FPGATrackSimHoughRootOutputTool/FPGATrackSimHoughRootOutputTool", "Hough ROOT Output Tool"}
private

Definition at line 91 of file FPGATrackSimLogicalHitsProcessAlg.h.

91{this, "HoughRootOutputTool", "FPGATrackSimHoughRootOutputTool/FPGATrackSimHoughRootOutputTool", "Hough ROOT Output Tool"};

◆ m_keepHitsStrategy

Gaudi::Property<int> FPGATrackSimLogicalHitsProcessAlg::m_keepHitsStrategy {this, "keepHitsStrategy", -1, "If this is less than 0, do nothing. If 1, pick 3 hits furthest apart. If 2, pick 3 inner hits. If 3, pick 3 outer hits. If 4, drop only middle hit for 5/5 otherwise keep all 4 hits for 4/5"}
private

Definition at line 146 of file FPGATrackSimLogicalHitsProcessAlg.h.

146{this, "keepHitsStrategy", -1, "If this is less than 0, do nothing. If 1, pick 3 hits furthest apart. If 2, pick 3 inner hits. If 3, pick 3 outer hits. If 4, drop only middle hit for 5/5 otherwise keep all 4 hits for 4/5"};

◆ m_logicEventOutputHeader

FPGATrackSimLogicalEventOutputHeader* FPGATrackSimLogicalHitsProcessAlg::m_logicEventOutputHeader = nullptr
private

Definition at line 173 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_LRTRoadFilterTool

ToolHandle<FPGATrackSimLLPRoadFilterTool> FPGATrackSimLogicalHitsProcessAlg::m_LRTRoadFilterTool {this, "LRTRoadFilter", "FPGATrackSimLLPRoadFilterTool/FPGATrackSimLLPRoadFilterTool", "LRT Road Filter Tool"}
private

Definition at line 86 of file FPGATrackSimLogicalHitsProcessAlg.h.

86{this, "LRTRoadFilter", "FPGATrackSimLLPRoadFilterTool/FPGATrackSimLLPRoadFilterTool", "LRT Road Filter Tool"};

◆ m_LRTRoadFinderTool

ToolHandle<IFPGATrackSimRoadFinderTool> FPGATrackSimLogicalHitsProcessAlg::m_LRTRoadFinderTool {this, "LRTRoadFinder", "FPGATrackSimHoughTransform_d0phi0_Tool/FPGATrackSimHoughTransform_d0phi0_Tool", "LRT Road Finder Tool"}
private

Definition at line 87 of file FPGATrackSimLogicalHitsProcessAlg.h.

87{this, "LRTRoadFinder", "FPGATrackSimHoughTransform_d0phi0_Tool/FPGATrackSimHoughTransform_d0phi0_Tool", "LRT Road Finder Tool"};

◆ m_maxNRoadsFound

unsigned long FPGATrackSimLogicalHitsProcessAlg::m_maxNRoadsFound = 0
private

Definition at line 191 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_maxNTracksChi2OLRTot

unsigned long FPGATrackSimLogicalHitsProcessAlg::m_maxNTracksChi2OLRTot = 0
private

Definition at line 194 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_maxNTracksChi2Tot

unsigned long FPGATrackSimLogicalHitsProcessAlg::m_maxNTracksChi2Tot = 0
private

Definition at line 193 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_maxNTracksTot

unsigned long FPGATrackSimLogicalHitsProcessAlg::m_maxNTracksTot = 0
private

Definition at line 192 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> FPGATrackSimLogicalHitsProcessAlg::m_monTool {this,"MonTool", "", "Monitoring tool"}
private

Definition at line 101 of file FPGATrackSimLogicalHitsProcessAlg.h.

101{this,"MonTool", "", "Monitoring tool"};

◆ m_NNTrackTool

ToolHandle<FPGATrackSimNNTrackTool> FPGATrackSimLogicalHitsProcessAlg::m_NNTrackTool {this, "NNTrackTool", "FPGATrackSimNNTrackTool/FPGATrackSimNNTrackTool", "NN Track Tool"}
private

Definition at line 90 of file FPGATrackSimLogicalHitsProcessAlg.h.

90{this, "NNTrackTool", "FPGATrackSimNNTrackTool/FPGATrackSimNNTrackTool", "NN Track Tool"};

◆ m_noHitFilter

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_noHitFilter {this, "noHitFilter", false, "Disable filtering of hits"}
private

Definition at line 156 of file FPGATrackSimLogicalHitsProcessAlg.h.

156{this, "noHitFilter", false, "Disable filtering of hits"};

◆ m_nRoadsFound

long FPGATrackSimLogicalHitsProcessAlg::m_nRoadsFound = 0
private

Definition at line 186 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nRoadsTot

long FPGATrackSimLogicalHitsProcessAlg::m_nRoadsTot = 0
private

Definition at line 180 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nTracksChi2Found

long FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2Found = 0
private

Definition at line 188 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nTracksChi2OLRFound

long FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2OLRFound = 0
private

Definition at line 189 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nTracksChi2OLRTot

long FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2OLRTot = 0
private

Definition at line 183 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nTracksChi2Tot

long FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2Tot = 0
private

Definition at line 182 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nTracksFound

long FPGATrackSimLogicalHitsProcessAlg::m_nTracksFound = 0
private

Definition at line 187 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_nTracksTot

long FPGATrackSimLogicalHitsProcessAlg::m_nTracksTot = 0
private

Definition at line 181 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_NumOfHitPerGrouping

Gaudi::Property<int> FPGATrackSimLogicalHitsProcessAlg::m_NumOfHitPerGrouping { this, "NumOfHitPerGrouping", 5, "Number of minimum overlapping hits for a track candidate to be removed in the HoughRootOutputTool"}
private

Definition at line 149 of file FPGATrackSimLogicalHitsProcessAlg.h.

149{ this, "NumOfHitPerGrouping", 5, "Number of minimum overlapping hits for a track candidate to be removed in the HoughRootOutputTool"};

◆ m_outputBranch

Gaudi::Property<std::string> FPGATrackSimLogicalHitsProcessAlg::m_outputBranch {this, "outputBranchName", "LogicalEventOutputHeader", "Name of the branch for output data in output ROOT file." }
private

Definition at line 160 of file FPGATrackSimLogicalHitsProcessAlg.h.

160{this, "outputBranchName", "LogicalEventOutputHeader", "Name of the branch for output data in output ROOT file." };

◆ m_outputRoadUnionTool

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_outputRoadUnionTool {this, "outputRoadUnionTool", false, "If set to true, create LogicalEventInputHeader in output ROOT file using road union tool."}
private

Definition at line 152 of file FPGATrackSimLogicalHitsProcessAlg.h.

152{this, "outputRoadUnionTool", false, "If set to true, create LogicalEventInputHeader in output ROOT file using road union tool."};

◆ m_overlapRemovalTool_1st

ToolHandle<FPGATrackSimOverlapRemovalTool> FPGATrackSimLogicalHitsProcessAlg::m_overlapRemovalTool_1st {this, "OverlapRemoval_1st", "FPGATrackSimOverlapRemovalTool/FPGATrackSimOverlapRemovalTool_1st", "1st stage overlap removal tool"}
private

Definition at line 93 of file FPGATrackSimLogicalHitsProcessAlg.h.

93{this, "OverlapRemoval_1st", "FPGATrackSimOverlapRemovalTool/FPGATrackSimOverlapRemovalTool_1st", "1st stage overlap removal tool"};

◆ m_passLowestChi2TrackOnly

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_passLowestChi2TrackOnly {this,"passLowestChi2TrackOnly", false, "case when passing only lowest chi2 track per road"}
private

Definition at line 150 of file FPGATrackSimLogicalHitsProcessAlg.h.

150{this,"passLowestChi2TrackOnly", false, "case when passing only lowest chi2 track per road"};

◆ m_region

Gaudi::Property<int> FPGATrackSimLogicalHitsProcessAlg::m_region {this, "Region", 0, "Region ID to assign to tracks"}
private

Definition at line 153 of file FPGATrackSimLogicalHitsProcessAlg.h.

153{this, "Region", 0, "Region ID to assign to tracks"};

◆ m_roadFilterTool

ToolHandle<IFPGATrackSimRoadFilterTool> FPGATrackSimLogicalHitsProcessAlg::m_roadFilterTool {this, "RoadFilter", "FPGATrackSimEtaPatternFilterTool", "Road Filter Tool"}
private

Definition at line 88 of file FPGATrackSimLogicalHitsProcessAlg.h.

88{this, "RoadFilter", "FPGATrackSimEtaPatternFilterTool", "Road Filter Tool"};

◆ m_roadFilterTool2

ToolHandle<IFPGATrackSimRoadFilterTool> FPGATrackSimLogicalHitsProcessAlg::m_roadFilterTool2 {this, "RoadFilter2", "FPGATrackSimPhiRoadFilterTool", "Road Filter2 Tool"}
private

Definition at line 89 of file FPGATrackSimLogicalHitsProcessAlg.h.

89{this, "RoadFilter2", "FPGATrackSimPhiRoadFilterTool", "Road Filter2 Tool"};

◆ m_roadFinderTool

ToolHandle<FPGATrackSimRoadUnionTool> FPGATrackSimLogicalHitsProcessAlg::m_roadFinderTool {this, "RoadFinder", "FPGATrackSimPatternMatchTool", "Road Finder Tool"}
private

Definition at line 85 of file FPGATrackSimLogicalHitsProcessAlg.h.

85{this, "RoadFinder", "FPGATrackSimPatternMatchTool", "Road Finder Tool"};

◆ m_secondStageStrips

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_secondStageStrips {this, "secondStageStrips", true, "If set to true, strip hits/SPs go to the second stage. Otherwise they go to the first." }
private

Definition at line 151 of file FPGATrackSimLogicalHitsProcessAlg.h.

151{this, "secondStageStrips", true, "If set to true, strip hits/SPs go to the second stage. Otherwise they go to the first." };

◆ m_SetTruthParametersForTracks

Gaudi::Property<int> FPGATrackSimLogicalHitsProcessAlg::m_SetTruthParametersForTracks {this, "SetTruthParametersForTracks", -1, "flag to override track parameters and set them to the truth values"}
private

Definition at line 128 of file FPGATrackSimLogicalHitsProcessAlg.h.

128{this, "SetTruthParametersForTracks", -1, "flag to override track parameters and set them to the truth values"};

◆ m_sliceBranch

Gaudi::Property<std::string> FPGATrackSimLogicalHitsProcessAlg::m_sliceBranch {this, "SliceBranchName", "LogicalEventSlicedHeader", "Name of the branch for sliced hits in output ROOT file." }
private

Definition at line 159 of file FPGATrackSimLogicalHitsProcessAlg.h.

159{this, "SliceBranchName", "LogicalEventSlicedHeader", "Name of the branch for sliced hits in output ROOT file." };

◆ m_slicedFirstPixelHeader

FPGATrackSimLogicalEventInputHeader* FPGATrackSimLogicalHitsProcessAlg::m_slicedFirstPixelHeader = nullptr
private

Definition at line 169 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_slicedHitHeader

FPGATrackSimLogicalEventInputHeader* FPGATrackSimLogicalHitsProcessAlg::m_slicedHitHeader = nullptr
private

Definition at line 168 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_slicedSecondPixelHeader

FPGATrackSimLogicalEventInputHeader* FPGATrackSimLogicalHitsProcessAlg::m_slicedSecondPixelHeader = nullptr
private

Definition at line 170 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_slicedStripHeader

FPGATrackSimLogicalEventInputHeader* FPGATrackSimLogicalHitsProcessAlg::m_slicedStripHeader = nullptr
private

Definition at line 171 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_slicedStripHeaderPreSP

FPGATrackSimLogicalEventInputHeader* FPGATrackSimLogicalHitsProcessAlg::m_slicedStripHeaderPreSP = nullptr
private

Definition at line 172 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_sliceFirstPixelBranch

Gaudi::Property<std::string> FPGATrackSimLogicalHitsProcessAlg::m_sliceFirstPixelBranch {this, "FirstPixelBranchName", "LogicalEventFirstPixelHeader", "Name of the branch for first stage pixel hits in output ROOT file"}
private

Definition at line 161 of file FPGATrackSimLogicalHitsProcessAlg.h.

161{this, "FirstPixelBranchName", "LogicalEventFirstPixelHeader", "Name of the branch for first stage pixel hits in output ROOT file"};

◆ m_sliceSecondPixelBranch

Gaudi::Property<std::string> FPGATrackSimLogicalHitsProcessAlg::m_sliceSecondPixelBranch {this, "SecondPixelBranchName", "LogicalEventSecondPixelHeader", "Name of the branch for second stage pixel hits in output ROOT file"}
private

Definition at line 162 of file FPGATrackSimLogicalHitsProcessAlg.h.

162{this, "SecondPixelBranchName", "LogicalEventSecondPixelHeader", "Name of the branch for second stage pixel hits in output ROOT file"};

◆ m_sliceStripBranch

Gaudi::Property<std::string> FPGATrackSimLogicalHitsProcessAlg::m_sliceStripBranch {this, "StripBranchName", "LogicalEventSpacepointHeader", "Name of the branch for (post-SP) strip hits in output ROOT file"}
private

Definition at line 163 of file FPGATrackSimLogicalHitsProcessAlg.h.

163{this, "StripBranchName", "LogicalEventSpacepointHeader", "Name of the branch for (post-SP) strip hits in output ROOT file"};

◆ m_sliceStripBranchPreSP

Gaudi::Property<std::string> FPGATrackSimLogicalHitsProcessAlg::m_sliceStripBranchPreSP {this, "StripPreSPBranchName", "LogicalEventStripHeader", "Name of the branch for (pre-SP) strip hits in output ROOT file"}
private

Definition at line 164 of file FPGATrackSimLogicalHitsProcessAlg.h.

164{this, "StripPreSPBranchName", "LogicalEventStripHeader", "Name of the branch for (pre-SP) strip hits in output ROOT file"};

◆ m_slicingEngineTool

ToolHandle<FPGATrackSimSlicingEngineTool> FPGATrackSimLogicalHitsProcessAlg::m_slicingEngineTool {this, "SlicingEngineTool", "FPGATrackSimSlicingEngineTool/FPGATrackSimSlicingEngineTool", "Slicing engine tool"}
private

Definition at line 95 of file FPGATrackSimLogicalHitsProcessAlg.h.

95{this, "SlicingEngineTool", "FPGATrackSimSlicingEngineTool/FPGATrackSimSlicingEngineTool", "Slicing engine tool"};

◆ m_spacepointsTool

ToolHandle<FPGATrackSimSpacePointsToolI> FPGATrackSimLogicalHitsProcessAlg::m_spacepointsTool {this, "SpacePointTool", "FPGATrackSimSpacePointsTool/FPGATrackSimSpacePointsTool", "Space Points Tool"}
private

Definition at line 84 of file FPGATrackSimLogicalHitsProcessAlg.h.

84{this, "SpacePointTool", "FPGATrackSimSpacePointsTool/FPGATrackSimSpacePointsTool", "Space Points Tool"};

◆ m_track_Chi2EtaCut

Gaudi::Property<std::vector<float> > FPGATrackSimLogicalHitsProcessAlg::m_track_Chi2EtaCut {this, "Chi2EtaCut", {-1.0,-1.0}, "Minimum Eta specific Chi2 cuts for vector starting with zero missed hits and counting up, negative is not active" }
private

Definition at line 145 of file FPGATrackSimLogicalHitsProcessAlg.h.

145{this, "Chi2EtaCut", {-1.0,-1.0}, "Minimum Eta specific Chi2 cuts for vector starting with zero missed hits and counting up, negative is not active" };

◆ m_track_Chi2PhiCut

Gaudi::Property<std::vector<float> > FPGATrackSimLogicalHitsProcessAlg::m_track_Chi2PhiCut {this, "Chi2PhiCut", {-1.0,-1.0}, "Minimum Phi specific Chi2 cuts for vector starting with zero missed hits and counting up, negative is not active" }
private

Definition at line 144 of file FPGATrackSimLogicalHitsProcessAlg.h.

144{this, "Chi2PhiCut", {-1.0,-1.0}, "Minimum Phi specific Chi2 cuts for vector starting with zero missed hits and counting up, negative is not active" };

◆ m_trackFitterTool_1st

ToolHandle<FPGATrackSimTrackFitterTool> FPGATrackSimLogicalHitsProcessAlg::m_trackFitterTool_1st {this, "TrackFitter_1st", "FPGATrackSimTrackFitterTool/FPGATrackSimTrackFitterTool_1st", "1st stage track fit tool"}
private

Definition at line 92 of file FPGATrackSimLogicalHitsProcessAlg.h.

92{this, "TrackFitter_1st", "FPGATrackSimTrackFitterTool/FPGATrackSimTrackFitterTool_1st", "1st stage track fit tool"};

◆ m_tracks_1st_guessedcheck

std::vector<FPGATrackSimTrack> FPGATrackSimLogicalHitsProcessAlg::m_tracks_1st_guessedcheck
private

Definition at line 176 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_tracks_1st_nomiss

std::vector<FPGATrackSimTrack> FPGATrackSimLogicalHitsProcessAlg::m_tracks_1st_nomiss
private

Definition at line 176 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_tracks_2nd_guessedcheck

std::vector<FPGATrackSimTrack> FPGATrackSimLogicalHitsProcessAlg::m_tracks_2nd_guessedcheck
private

Definition at line 176 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_tracks_2nd_nomiss

std::vector<FPGATrackSimTrack> FPGATrackSimLogicalHitsProcessAlg::m_tracks_2nd_nomiss
private

Definition at line 176 of file FPGATrackSimLogicalHitsProcessAlg.h.

◆ m_trackScoreCut

Gaudi::Property<float> FPGATrackSimLogicalHitsProcessAlg::m_trackScoreCut {this, "TrackScoreCut", 25.0, "Minimum track score (e.g. chi2 or NN)." }
private

Definition at line 143 of file FPGATrackSimLogicalHitsProcessAlg.h.

143{this, "TrackScoreCut", 25.0, "Minimum track score (e.g. chi2 or NN)." };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeInputBranches

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_writeInputBranches {this, "writeInputBranches", true, "If set to false, never write input branches"}
private

Definition at line 154 of file FPGATrackSimLogicalHitsProcessAlg.h.

154{this, "writeInputBranches", true, "If set to false, never write input branches"};

◆ m_writeOutNonSPStripHits

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_writeOutNonSPStripHits {this, "writeOutNonSPStripHits", true, "Write tracks to RootOutput if they have strip hits which are not SPs"}
private

Definition at line 148 of file FPGATrackSimLogicalHitsProcessAlg.h.

148{this, "writeOutNonSPStripHits", true, "Write tracks to RootOutput if they have strip hits which are not SPs"};

◆ m_writeOutputData

Gaudi::Property<bool> FPGATrackSimLogicalHitsProcessAlg::m_writeOutputData {this, "writeOutputData", true,"write the output TTree"}
private

Definition at line 142 of file FPGATrackSimLogicalHitsProcessAlg.h.

142{this, "writeOutputData", true,"write the output TTree"};

◆ m_writeOutputTool

ToolHandle<FPGATrackSimOutputHeaderTool> FPGATrackSimLogicalHitsProcessAlg::m_writeOutputTool {this, "OutputTool", "FPGATrackSimOutputHeaderTool/FPGATrackSimOutputHeaderTool", "Output tool"}
private

Definition at line 94 of file FPGATrackSimLogicalHitsProcessAlg.h.

94{this, "OutputTool", "FPGATrackSimOutputHeaderTool/FPGATrackSimOutputHeaderTool", "Output tool"};

◆ m_writeRegion

Gaudi::Property<int> FPGATrackSimLogicalHitsProcessAlg::m_writeRegion {this,"writeRegion", -1, "Only output selected region, default is -1 which means not requirement"}
private

Definition at line 155 of file FPGATrackSimLogicalHitsProcessAlg.h.

155{this,"writeRegion", -1, "Only output selected region, default is -1 which means not requirement"};

The documentation for this class was generated from the following files: