ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/HbbAnalysis/plugins/HbbAnalyzer.cc
Revision: 1.10
Committed: Wed Jun 24 16:08:31 2009 UTC (15 years, 10 months ago) by amagnan
Content type: text/plain
Branch: MAIN
CVS Tags: v00-02-01, v00-02-00, v00-01-00
Changes since 1.9: +111 -340 lines
Log Message:
debug jet+met selection

File Contents

# User Rev Content
1 amagnan 1.1 #include "DataFormats/Common/interface/Handle.h"
2     #include "DataFormats/Common/interface/TriggerResults.h"
3     #include "DataFormats/Common/interface/HLTenums.h"
4     #include "DataFormats/Common/interface/ValueMap.h"
5     #include "DataFormats/Candidate/interface/Candidate.h"
6     #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
7     #include "DataFormats/MuonReco/interface/Muon.h"
8     #include "DataFormats/MuonReco/interface/MuonFwd.h"
9     #include "DataFormats/VertexReco/interface/Vertex.h"
10     #include "DataFormats/HLTReco/interface/TriggerEvent.h"
11    
12 amagnan 1.6 #include "DataFormats/PatCandidates/interface/Lepton.h"
13 amagnan 1.1 #include "DataFormats/PatCandidates/interface/Muon.h"
14     #include "DataFormats/PatCandidates/interface/Electron.h"
15     #include "DataFormats/PatCandidates/interface/Tau.h"
16     #include "DataFormats/PatCandidates/interface/Jet.h"
17 amagnan 1.3 #include "DataFormats/PatCandidates/interface/MET.h"
18 amagnan 1.1
19     #include "FWCore/ServiceRegistry/interface/Service.h"
20     #include "PhysicsTools/UtilAlgos/interface/TFileService.h"
21    
22    
23     #include "UserCode/HbbAnalysis/plugins/HbbAnalyzer.hh"
24    
25     using namespace HbbAnalysis;
26    
27     HbbAnalyzer::HbbAnalyzer(const edm::ParameterSet & pset):
28     debug_(pset.getParameter<int>("DEBUG")),
29 amagnan 1.5 flavour_(pset.getParameter<unsigned int>("JetFlavour")),
30 amagnan 1.6 jetLeptonIsolation_(pset.getParameter<double>("JetLeptonDeltaRCut")),
31 amagnan 1.9 doElectrons_(pset.getParameter<bool>("DoElectrons")),
32     doMuons_(pset.getParameter<bool>("DoMuons")),
33     doTaus_(pset.getParameter<bool>("DoTaus")),
34     doJets_(pset.getParameter<bool>("DoJets")),
35     doMETs_(pset.getParameter<bool>("DoMETs")),
36 amagnan 1.10 doPairs_(pset.getParameter<bool>("DoPairs")),
37     //doLepLepPairs_(pset.getParameter<bool>("DoLepLepPairs")),
38 amagnan 1.3 genParticleSrc_(pset.getParameter<edm::InputTag>("GenParticles")),
39     electronSrc_(pset.getParameter<edm::InputTag>("Electrons")),
40 amagnan 1.1 muonSrc_(pset.getParameter<edm::InputTag>("Muons")),
41 amagnan 1.10 //caloTauSrc_(pset.getParameter<edm::InputTag>("CaloTaus")),
42     tauSrc_(pset.getParameter<edm::InputTag>("Taus")),
43 amagnan 1.1 jetSrc_(pset.getParameter<edm::InputTag>("Jets")),
44 amagnan 1.10 //jptjetSrc_(pset.getParameter<edm::InputTag>("JPTJets")),
45     //pfjetSrc_(pset.getParameter<edm::InputTag>("PFJets")),
46     metSrc_(pset.getParameter<edm::InputTag>("MET")),
47     //tcMetSrc_(pset.getParameter<edm::InputTag>("TCMET")),
48     //pfMetSrc_(pset.getParameter<edm::InputTag>("PFMET")),
49     pairSrc_(pset.getParameter<edm::InputTag>("Pair")),
50     //mmPairSrc_(pset.getParameter<edm::InputTag>("MuMuPair")),
51     //etPairSrc_(pset.getParameter<edm::InputTag>("ETauPair")),
52     //mtPairSrc_(pset.getParameter<edm::InputTag>("MuTauPair")),
53 amagnan 1.1 vertexSrc_(pset.getParameter<edm::InputTag>("Vertex")),
54 amagnan 1.3 triggerSrc_(pset.getParameter<edm::InputTag>("Trigger")),
55     hltPaths_(pset.getParameter<std::vector<std::string> >("HLTPaths"))
56 amagnan 1.1 //file_(0),
57     //processVec_(pset.getParameter<std::vector<std::string> >("ProcessVec"))
58     {//constructor
59    
60     //file_ = TFile::Open(pset.getUntrackedParameter<std::string>("OutputFile","MuTauAnalysis.root").c_str(),"RECREATE");
61     //if (!file_) {
62     // std::cerr << "### Failed opening output file, please check configuration parameter. Exiting ..." << std::endl;
63     // exit(0);
64     //}
65     //else std::cout << "***** File : " << file_->GetName() << " successfully opened." << std::endl;
66    
67    
68     }//constructor
69    
70     HbbAnalyzer::~HbbAnalyzer(){//destructor
71     //file_->Close();
72     }//destructor
73    
74    
75    
76     void HbbAnalyzer::beginJob(const edm::EventSetup&){//beginJob
77    
78 amagnan 1.5
79 amagnan 1.1 edm::Service<TFileService> lFileService;
80    
81 amagnan 1.9 TFileDirectory lDir = lFileService->mkdir("Dummy");
82     TFileDirectory lSubDir = lDir.mkdir("Dummy");
83     TFileDirectory lSubSubDir = lSubDir.mkdir("Dummy");
84     TFileDirectory lSubSubSubDir = lSubSubDir.mkdir("Dummy");
85 amagnan 1.5
86 amagnan 1.9 if (doJets_){
87     if (debug_) std::cout << "Initialising JetFlavour : " << std::endl;
88 amagnan 1.5
89 amagnan 1.9 lDir = lFileService->mkdir("JetFlavours");
90 amagnan 1.5
91 amagnan 1.9 jetFlav_.Initialise(lDir, debug_, flavour_);
92     }
93 amagnan 1.5
94 amagnan 1.9 if (doElectrons_){
95     if (debug_) std::cout << "Initialising electrons histograms : " << std::endl;
96 amagnan 1.5
97 amagnan 1.9 lDir = lFileService->mkdir("Electrons");
98 amagnan 1.1
99 amagnan 1.9 lSubDir = lDir.mkdir("All");
100 amagnan 1.3
101 amagnan 1.9 lSubSubDir = lSubDir.mkdir("Leading");
102     ElecHistLead_.Initialise(lSubSubDir,"Electrons");
103     lSubSubSubDir = lSubSubDir.mkdir( "GenMatched" );
104     ElecHistLeadGenMatched_.Initialise(lSubSubSubDir,"Electrons",true);
105 amagnan 1.7
106 amagnan 1.9 lSubSubDir = lSubDir.mkdir("NextToLeading");
107     ElecHistNtoLead_.Initialise(lSubSubDir,"Electrons");
108     lSubSubSubDir = lSubSubDir.mkdir( "GenMatched" );
109     ElecHistNtoLeadGenMatched_.Initialise(lSubSubSubDir,"Electrons",true);
110 amagnan 1.7
111 amagnan 1.9 lSubDir = lDir.mkdir("Barrel");
112    
113     lSubSubDir = lSubDir.mkdir("Leading");
114     ElecHistBarrelLead_.Initialise(lSubSubDir,"Electrons");
115     lSubSubSubDir = lSubSubDir.mkdir( "GenMatched" );
116     ElecHistBarrelLeadGenMatched_.Initialise(lSubSubSubDir,"Electrons",true);
117 amagnan 1.7
118 amagnan 1.9 lSubSubDir = lSubDir.mkdir("NextToLeading");
119     ElecHistBarrelNtoLead_.Initialise(lSubSubDir,"Electrons");
120     lSubSubSubDir = lSubSubDir.mkdir( "GenMatched" );
121     ElecHistBarrelNtoLeadGenMatched_.Initialise(lSubSubSubDir,"Electrons",true);
122 amagnan 1.7
123 amagnan 1.9 lSubDir = lDir.mkdir("EndCap");
124 amagnan 1.7
125 amagnan 1.9 lSubSubDir = lSubDir.mkdir("Leading");
126     ElecHistEndCapLead_.Initialise(lSubSubDir,"Electrons");
127     lSubSubSubDir = lSubSubDir.mkdir( "GenMatched" );
128     ElecHistEndCapLeadGenMatched_.Initialise(lSubSubSubDir,"Electrons",true);
129 amagnan 1.7
130 amagnan 1.9 lSubSubDir = lSubDir.mkdir("NextToLeading");
131     ElecHistEndCapNtoLead_.Initialise(lSubSubDir,"Electrons");
132     lSubSubSubDir = lSubSubDir.mkdir( "GenMatched" );
133     ElecHistEndCapNtoLeadGenMatched_.Initialise(lSubSubSubDir,"Electrons",true);
134     }
135 amagnan 1.7
136 amagnan 1.9 if (doMuons_){
137     if (debug_) std::cout << "Initialising muons histograms : " << std::endl;
138 amagnan 1.1
139 amagnan 1.9 lDir = lFileService->mkdir( "Muons" );
140 amagnan 1.1
141 amagnan 1.9 lSubDir = lDir.mkdir("Leading");
142     MuHistLead_.Initialise(lSubDir,"Muons");
143     lSubSubDir = lSubDir.mkdir( "GenMatched" );
144     MuHistLeadGenMatched_.Initialise(lSubSubDir,"Muons",true);
145 amagnan 1.5
146 amagnan 1.9 lSubDir = lDir.mkdir("NextToLeading");
147     MuHistNtoLead_.Initialise(lSubDir,"Muons");
148     lSubSubDir = lSubDir.mkdir( "GenMatched" );
149     MuHistNtoLeadGenMatched_.Initialise(lSubSubDir,"Muons",true);
150     }
151 amagnan 1.3
152 amagnan 1.9 if (doTaus_){
153     if (debug_) std::cout << "Initialising taus histograms : " << std::endl;
154 amagnan 1.2
155 amagnan 1.10 lDir = lFileService->mkdir( "Taus" );
156     TauHist_.Initialise(lDir,"Taus");
157 amagnan 1.9 lSubDir = lDir.mkdir( "GenMatched" );
158 amagnan 1.10 TauHistGenMatched_.Initialise(lSubDir,"GenMatchedTaus",true);
159 amagnan 1.3
160 amagnan 1.10 // lDir = lFileService->mkdir( "PFTaus" );
161     // PFTauHist_.Initialise(lDir,"PFTaus");
162     // lSubDir = lDir.mkdir( "GenMatched" );
163     // PFTauHistGenMatched_.Initialise(lSubDir,"GenMatchedTaus",true);
164 amagnan 1.9 }
165 amagnan 1.3
166 amagnan 1.9 if (doJets_){
167     if (debug_) std::cout << "Initialising jets histograms : " << std::endl;
168 amagnan 1.5
169 amagnan 1.9 lDir = lFileService->mkdir( "Jets" );
170 amagnan 1.3
171 amagnan 1.9 lSubDir = lDir.mkdir("All");
172     JetHist_.Initialise(lSubDir,"Jets",debug_);
173     lSubDir = lDir.mkdir("Leading");
174     JetHistLead_.Initialise(lSubDir,"Jets",debug_);
175     lSubDir = lDir.mkdir("NextToLeading");
176     JetHistNtoLead_.Initialise(lSubDir,"Jets",debug_);
177 amagnan 1.2
178 amagnan 1.10 // lDir = lFileService->mkdir( "PFJets" );
179 amagnan 1.9
180 amagnan 1.10 // lSubDir = lDir.mkdir("All");
181     // PFJetHist_.Initialise(lSubDir,"Jets",debug_);
182     // lSubDir = lDir.mkdir("Leading");
183     // PFJetHistLead_.Initialise(lSubDir,"PFJets",debug_);
184     // lSubDir = lDir.mkdir("NextToLeading");
185     // PFJetHistNtoLead_.Initialise(lSubDir,"PFJets",debug_);
186    
187     // lDir = lFileService->mkdir( "JPTJets" );
188    
189     // lSubDir = lDir.mkdir("All");
190     // JPTJetHist_.Initialise(lSubDir,"Jets",debug_);
191     // lSubDir = lDir.mkdir("Leading");
192     // JPTJetHistLead_.Initialise(lSubDir,"JPTJets",debug_);
193     // lSubDir = lDir.mkdir("NextToLeading");
194     // JPTJetHistNtoLead_.Initialise(lSubDir,"JPTJets",debug_);
195     }
196 amagnan 1.5
197 amagnan 1.3
198 amagnan 1.10 if (doPairs_){
199     lDir = lFileService->mkdir("Pairs");
200 amagnan 1.9 if (debug_) std::cout << "Initialising pairs histograms : " << std::endl;
201 amagnan 1.5
202 amagnan 1.10 lSubDir = lDir.mkdir("All");
203     PairHist_.Initialise(lSubDir,"Pairs",debug_);
204 amagnan 1.3
205 amagnan 1.10 lSubDir = lDir.mkdir("Leading");
206     PairHistLead_.Initialise(lSubDir,"Pairs",debug_);
207 amagnan 1.9 }
208 amagnan 1.3
209 amagnan 1.10 // if (doLepTauPairs_){
210     // lSubDir = lDir.mkdir("etau");
211     // ETPairHist_.Initialise(lSubDir,"Pairs",debug_);
212 amagnan 1.1
213 amagnan 1.10 // lSubDir = lDir.mkdir("mutau");
214     // MTPairHist_.Initialise(lSubDir,"Pairs",debug_);
215     // }
216 amagnan 1.1
217 amagnan 1.9 if (doMETs_){
218     if (debug_) std::cout << "Initialising METs histograms : " << std::endl;
219 amagnan 1.5
220 amagnan 1.9 lDir = lFileService->mkdir("MET");
221 amagnan 1.10 //lSubDir = lDir.mkdir("CaloMET");
222     MetHist_.Initialise(lDir,"MET",debug_);
223 amagnan 1.2
224 amagnan 1.10 // lSubDir = lDir.mkdir("PFMET");
225     // PFMetHist_.Initialise(lSubDir,"MET",debug_);
226 amagnan 1.1
227 amagnan 1.10 // lSubDir = lDir.mkdir("TcMET");
228     // TcMetHist_.Initialise(lSubDir,"MET",debug_);
229 amagnan 1.9 }
230 amagnan 1.1
231     }//beginJob
232    
233     void HbbAnalyzer::endJob(){//endJob
234    
235 amagnan 1.9 if (doElectrons_){
236     ElecHistLead_.FillEffHistograms();
237     ElecHistLeadGenMatched_.FillEffHistograms();
238 amagnan 1.7
239 amagnan 1.9 ElecHistNtoLead_.FillEffHistograms();
240     ElecHistNtoLeadGenMatched_.FillEffHistograms();
241 amagnan 1.7
242 amagnan 1.9 ElecHistBarrelLead_.FillEffHistograms();
243     ElecHistBarrelLeadGenMatched_.FillEffHistograms();
244 amagnan 1.7
245 amagnan 1.9 ElecHistBarrelNtoLead_.FillEffHistograms();
246     ElecHistBarrelNtoLeadGenMatched_.FillEffHistograms();
247 amagnan 1.7
248 amagnan 1.9 ElecHistEndCapLead_.FillEffHistograms();
249     ElecHistEndCapLeadGenMatched_.FillEffHistograms();
250 amagnan 1.7
251 amagnan 1.9 ElecHistEndCapNtoLead_.FillEffHistograms();
252     ElecHistEndCapNtoLeadGenMatched_.FillEffHistograms();
253     }
254 amagnan 1.7
255 amagnan 1.9 if (doMuons_){
256     MuHistLead_.FillEffHistograms();
257     MuHistLeadGenMatched_.FillEffHistograms();
258 amagnan 1.3
259 amagnan 1.9 MuHistNtoLead_.FillEffHistograms();
260     MuHistNtoLeadGenMatched_.FillEffHistograms();
261     }
262 amagnan 1.1
263 amagnan 1.9 if (doJets_){
264     jetFlav_.printSummary();
265     }
266 amagnan 1.5
267 amagnan 1.1 }//endJob
268    
269     void HbbAnalyzer::analyze(const edm::Event& aEvt, const edm::EventSetup& aEvtSetup){//analyze
270    
271     //dumpContent(aEvt,"","MuTauPAT");
272    
273     static bool firstEvent = true;
274    
275 amagnan 1.5
276     edm::Handle<reco::GenParticleCollection> lGenParticles;
277     try {
278     aEvt.getByLabel(genParticleSrc_,lGenParticles);
279     if (debug_) std::cout << "** ngenParticles = " << lGenParticles->size() << std::endl;
280     } catch(cms::Exception& e) {
281     std::cout << "AMM: Collection genParticles not available! Exception : " << e.what() << ". " << std::endl;
282     }
283    
284 amagnan 1.9 unsigned int lNPartons = 0;
285    
286     if (doJets_){
287     lNPartons = jetFlav_.fillPartons(lGenParticles);
288     }
289 amagnan 1.5
290 amagnan 1.9 if (debug_) std::cout << "--- Number of partons = " << lNPartons << " (doJets=" << doJets_ << ")." << std::endl;
291 amagnan 1.5
292    
293 amagnan 1.3 edm::Handle<std::vector<reco::Vertex> > lRecoVertices;
294     try {
295     aEvt.getByLabel(vertexSrc_, lRecoVertices);
296     if (!lRecoVertices.isValid()){
297     edm::LogInfo("ERROR")<< "Error! Can't get vertex by label. ";
298     }
299     if (debug_) std::cout << "** vertexcollection = " << lRecoVertices->size() << " elements." << std::endl;
300     } catch(cms::Exception& e) {
301     std::cout << "AMM: Collection " << vertexSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
302     }
303    
304    
305 amagnan 1.9
306 amagnan 1.3 edm::Handle<std::vector<pat::Electron> > lElectronCollection;
307    
308 amagnan 1.9 if (doElectrons_ || doJets_){
309     try {
310     aEvt.getByLabel(electronSrc_,lElectronCollection);
311     if (!lElectronCollection.isValid()){
312     edm::LogInfo("ERROR")<< "Error! Can't get electron by label. ";
313     }
314     if (debug_) std::cout << "** electroncollection = " << lElectronCollection->size() << " elements." << std::endl;
315     } catch(cms::Exception& e) {
316     std::cout << "AMM: Collection " << electronSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
317     }
318     if (lElectronCollection.isValid() && doElectrons_){
319    
320     ElecHistLead_.FillEventHistograms(lElectronCollection);
321     ElecHistLeadGenMatched_.FillEventHistograms(lElectronCollection);
322    
323     ElecHistNtoLead_.FillEventHistograms(lElectronCollection);
324     ElecHistNtoLeadGenMatched_.FillEventHistograms(lElectronCollection);
325    
326     if (lElectronCollection->size() > 0) {
327    
328     //std::vector<pat::Electron>::const_iterator iElectron = lElectronCollection->begin();
329     unsigned int iEle = 0;
330     for (std::vector<pat::Electron>::const_iterator iElectron = lElectronCollection->begin();
331     iElectron != lElectronCollection->end();
332     iElectron++)
333     {
334     //if (debug_ > 1) std::cout << "pT,eta,phi = " << (*iElectron).pt() << " " << (*iElectron).eta() << " " << (*iElectron).phi() << std::endl;
335     if (iEle == 0) {
336     ElecHistLead_.FillHistograms(*iElectron,lRecoVertices);
337     ElecHistLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
338     if (fabs((*iElectron).eta())<1.47) {
339     ElecHistBarrelLead_.FillHistograms(*iElectron,lRecoVertices);
340     ElecHistBarrelLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
341     }
342     else {
343     ElecHistEndCapLead_.FillHistograms(*iElectron,lRecoVertices);
344     ElecHistEndCapLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
345     }
346 amagnan 1.7 }
347 amagnan 1.9 else if (iEle == 1){
348     ElecHistNtoLead_.FillHistograms(*iElectron,lRecoVertices);
349     ElecHistNtoLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
350     if (fabs((*iElectron).eta())<1.47) {
351     ElecHistBarrelNtoLead_.FillHistograms(*iElectron,lRecoVertices);
352     ElecHistBarrelNtoLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
353     }
354     else {
355     ElecHistEndCapNtoLead_.FillHistograms(*iElectron,lRecoVertices);
356     ElecHistEndCapNtoLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
357     }
358 amagnan 1.7 }
359 amagnan 1.9 iEle++;
360 amagnan 1.3 }
361 amagnan 1.9 }
362 amagnan 1.3 }
363 amagnan 1.9 }//if doElec or doJets
364 amagnan 1.1
365     edm::Handle<std::vector<pat::Muon> > lMuonCollection;
366 amagnan 1.9 if (doMuons_ || doJets_){
367     try {
368     aEvt.getByLabel(muonSrc_,lMuonCollection);
369     if (!lMuonCollection.isValid()){
370     edm::LogInfo("ERROR")<< "Error! Can't get muon by label. ";
371     }
372     if (debug_) std::cout << "** muoncollection = " << lMuonCollection->size() << " elements." << std::endl;
373     } catch(cms::Exception& e) {
374     std::cout << "AMM: Collection " << muonSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
375     }
376     if (lMuonCollection.isValid() && doMuons_){
377    
378     MuHistLead_.FillEventHistograms(lMuonCollection);
379     MuHistLeadGenMatched_.FillEventHistograms(lMuonCollection);
380    
381     MuHistNtoLead_.FillEventHistograms(lMuonCollection);
382     MuHistNtoLeadGenMatched_.FillEventHistograms(lMuonCollection);
383    
384     if (lMuonCollection->size() > 0) {
385    
386     //std::vector<pat::Muon>::const_iterator iMuon = lMuonCollection->begin();
387     unsigned int iMu = 0;
388     for (std::vector<pat::Muon>::const_iterator iMuon = lMuonCollection->begin();
389     iMuon != lMuonCollection->end();
390     iMuon++)
391     {
392     //if (debug_ > 1) std::cout << "pT,eta,phi = " << (*iMuon).pt() << " " << (*iMuon).eta() << " " << (*iMuon).phi() << std::endl;
393     if (iMu == 0) {
394     MuHistLead_.FillHistograms(*iMuon);
395     MuHistLeadGenMatched_.FillHistograms(*iMuon);
396     }
397     else if (iMu == 1){
398     MuHistNtoLead_.FillHistograms(*iMuon);
399     MuHistNtoLeadGenMatched_.FillHistograms(*iMuon);
400     }
401     iMu++;
402 amagnan 1.3 }
403 amagnan 1.9 }
404 amagnan 1.1 }
405     }
406    
407    
408 amagnan 1.10 edm::Handle<std::vector<pat::Tau> > lTauCollection;
409 amagnan 1.9 if (doTaus_ || doJets_){
410     try {
411 amagnan 1.10 aEvt.getByLabel(tauSrc_,lTauCollection);
412     if (!lTauCollection.isValid()){
413     edm::LogInfo("ERROR")<< "Error! Can't get Tau by label. ";
414 amagnan 1.9 }
415 amagnan 1.10 if (debug_) std::cout << "** Taucollection = " << lTauCollection->size() << " elements." << std::endl;
416 amagnan 1.9 } catch(cms::Exception& e) {
417 amagnan 1.10 std::cout << "AMM: Collection " << tauSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
418 amagnan 1.9 }
419 amagnan 1.10 if (lTauCollection.isValid() && doTaus_){
420 amagnan 1.9
421 amagnan 1.10 TauHist_.FillEventHistograms(lTauCollection);
422     TauHistGenMatched_.FillEventHistograms(lTauCollection);
423 amagnan 1.9
424 amagnan 1.10 if (lTauCollection->size() > 0) {
425 amagnan 1.9
426     bool isLead = true;
427 amagnan 1.10 //std::vector<pat::Tau>::const_iterator iTau = lTauCollection->begin();
428     for (std::vector<pat::Tau>::const_iterator iTau = lTauCollection->begin();
429     iTau != lTauCollection->end();
430     iTau++)
431 amagnan 1.9 {
432 amagnan 1.10 //if (debug_ > 1) std::cout << "pT,eta,phi = " << (*iTau).pt() << " " << (*iTau).eta() << " " << (*iTau).phi() << std::endl;
433     TauHist_.FillHistograms(*iTau,lRecoVertices,isLead);
434 amagnan 1.9 isLead = false;
435     }
436     }
437 amagnan 1.2 }
438     }
439    
440 amagnan 1.1
441 amagnan 1.9 edm::Handle<std::vector<pat::Jet> > lJetCollection;
442 amagnan 1.10
443 amagnan 1.9 if (doJets_){
444     try {
445     aEvt.getByLabel(jetSrc_,lJetCollection);
446     if (!lJetCollection.isValid()){
447     edm::LogInfo("ERROR")<< "Error! Can't get jet by label. ";
448     }
449     if (debug_) std::cout << "** jetcollection = " << lJetCollection->size() << " elements." << std::endl;
450     } catch(cms::Exception& e) {
451     std::cout << "AMM: Collection " << jetSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
452     }
453     if (lJetCollection.isValid()){
454    
455     JetHist_.FillEventHistograms(lJetCollection,jetFlav_);
456     JetHistLead_.FillEventHistograms(lJetCollection,jetFlav_);
457     JetHistNtoLead_.FillEventHistograms(lJetCollection,jetFlav_);
458 amagnan 1.2
459 amagnan 1.9 if (lJetCollection->size() > 0) {
460 amagnan 1.10
461 amagnan 1.9 //std::vector<pat::Jet>::const_iterator iJet = lJetCollection->begin();
462     bool isLead = true;
463     unsigned int ij = 0;
464     for (std::vector<pat::Jet>::const_iterator iJet = lJetCollection->begin();
465     iJet != lJetCollection->end();
466     iJet++)
467     {
468 amagnan 1.10 double lDeltaRele = deltaRwithLepton<pat::Electron>(*iJet,lElectronCollection);
469     double lDeltaRmu = deltaRwithLepton<pat::Muon>(*iJet,lMuonCollection);
470     double lDeltaRtau = deltaRwithLepton<pat::Tau>(*iJet,lTauCollection);
471    
472     JetHist_.FillIsolationHistograms(lDeltaRele,lDeltaRmu,lDeltaRtau);
473    
474     if (debug_ > 1) std::cout << "Jet #" << ij << ": pT,eta,phi = " << (*iJet).pt() << " " << (*iJet).eta() << " " << (*iJet).phi() << std::endl;
475 amagnan 1.9 JetHist_.FillHistograms(*iJet,lGenParticles,isLead);
476 amagnan 1.10 if (ij == 0) JetHistLead_.FillHistograms(*iJet,lGenParticles,isLead);
477     else if (ij == 1) JetHistNtoLead_.FillHistograms(*iJet,lGenParticles,isLead);
478     isLead = false;
479     ij++;
480    
481 amagnan 1.9 }
482     }
483 amagnan 1.2 }
484    
485 amagnan 1.9 }//if doJets_
486 amagnan 1.3
487    
488 amagnan 1.10 edm::Handle<std::vector<CompositePtrCandidateT1T2MEt<reco::Candidate, reco::Candidate> > > lPair;
489     //edm::Handle<std::vector<CompositePtrCandidateT1T2MEt<reco::Candidate, reco::Candidate> > > lmmPair;
490 amagnan 1.3
491 amagnan 1.10 if (doPairs_){
492 amagnan 1.9 try {
493 amagnan 1.10 aEvt.getByLabel(pairSrc_,lPair);
494     if (!lPair.isValid()){
495     edm::LogInfo("ERROR")<< "Error! Can't get pairs by label. ";
496 amagnan 1.9 }
497 amagnan 1.10 if (debug_) std::cout << "** Pairs = " << lPair->size() << " elements." << std::endl;
498 amagnan 1.9 } catch(cms::Exception& e) {
499 amagnan 1.10 std::cout << "AMM: Collection " << pairSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
500 amagnan 1.9 }
501 amagnan 1.10 if (lPair.isValid()){
502 amagnan 1.9
503 amagnan 1.10 PairHist_.FillEventHistograms(lPair);
504     PairHistLead_.FillEventHistograms(lPair);
505 amagnan 1.9
506 amagnan 1.10 if (lPair->size() > 0) {
507 amagnan 1.9 bool isLead = true;
508 amagnan 1.10 for (std::vector<CompositePtrCandidateT1T2MEt<reco::Candidate, reco::Candidate> >::const_iterator iP = lPair->begin();
509     iP != lPair->end();
510 amagnan 1.9 iP++)
511     {
512 amagnan 1.10 PairHist_.FillHistograms(*iP);
513     if (isLead) PairHistLead_.FillHistograms(*iP);
514 amagnan 1.9 isLead = false;
515 amagnan 1.10 }
516 amagnan 1.9 }
517 amagnan 1.3 }
518    
519 amagnan 1.10 }//if doPairs_
520 amagnan 1.3
521 amagnan 1.9
522 amagnan 1.10 edm::Handle<std::vector<pat::MET> > lMetCol;
523 amagnan 1.3
524 amagnan 1.9 if (doMETs_){
525     try {
526 amagnan 1.10 aEvt.getByLabel(metSrc_,lMetCol);
527     if (!lMetCol.isValid()){
528     edm::LogInfo("ERROR")<< "Error! Can't get Met by label. ";
529 amagnan 1.9 }
530 amagnan 1.10 if (debug_) std::cout << "** Met = " << lMetCol->size() << " elements." << std::endl;
531 amagnan 1.9 } catch(cms::Exception& e) {
532 amagnan 1.10 std::cout << "AMM: Collection " << metSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
533 amagnan 1.9 }
534 amagnan 1.10 if (lMetCol.isValid()){
535 amagnan 1.9
536 amagnan 1.10 MetHist_.FillEventHistograms(lMetCol);
537 amagnan 1.9 }
538    
539     }//if doMETs_
540 amagnan 1.3
541    
542    
543 amagnan 1.4 // //triggers
544     // edm::Handle<edm::TriggerResults> lTrigCol;
545     // try {
546     // aEvt.getByLabel(triggerSrc_,lTrigCol);
547     // if (!lTrigCol.isValid()){
548     // edm::LogInfo("ERROR")<< "Error! Can't get triggers by label. ";
549     // }
550     // if (debug_) std::cout << "** triggers = " << lTrigCol->size() << std::endl;
551     // } catch(cms::Exception& e) {
552     // std::cout << "AMM: Collection " << triggerSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
553     // }
554     // if (lTrigCol.isValid()){
555     // edm::TriggerNames lNames;
556     // lNames.init(*lTrigCol);
557    
558     // for (unsigned int j=0; j<hltPaths_.size(); j++) {
559     // bool valid=false;
560     // for (unsigned int i=0; i<lTrigCol->size(); i++){
561     // std::string trueName = lNames_.triggerNames().at(i);
562     // //if (debug_ && j==0) std::cout << " Trigger #" << i << ", name = " << trueName << std::endl;
563     // if (trueName.find(hltPaths_.at(j)) != trueName.npos){
564     // //HLTPathsByIndex_[j]=triggerNames_.triggerIndex(HLTPathsByName_[j]);
565     // if (debug_) std::cout << "Trigger: " << trueName << " is valid. Index = " << i << std::endl;
566     // //triggerCol->accept(HLTPathsByIndex_[j]);
567     // valid=true;
568     // break;
569     // }
570     // }
571     // if (!valid) {
572     // std::cout << "*WARNING* Trigger: " << hltPaths_.at(j) << " is invalid." << std::endl;
573     // }
574     // }
575    
576     // }
577    
578 amagnan 1.1 firstEvent = false;
579    
580     }//analyze
581    
582 amagnan 1.6
583     void HbbAnalyzer::dumpContent(const edm::Event& aEvt,
584     std::string aName,
585     std::string aProcess
586     )
587     {//dumpContent
588 amagnan 1.1 //to dump the content of the event
589    
590     typedef std::vector< edm::Provenance const*> Provenances;
591     Provenances lProvenances;
592     aEvt.getAllProvenance(lProvenances);
593    
594     for(Provenances::iterator itProv = lProvenances.begin(), itProvEnd = lProvenances.end();
595     itProv != itProvEnd;
596     ++itProv) {
597    
598     std::string lName = (*itProv)->friendlyClassName();
599     std::string lModLabel = (*itProv)->moduleLabel();
600     std::string lInstanceName = (*itProv)->productInstanceName();
601     std::string lProcessName = (*itProv)->processName();
602    
603     //std::cout << " - friendlyName = " << lName << std::endl;
604     if (lName.find(aName) != lName.npos && lProcessName.find(aProcess) != lProcessName.npos) {
605    
606     //if (debug_>1) {
607     std::cout << " -- Object type = " << lName << std::endl
608     << " ----- Module = " << lModLabel << std::endl
609     << " ----- Instance = " << lInstanceName << std::endl;
610     //<< " ----- Process = " << lProcessName << std::endl;
611     //}
612     }
613     }
614     }//dumpContent
615    
616    
617    
618    
619    
620    
621    
622    
623    
624    
625    
626    
627    
628    
629    
630