CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonSeedCleaner.h
Go to the documentation of this file.
1 #ifndef RecoMuon_MuonSeedCleaner_H
2 #define RecoMuon_MuonSeedCleaner_H
3 
15 
16 //muon service
18 
19 #include<vector>
20 
21 class DetLayer;
24 
25 typedef std::vector<TrajectorySeed> SeedContainer;
26 
28 {
29 
30  public:
31 
33  typedef std::deque<bool> BoolContainer;
34 
36  explicit MuonSeedCleaner(const edm::ParameterSet&);
37 
40 
41  // Operations
42 
44  //void setGeometry( const MuonDetLayerGeometry* lgeom ) {muonLayers = lgeom;}
45 
47  //void setBField( const MagneticField* theField ) {BField = theField;}
48 
50  std::vector<TrajectorySeed> seedCleaner(const edm::EventSetup& eventSetup, std::vector<TrajectorySeed>& seeds );
51 
52  int NRecHitsFromSegment( const TrackingRecHit& rhit );
54  //int NRecHitsFromSegment( const MuonTransientTrackingRecHit& rhit );
55 
56  std::vector<int> badSeedLayer;
57 
58 
59  private:
60 
61 
63  std::vector<SeedContainer> GroupSeeds( std::vector<TrajectorySeed>& seeds );
64 
66  TrajectorySeed Chi2LengthSelection(std::vector<TrajectorySeed>& seeds );
68  TrajectorySeed LeanHighMomentum( std::vector<TrajectorySeed>& seeds );
70  TrajectorySeed BiggerCone( std::vector<TrajectorySeed>& seeds ) ;
72  TrajectorySeed MoreRecHits( std::vector<TrajectorySeed>& seeds );
73 
75  bool MomentumFilter(std::vector<TrajectorySeed>& seeds );
77  SeedContainer SeedCandidates( std::vector<TrajectorySeed>& seeds, bool good );
79  unsigned int OverlapSegments( const TrajectorySeed& seed1, const TrajectorySeed& seed2 );
80 
82  double NChi2OfSegment( const TrackingRecHit& rhit );
83 
84  double SeedChi2( const TrajectorySeed& seed );
85  int SeedLength( const TrajectorySeed& seed );
86 
91 
92  // obsoleted functions
95  SeedContainer LengthFilter(std::vector<TrajectorySeed>& seeds );
96 
97 
98  // This Producer private debug flag
99  bool debug;
100 
101  // Number of Segments from a shower
104  std::vector<int> ShoweringLayers;
105 
106  // Cache geometry for current event
107  //const MuonDetLayerGeometry* muonLayers;
108 
109  // Cache Magnetic Field for current event
111 
112  // muon service
114 
115  // Minimum separation when we can distinguish between 2 muon seeds
116  // (to suppress combinatorics)
117 
118 };
119 #endif
120 
TrajectorySeed BiggerCone(std::vector< TrajectorySeed > &seeds)
select the seed with bigger projection cone to next layer
std::vector< int > badSeedLayer
SegmentContainer ShoweringSegments
MuonServiceProxy * theService
GlobalPoint SeedPosition(const TrajectorySeed &seed)
retrieve seed global position
~MuonSeedCleaner()
Destructor.
double SeedChi2(const TrajectorySeed &seed)
MuonSeedCleaner(const edm::ParameterSet &)
Constructor.
unsigned int OverlapSegments(const TrajectorySeed &seed1, const TrajectorySeed &seed2)
check overlapping segment for seeds
std::deque< bool > BoolContainer
bool MomentumFilter(std::vector< TrajectorySeed > &seeds)
filter out the bad pt seeds, if all are bad pt seeds then keep all
double NChi2OfSegment(const TrackingRecHit &rhit)
retrieve number of rechits&amp; normalized chi2 of associated segments of a seed
MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer
const MagneticField * BField
std::vector< int > ShoweringLayers
TrajectorySeed LeanHighMomentum(std::vector< TrajectorySeed > &seeds)
select the highest momentum pt seed
int NRecHitsFromSegment(const TrackingRecHit &rhit)
std::vector< SeedContainer > GroupSeeds(std::vector< TrajectorySeed > &seeds)
group the seeds
SeedContainer SeedCandidates(std::vector< TrajectorySeed > &seeds, bool good)
pick the seeds w/ 1st layer information and w/ more than 1 segments
SeedContainer LengthFilter(std::vector< TrajectorySeed > &seeds)
GlobalVector SeedMomentum(const TrajectorySeed &seed)
retrieve seed global momentum
std::vector< TrajectorySeed > seedCleaner(const edm::EventSetup &eventSetup, std::vector< TrajectorySeed > &seeds)
Cache pointer to geometry.
TrajectorySeed MoreRecHits(std::vector< TrajectorySeed > &seeds)
select the seed with more rechits
std::vector< TrajectorySeed > SeedContainer
std::vector< MuonRecHitPointer > MuonRecHitContainer
int SeedLength(const TrajectorySeed &seed)
TrajectorySeed Chi2LengthSelection(std::vector< TrajectorySeed > &seeds)
select seed by balance length and chi2