ATLAS Offline Software
MdtMathSegmentFinder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef DCMATHSEGMENTMAKER_MDTMATHSEGMENTFINDER_H
6 #define DCMATHSEGMENTMAKER_MDTMATHSEGMENTFINDER_H
7 
9 #include "GaudiKernel/ServiceHandle.h"
10 #include "GaudiKernel/ToolHandle.h"
14 
15 namespace Muon {
16  class MdtMathSegmentFinder : virtual public IMdtSegmentFinder::IMdtSegmentFinder, public AthAlgTool {
17  public:
18  MdtMathSegmentFinder(const std::string& t, const std::string& n, const IInterface* p);
19 
20  ~MdtMathSegmentFinder() = default;
21 
22  virtual StatusCode initialize();
23 
26  const TrkDriftCircleMath::CLVec& clvec, const TrkDriftCircleMath::Road& road,
27  const TrkDriftCircleMath::DCStatistics& dcstats,
28  const TrkDriftCircleMath::ChamberGeometry* multiGeo) const;
29 
30  protected:
31  ToolHandle<IDCSLFitProvider> m_dcslFitProvider{
32  this,
33  "DCFitProvider",
34  ""
35  };
36 
38  this,
39  "MuonIdHelperSvc",
40  "Muon::MuonIdHelperSvc/MuonIdHelperSvc"
41  };
42 
43  Gaudi::Property<int> m_finderDebugLevel{this, "FinderDebugLevel", 0, "switch on debug output of finder"};
44  Gaudi::Property<bool> m_doDrop{this, "DoDrop", true, "Recursive outlier removal"};
45  Gaudi::Property<bool> m_useChamberTheta{this, "UseChamberTheta", true, "Always look for pointing segments"};
46 
47  Gaudi::Property<bool> m_enableSeedCleaning {this, "EnableSeedCleaning", false, "only use dc witout neighbours as seeds"};
48  Gaudi::Property<double> m_occupancyThreshold{this, "OccupancyThreshold", 0.3, "occupancy threshold before enabling seed cleaning"};
49  Gaudi::Property<double> m_occupancyCutOff {this, "OccupancyCutoff", 0.8, "above the occupancy threshold no segment finding"};
50  Gaudi::Property<double> m_roadWidth {this, "AssociationRoadWidth", 1.5, "Road width used during hit association with seed lines"};
51  Gaudi::Property<double> m_chi2PerDofDrop {this, "Chi2PerDofDropping", 10., "Chi2 cut for recursive outlier removal"};
52  Gaudi::Property<double> m_ratioEmptyTubesCut{this, "RatioEmptyTubeCut", 1.1, "holes/hits cut - holes are all non-hits along the line"};
53 
54  Gaudi::Property<double> m_rpcAssociationPullCut{this, "RPCAssocationPullcut", 5., "Association cut for RPCs"};
55  Gaudi::Property<double> m_tgcAssociationPullCut{this, "TGCAssocationPullcut", 5., "Association cut for TGCs"};
56  Gaudi::Property<double> m_mdtAssociationPullCut{this, "MDTAssocationPullcut", 5., "Association cut for MDTs"};
57 
58  Gaudi::Property<bool> m_doAllHitSort{this, "SortSegmentWithAllHits", true, "Including triggers in segment selection"};
59 
60  Gaudi::Property<bool> m_doRoadAngleSeeding{this, "DoRoadSeeding", true, "use angle of road to seed segment search"};
61 
62 
63  Gaudi::Property<bool> m_doIPAngleSeeding{this, "DoIPSeeding", true, "use angle of IP to seed segment search"};
64  Gaudi::Property<double> m_tightRoadCut{this, "TightRoadCut", 0.1,
65  "tight cut on angle with prediction, used for very busy chambers"};
66 
67  Gaudi::Property<bool> m_doSingleMultiLayerScan{this, "DoSingleMultiLayerScan", true, "Look for segments in one multi layer"};
68 
69  Gaudi::Property<bool> m_recoverMdtOutliers{this, "RecoverMdtOutliers", true, "Recover MDT outliers after fit"};
70 
71  Gaudi::Property<bool> m_removeSingleOutliers{this, "RemoveSingleMdtOutliers", true, "Remove single MDT outliers"};
72  Gaudi::Property<bool> m_doCurvedSegmentFinder{this, "DoCurvedSegmentFinder", false, "Use the curved segment finding routine"};
73  Gaudi::Property<double> m_deltaCutT0Segments{this, "DeltaCutT0Segments", 5., "Delta cut for segments with T0 fit"};
74  Gaudi::Property<double> m_residualCutT0Segments {this, "ResidualCutT0Segments", 1., "Residual cut for segments with T0 fit"};
75  Gaudi::Property<bool> m_useSegmentQuality{this, "UseSegmentQuality", false, "Use segment quality in hit dropping"};
76 
77  Gaudi::Property<unsigned int> m_maxHitsPerFullSearch{this, "MaxHitsPerFullSearch", 100,
78  "maximum number of hits, above will use faster search mode"};
79  };
80 
81 } // namespace Muon
82 
83 #endif
Muon::MdtMathSegmentFinder::m_doRoadAngleSeeding
Gaudi::Property< bool > m_doRoadAngleSeeding
Definition: MdtMathSegmentFinder.h:60
Muon::MdtMathSegmentFinder::m_doSingleMultiLayerScan
Gaudi::Property< bool > m_doSingleMultiLayerScan
Definition: MdtMathSegmentFinder.h:67
Muon::MdtMathSegmentFinder::m_doDrop
Gaudi::Property< bool > m_doDrop
Definition: MdtMathSegmentFinder.h:44
Muon::MdtMathSegmentFinder
Definition: MdtMathSegmentFinder.h:16
IMdtSegmentFinder.h
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Muon::MdtMathSegmentFinder::m_rpcAssociationPullCut
Gaudi::Property< double > m_rpcAssociationPullCut
Definition: MdtMathSegmentFinder.h:54
TrkDriftCircleMath::ChamberGeometry
Definition: ChamberGeometry.h:17
Muon::MdtMathSegmentFinder::m_doCurvedSegmentFinder
Gaudi::Property< bool > m_doCurvedSegmentFinder
Definition: MdtMathSegmentFinder.h:72
TrkDriftCircleMath::CLVec
std::vector< Cluster > CLVec
Definition: Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Cluster.h:70
Muon::MdtMathSegmentFinder::MdtMathSegmentFinder
MdtMathSegmentFinder(const std::string &t, const std::string &n, const IInterface *p)
Definition: MdtMathSegmentFinder.cxx:17
Muon::MdtMathSegmentFinder::m_mdtAssociationPullCut
Gaudi::Property< double > m_mdtAssociationPullCut
Definition: MdtMathSegmentFinder.h:56
Muon::MdtMathSegmentFinder::m_dcslFitProvider
ToolHandle< IDCSLFitProvider > m_dcslFitProvider
Definition: MdtMathSegmentFinder.h:31
Muon::MdtMathSegmentFinder::m_finderDebugLevel
Gaudi::Property< int > m_finderDebugLevel
Definition: MdtMathSegmentFinder.h:43
Muon::MdtMathSegmentFinder::m_doAllHitSort
Gaudi::Property< bool > m_doAllHitSort
Definition: MdtMathSegmentFinder.h:58
Muon::MdtMathSegmentFinder::m_residualCutT0Segments
Gaudi::Property< double > m_residualCutT0Segments
Definition: MdtMathSegmentFinder.h:74
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::MdtMathSegmentFinder::m_chi2PerDofDrop
Gaudi::Property< double > m_chi2PerDofDrop
Definition: MdtMathSegmentFinder.h:51
Muon::MdtMathSegmentFinder::m_occupancyCutOff
Gaudi::Property< double > m_occupancyCutOff
Definition: MdtMathSegmentFinder.h:49
Muon::MdtMathSegmentFinder::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MdtMathSegmentFinder.h:37
TrkDriftCircleMath::DCVec
std::vector< DriftCircle > DCVec
Definition: DriftCircle.h:117
Muon::MdtMathSegmentFinder::m_deltaCutT0Segments
Gaudi::Property< double > m_deltaCutT0Segments
Definition: MdtMathSegmentFinder.h:73
Muon::MdtMathSegmentFinder::m_occupancyThreshold
Gaudi::Property< double > m_occupancyThreshold
Definition: MdtMathSegmentFinder.h:48
TrkDriftCircleMath::Road
TrkDriftCircleMath::Road - encodes the road given to the segment finder in station coordinates.
Definition: Road.h:15
Muon::MdtMathSegmentFinder::~MdtMathSegmentFinder
~MdtMathSegmentFinder()=default
Muon::MdtMathSegmentFinder::findSegments
virtual const TrkDriftCircleMath::SegVec findSegments(const TrkDriftCircleMath::DCVec &dcvec, const TrkDriftCircleMath::CLVec &clvec, const TrkDriftCircleMath::Road &road, const TrkDriftCircleMath::DCStatistics &dcstats, const TrkDriftCircleMath::ChamberGeometry *multiGeo) const
IMdtMdtMathSegmentFinder interface implementation
Definition: MdtMathSegmentFinder.cxx:30
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
Muon::MdtMathSegmentFinder::m_useChamberTheta
Gaudi::Property< bool > m_useChamberTheta
Definition: MdtMathSegmentFinder.h:45
Muon::MdtMathSegmentFinder::m_ratioEmptyTubesCut
Gaudi::Property< double > m_ratioEmptyTubesCut
Definition: MdtMathSegmentFinder.h:52
Muon::MdtMathSegmentFinder::m_roadWidth
Gaudi::Property< double > m_roadWidth
Definition: MdtMathSegmentFinder.h:50
Muon::MdtMathSegmentFinder::m_removeSingleOutliers
Gaudi::Property< bool > m_removeSingleOutliers
Definition: MdtMathSegmentFinder.h:71
Muon::MdtMathSegmentFinder::m_enableSeedCleaning
Gaudi::Property< bool > m_enableSeedCleaning
Definition: MdtMathSegmentFinder.h:47
Muon::MdtMathSegmentFinder::m_maxHitsPerFullSearch
Gaudi::Property< unsigned int > m_maxHitsPerFullSearch
Definition: MdtMathSegmentFinder.h:77
Muon::MdtMathSegmentFinder::m_tgcAssociationPullCut
Gaudi::Property< double > m_tgcAssociationPullCut
Definition: MdtMathSegmentFinder.h:55
Muon::MdtMathSegmentFinder::m_doIPAngleSeeding
Gaudi::Property< bool > m_doIPAngleSeeding
Definition: MdtMathSegmentFinder.h:63
Muon::MdtMathSegmentFinder::m_recoverMdtOutliers
Gaudi::Property< bool > m_recoverMdtOutliers
Definition: MdtMathSegmentFinder.h:69
TrkDriftCircleMath::SegVec
std::vector< Segment > SegVec
Definition: TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Segment.h:122
Muon::MdtMathSegmentFinder::initialize
virtual StatusCode initialize()
Definition: MdtMathSegmentFinder.cxx:21
Muon::MdtMathSegmentFinder::m_tightRoadCut
Gaudi::Property< double > m_tightRoadCut
Definition: MdtMathSegmentFinder.h:64
IDCSLFitProvider.h
AthAlgTool
Definition: AthAlgTool.h:26
Muon::MdtMathSegmentFinder::m_useSegmentQuality
Gaudi::Property< bool > m_useSegmentQuality
Definition: MdtMathSegmentFinder.h:75
IMuonIdHelperSvc.h
ServiceHandle< Muon::IMuonIdHelperSvc >
TrkDriftCircleMath::DCStatistics
This class offers no functionality, but to define a standard device for the maker to transfer to the ...
Definition: DCStatistics.h:19