CMS 3D CMS Logo

L1MuonSeedsMerger Class Reference

#include <RecoMuon/TrackerSeedGenerator/interface/L1MuonSeedsMerger.h>

List of all members.

Public Types

typedef std::pair< const
reco::Track *,
SeedingHitSet::Hits
TrackAndHits
typedef std::vector< TrackAndHitsTracksAndHits

Public Member Functions

 L1MuonSeedsMerger (const edm::ParameterSet &cfg)
virtual void resolve (TracksAndHits &) const
virtual ~L1MuonSeedsMerger ()

Private Types

enum  Action { goAhead, killFirst, killSecond, mergeTwo }

Private Member Functions

Action compare (const TrackAndHits *, const TrackAndHits *) const
const TrackAndHitsmerge (const TrackAndHits *, const TrackAndHits *) const

Private Attributes

float theDeltaEtaCut
float theDiffRelPtCut

Classes

struct  Less


Detailed Description

Definition at line 10 of file L1MuonSeedsMerger.h.


Member Typedef Documentation

typedef std::pair<const reco::Track*, SeedingHitSet::Hits > L1MuonSeedsMerger::TrackAndHits

Definition at line 12 of file L1MuonSeedsMerger.h.

typedef std::vector<TrackAndHits> L1MuonSeedsMerger::TracksAndHits

Definition at line 13 of file L1MuonSeedsMerger.h.


Member Enumeration Documentation

enum L1MuonSeedsMerger::Action [private]

Enumerator:
goAhead 
killFirst 
killSecond 
mergeTwo 

Definition at line 18 of file L1MuonSeedsMerger.h.


Constructor & Destructor Documentation

L1MuonSeedsMerger::L1MuonSeedsMerger ( const edm::ParameterSet cfg  ) 

Definition at line 6 of file L1MuonSeedsMerger.cc.

References edm::ParameterSet::getParameter(), theDeltaEtaCut, and theDiffRelPtCut.

00007 {
00008   theDeltaEtaCut  = cfg.getParameter<double>("deltaEtaCut");
00009   theDiffRelPtCut = cfg.getParameter<double>("diffRelPtCut");
00010 }

virtual L1MuonSeedsMerger::~L1MuonSeedsMerger (  )  [inline, virtual]

Definition at line 15 of file L1MuonSeedsMerger.h.

00015 {}


Member Function Documentation

L1MuonSeedsMerger::Action L1MuonSeedsMerger::compare ( const TrackAndHits a,
const TrackAndHits b 
) const [private]

Definition at line 60 of file L1MuonSeedsMerger.cc.

References goAhead, killFirst, killSecond, and theDiffRelPtCut.

00061 {
00062   int nshared = 0;
00063   const SeedingHitSet::Hits & hitsA = a->second;
00064   const SeedingHitSet::Hits & hitsB = b->second;
00065   SeedingHitSet::Hits::const_iterator ihA, ihB;
00066   for (ihA = hitsA.begin(); ihA != hitsA.end(); ihA++)
00067     for (ihB = hitsB.begin(); ihB != hitsB.end(); ihB++) {
00068       const TrackingRecHit* trha = *ihA;
00069       const TrackingRecHit* trhb = *ihB;
00070       if (trha==trhb) nshared++;
00071     }
00072 
00073   if (nshared >= 2) {
00074     if (hitsA.size() >= 3 && hitsB.size() >= 3 )
00075       return (a->first->chi2() > b->first->chi2()) ? killFirst : killSecond;
00076     else if (hitsB.size() >= 3)
00077       return killFirst;
00078     else
00079       return killSecond;
00080   }
00081   else if (nshared >= 1) {
00082     if (hitsA.size() != hitsB.size())
00083       return (hitsA.size() < hitsB.size()) ? killFirst : killSecond;
00084     else if (    hitsA.size() >= 3
00085               && a->first->charge()==b->first->charge()
00086               && fabs(a->first->pt()-b->first->pt())/b->first->pt() < theDiffRelPtCut )
00087       return (a->first->chi2() > b->first->chi2()) ? killFirst : killSecond;
00088     else if (    hitsA.size() == 2 )
00089       return (a->first->pt() < b->first->pt()) ? killFirst : killSecond;
00090     else
00091       return goAhead;
00092   }
00093   else return goAhead;
00094 }

const L1MuonSeedsMerger::TrackAndHits * L1MuonSeedsMerger::merge ( const TrackAndHits a,
const TrackAndHits b 
) const [private]

Definition at line 47 of file L1MuonSeedsMerger.cc.

00048 {
00049 // temporary algorith, takes track with bigger pt, to be reimplemented
00050   if (a->first->pt() > b->first->pt()) {
00051     delete b->first;
00052     return a;
00053   } else {
00054     delete a->first;
00055     return b;
00056   }
00057 }

virtual void L1MuonSeedsMerger::resolve ( TracksAndHits  )  const [virtual]

Referenced by TSGFromL1Muon::produce().


Member Data Documentation

float L1MuonSeedsMerger::theDeltaEtaCut [private]

Definition at line 23 of file L1MuonSeedsMerger.h.

Referenced by L1MuonSeedsMerger().

float L1MuonSeedsMerger::theDiffRelPtCut [private]

Definition at line 24 of file L1MuonSeedsMerger.h.

Referenced by compare(), and L1MuonSeedsMerger().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:26:57 2009 for CMSSW by  doxygen 1.5.4