CMS 3D CMS Logo

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
102  SegmentContainer ShoweringSegments;
103  std::vector<int> ShoweringLayers;
104 
105  // muon service
107 
108  // Minimum separation when we can distinguish between 2 muon seeds
109  // (to suppress combinatorics)
110 
111 };
112 #endif
113 
TrajectorySeed BiggerCone(std::vector< TrajectorySeed > &seeds)
select the seed with bigger projection cone to next layer
std::vector< int > badSeedLayer
SegmentContainer ShoweringSegments
std::vector< TrajectorySeed > SeedContainer
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& normalized chi2 of associated segments of a seed
MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer
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