CMS 3D CMS Logo

MuonSeedBuilder.h
Go to the documentation of this file.
1 #ifndef RecoMuon_MuonSeedBuilder_H
2 #define RecoMuon_MuonSeedBuilder_H
3 
19 
20 #include <vector>
21 
22 class DetLayer;
24 class MagneticField;
25 class MuonSeedCreator;
27 
28 typedef std::vector<TrajectorySeed> SeedContainer;
29 
31 public:
33  typedef std::deque<bool> BoolContainer;
34 
37 
40 
41  // Operations
42 
44  void setGeometry(const MuonDetLayerGeometry* lgeom) { muonLayers = lgeom; }
45 
47  void setBField(const MagneticField* theField) { BField = theField; }
48 
51 
52  std::vector<int> badSeedLayer;
53 
54 private:
56  bool foundMatchingSegment(int type,
57  SegmentContainer& protoTrack,
58  SegmentContainer& segments,
59  BoolContainer& usedSeg,
60  float& eta_temp,
61  float& phi_temp,
62  int& lastLayer,
63  bool& showeringBefore);
64 
66  std::vector<TrajectorySeed> seedCleaner(const edm::EventSetup& eventSetup, std::vector<TrajectorySeed>& seeds);
67 
69  double etaError(const GlobalPoint gp, double rErr);
70 
73  BoolContainer& usedSeg,
74  float& eta_last,
75  float& phi_last,
76  int layer,
77  int& NShoweringSegments);
78 
80  //std::vector<SeedContainer> GroupSeeds( std::vector<TrajectorySeed>& seeds );
82  //TrajectorySeed BetterDirection( std::vector<TrajectorySeed>& seeds ) ;
83  //TrajectorySeed BetterChi2( std::vector<TrajectorySeed>& seeds );
85  //bool MomentumFilter(std::vector<TrajectorySeed>& seeds );
86 
88  //SeedContainer LengthFilter(std::vector<TrajectorySeed>& seeds );
90  //SeedContainer SeedCandidates( std::vector<TrajectorySeed>& seeds, bool good );
92  //unsigned int OverlapSegments( TrajectorySeed seed1, TrajectorySeed seed2 );
93 
95  //int NRecHitsFromSegment( const TrackingRecHit& rhit );
96  //int NRecHitsFromSegment( MuonTransientTrackingRecHit *rhit );
97  //int NRecHitsFromSegment( const MuonTransientTrackingRecHit& rhit );
98  //double NChi2OfSegment( const TrackingRecHit& rhit );
99 
101  //GlobalPoint SeedPosition( TrajectorySeed seed );
103  //GlobalVector SeedMomentum( TrajectorySeed seed );
104 
105  // This Producer private debug flag
106  bool debug;
107 
108  // Enable the DT measurement
110 
111  // Enable the CSC measurement
113 
114  // Minimum # of hits to consider a CSC Segment;
116 
117  // Minimum # of hits to consider a DT Segment;
119 
120  // Maximum distance from initial segment
127 
128  // Number of Segments from a shower
131  std::vector<int> ShoweringLayers;
134 
137 
141 
142  // Cache geometry for current event
144 
145  // Cache Magnetic Field for current event
147 
148  // Minimum separation when we can distinguish between 2 muon seeds
149  // (to suppress combinatorics)
155 
157 };
158 #endif
bool debug
group the seeds
double etaError(const GlobalPoint gp, double rErr)
calculate the eta error from global R error
MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer
SegmentContainer ShoweringSegments
bool IdentifyShowering(SegmentContainer &segs, BoolContainer &usedSeg, float &eta_last, float &phi_last, int layer, int &NShoweringSegments)
identify the showering layer
int build(edm::Event &event, const edm::EventSetup &eventSetup, TrajectorySeedCollection &seeds)
Build seed collection.
bool foundMatchingSegment(int type, SegmentContainer &protoTrack, SegmentContainer &segments, BoolContainer &usedSeg, float &eta_temp, float &phi_temp, int &lastLayer, bool &showeringBefore)
Find segment which matches protoTrack for endcap only.
MuonDetLayerMeasurements * muonMeasurements
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
MuonSeedCleaner * muonSeedClean_
const MagneticField * BField
edm::InputTag theCSCSegmentLabel
Name of the CSC segment collection.
std::deque< bool > BoolContainer
edm::InputTag theDTSegmentLabel
Name of the DT segment collection.
std::vector< int > ShoweringLayers
std::vector< TrajectorySeed > TrajectorySeedCollection
std::vector< int > badSeedLayer
void setBField(const MagneticField *theField)
Cache pointer to Magnetic field.
void setGeometry(const MuonDetLayerGeometry *lgeom)
Cache pointer to geometry.
std::vector< TrajectorySeed > seedCleaner(const edm::EventSetup &eventSetup, std::vector< TrajectorySeed > &seeds)
cleaning the seeds
MuonSeedBuilder(const edm::ParameterSet &, edm::ConsumesCollector &)
Constructor.
~MuonSeedBuilder()
Destructor.
MuonSeedCreator * muonSeedCreate_
Create seed according to region (CSC, DT, Overlap)
const MuonDetLayerGeometry * muonLayers
std::vector< TrajectorySeed > SeedContainer
std::vector< MuonRecHitPointer > MuonRecHitContainer
Definition: event.py:1