CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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
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
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
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