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 {
35 
36  public:
37 
39  typedef std::deque<bool> BoolContainer;
40 
43 
46 
47  // Operations
48 
50  void setGeometry( const MuonDetLayerGeometry* lgeom ) {muonLayers = lgeom;}
51 
53  void setBField( const MagneticField* theField ) {BField = theField;}
54 
56  int build( edm::Event& event, const edm::EventSetup& eventSetup, TrajectorySeedCollection& seeds );
57 
58  std::vector<int> badSeedLayer;
59 
60 
61  private:
62 
64  bool foundMatchingSegment( int type, SegmentContainer& protoTrack, SegmentContainer& segments,
65  BoolContainer& usedSeg, float& eta_temp, float& phi_temp, int& lastLayer, bool& showeringBefore );
66 
68  std::vector<TrajectorySeed> seedCleaner(const edm::EventSetup& eventSetup, std::vector<TrajectorySeed>& seeds );
69 
71  double etaError(const GlobalPoint gp, double rErr);
72 
74  bool IdentifyShowering( SegmentContainer& segs, BoolContainer& usedSeg, float& eta_last, float& phi_last, int layer, int& NShoweringSegments );
75 
76 
78  //std::vector<SeedContainer> GroupSeeds( std::vector<TrajectorySeed>& seeds );
80  //TrajectorySeed BetterDirection( std::vector<TrajectorySeed>& seeds ) ;
81  //TrajectorySeed BetterChi2( std::vector<TrajectorySeed>& seeds );
83  //bool MomentumFilter(std::vector<TrajectorySeed>& seeds );
84 
85 
87  //SeedContainer LengthFilter(std::vector<TrajectorySeed>& seeds );
89  //SeedContainer SeedCandidates( std::vector<TrajectorySeed>& seeds, bool good );
91  //unsigned int OverlapSegments( TrajectorySeed seed1, TrajectorySeed seed2 );
92 
94  //int NRecHitsFromSegment( const TrackingRecHit& rhit );
95  //int NRecHitsFromSegment( MuonTransientTrackingRecHit *rhit );
96  //int NRecHitsFromSegment( const MuonTransientTrackingRecHit& rhit );
97  //double NChi2OfSegment( const TrackingRecHit& rhit );
98 
100  //GlobalPoint SeedPosition( TrajectorySeed seed );
102  //GlobalVector SeedMomentum( TrajectorySeed seed );
103 
104  // This Producer private debug flag
105  bool debug;
106 
107  // Enable the DT measurement
109 
110  // Enable the CSC measurement
112 
113  // Minimum # of hits to consider a CSC Segment;
115 
116  // Minimum # of hits to consider a DT Segment;
118 
119  // Maximum distance from initial segment
126 
127  // Number of Segments from a shower
129  SegmentContainer ShoweringSegments;
130  std::vector<int> ShoweringLayers;
133 
136 
140 
141  // Cache geometry for current event
143 
144  // Cache Magnetic Field for current event
146 
147  // muon service
149 
150  // Minimum separation when we can distinguish between 2 muon seeds
151  // (to suppress combinatorics)
157 
159 
160 };
161 #endif
162 
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