![]() |
ATLAS Offline Software
|
#include <MuonNSWSegmentFinderTool.h>
Public Types | |
| using | SeedMeasurement = NSWSeed::SeedMeasurement |
| using | MeasVec = NSWSeed::MeasVec |
| using | LayerMeasVec = std::vector<MeasVec> |
| using | MuonClusterPtr = std::unique_ptr<const Muon::MuonClusterOnTrack> |
| using | MuonClusterVec = std::vector<MuonClusterPtr> |
Public Member Functions | |
| MuonNSWSegmentFinderTool (const std::string &type, const std::string &name, const IInterface *parent) | |
| default constructor | |
| virtual | ~MuonNSWSegmentFinderTool ()=default |
| destructor | |
| virtual StatusCode | initialize () override |
| void | find (const EventContext &ctx, SegmentMakingCache &cache) const override |
| int | wedgeNumber (const Muon::MuonClusterOnTrack *cluster) const |
| int | layerNumber (const Muon::MuonClusterOnTrack *cluster) const |
| int | channel (const Muon::MuonClusterOnTrack *cluster) const |
| Returns the channel of the measurement on the layer. | |
| const IMuonIdHelperSvc * | idHelper () const |
| bool | isPad (const Muon::MuonClusterOnTrack *clust) const |
| bool | isStrip (const Muon::MuonClusterOnTrack *clust) const |
| bool | isWire (const Muon::MuonClusterOnTrack *clust) const |
| template<size_t N> | |
| std::string | printSeed (const std::array< SeedMeasurement, N > &seed) const |
| std::string | print (const SeedMeasurement &meas) const |
| std::string | print (const MeasVec &clusters) const |
| std::string | print (const LayerMeasVec &sortedVec) const |
| 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 | sysInitialize () override |
| Perform system initialization for an algorithm. | |
| 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 |
Static Public Member Functions | |
| static const InterfaceID & | interfaceID () |
| access to tool interface | |
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 | |
| enum | HitType { Eta = 1 , Phi = 1 << 1 , Wire = 1 << 2 , Pad = 1 << 3 } |
| enum class | ChannelConstraint { InWindow , TooNarrow , TooWide } |
| typedef ServiceHandle< StoreGateSvc > | StoreGateSvc_t |
Private Member Functions | |
| std::vector< std::unique_ptr< Muon::MuonSegment > > | findStereoSegments (const EventContext &ctx, const std::vector< const Muon::MuonClusterOnTrack * > &allClusts, int singleWedge=0) const |
| Runs the NSW segment maker by combining 4 Micromega layers to a stereo seed. | |
| std::vector< std::unique_ptr< Muon::MuonSegment > > | findStgcPrecisionSegments (const EventContext &ctx, const std::vector< const Muon::MuonClusterOnTrack * > &MuonClusters, int singleWedge=0) const |
| Combines 2 sTgc strip layers to find 2D segments constraining the muon in the eta direction. | |
| std::vector< std::unique_ptr< Muon::MuonSegment > > | find3DSegments (const EventContext &ctx, const std::vector< const Muon::MuonClusterOnTrack * > &MuonClusters, std::vector< std::unique_ptr< Muon::MuonSegment > > &etaSegs, int singleWedge=0) const |
| MeasVec | cleanClusters (const std::vector< const Muon::MuonClusterOnTrack * > &MuonClusters, int hit_sel, int singleWedge) const |
| LayerMeasVec | classifyByLayer (const MeasVec &clusters, int hit_sel) const |
| std::vector< NSWSeed > | segmentSeedFromStgc (const LayerMeasVec &orderedClusters, bool usePhi) const |
| std::vector< NSWSeed > | segmentSeedFromMM (const LayerMeasVec &orderedClusters) const |
| std::vector< NSWSeed > | segmentSeedFromMM (const LayerMeasVec &orderedClusters, std::array< unsigned int, 4 > selLayers, unsigned int &trial_counter) const |
| std::vector< NSWSeed > | segmentSeedFromPads (const LayerMeasVec &orderedClusters, const Muon::MuonSegment &etaSeg) const |
| std::vector< std::pair< double, double > > | getPadPhiOverlap (const std::vector< std::vector< const Muon::sTgcPrepData * > > &pads) const |
| int | getClustersOnSegment (const LayerMeasVec &orderedclusters, NSWSeed &seed, const std::set< unsigned int > &exclude, bool useStereo=true) const |
| MeasVec | getCalibratedClusters (NSWSeed &seed) const |
| bool | hitsToTrack (const EventContext &ctx, const MeasVec &etaHitVec, const MeasVec &phiHitVec, const Trk::TrackParameters &startpar, TrackCollection &segTrkColl) const |
| std::unique_ptr< Trk::PseudoMeasurementOnTrack > | ipConstraint (const EventContext &ctx) const |
| creates the IP constraint | |
| std::unique_ptr< Trk::PseudoMeasurementOnTrack > | caloConstraint (const Trk::TrackParameters &startpar) const |
| std::vector< NSWSeed > | resolveAmbiguities (std::vector< NSWSeed > &&unresolved) const |
| std::vector< std::unique_ptr< Muon::MuonSegment > > | resolveAmbiguities (const EventContext &ctx, const TrackCollection &segColl, const Trk::Segment::Author a) const |
| std::unique_ptr< Trk::Track > | fit (const EventContext &ctx, const std::vector< const Trk::MeasurementBase * > &fit_meas, const Trk::TrackParameters &perigee) const |
| ChannelConstraint | compatiblyFromIP (const SeedMeasurement &meas1, const SeedMeasurement &meas2) const |
| Checks whether the two measurements are compatible within the IP constraint. | |
| std::pair< double, double > | coveredRadii (const SeedMeasurement &meas) const |
| Returns the minimal & maximal radial distance of a measurement. | |
| MeasVec | vetoBursts (MeasVec &&clustInLay) const |
| Removes clusters from high activity areas in the detector. | |
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> | |
Private Attributes | |
| ServiceHandle< IMuonIdHelperSvc > | m_idHelperSvc |
| ServiceHandle< IMuonEDMHelperSvc > | m_edmHelperSvc |
| ToolHandle< Trk::ITrackAmbiguityProcessorTool > | m_ambiTool |
| Tool for ambiguity solving. | |
| ToolHandle< Trk::ITrackFitter > | m_slTrackFitter |
| ToolHandle< IMuonTrackToSegmentTool > | m_trackToSegmentTool |
| PublicToolHandle< MuonEDMPrinterTool > | m_printer |
| ToolHandle< IMuonTrackCleaner > | m_trackCleaner |
| ToolHandle< Trk::ITrackSummaryTool > | m_trackSummary |
| ToolHandle< IMuonClusterOnTrackCreator > | m_muonClusterCreator {this, "MuonClusterCreator", ""} |
| Gaudi::Property< bool > | m_ipConstraint {this, "IPConstraint", true} |
| Gaudi::Property< bool > | m_caloConstraint {this, "CaloConstraint", false} |
| Use a virtual point at the calorimeter exit with same Z as constraint... | |
| Gaudi::Property< double > | m_maxClustDist {this, "ClusterDistance", 5.} |
| Gaudi::Property< int > | m_nOfSeedLayers {this, "NOfSeedLayers", 1} |
| Gaudi::Property< bool > | m_useStereoSeeding {this, "SeedMMStereos", true} |
| Gaudi::Property< bool > | m_usesTGCSeeding {this, "SeedWithsTGCS", true} |
| Gaudi::Property< unsigned int > | m_ocupMmBinWidth |
| Protection against slobbering Micromega events. | |
| Gaudi::Property< unsigned int > | m_ocupMmNumPerBin |
| Gaudi::Property< unsigned int > | m_ocupMmNumPerPair |
| Gaudi::Property< uint > | m_maxInputPads {this, "maxInputPads", 40, "Maximum number of pads per wedge layer."} |
| 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 |
Definition at line 126 of file MuonNSWSegmentFinderTool.h.
| using Muon::MuonNSWSegmentFinderTool::LayerMeasVec = std::vector<MeasVec> |
Definition at line 204 of file MuonNSWSegmentFinderTool.h.
Definition at line 203 of file MuonNSWSegmentFinderTool.h.
|
inherited |
Definition at line 27 of file IMuonNSWSegmentFinderTool.h.
|
inherited |
Definition at line 28 of file IMuonNSWSegmentFinderTool.h.
Definition at line 202 of file MuonNSWSegmentFinderTool.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
|
strongprivate |
| Enumerator | |
|---|---|
| InWindow | |
| TooNarrow | |
| TooWide | |
Definition at line 298 of file MuonNSWSegmentFinderTool.h.
|
private |
| Muon::MuonNSWSegmentFinderTool::MuonNSWSegmentFinderTool | ( | const std::string & | type, |
| const std::string & | name, | ||
| const IInterface * | parent ) |
default constructor
Definition at line 256 of file MuonNSWSegmentFinderTool.cxx.
|
virtualdefault |
destructor
|
private |
Definition at line 701 of file MuonNSWSegmentFinderTool.cxx.
| int Muon::MuonNSWSegmentFinderTool::channel | ( | const Muon::MuonClusterOnTrack * | cluster | ) | const |
Returns the channel of the measurement on the layer.
Definition at line 953 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 819 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 799 of file MuonNSWSegmentFinderTool.cxx.
|
inlineprivate |
Checks whether the two measurements are compatible within the IP constraint.
direction of final segment is well compatible with the IP cut
Use the Identity that 1./sinh(eta) = tan(theta) https://www.wolframalpha.com/input?i=1.%2Fsinh%28-ln%28tan%28x%2F2%29%29%29+-+tan%28x%29 Add another 0.25 as safety margin
Calculate the transverse radii at the edges of the
Definition at line 1370 of file MuonNSWSegmentFinderTool.cxx.
|
inlineprivate |
Returns the minimal & maximal radial distance of a measurement.
Definition at line 1404 of file MuonNSWSegmentFinderTool.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.
|
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
|
overridevirtual |
Remove all stereo segment hits from further processing
All segments
Single wedge segments. Important for the alignment runs
Loop over the 4 quads to create the segment container
The micromegas need 4 hits on track
Create the perigee parameter
Create the segment
Implements Muon::IMuonNSWSegmentFinderTool.
Definition at line 283 of file MuonNSWSegmentFinderTool.cxx.
|
private |
1 - All micromega layers have ideally been consumed. Try the seeding from the phi wires.
Definition at line 581 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Runs the NSW segment maker by combining 4 Micromega layers to a stereo seed.
Subsequentally, the hits on the hit road are added to the seeed and the segment is fitted
| ctx | EventContext |
| allClusts | Collection of all EventContext objects |
| singleWedge | 0 (use all 4 multiplets) 2/3 |
Order any parsed hit into the layer structure
Loop over the seeds
Require that the seed has at least one extra hit, if we're not restricting ourselves to a single wedge
Craete the perigee parameter
Create the segment
Definition at line 393 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Combines 2 sTgc strip layers to find 2D segments constraining the muon in the eta direction.
Resolve the ambiguities amongsty the tracks and convert the result
Definition at line 478 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 447 of file MuonNSWSegmentFinderTool.cxx.
Definition at line 1540 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 960 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 1440 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 741 of file MuonNSWSegmentFinderTool.cxx.
| const IMuonIdHelperSvc * Muon::MuonNSWSegmentFinderTool::idHelper | ( | ) | const |
Definition at line 281 of file MuonNSWSegmentFinderTool.cxx.
|
overridevirtual |
Definition at line 262 of file MuonNSWSegmentFinderTool.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.
|
inlinestaticinherited |
access to tool interface
Definition at line 22 of file IMuonNSWSegmentFinderTool.h.
|
private |
creates the IP constraint
Beamspot constraint?
Definition at line 718 of file MuonNSWSegmentFinderTool.cxx.
| bool Muon::MuonNSWSegmentFinderTool::isPad | ( | const Muon::MuonClusterOnTrack * | clust | ) | const |
Definition at line 728 of file MuonNSWSegmentFinderTool.cxx.
| bool Muon::MuonNSWSegmentFinderTool::isStrip | ( | const Muon::MuonClusterOnTrack * | clust | ) | const |
Definition at line 732 of file MuonNSWSegmentFinderTool.cxx.
| bool Muon::MuonNSWSegmentFinderTool::isWire | ( | const Muon::MuonClusterOnTrack * | clust | ) | const |
Definition at line 736 of file MuonNSWSegmentFinderTool.cxx.
| int Muon::MuonNSWSegmentFinderTool::layerNumber | ( | const Muon::MuonClusterOnTrack * | cluster | ) | const |
Definition at line 943 of file MuonNSWSegmentFinderTool.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.
| std::string Muon::MuonNSWSegmentFinderTool::print | ( | const LayerMeasVec & | sortedVec | ) | const |
Definition at line 1592 of file MuonNSWSegmentFinderTool.cxx.
| std::string Muon::MuonNSWSegmentFinderTool::print | ( | const MeasVec & | clusters | ) | const |
Definition at line 1585 of file MuonNSWSegmentFinderTool.cxx.
| std::string Muon::MuonNSWSegmentFinderTool::print | ( | const SeedMeasurement & | meas | ) | const |
Definition at line 1578 of file MuonNSWSegmentFinderTool.cxx.
| std::string Muon::MuonNSWSegmentFinderTool::printSeed | ( | const std::array< SeedMeasurement, N > & | seed | ) | const |
Definition at line 1570 of file MuonNSWSegmentFinderTool.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 |
Definition at line 544 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Definition at line 1414 of file MuonNSWSegmentFinderTool.cxx.
|
private |
layers 12-15 contain stgcs and are not of interest...
Combinatorics debugging stream
Definition at line 1122 of file MuonNSWSegmentFinderTool.cxx.
|
inlineprivate |
Determine whether the layer is X(1) / U(2) or V(3)
Order the strips such that the first and second pair consist each of crossing strips
The second pair is parallel
Assign the first measurement of each layer to calculate the linear transformation
Habemus valid strip quartett
Function to calculate the muon crossing
Reserve space for 200 seeds
The two channels are too narrow. Same conclusion holds for all previous hits from this layer combined with the next ones of layer 1
The opening angle of these two channels is just too wide
The first or the second one can cross with the third one
Reject combinations that consist only of 1 strip clusters
We will revise this requirement in the near future. Keep the block for the moment
Definition at line 1173 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Do not run an empty container
Definition at line 985 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Reject
Definition at line 868 of file MuonNSWSegmentFinderTool.cxx.
|
overridevirtualinherited |
Perform system initialization for an algorithm.
We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.
Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.
|
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.
Removes clusters from high activity areas in the detector.
The micromegas are slobbering quite a lot in the 2023 data taking leading to uncopable comptuing times. The burst vetoing aims to mitigate this situation. A histogram with a bin width of m_ocupMmBinWidth is defined Hits are filled into the accoring bin using their channel number Bins with large activity are then cleared. In the second step, pairs of bins where their sum is too exhaustive are removed.
Define the number of bins
Fill the measurements into the histograms
Apply the single bin cleaning
Apply the pair wise bin cleaning
Copy the rest over
Definition at line 1604 of file MuonNSWSegmentFinderTool.cxx.
| int Muon::MuonNSWSegmentFinderTool::wedgeNumber | ( | const Muon::MuonClusterOnTrack * | cluster | ) | const |
Definition at line 936 of file MuonNSWSegmentFinderTool.cxx.
|
private |
Tool for ambiguity solving.
Definition at line 148 of file MuonNSWSegmentFinderTool.h.
|
private |
Use a virtual point at the calorimeter exit with same Z as constraint...
Definition at line 184 of file MuonNSWSegmentFinderTool.h.
|
privateinherited |
Pointer to StoreGate (detector store by default)
Definition at line 393 of file AthCommonDataStore.h.
|
private |
Definition at line 141 of file MuonNSWSegmentFinderTool.h.
|
privateinherited |
Pointer to StoreGate (event store by default)
Definition at line 390 of file AthCommonDataStore.h.
|
private |
Definition at line 136 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 181 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 185 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 199 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 179 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 186 of file MuonNSWSegmentFinderTool.h.
|
private |
Protection against slobbering Micromega events.
Definition at line 193 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 195 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 197 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 163 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 153 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 168 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 173 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 158 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 189 of file MuonNSWSegmentFinderTool.h.
|
private |
Definition at line 190 of file MuonNSWSegmentFinderTool.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.