ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/BestMuonFinder.cc
(Generate patch)

Comparing UserCode/L1RpcTriggerAnalysis/src/BestMuonFinder.cc (file contents):
Revision 1.2 by konec, Sun Dec 4 15:36:14 2011 UTC vs.
Revision 1.8 by konec, Wed Apr 24 19:54:35 2013 UTC

# Line 13 | Line 13
13   #include "DataFormats/TrackReco/interface/Track.h"
14  
15   #include "UserCode/L1RpcTriggerAnalysis/interface/Utilities.h"
16 + #include "DataFormats/Math/interface/deltaR.h"
17 + #include "DataFormats/Math/interface/deltaPhi.h"
18   #include "TObjArray.h"
19   #include "TH1D.h"
20   #include "TH2D.h"
# Line 20 | Line 22
22   //TH2D* hMuHitsCSCvsEta;
23  
24   BestMuonFinder::BestMuonFinder(const edm::ParameterSet& cfg)
25 <  : lastEvent(0), lastRun(0), theConfig(cfg), theUnique(true), theMuon(0),
25 >  : lastEvent(0), lastRun(0), theConfig(cfg), theUnique(true), theAllMuons(0), theMuon(0),
26      hMuChi2Tk(0), hMuChi2Gl(0), hMuNHitsTk(0),
27 <    hMuPtVsEta(0), hMuHitsRPCvsCSC(0), hMuHitsRPCvsDT(0)
27 >    hMuPtVsEta(0), hMuHitsRPCvsCSC(0), hMuHitsRPCvsDT(0),
28 >    hMuonPt_BMF(0),hMuonEta_BMF (0),hMuonPhi_BMF(0)
29   {}
30  
31   bool BestMuonFinder::run(const edm::Event &ev, const edm::EventSetup &es)
# Line 44 | Line 47 | bool BestMuonFinder::run(const edm::Even
47    //get Muon
48    edm::Handle<reco::MuonCollection> muons;
49    ev.getByLabel( theConfig.getParameter<std::string>("muonColl"), muons);
50 +  theAllMuons = muons->size();
51    
52    for (reco::MuonCollection::const_iterator im = muons->begin(); im != muons->end(); ++im) {
53  
54 < //
55 < // FIXME - UNCOMMENT SELECTED LINES
56 < //
57 <
54 > /*
55 > if (ev.id().event() == 352597514) {
56 >    std::cout << "HERE Muon: matched stations:"<<im->numberOfMatchedStations() <<std::endl;
57 >    if (im->isGlobalMuon()) {
58 >       std::cout <<"  GlobalMuon: "
59 >                 <<" pt="<<im->combinedMuon()->pt()
60 >                 <<" eta="<<im->combinedMuon()->eta()
61 >                 <<" phi="<<im->combinedMuon()->phi()
62 >                 <<" chi2: "<<im->combinedMuon()->normalizedChi2()<<std::endl;
63 >     }
64 >    if (im->isTrackerMuon() && im->innerTrack().isNonnull()) {
65 >      std::cout <<" TrackerMuon: "
66 >                <<" pt="<<im->innerTrack()->pt()
67 >                <<" eta="<<im->innerTrack()->eta()
68 >                <<" phi="<<im->innerTrack()->phi()
69 >              << std::endl;
70 >    }
71 >    if (im->isStandAloneMuon())  std::cout <<" StandaloneMuon"<<std::endl;
72 > }
73 > */
74  
75      if (!im->isTrackerMuon() || !im->innerTrack().isNonnull()) continue;
76 +    if (hMuonPt_BMF)   hMuonPt_BMF->Fill( im->innerTrack()->pt());
77 +    if (hMuonEta_BMF) hMuonEta_BMF->Fill( im->innerTrack()->eta());
78 +    if (hMuonPhi_BMF) hMuonPhi_BMF->Fill( im->innerTrack()->phi());
79      if (hMuPtVsEta) hMuPtVsEta->Fill(im->innerTrack()->eta(), im->innerTrack()->pt());
80      if (im->innerTrack()->pt() < theConfig.getParameter<double>("minPt")) continue;
81      if (fabs(im->innerTrack()->eta()) >  theConfig.getParameter<double>("maxEta")) continue;
82 +    if (im->innerTrack()->dxy(reference) >  theConfig.getParameter<double>("maxTIP")) continue;
83      if (hMuChi2Tk) hMuChi2Tk->Fill(im->innerTrack()->normalizedChi2());
84      if (im->innerTrack()->normalizedChi2() >  theConfig.getParameter<double>("maxChi2Tk")) continue;
85      if (hMuChi2Gl && im->isGlobalMuon()) hMuChi2Gl->Fill(im->combinedMuon()->normalizedChi2());
62 /*
63    if (im->innerTrack()->dxy(reference) >  theConfig.getParameter<double>("maxTIP")) continue;
86      if (    theConfig.getParameter<bool>("requireOuterTrack")){
87 <          if(!im->isStandAloneMuon() || !im->outerTrack().isNonnull())continue;
87 >        if(!im->isStandAloneMuon() || !im->outerTrack().isNonnull())continue;
88            if(im->standAloneMuon()->normalizedChi2() >  theConfig.getParameter<double>("maxChi2Sa")) continue;
89      }
90      if ( theConfig.getParameter<bool>("requireGlobalTrack")) {
91            if(!im->isGlobalMuon() ||  !im->globalTrack().isNonnull()) continue;  
92            if(im->combinedMuon()->normalizedChi2() >  theConfig.getParameter<double>("maxChi2Mu")) continue;
93      }
94 < */
94 >
95 >    if (im->numberOfMatchedStations() <  theConfig.getParameter<int>("minNumberOfMatchedStations")) continue;
96 >    if (! (im->track()->hitPattern().numberOfValidPixelHits() > 0)) continue;
97 >
98   //
99   // TMP TIGHT SELECTION FOR IVAN
100 <  if (! im->isGlobalMuon()) continue;
101 <  if (! (im->globalTrack()->normalizedChi2() < 10)) continue;
102 <  if (! (im->globalTrack()->hitPattern().numberOfValidMuonHits() > 0)) continue;
103 <  if (! (im->numberOfMatchedStations() > 1)) continue;
104 <  if (! (fabs(im->innerTrack()->dxy(reference)) < 0.2)) continue;
105 <  if (! (im->track()->hitPattern().numberOfValidPixelHits() > 0)) continue;
106 <  if (! (im->track()->hitPattern().numberOfValidTrackerHits() > 10)) continue;
100 > //  if (! im->isGlobalMuon()) continue;
101 > //  if (! (im->globalTrack()->normalizedChi2() < 10)) continue;
102 > //  if (! (im->globalTrack()->hitPattern().numberOfValidMuonHits() > 0)) continue;
103 > //  if (! (im->numberOfMatchedStations() > 1)) continue;
104 > //  if (! (fabs(im->innerTrack()->dxy(reference)) < 0.2)) continue;
105 > //  if (! (im->track()->hitPattern().numberOfValidPixelHits() > 0)) continue;
106 > //  if (! (im->track()->hitPattern().numberOfValidTrackerHits() > 10)) continue;
107   // TMP END OF TIGHT MUON SELECTION FROM IVAN
108  
109      //remove muons without valid hits in tk and mu system
# Line 100 | Line 125 | bool BestMuonFinder::run(const edm::Even
125      if (nCSCHits==0 && hMuHitsRPCvsDT) hMuHitsRPCvsDT->Fill(nDTHits,nRPCHits);
126      }
127  
103 /*
128      if (nTrackerHits< theConfig.getParameter<int>("minNumberTrackerHits")) continue;
129      if ( nRPCHits < theConfig.getParameter<int>("minNumberRpcHits")) continue;
130      if ( nDTHits + nCSCHits < theConfig.getParameter<int>("minNumberDtCscHits")  ) continue;
107 */
131  
109    if (theMuon) theUnique = false;
132      if (!theMuon || (im->track()->pt() > theMuon->track()->pt()) ) theMuon = &(*im);
133    }
134 +
135 +  //
136 +  // check if muon is unigue
137 +  //
138 +  if (theMuon) {
139 +    double muonEta = theMuon->innerTrack()->eta();
140 +    double muonPhi = theMuon->innerTrack()->phi();
141 +    for (reco::MuonCollection::const_iterator im = muons->begin(); im != muons->end(); ++im) {
142 +      if (!im->isTrackerMuon() || !im->innerTrack().isNonnull()) continue;
143 +      if (&(*im) == theMuon) continue;
144 +      if ( fabs(reco::deltaPhi(muonPhi, im->innerTrack()->phi())) > theConfig.getParameter<double>("deltaPhiUnique")) continue;
145 +      if ( fabs(muonEta-im->innerTrack()->eta()) > theConfig.getParameter<double>("deltaEtaUnique")) continue;
146 +      theUnique = false;
147 +    }
148 +  }
149    return true;
150   }
151  
# Line 121 | Line 158 | void BestMuonFinder::initHistos( TObjArr
158    hMuHitsRPCvsCSC = new TH2D("hMuHitsRPCvsCSC","hMuHitsRPCvsCSC", 40,0.,40., 6,0.,6.); histos.Add(hMuHitsRPCvsCSC);
159    hMuHitsRPCvsDT  = new TH2D("hMuHitsRPCvsDT","hMuHitsRPCvsDT", 30,0.,60., 6,0.,6.); histos.Add(hMuHitsRPCvsDT);
160   //  hMuHitsCSCvsEta = new TH2D("hMuHitsCSCvsEta","hMuHitsCSCvsEta",17, 0.8,2.5, 40,0.,40); histos.Add(hMuHitsCSCvsEta);
161 +  hMuonPt_BMF  = new TH1D("hMuonPt_BMF","All global muons Pt;Glb.muon p_{T} [GeV];Muons / bin",L1PtScale::nPtBins,L1PtScale::ptBins);  histos.Add(hMuonPt_BMF);
162 +  hMuonEta_BMF = new TH1D("hMuonEta_BMF","All global muons Eta;Glb.muon #eta;Muons / bin",84, -2.1, 2.1);  histos.Add(hMuonEta_BMF);
163 +  hMuonPhi_BMF = new TH1D("hMuonPhi_BMF","All global muons Phi;Glb.muon #phi [rad];Muons / bin",90,-M_PI,M_PI);  histos.Add(hMuonPhi_BMF);
164 +
165   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines