Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <MuonCreatorAlg.h>
|
| MuonCreatorAlg (const std::string &name, ISvcLocator *pSvcLocator) |
|
| ~MuonCreatorAlg ()=default |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &ctx) const override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
ToolHandle< MuonCombined::IMuonCreatorTool > | m_muonCreatorTool |
|
SG::WriteHandleKey< xAOD::MuonContainer > | m_muonCollectionName {this, "MuonContainerLocation", "Muons", "Muon Container"} |
|
SG::WriteHandleKey< xAOD::SlowMuonContainer > | m_slowMuonCollectionName |
|
SG::WriteHandleKey< xAOD::TrackParticleContainer > | m_combinedCollectionName {this, "CombinedLocation", "CombinedMuon", "Combined muons"} |
|
SG::WriteHandleKey< TrackCollection > | m_combinedTrkCollectionName {this, "CombinedTrackLocation", "CombinedMuon", "Combined muon tracks"} |
|
SG::WriteHandleKey< xAOD::TrackParticleContainer > | m_extrapolatedCollectionName |
|
SG::WriteHandleKey< TrackCollection > | m_extrapolatedTrkCollectionName |
|
SG::WriteHandleKey< xAOD::TrackParticleContainer > | m_msOnlyExtrapolatedCollectionName |
|
SG::WriteHandleKey< TrackCollection > | m_msOnlyExtrapolatedTrkCollectionName |
|
SG::ReadHandleKey< InDetCandidateCollection > | m_indetCandidateCollectionName |
|
SG::ReadHandleKeyArray< MuonCandidateCollection > | m_muonCandidateKeys |
|
SG::ReadHandleKeyArray< MuonCombined::InDetCandidateToTagMap > | m_tagMaps |
|
SG::ReadHandleKey< MuonCombined::MuonTagToSegMap > | m_segAssocMapKey {this, "TagToSegmentKey", "MuonTagSegMap"} |
|
SG::ReadHandleKey< xAOD::MuonSegmentContainer > | m_segContainerName {this, "SegmentContainerName", "MuonSegments", "Segments"} |
|
SG::WriteHandleKey< xAOD::CaloClusterContainer > | m_clusterContainerName |
|
SG::WriteHandleKey< CaloClusterCellLinkContainer > | m_clusterContainerLinkName |
|
Gaudi::Property< bool > | m_buildSlowMuon {this, "BuildSlowMuon", false} |
|
Gaudi::Property< bool > | m_doSA {this, "CreateSAmuons", false} |
|
Gaudi::Property< bool > | m_makeClusters {this, "MakeClusters", true} |
|
ToolHandle< GenericMonitoringTool > | m_monTool {this, "MonTool", "", "Monitoring tool"} |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 28 of file MuonCreatorAlg.h.
◆ StoreGateSvc_t
◆ MuonCreatorAlg()
MuonCreatorAlg::MuonCreatorAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~MuonCreatorAlg()
MuonCreatorAlg::~MuonCreatorAlg |
( |
| ) |
|
|
default |
◆ cardinality()
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode MuonCreatorAlg::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
Use the ConstDataVector pipe all MuonCandidate collections into a single vector
Definition at line 72 of file MuonCreatorAlg.cxx.
73 std::vector<const MuonCombined::InDetCandidateToTagMap*> tagMaps;
81 ATH_CHECK(wh_muons.recordNonConst(std::make_unique<xAOD::MuonContainer>(), std::make_unique<xAOD::MuonAuxContainer>()));
89 ATH_CHECK(wh_combtp.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
90 ATH_CHECK(wh_combtrk.record(std::make_unique<TrackCollection>()));
91 output.combinedTrackParticleContainer = wh_combtp.ptr();
92 output.combinedTrackCollection = wh_combtrk.ptr();
97 ATH_CHECK(wh_extrtp.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
98 ATH_CHECK(wh_extrtrk.record(std::make_unique<TrackCollection>()));
99 output.extrapolatedTrackParticleContainer = wh_extrtp.ptr();
100 output.extrapolatedTrackCollection = wh_extrtrk.ptr();
105 ATH_CHECK(wh_msextrtp.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
106 ATH_CHECK(wh_msextrtrk.record(std::make_unique<TrackCollection>()));
107 output.msOnlyExtrapolatedTrackParticleContainer = wh_msextrtp.ptr();
108 output.msOnlyExtrapolatedTrackCollection = wh_msextrtrk.ptr();
113 output.xaodSegmentContainer = rh_segment.ptr();
117 output.tagToSegmentAssocMap = rh_segAssocMap.ptr();
121 std::unique_ptr<xAOD::CaloClusterContainer> caloclusters{
nullptr};
122 std::unique_ptr<xAOD::CaloClusterAuxContainer> caloclustersaux{
nullptr};
125 caloclusters = std::make_unique<xAOD::CaloClusterContainer>();
126 caloclustersaux = std::make_unique<xAOD::CaloClusterAuxContainer>();
127 caloclusters->setStore(caloclustersaux.get());
128 output.clusterContainer = caloclusters.get();
137 ATH_CHECK(wh_slowmuon.
record(std::make_unique<xAOD::SlowMuonContainer>(), std::make_unique<xAOD::SlowMuonAuxContainer>()));
138 output.slowMuonContainer = wh_slowmuon.
ptr();
141 if (!muonCandidateRH.isValid()) {
142 ATH_MSG_ERROR(
"Could not read " << muonCandidateRH.fullKey());
143 return StatusCode::FAILURE;
145 muon_candidates.insert(muon_candidates.end(), muonCandidateRH->begin(), muonCandidateRH->end());
153 std::unique_ptr<CaloClusterCellLinkContainer> clusterlinks = std::make_unique<CaloClusterCellLinkContainer>();
154 auto* sg = wh_clusters.storeHandle().get();
156 ATH_CHECK(wh_clusterslink.record(std::move(clusterlinks)));
157 ATH_CHECK(wh_clusters.record(std::move(caloclusters), std::move(caloclustersaux)));
175 std::vector<float> MDT_R, MDT_dR;
176 for(
const auto mu : *wh_muons ) {
177 if (!(
mu->muonType() == xAOD::Muon::CaloTagged ||
mu->muonType() == xAOD::Muon::SegmentTagged)) {
178 const Trk::Track* trk =
mu->primaryTrackParticle()->track();
192 [](
auto const& satrk) { return satrk->pt() * MeVtoGeV; });
198 [](
auto const& cbtrk) { return cbtrk->pt() * MeVtoGeV; });
207 [](
auto const& idtrk) {
return idtrk->indetTrackParticle().
pt() *
MeVtoGeV; });
209 [](
auto const& idtrk) {
return idtrk->indetTrackParticle().
eta(); });
211 [](
auto const& idtrk) {
return idtrk->indetTrackParticle().
phi(); });
212 auto monitorIt =
Monitored::Group(
m_monTool, muon_n, muon_pt, muon_eta, muon_phi, muon_MDT_R, muon_MDT_dR, satrks_n, satrks_pt, satrks_eta, satrks_phi,
213 cbtrks_n, cbtrks_pt, cbtrks_eta, cbtrks_phi, idtrks_n, idtrks_pt, idtrks_eta, idtrks_phi);
215 auto monitorIt =
Monitored::Group(
m_monTool, muon_n, muon_pt, muon_eta, muon_phi, muon_MDT_R, muon_MDT_dR, satrks_n, satrks_pt, satrks_eta, satrks_phi,
216 cbtrks_n, cbtrks_pt, cbtrks_eta, cbtrks_phi);
219 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.
◆ filterPassed()
◆ initialize()
StatusCode MuonCreatorAlg::initialize |
( |
| ) |
|
|
overridevirtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
◆ sysExecute()
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.
◆ sysInitialize()
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_buildSlowMuon
Gaudi::Property<bool> MuonCreatorAlg::m_buildSlowMuon {this, "BuildSlowMuon", false} |
|
private |
◆ m_clusterContainerLinkName
Initial value:{this, "CaloClusterCellLinkName", "MuonClusterCollection",
"Cluster links"}
Definition at line 66 of file MuonCreatorAlg.h.
◆ m_clusterContainerName
Initial value:{this, "ClusterContainerName", "MuonClusterCollection",
"Clusters"}
Definition at line 64 of file MuonCreatorAlg.h.
◆ m_combinedCollectionName
◆ m_combinedTrkCollectionName
◆ m_detStore
◆ m_doSA
Gaudi::Property<bool> MuonCreatorAlg::m_doSA {this, "CreateSAmuons", false} |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 114 of file AthCommonReentrantAlgorithm.h.
◆ m_extrapolatedCollectionName
Initial value:{this, "ExtrapolatedLocation", "ExtrapolatedMuon",
"Extrapolated muons"}
Definition at line 45 of file MuonCreatorAlg.h.
◆ m_extrapolatedTrkCollectionName
Initial value:{this, "ExtrapolatedTrackLocation", "ExtrapolatedMuon",
"Extrapolated muon tracks"}
Definition at line 47 of file MuonCreatorAlg.h.
◆ m_indetCandidateCollectionName
Initial value:{this, "InDetCandidateLocation", "InDetCandidates",
"ID candidates"}
Definition at line 53 of file MuonCreatorAlg.h.
◆ m_makeClusters
Gaudi::Property<bool> MuonCreatorAlg::m_makeClusters {this, "MakeClusters", true} |
|
private |
◆ m_monTool
◆ m_msOnlyExtrapolatedCollectionName
Initial value:{this, "MSOnlyExtrapolatedLocation",
"MSOnlyExtrapolatedMuon", "MS Extrapolated muons"}
Definition at line 49 of file MuonCreatorAlg.h.
◆ m_msOnlyExtrapolatedTrkCollectionName
Initial value:{
this, "MSOnlyExtrapolatedTrackLocation", "MSOnlyExtrapolatedMuonTracks", "MS extrapolated muon tracks"}
Definition at line 51 of file MuonCreatorAlg.h.
◆ m_muonCandidateKeys
Initial value:{
this, "MuonCandidateLocation", {"MuonCandidates"}, "Muon candidates"}
Definition at line 56 of file MuonCreatorAlg.h.
◆ m_muonCollectionName
◆ m_muonCreatorTool
Initial value:{this, "MuonCreatorTool", "MuonCombined::MuonCreatorTool/MuonCreatorTool",
"Muon creator tool"}
Definition at line 38 of file MuonCreatorAlg.h.
◆ m_segAssocMapKey
◆ m_segContainerName
◆ m_slowMuonCollectionName
Initial value:{this, "SlowMuonContainerLocation", "SlowMuons",
"Slow Muon Container"}
Definition at line 41 of file MuonCreatorAlg.h.
◆ m_tagMaps
Initial value:{
this, "TagMaps", {"muidcoTagMap", "stacoTagMap", "muGirlTagMap", "caloTagMap", "segmentTagMap"}, "ID candidate to tag maps"}
Definition at line 58 of file MuonCreatorAlg.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
SG::WriteHandleKey< xAOD::SlowMuonContainer > m_slowMuonCollectionName
SG::WriteHandleKey< TrackCollection > m_msOnlyExtrapolatedTrkCollectionName
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_segContainerName
Group
Properties of a chain group.
SG::WriteHandleKey< xAOD::MuonContainer > m_muonCollectionName
Scalar phi() const
phi method
SG::WriteHandleKey< CaloClusterCellLinkContainer > m_clusterContainerLinkName
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
SG::WriteHandleKey< TrackCollection > m_combinedTrkCollectionName
Scalar eta() const
pseudorapidity method
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
Gaudi::Property< bool > m_makeClusters
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)
virtual double eta() const
The pseudorapidity ( ) of the particle.
SG::ReadHandleKey< MuonCombined::MuonTagToSegMap > m_segAssocMapKey
ToolHandle< MuonCombined::IMuonCreatorTool > m_muonCreatorTool
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
Gaudi::Property< bool > m_doSA
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
SG::ReadHandleKeyArray< MuonCombined::InDetCandidateToTagMap > m_tagMaps
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
virtual void setOwner(IDataHandleHolder *o)=0
An algorithm that can be simultaneously executed in multiple threads.
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_extrapolatedCollectionName
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
Description of a calorimeter cluster.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
SG::WriteHandleKey< TrackCollection > m_extrapolatedTrkCollectionName
::StatusCode StatusCode
StatusCode definition for legacy code.
pointer_type ptr()
Dereference the pointer.
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
double driftRadius() const
Returns the value of the drift radius.
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_clusterContainerName
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_msOnlyExtrapolatedCollectionName
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
represents the track state (measurement, material, fit parameters and quality) at a surface.
SG::ReadHandleKey< InDetCandidateCollection > m_indetCandidateCollectionName
ToolHandle< GenericMonitoringTool > m_monTool
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_combinedCollectionName
SG::ReadHandleKeyArray< MuonCandidateCollection > m_muonCandidateKeys
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
#define ATH_MSG_WARNING(x)
DataVector adapter that acts like it holds const pointers.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Gaudi::Property< bool > m_buildSlowMuon
virtual StatusCode sysInitialize() override
Override sysInitialize.
Declare a monitored scalar variable.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)