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 
18 
19 //muon service
21 
22 #include<vector>
23 
24 class DetLayer;
26 class MagneticField;
27 class MuonSeedCreator;
29 
30 typedef std::vector<TrajectorySeed> SeedContainer;
31 
33 {
34 
35  public:
36 
38  typedef std::deque<bool> BoolContainer;
39 
41  explicit MuonSeedBuilder(const edm::ParameterSet&);
42 
45 
46  // Operations
47 
49  void setGeometry( const MuonDetLayerGeometry* lgeom ) {muonLayers = lgeom;}
50 
52  void setBField( const MagneticField* theField ) {BField = theField;}
53 
55  int build( edm::Event& event, const edm::EventSetup& eventSetup, TrajectorySeedCollection& seeds );
56 
57  std::vector<int> badSeedLayer;
58 
59 
60  private:
61 
63  bool foundMatchingSegment( int type, SegmentContainer& protoTrack, SegmentContainer& segments,
64  BoolContainer& usedSeg, float& eta_temp, float& phi_temp, int& lastLayer, bool& showeringBefore );
65 
67  std::vector<TrajectorySeed> seedCleaner(const edm::EventSetup& eventSetup, std::vector<TrajectorySeed>& seeds );
68 
70  double etaError(const GlobalPoint gp, double rErr);
71 
73  bool IdentifyShowering( SegmentContainer& segs, BoolContainer& usedSeg, float& eta_last, float& phi_last, int layer, int& NShoweringSegments );
74 
75 
77  //std::vector<SeedContainer> GroupSeeds( std::vector<TrajectorySeed>& seeds );
79  //TrajectorySeed BetterDirection( std::vector<TrajectorySeed>& seeds ) ;
80  //TrajectorySeed BetterChi2( std::vector<TrajectorySeed>& seeds );
82  //bool MomentumFilter(std::vector<TrajectorySeed>& seeds );
83 
84 
86  //SeedContainer LengthFilter(std::vector<TrajectorySeed>& seeds );
88  //SeedContainer SeedCandidates( std::vector<TrajectorySeed>& seeds, bool good );
90  //unsigned int OverlapSegments( TrajectorySeed seed1, TrajectorySeed seed2 );
91 
93  //int NRecHitsFromSegment( const TrackingRecHit& rhit );
94  //int NRecHitsFromSegment( MuonTransientTrackingRecHit *rhit );
95  //int NRecHitsFromSegment( const MuonTransientTrackingRecHit& rhit );
96  //double NChi2OfSegment( const TrackingRecHit& rhit );
97 
99  //GlobalPoint SeedPosition( TrajectorySeed seed );
101  //GlobalVector SeedMomentum( TrajectorySeed seed );
102 
103  // This Producer private debug flag
104  bool debug;
105 
106  // Enable the DT measurement
108 
109  // Enable the CSC measurement
111 
112  // Minimum # of hits to consider a CSC Segment;
114 
115  // Minimum # of hits to consider a DT Segment;
117 
118  // Maximum distance from initial segment
125 
126  // Number of Segments from a shower
129  std::vector<int> ShoweringLayers;
132 
135 
139 
140  // Cache geometry for current event
142 
143  // Cache Magnetic Field for current event
145 
146  // muon service
148 
149  // Minimum separation when we can distinguish between 2 muon seeds
150  // (to suppress combinatorics)
156 
157 };
158 #endif
159 
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
MuonSeedBuilder(const edm::ParameterSet &)
Constructor.
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.
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
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