CMS 3D CMS Logo

MuonSeedCleaner.h
Go to the documentation of this file.
1 #ifndef RecoMuon_MuonSeedCleaner_H
2 #define RecoMuon_MuonSeedCleaner_H
3 
16 
17 //muon service
19 
20 #include <vector>
21 
22 class DetLayer;
25 
26 typedef std::vector<TrajectorySeed> SeedContainer;
27 
29 public:
31  typedef std::deque<bool> BoolContainer;
32 
35 
38 
39  // Operations
40 
42  //void setGeometry( const MuonDetLayerGeometry* lgeom ) {muonLayers = lgeom;}
43 
45  //void setBField( const MagneticField* theField ) {BField = theField;}
46 
48  std::vector<TrajectorySeed> seedCleaner(const edm::EventSetup& eventSetup, std::vector<TrajectorySeed>& seeds);
49 
50  int NRecHitsFromSegment(const TrackingRecHit& rhit);
52  //int NRecHitsFromSegment( const MuonTransientTrackingRecHit& rhit );
53 
54  std::vector<int> badSeedLayer;
55 
56 private:
58  std::vector<SeedContainer> GroupSeeds(std::vector<TrajectorySeed>& seeds);
59 
61  TrajectorySeed Chi2LengthSelection(std::vector<TrajectorySeed>& seeds);
63  TrajectorySeed LeanHighMomentum(std::vector<TrajectorySeed>& seeds);
65  TrajectorySeed BiggerCone(std::vector<TrajectorySeed>& seeds);
67  TrajectorySeed MoreRecHits(std::vector<TrajectorySeed>& seeds);
68 
70  bool MomentumFilter(std::vector<TrajectorySeed>& seeds);
72  SeedContainer SeedCandidates(std::vector<TrajectorySeed>& seeds, bool good);
74  unsigned int OverlapSegments(const TrajectorySeed& seed1, const TrajectorySeed& seed2);
75 
77  double NChi2OfSegment(const TrackingRecHit& rhit);
78 
79  double SeedChi2(const TrajectorySeed& seed);
80  int SeedLength(const TrajectorySeed& seed);
81 
86 
87  // obsoleted functions
90  SeedContainer LengthFilter(std::vector<TrajectorySeed>& seeds);
91 
92  // This Producer private debug flag
93  bool debug;
94 
95  // Number of Segments from a shower
97  std::vector<int> ShoweringLayers;
98 
99  // muon service
101 
102  // Minimum separation when we can distinguish between 2 muon seeds
103  // (to suppress combinatorics)
104 };
105 #endif
MuonSeedCleaner(const edm::ParameterSet &, edm::ConsumesCollector &&)
Constructor.
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)
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)
auto const good
min quality of good
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