CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/RecoMuon/MuonSeedGenerator/src/MuonSeedOrcaPatternRecognition.h

Go to the documentation of this file.
00001 #ifndef MuonSeedGenerator_MuonSeedOrcaPatternRecognition_h
00002 #define MuonSeedGenerator_MuonSeedOrcaPatternRecognition_h
00003 
00004 #include "RecoMuon/MuonSeedGenerator/src/MuonSeedVPatternRecognition.h"
00005 
00006 
00007 class MuonSeedOrcaPatternRecognition : public MuonSeedVPatternRecognition
00008 {
00009 public:
00010   explicit MuonSeedOrcaPatternRecognition(const edm::ParameterSet & pset); 
00011 
00012   void produce(const edm::Event& event, const edm::EventSetup& eSetup,
00013                std::vector<MuonRecHitContainer> & result);
00014 
00015 private:
00016 
00017   // aalocates a zeroed array of a given size
00018   bool * zero(unsigned listSize);
00019 
00020   void endcapPatterns(
00021     const MuonRecHitContainer & me11, const MuonRecHitContainer & me12,
00022     const MuonRecHitContainer & me2,  const MuonRecHitContainer & me3,
00023     const MuonRecHitContainer & me4,  const  MuonRecHitContainer & mb1,
00024     const MuonRecHitContainer & mb2,  const  MuonRecHitContainer & mb3,
00025     bool * MB1, bool * MB2, bool * MB3,
00026     std::vector<MuonRecHitContainer> & result);
00027 
00028   void complete(MuonRecHitContainer& seedSegments,
00029                 const MuonRecHitContainer &recHits, bool* used=0) const;
00030 
00031   MuonRecHitPointer
00032   bestMatch(const ConstMuonRecHitPointer & first,  MuonRecHitContainer & good_rhit) const;
00033   // some score to measure how well the two hits match
00034   double discriminator(const ConstMuonRecHitPointer & first, 
00035                        MuonRecHitPointer & other) const;
00036   // see if it's OK to add
00037   bool check(const MuonRecHitContainer & segments);
00038   bool isCrack(const ConstMuonRecHitPointer & segment) const;
00039   void rememberCrackSegments(const MuonRecHitContainer & segments,
00040                              MuonRecHitContainer & crackSegments) const;
00041 
00042   void dumpLayer(const char * name, const MuonRecHitContainer & segments) const;
00043 
00045   MuonRecHitContainer filterSegments(const MuonRecHitContainer & segments, double dThetaCut) const;
00046   void filterOverlappingChambers(MuonRecHitContainer & segments) const;
00047   bool isME1A(const ConstMuonRecHitPointer & segment) const;
00048   int countHits(const MuonRecHitPointer & segment) const;
00049   // can mark other ME1A as used if one is.  
00050   void markAsUsed(int nr, const MuonRecHitContainer &recHits, bool* used) const;
00051   std::vector<double> theCrackEtas;
00052   double theCrackWindow;
00053 };
00054 
00055 #endif
00056