ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/SynchroSelectorL1Muon.cc
Revision: 1.1
Committed: Thu Mar 24 21:39:22 2011 UTC (14 years, 1 month ago) by konec
Content type: text/plain
Branch: MAIN
CVS Tags: Artur_11_07_2013_B, Artur_11_07_2013_A, Artur_11_07_2013, Artur_28_06_2013, Mikolaj_cmssw533, Mikolaj_cmssw52x, Kasia_30_04_2012, Mikolaj_08_10_2011, Mikolaj_05_10_2011, Mikolaj_14_09_2011, Artur_27_07_2011, Artur_25_07_2011, HEAD
Error occurred while calculating annotation data.
Log Message:
*** empty log message ***

File Contents

# Content
1 #include "UserCode/L1RpcTriggerAnalysis/interface/SynchroSelectorL1Muon.h"
2
3
4 #include "FWCore/Framework/interface/Event.h"
5 #include "FWCore/Framework/interface/EventSetup.h"
6 #include "FWCore/Framework/interface/ESHandle.h"
7 #include "FWCore/Utilities/interface/InputTag.h"
8
9 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
10 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
11 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTExtendedCand.h"
12 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
13
14 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
15 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
16 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
17
18 #include "DataFormats/MuonDetId/interface/RPCDetId.h"
19 #include "DataFormats/Math/interface/deltaPhi.h"
20
21 #include "TObjArray.h"
22 #include "TH1F.h"
23 #include <cmath>
24 using namespace edm;
25 using namespace std;
26
27
28 SynchroSelectorL1Muon::SynchroSelectorL1Muon(const edm::ParameterSet& cfg, TObjArray& histos)
29 : SynchroSelector(cfg)
30 {
31 hDeltaEta = new TH1F("hDeltaEta","hDeltaEta",100.,-1.,1.); histos.Add(hDeltaEta);
32 hDeltaPhi = new TH1F("hDeltaPhi","hDeltaPhi",100.,-1.,1.); histos.Add(hDeltaPhi);
33 }
34
35 void SynchroSelectorL1Muon::update(const edm::Event&ev, const edm::EventSetup& es)
36 {
37 theL1Muons.clear();
38 edm::Handle<L1MuGMTReadoutCollection> pCollection;
39 ev.getByLabel(theConfig.getParameter<edm::InputTag>("l1MuReadout"),pCollection);
40
41 L1MuGMTReadoutCollection const* gmtrc = pCollection.product();
42 if (!gmtrc) return;
43
44 vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
45
46 vector<string> systems = theConfig.getParameter<vector<string> >("systems");
47
48 for (vector<string>::const_iterator ic = systems.begin(); ic != systems.end(); ++ic) {
49 for( vector<L1MuGMTReadoutRecord>::const_iterator it = gmt_records.begin() ; it != gmt_records.end() ; it++ ) {
50 vector<L1MuRegionalCand> cands;
51 if ( (*ic) == "rpcb" ) cands = it->getBrlRPCCands();
52 else if ( (*ic) == "rpcf" ) cands = it->getFwdRPCCands();
53 else if ( (*ic) == "csc" ) cands = it->getCSCCands();
54 else if ( (*ic) == "dt" ) cands = it->getDTBXCands();
55 for (vector<L1MuRegionalCand>::const_iterator il=cands.begin(); il < cands.end(); ++il) {
56 if (!il->empty() && ( (il->bx() == 0) || !theConfig.getParameter<bool>("checkBX0") ) )theL1Muons.push_back(*il);
57 }
58 }
59 }
60 }
61
62
63 bool SynchroSelectorL1Muon::takeIt(const RPCDetId & det, const edm::Event&ev, const edm::EventSetup& es)
64 {
65 bool result = false;
66 edm::ESHandle<GlobalTrackingGeometry> globalGeometry;
67 es.get<GlobalTrackingGeometryRecord>().get(globalGeometry);
68
69
70 GlobalPoint detPos = globalGeometry->idToDet(det)->position();
71 float detEta = detPos.eta();
72 float detPhi = detPos.phi();
73 for(vector<L1MuRegionalCand>::const_iterator it =theL1Muons.begin(); it != theL1Muons.end(); ++it) {
74 if (it->empty()) continue;
75 float l1Eta = it->etaValue();
76 float l1Phi = it->phiValue();
77 bool matchedDeltaPhi = fabs(deltaPhi(l1Phi,detPhi)) < theConfig.getParameter<double>("maxDeltaPhi");
78 bool matchedDeltaEta = fabs(l1Eta-detEta) < theConfig.getParameter<double>("maxDeltaEta");
79 if (matchedDeltaPhi) hDeltaEta->Fill(l1Eta-detEta);
80 if (matchedDeltaEta) hDeltaPhi->Fill(deltaPhi(l1Phi,detPhi));
81 if ( !matchedDeltaPhi ) continue;
82 if ( !matchedDeltaEta ) continue;
83
84 // std::cout <<" compatible det, (eta,phi,r,z)= ("<<detEta<<", "<<detPhi<<", "<<detPos.perp()<<", "<<detPos.z()
85 // <<") L1 (eta,phi): ("<< l1Eta<<", "<<l1Phi<<")"<<std::endl;
86
87 result = true;
88 }
89
90 return result;
91 }
92