CMS 3D CMS Logo

BasicMuonAnalyzer.cc
Go to the documentation of this file.
4 
5 
9  muons_(cfg.getParameter<edm::InputTag>("muons"))
10 {
11  hists_["muonPt" ] = fs.make<TH1F>("muonPt" , "pt" , 100, 0., 300.);
12  hists_["muonEta" ] = fs.make<TH1F>("muonEta" , "eta" , 100, -3., 3.);
13  hists_["muonPhi" ] = fs.make<TH1F>("muonPhi" , "phi" , 100, -5., 5.);
14  hists_["mumuMass"] = fs.make<TH1F>("mumuMass", "mass", 90, 30., 120.);
15 }
17  edm::BasicAnalyzer::BasicAnalyzer(cfg, fs),
18  muons_(cfg.getParameter<edm::InputTag>("muons")) ,
19  muonsToken_(iC.consumes<std::vector<reco::Muon> >(muons_))
20 {
21  hists_["muonPt" ] = fs.make<TH1F>("muonPt" , "pt" , 100, 0., 300.);
22  hists_["muonEta" ] = fs.make<TH1F>("muonEta" , "eta" , 100, -3., 3.);
23  hists_["muonPhi" ] = fs.make<TH1F>("muonPhi" , "phi" , 100, -5., 5.);
24  hists_["mumuMass"] = fs.make<TH1F>("mumuMass", "mass", 90, 30., 120.);
25 }
26 
28 void
30 {
31  // define what muon you are using; this is necessary as FWLite is not
32  // capable of reading edm::Views
33  using reco::Muon;
34 
35  // Handle to the muon collection
37  event.getByLabel(muons_, muons);
38 
39  // loop muon collection and fill histograms
40  for(std::vector<Muon>::const_iterator mu1=muons->begin(); mu1!=muons->end(); ++mu1){
41  hists_["muonPt" ]->Fill( mu1->pt () );
42  hists_["muonEta"]->Fill( mu1->eta() );
43  hists_["muonPhi"]->Fill( mu1->phi() );
44  if( mu1->pt()>20 && fabs(mu1->eta())<2.1 ){
45  for(std::vector<Muon>::const_iterator mu2=muons->begin(); mu2!=muons->end(); ++mu2){
46  if(mu2>mu1){ // prevent double conting
47  if( mu1->charge()*mu2->charge()<0 ){ // check only muon pairs of unequal charge
48  if( mu2->pt()>20 && fabs(mu2->eta())<2.1 ){
49  hists_["mumuMass"]->Fill( (mu1->p4()+mu2->p4()).mass() );
50  }
51  }
52  }
53  }
54  }
55  }
56 }
std::map< std::string, TH1 * > hists_
histograms
BasicMuonAnalyzer(const edm::ParameterSet &cfg, TFileDirectory &fs)
default constructor
Abstract base class for FWLite and EDM friendly analyzers.
Definition: Muon.py:1
void analyze(const edm::EventBase &event) override
everything that needs to be done during the event loop
T * make(const Args &...args) const
make new ROOT object
fixed size matrix
HLT enums.
edm::EDGetTokenT< std::vector< reco::Muon > > muonsToken_
Definition: event.py:1
edm::InputTag muons_
input tag for mouns