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 //muon service
22 
23 #include <vector>
24 
25 class DetLayer;
27 class MagneticField;
28 class MuonSeedCreator;
30 
31 typedef std::vector<TrajectorySeed> SeedContainer;
32 
34 public:
36  typedef std::deque<bool> BoolContainer;
37 
40 
43 
44  // Operations
45 
47  void setGeometry(const MuonDetLayerGeometry* lgeom) { muonLayers = lgeom; }
48 
50  void setBField(const MagneticField* theField) { BField = theField; }
51 
53  int build(edm::Event& event, const edm::EventSetup& eventSetup, TrajectorySeedCollection& seeds);
54 
55  std::vector<int> badSeedLayer;
56 
57 private:
59  bool foundMatchingSegment(int type,
60  SegmentContainer& protoTrack,
61  SegmentContainer& segments,
62  BoolContainer& usedSeg,
63  float& eta_temp,
64  float& phi_temp,
65  int& lastLayer,
66  bool& showeringBefore);
67 
69  std::vector<TrajectorySeed> seedCleaner(const edm::EventSetup& eventSetup, std::vector<TrajectorySeed>& seeds);
70 
72  double etaError(const GlobalPoint gp, double rErr);
73 
75  bool IdentifyShowering(SegmentContainer& segs,
76  BoolContainer& usedSeg,
77  float& eta_last,
78  float& phi_last,
79  int layer,
80  int& NShoweringSegments);
81 
83  //std::vector<SeedContainer> GroupSeeds( std::vector<TrajectorySeed>& seeds );
85  //TrajectorySeed BetterDirection( std::vector<TrajectorySeed>& seeds ) ;
86  //TrajectorySeed BetterChi2( std::vector<TrajectorySeed>& seeds );
88  //bool MomentumFilter(std::vector<TrajectorySeed>& seeds );
89 
91  //SeedContainer LengthFilter(std::vector<TrajectorySeed>& seeds );
93  //SeedContainer SeedCandidates( std::vector<TrajectorySeed>& seeds, bool good );
95  //unsigned int OverlapSegments( TrajectorySeed seed1, TrajectorySeed seed2 );
96 
98  //int NRecHitsFromSegment( const TrackingRecHit& rhit );
99  //int NRecHitsFromSegment( MuonTransientTrackingRecHit *rhit );
100  //int NRecHitsFromSegment( const MuonTransientTrackingRecHit& rhit );
101  //double NChi2OfSegment( const TrackingRecHit& rhit );
102 
104  //GlobalPoint SeedPosition( TrajectorySeed seed );
106  //GlobalVector SeedMomentum( TrajectorySeed seed );
107 
108  // This Producer private debug flag
109  bool debug;
110 
111  // Enable the DT measurement
113 
114  // Enable the CSC measurement
116 
117  // Minimum # of hits to consider a CSC Segment;
119 
120  // Minimum # of hits to consider a DT Segment;
122 
123  // Maximum distance from initial segment
130 
131  // Number of Segments from a shower
133  SegmentContainer ShoweringSegments;
134  std::vector<int> ShoweringLayers;
137 
140 
144 
145  // Cache geometry for current event
147 
148  // Cache Magnetic Field for current event
150 
151  // muon service
153 
154  // Minimum separation when we can distinguish between 2 muon seeds
155  // (to suppress combinatorics)
161 
163 };
164 #endif
bool debug
group the seeds
type
Definition: HCALResponse.h:21
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
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.
MuonServiceProxy * theService
~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