![]() |
ATLAS Offline Software
|
The CaloExtensionAlg takes the ID / ITk tracks from their track state of their last measurement and propagates them to the exit portal of the calorimeter tracking volume. More...
#include <CaloExtensionAlg.h>
Public Member Functions | |
| virtual StatusCode | initialize () override final |
| virtual StatusCode | execute (const EventContext &ctx) const override final |
| virtual StatusCode | sysInitialize () override |
| Override sysInitialize. | |
| virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. | |
| virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. | |
| virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. | |
| virtual bool | filterPassed (const EventContext &ctx) const |
| Get filter decision: | |
| virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
| Set filter decision: | |
| 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 |
Protected Member Functions | |
| 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 | |
| using | ClusterVec_t = std::vector<const xAOD::CaloCluster*> |
| Use an Acts::Grid to segment the cluster in eta / phi space to reduce the matching combinatorics between tracks and clusters First define some abrivations to compactify the syntax --> Abrivation of the CaloClusters per grid cell. | |
| using | EtaAxis_t |
| Along eta define an equidistance binning without any overflow bin. | |
| using | PhiAxis_t |
| Along phi define an equidistance binning but with a circular wrapping connection between the two edge bins. | |
| using | SortedCluster_t = Acts::Grid<ClusterVec_t, EtaAxis_t, PhiAxis_t> |
| Define the segmen cluster grid made out of calo cluster containers segmented in eta & phi. | |
| using | CurvedStepper_t = Acts::EigenStepper<Acts::EigenStepperDefaultExtension> |
| Setup an own instance of the Acts Prpoagator to schedule the BoundTrackParameter recording & to define a more prope abort condition. | |
| using | CurvedPropagator_t = Acts::Propagator<CurvedStepper_t, Acts::Navigator> |
| using | CaloSample = xAOD::CaloCluster::CaloSample |
| typedef ServiceHandle< StoreGateSvc > | StoreGateSvc_t |
Private Member Functions | |
| SortedCluster_t | selectAndSort (const xAOD::CaloClusterContainer &clusters, const CaloDetDescrManager *detMgr) const |
| Selects the calo clusters for the matching to the ID tracks based on the eta range and on a minimum threshold on the energy. | |
| std::unique_ptr< CaloExtension > | propagateToCaloExit (const EventContext &ctx, const xAOD::TrackParticle *track) const |
| Propagates the Track from the last track measurement to the calorimeter exit and records all surface crossings between as Acts::BoundTrackParameters. | |
| void | matchClusters (const Acts::GeometryContext &tgContext, std::span< const xAOD::CaloCluster *const > clusterContainer, CaloExtension &caloExtension) const |
| Match the selected calorimeter clusters to the calo extension. | |
| bool | checkBroadCriteria (const Acts::GeometryContext &tgContext, const xAOD::CaloCluster &cluster, const Acts::BoundTrackParameters &lastTrkPars) const |
| Checks whether the track @ its last measurement state is roughly compatible with the calorimeter cluster. | |
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> | |
Private Attributes | |
| std::unique_ptr< CurvedPropagator_t > | m_propagator {} |
| The instance of the propagator. | |
| ToolHandle< InDet::IInDetTrackSelectionTool > | m_trackSelector {this, "TrackSelectionTool" , ""} |
| Track quality selection tool (optional). | |
| ToolHandle< IegammaCaloClusterSelector > | m_clusterSelector |
| Tool to filter the calo clusters. | |
| ServiceHandle< ActsTrk::ITrackingGeometrySvc > | m_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"} |
| Tracking geometry service. | |
| ActsTrk::ContextUtility | m_ctxProvider {this} |
| Context provider for geometry, magnetic field and calibration contexts. | |
| ToolHandle< IExtrapolationTool > | m_extrapolationTool {this, "ExtrapolationTool", ""} |
| Acts extrapolation tool to record the surface intersections. | |
| SG::ReadHandleKey< xAOD::CaloClusterContainer > | m_clusterContainerKey {this, "ClusterContainerName", "CaloCalTopoClusters"} |
| The input calorimeter cluster collection. | |
| SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_trackParticleContainerKey |
| The input track particle collection. | |
| SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > | m_extensionDecorKey |
| Decorate the link to the associated CaloExtension directly onto the ID / ITk track. | |
| SG::ReadCondHandleKey< CaloDetDescrManager > | m_caloDetDescrMgrKey {this, "CaloDetDescrManager", "CaloDetDescrManager"} |
| Calo description manager. | |
| SG::WriteHandleKey< CaloExtensionContainer > | m_caloExtensionKey {this, "CaloExtensionName", "CaloExtension"} |
| Gaudi::Property< float > | m_trackPt {this, "minPt", 2.5*Gaudi::Units::GeV} |
| The minimum momentum cut applied on the ID tracks to be considered. | |
| Gaudi::Property< float > | m_broadDeltaEta {this, "broadDeltaEta", 0.2, "Value of broad cut for delta eta" } |
| Broad windowsto initially match the calo cluster with the track exit parameters. | |
| Gaudi::Property< float > | m_broadDeltaPhi {this, "broadDeltaPhi", 0.3, "Value of broad cut for delta phi" } |
| Gaudi::Property< float > | m_minClustEt {this, "minClusterEt", 10.*Gaudi::Units::MeV} |
| Minimum requirement on the cluster's transversal energy in order to be considered. | |
| Gaudi::Property< float > | m_maxClustEta {this, "maxClustEta", 10.} |
| Maximum cut on the cluster's eta in order to be considered. | |
| Gaudi::Property< float > | m_narrowDeltaEta {this, "narrowDeltaEta", 0.05} |
| Narrow windows. | |
| Gaudi::Property< float > | m_narrowDeltaPhi {this, "narrowDeltaPhi", 0.05} |
| std::unordered_map< Acts::GeometryIdentifier, CaloSample > | m_geoLayerIds {} |
| DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. | |
| 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 |
The CaloExtensionAlg takes the ID / ITk tracks from their track state of their last measurement and propagates them to the exit portal of the calorimeter tracking volume.
Surface crossing along the track are recorded as Acts::BoundTrackParameters and then stored in the CaloExtension object which is written to StoreGate but also decorated to the TrackParticle via an ElementLink.
CaloClusters are then sorted into an eta/phi grid to speed-up the matching with the ITk tracks. Coarsely matched clusters are then matched to particular track parameters that have been recorded before.
Definition at line 46 of file CaloExtensionAlg.h.
|
private |
Definition at line 154 of file CaloExtensionAlg.h.
|
private |
Use an Acts::Grid to segment the cluster in eta / phi space to reduce the matching combinatorics between tracks and clusters First define some abrivations to compactify the syntax --> Abrivation of the CaloClusters per grid cell.
Definition at line 57 of file CaloExtensionAlg.h.
|
private |
Definition at line 112 of file CaloExtensionAlg.h.
|
private |
Setup an own instance of the Acts Prpoagator to schedule the BoundTrackParameter recording & to define a more prope abort condition.
Definition at line 111 of file CaloExtensionAlg.h.
|
private |
Along eta define an equidistance binning without any overflow bin.
Definition at line 59 of file CaloExtensionAlg.h.
|
private |
Along phi define an equidistance binning but with a circular wrapping connection between the two edge bins.
Definition at line 63 of file CaloExtensionAlg.h.
|
private |
Define the segmen cluster grid made out of calo cluster containers segmented in eta & phi.
Definition at line 67 of file CaloExtensionAlg.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
|
private |
Checks whether the track @ its last measurement state is roughly compatible with the calorimeter cluster.
| tgContext | The geometry context to align the bound track parameters |
| cluster | Calorimeter cluster to consider |
| lastTrkPars | The last track parameters of the ID track |
Broad eta check
Definition at line 230 of file CaloExtensionAlg.cxx.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
|
inlineinherited |
Definition at line 145 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition at line 95 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition at line 85 of file AthCommonDataStore.h.
|
finaloverridevirtual |
Retrieve the input
Prepare the clusters to match
Loop over the track particles
Definition at line 149 of file CaloExtensionAlg.cxx.
|
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
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 89 of file AthCommonAlgorithm.cxx.
|
inlinevirtualinherited |
Get filter decision:
Definition at line 93 of file AthCommonAlgorithm.h.
|
finaloverridevirtual |
Definition at line 49 of file CaloExtensionAlg.cxx.
|
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.
|
inlineoverridevirtualinherited |
Specify if the algorithm is clonable.
Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.
Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.
Definition at line 68 of file AthCommonAlgorithm.h.
|
private |
Match the selected calorimeter clusters to the calo extension.
| tgContext | The geometry context to align the bound track parameters |
| clusterContainer | List of pre-selected clusters |
| caloExtension | Mutable reference to the calo extension where the calorimeter clusters are appended if they satisfiy the dR distance criteria |
Definition at line 196 of file CaloExtensionAlg.cxx.
|
inlineinherited |
Definition at line 24 of file AthCommonMsg.h.
|
inlineinherited |
Definition at line 30 of file AthCommonMsg.h.
|
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.
|
private |
Propagates the Track from the last track measurement to the calorimeter exit and records all surface crossings between as Acts::BoundTrackParameters.
If one record happened, the result is packed into a CaloExtension object and returned. A nullptr is given back otherwise.
| ctx | The ATLAS event context to access geometry & magnetic field |
| track | The ID track particle to be propagated to the exit |
Retrieve the last track parameters with a measurement state
Loop over the recorded bound track parameters to append them onto the surface
Definition at line 116 of file CaloExtensionAlg.cxx.
|
inlineprotectedinherited |
Definition at line 380 of file AthCommonDataStore.h.
|
inlineprotectedinherited |
remove all handles from I/O resolution
Definition at line 364 of file AthCommonDataStore.h.
|
private |
Selects the calo clusters for the matching to the ID tracks based on the eta range and on a minimum threshold on the energy.
Optionally, the selection tool can be used which requires the use of the CaloDetDescrManager. The Clusters are sorted into a grid which dimension in eta is defined by m_maxClustEta. The number of bins in the two dimensions are determined by the m_broadDeltaEta and m_broadDeltaPhi windows, respectively.
| clusters | The calorimeter cluster vector to sort into the grid |
| detMgr | Calo description manager needed if the calo selection tool is used. |
Definition at line 91 of file CaloExtensionAlg.cxx.
|
inlinevirtualinherited |
Set filter decision:
Reimplemented in AthFilterAlgorithm.
Definition at line 99 of file AthCommonAlgorithm.h.
|
overridevirtualinherited |
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Reimplemented in AthAnalysisAlgorithm.
Definition at line 80 of file AthCommonAlgorithm.cxx.
|
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, HypoBase, InputMakerBase, and PyAthena::Alg.
Definition at line 60 of file AthCommonAlgorithm.cxx.
|
overridevirtualinherited |
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
|
inlineinherited |
Definition at line 308 of file AthCommonDataStore.h.
|
private |
Broad windowsto initially match the calo cluster with the track exit parameters.
Definition at line 145 of file CaloExtensionAlg.h.
|
private |
Definition at line 147 of file CaloExtensionAlg.h.
|
private |
Calo description manager.
Definition at line 137 of file CaloExtensionAlg.h.
|
private |
Definition at line 139 of file CaloExtensionAlg.h.
|
private |
The input calorimeter cluster collection.
Definition at line 129 of file CaloExtensionAlg.h.
|
private |
Tool to filter the calo clusters.
Definition at line 118 of file CaloExtensionAlg.h.
|
private |
Context provider for geometry, magnetic field and calibration contexts.
Definition at line 123 of file CaloExtensionAlg.h.
|
privateinherited |
Pointer to StoreGate (detector store by default).
Definition at line 393 of file AthCommonDataStore.h.
|
privateinherited |
Pointer to StoreGate (event store by default).
Definition at line 390 of file AthCommonDataStore.h.
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 108 of file AthCommonAlgorithm.h.
|
private |
Decorate the link to the associated CaloExtension directly onto the ID / ITk track.
Definition at line 134 of file CaloExtensionAlg.h.
|
private |
Acts extrapolation tool to record the surface intersections.
Definition at line 126 of file CaloExtensionAlg.h.
|
private |
Definition at line 160 of file CaloExtensionAlg.h.
|
private |
Maximum cut on the cluster's eta in order to be considered.
Definition at line 151 of file CaloExtensionAlg.h.
|
private |
Minimum requirement on the cluster's transversal energy in order to be considered.
Definition at line 149 of file CaloExtensionAlg.h.
|
private |
Narrow windows.
Definition at line 156 of file CaloExtensionAlg.h.
|
private |
Definition at line 158 of file CaloExtensionAlg.h.
|
private |
|
private |
Tracking geometry service.
Definition at line 121 of file CaloExtensionAlg.h.
|
private |
The input track particle collection.
Definition at line 131 of file CaloExtensionAlg.h.
|
private |
The minimum momentum cut applied on the ID tracks to be considered.
Definition at line 142 of file CaloExtensionAlg.h.
|
private |
Track quality selection tool (optional).
Definition at line 116 of file CaloExtensionAlg.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.