ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/HbbAnalysis/plugins/HbbAnalyzer.cc
Revision: 1.11
Committed: Thu Sep 17 19:39:51 2009 UTC (15 years, 7 months ago) by amagnan
Content type: text/plain
Branch: MAIN
CVS Tags: v00-03-00
Changes since 1.10: +26 -5 lines
Log Message:
add Tree

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 amagnan 1.11 //lSubSubDir = lSubDir.mkdir( "GenMatched" );
176     //JetHistLeadGenMatched_.Initialise(lSubSubDir,"Jets",true);
177    
178    
179 amagnan 1.9 lSubDir = lDir.mkdir("NextToLeading");
180     JetHistNtoLead_.Initialise(lSubDir,"Jets",debug_);
181 amagnan 1.11 //lSubSubDir = lSubDir.mkdir( "GenMatched" );
182     //JetHistNtoLeadGenMatched_.Initialise(lSubSubDir,"Jets",true);
183    
184 amagnan 1.2
185 amagnan 1.10 // lDir = lFileService->mkdir( "PFJets" );
186 amagnan 1.9
187 amagnan 1.10 // lSubDir = lDir.mkdir("All");
188     // PFJetHist_.Initialise(lSubDir,"Jets",debug_);
189     // lSubDir = lDir.mkdir("Leading");
190     // PFJetHistLead_.Initialise(lSubDir,"PFJets",debug_);
191     // lSubDir = lDir.mkdir("NextToLeading");
192     // PFJetHistNtoLead_.Initialise(lSubDir,"PFJets",debug_);
193    
194     // lDir = lFileService->mkdir( "JPTJets" );
195    
196     // lSubDir = lDir.mkdir("All");
197     // JPTJetHist_.Initialise(lSubDir,"Jets",debug_);
198     // lSubDir = lDir.mkdir("Leading");
199     // JPTJetHistLead_.Initialise(lSubDir,"JPTJets",debug_);
200     // lSubDir = lDir.mkdir("NextToLeading");
201     // JPTJetHistNtoLead_.Initialise(lSubDir,"JPTJets",debug_);
202     }
203 amagnan 1.5
204 amagnan 1.3
205 amagnan 1.10 if (doPairs_){
206     lDir = lFileService->mkdir("Pairs");
207 amagnan 1.9 if (debug_) std::cout << "Initialising pairs histograms : " << std::endl;
208 amagnan 1.5
209 amagnan 1.10 lSubDir = lDir.mkdir("All");
210     PairHist_.Initialise(lSubDir,"Pairs",debug_);
211 amagnan 1.3
212 amagnan 1.10 lSubDir = lDir.mkdir("Leading");
213     PairHistLead_.Initialise(lSubDir,"Pairs",debug_);
214 amagnan 1.9 }
215 amagnan 1.3
216 amagnan 1.10 // if (doLepTauPairs_){
217     // lSubDir = lDir.mkdir("etau");
218     // ETPairHist_.Initialise(lSubDir,"Pairs",debug_);
219 amagnan 1.1
220 amagnan 1.10 // lSubDir = lDir.mkdir("mutau");
221     // MTPairHist_.Initialise(lSubDir,"Pairs",debug_);
222     // }
223 amagnan 1.1
224 amagnan 1.9 if (doMETs_){
225     if (debug_) std::cout << "Initialising METs histograms : " << std::endl;
226 amagnan 1.5
227 amagnan 1.9 lDir = lFileService->mkdir("MET");
228 amagnan 1.10 //lSubDir = lDir.mkdir("CaloMET");
229     MetHist_.Initialise(lDir,"MET",debug_);
230 amagnan 1.2
231 amagnan 1.10 // lSubDir = lDir.mkdir("PFMET");
232     // PFMetHist_.Initialise(lSubDir,"MET",debug_);
233 amagnan 1.1
234 amagnan 1.10 // lSubDir = lDir.mkdir("TcMET");
235     // TcMetHist_.Initialise(lSubDir,"MET",debug_);
236 amagnan 1.9 }
237 amagnan 1.1
238     }//beginJob
239    
240     void HbbAnalyzer::endJob(){//endJob
241    
242 amagnan 1.9 if (doElectrons_){
243     ElecHistLead_.FillEffHistograms();
244     ElecHistLeadGenMatched_.FillEffHistograms();
245 amagnan 1.7
246 amagnan 1.9 ElecHistNtoLead_.FillEffHistograms();
247     ElecHistNtoLeadGenMatched_.FillEffHistograms();
248 amagnan 1.7
249 amagnan 1.9 ElecHistBarrelLead_.FillEffHistograms();
250     ElecHistBarrelLeadGenMatched_.FillEffHistograms();
251 amagnan 1.7
252 amagnan 1.9 ElecHistBarrelNtoLead_.FillEffHistograms();
253     ElecHistBarrelNtoLeadGenMatched_.FillEffHistograms();
254 amagnan 1.7
255 amagnan 1.9 ElecHistEndCapLead_.FillEffHistograms();
256     ElecHistEndCapLeadGenMatched_.FillEffHistograms();
257 amagnan 1.7
258 amagnan 1.9 ElecHistEndCapNtoLead_.FillEffHistograms();
259     ElecHistEndCapNtoLeadGenMatched_.FillEffHistograms();
260     }
261 amagnan 1.7
262 amagnan 1.9 if (doMuons_){
263     MuHistLead_.FillEffHistograms();
264     MuHistLeadGenMatched_.FillEffHistograms();
265 amagnan 1.3
266 amagnan 1.9 MuHistNtoLead_.FillEffHistograms();
267     MuHistNtoLeadGenMatched_.FillEffHistograms();
268     }
269 amagnan 1.1
270 amagnan 1.9 if (doJets_){
271     jetFlav_.printSummary();
272 amagnan 1.11 //JetHistLead_.FillEffHistograms();
273     //JetHistLeadGenMatched_.FillEffHistograms();
274    
275     //JetHistNtoLead_.FillEffHistograms();
276     //JetHistNtoLeadGenMatched_.FillEffHistograms();
277    
278    
279 amagnan 1.9 }
280 amagnan 1.5
281 amagnan 1.1 }//endJob
282    
283     void HbbAnalyzer::analyze(const edm::Event& aEvt, const edm::EventSetup& aEvtSetup){//analyze
284    
285     //dumpContent(aEvt,"","MuTauPAT");
286    
287     static bool firstEvent = true;
288    
289 amagnan 1.5
290     edm::Handle<reco::GenParticleCollection> lGenParticles;
291     try {
292     aEvt.getByLabel(genParticleSrc_,lGenParticles);
293     if (debug_) std::cout << "** ngenParticles = " << lGenParticles->size() << std::endl;
294     } catch(cms::Exception& e) {
295     std::cout << "AMM: Collection genParticles not available! Exception : " << e.what() << ". " << std::endl;
296     }
297    
298 amagnan 1.9 unsigned int lNPartons = 0;
299    
300     if (doJets_){
301     lNPartons = jetFlav_.fillPartons(lGenParticles);
302     }
303 amagnan 1.5
304 amagnan 1.9 if (debug_) std::cout << "--- Number of partons = " << lNPartons << " (doJets=" << doJets_ << ")." << std::endl;
305 amagnan 1.5
306    
307 amagnan 1.3 edm::Handle<std::vector<reco::Vertex> > lRecoVertices;
308     try {
309     aEvt.getByLabel(vertexSrc_, lRecoVertices);
310     if (!lRecoVertices.isValid()){
311     edm::LogInfo("ERROR")<< "Error! Can't get vertex by label. ";
312     }
313     if (debug_) std::cout << "** vertexcollection = " << lRecoVertices->size() << " elements." << std::endl;
314     } catch(cms::Exception& e) {
315     std::cout << "AMM: Collection " << vertexSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
316     }
317    
318    
319 amagnan 1.9
320 amagnan 1.3 edm::Handle<std::vector<pat::Electron> > lElectronCollection;
321    
322 amagnan 1.9 if (doElectrons_ || doJets_){
323     try {
324     aEvt.getByLabel(electronSrc_,lElectronCollection);
325     if (!lElectronCollection.isValid()){
326     edm::LogInfo("ERROR")<< "Error! Can't get electron by label. ";
327     }
328     if (debug_) std::cout << "** electroncollection = " << lElectronCollection->size() << " elements." << std::endl;
329     } catch(cms::Exception& e) {
330     std::cout << "AMM: Collection " << electronSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
331     }
332     if (lElectronCollection.isValid() && doElectrons_){
333    
334     ElecHistLead_.FillEventHistograms(lElectronCollection);
335     ElecHistLeadGenMatched_.FillEventHistograms(lElectronCollection);
336    
337     ElecHistNtoLead_.FillEventHistograms(lElectronCollection);
338     ElecHistNtoLeadGenMatched_.FillEventHistograms(lElectronCollection);
339    
340     if (lElectronCollection->size() > 0) {
341    
342     //std::vector<pat::Electron>::const_iterator iElectron = lElectronCollection->begin();
343     unsigned int iEle = 0;
344     for (std::vector<pat::Electron>::const_iterator iElectron = lElectronCollection->begin();
345     iElectron != lElectronCollection->end();
346     iElectron++)
347     {
348     //if (debug_ > 1) std::cout << "pT,eta,phi = " << (*iElectron).pt() << " " << (*iElectron).eta() << " " << (*iElectron).phi() << std::endl;
349     if (iEle == 0) {
350     ElecHistLead_.FillHistograms(*iElectron,lRecoVertices);
351     ElecHistLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
352     if (fabs((*iElectron).eta())<1.47) {
353     ElecHistBarrelLead_.FillHistograms(*iElectron,lRecoVertices);
354     ElecHistBarrelLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
355     }
356     else {
357     ElecHistEndCapLead_.FillHistograms(*iElectron,lRecoVertices);
358     ElecHistEndCapLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
359     }
360 amagnan 1.7 }
361 amagnan 1.9 else if (iEle == 1){
362     ElecHistNtoLead_.FillHistograms(*iElectron,lRecoVertices);
363     ElecHistNtoLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
364     if (fabs((*iElectron).eta())<1.47) {
365     ElecHistBarrelNtoLead_.FillHistograms(*iElectron,lRecoVertices);
366     ElecHistBarrelNtoLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
367     }
368     else {
369     ElecHistEndCapNtoLead_.FillHistograms(*iElectron,lRecoVertices);
370     ElecHistEndCapNtoLeadGenMatched_.FillHistograms(*iElectron,lRecoVertices);
371     }
372 amagnan 1.7 }
373 amagnan 1.9 iEle++;
374 amagnan 1.3 }
375 amagnan 1.9 }
376 amagnan 1.3 }
377 amagnan 1.9 }//if doElec or doJets
378 amagnan 1.1
379     edm::Handle<std::vector<pat::Muon> > lMuonCollection;
380 amagnan 1.9 if (doMuons_ || doJets_){
381     try {
382     aEvt.getByLabel(muonSrc_,lMuonCollection);
383     if (!lMuonCollection.isValid()){
384     edm::LogInfo("ERROR")<< "Error! Can't get muon by label. ";
385     }
386     if (debug_) std::cout << "** muoncollection = " << lMuonCollection->size() << " elements." << std::endl;
387     } catch(cms::Exception& e) {
388     std::cout << "AMM: Collection " << muonSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
389     }
390     if (lMuonCollection.isValid() && doMuons_){
391    
392     MuHistLead_.FillEventHistograms(lMuonCollection);
393     MuHistLeadGenMatched_.FillEventHistograms(lMuonCollection);
394    
395     MuHistNtoLead_.FillEventHistograms(lMuonCollection);
396     MuHistNtoLeadGenMatched_.FillEventHistograms(lMuonCollection);
397    
398     if (lMuonCollection->size() > 0) {
399    
400     //std::vector<pat::Muon>::const_iterator iMuon = lMuonCollection->begin();
401     unsigned int iMu = 0;
402     for (std::vector<pat::Muon>::const_iterator iMuon = lMuonCollection->begin();
403     iMuon != lMuonCollection->end();
404     iMuon++)
405     {
406     //if (debug_ > 1) std::cout << "pT,eta,phi = " << (*iMuon).pt() << " " << (*iMuon).eta() << " " << (*iMuon).phi() << std::endl;
407     if (iMu == 0) {
408     MuHistLead_.FillHistograms(*iMuon);
409     MuHistLeadGenMatched_.FillHistograms(*iMuon);
410     }
411     else if (iMu == 1){
412     MuHistNtoLead_.FillHistograms(*iMuon);
413     MuHistNtoLeadGenMatched_.FillHistograms(*iMuon);
414     }
415     iMu++;
416 amagnan 1.3 }
417 amagnan 1.9 }
418 amagnan 1.1 }
419     }
420    
421    
422 amagnan 1.10 edm::Handle<std::vector<pat::Tau> > lTauCollection;
423 amagnan 1.9 if (doTaus_ || doJets_){
424     try {
425 amagnan 1.10 aEvt.getByLabel(tauSrc_,lTauCollection);
426     if (!lTauCollection.isValid()){
427     edm::LogInfo("ERROR")<< "Error! Can't get Tau by label. ";
428 amagnan 1.9 }
429 amagnan 1.10 if (debug_) std::cout << "** Taucollection = " << lTauCollection->size() << " elements." << std::endl;
430 amagnan 1.9 } catch(cms::Exception& e) {
431 amagnan 1.10 std::cout << "AMM: Collection " << tauSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
432 amagnan 1.9 }
433 amagnan 1.10 if (lTauCollection.isValid() && doTaus_){
434 amagnan 1.9
435 amagnan 1.10 TauHist_.FillEventHistograms(lTauCollection);
436     TauHistGenMatched_.FillEventHistograms(lTauCollection);
437 amagnan 1.9
438 amagnan 1.10 if (lTauCollection->size() > 0) {
439 amagnan 1.9
440     bool isLead = true;
441 amagnan 1.10 //std::vector<pat::Tau>::const_iterator iTau = lTauCollection->begin();
442     for (std::vector<pat::Tau>::const_iterator iTau = lTauCollection->begin();
443     iTau != lTauCollection->end();
444     iTau++)
445 amagnan 1.9 {
446 amagnan 1.10 //if (debug_ > 1) std::cout << "pT,eta,phi = " << (*iTau).pt() << " " << (*iTau).eta() << " " << (*iTau).phi() << std::endl;
447     TauHist_.FillHistograms(*iTau,lRecoVertices,isLead);
448 amagnan 1.11 TauHistGenMatched_.FillHistograms(*iTau,lRecoVertices,isLead);
449 amagnan 1.9 isLead = false;
450     }
451     }
452 amagnan 1.2 }
453     }
454    
455 amagnan 1.1
456 amagnan 1.9 edm::Handle<std::vector<pat::Jet> > lJetCollection;
457 amagnan 1.10
458 amagnan 1.9 if (doJets_){
459     try {
460     aEvt.getByLabel(jetSrc_,lJetCollection);
461     if (!lJetCollection.isValid()){
462     edm::LogInfo("ERROR")<< "Error! Can't get jet by label. ";
463     }
464     if (debug_) std::cout << "** jetcollection = " << lJetCollection->size() << " elements." << std::endl;
465     } catch(cms::Exception& e) {
466     std::cout << "AMM: Collection " << jetSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
467     }
468     if (lJetCollection.isValid()){
469    
470     JetHist_.FillEventHistograms(lJetCollection,jetFlav_);
471     JetHistLead_.FillEventHistograms(lJetCollection,jetFlav_);
472     JetHistNtoLead_.FillEventHistograms(lJetCollection,jetFlav_);
473 amagnan 1.11 //JetHistLeadGenMatched_.FillEventHistograms(lJetCollection,jetFlav_);
474     //JetHistNtoLeadGenMatched_.FillEventHistograms(lJetCollection,jetFlav_);
475 amagnan 1.2
476 amagnan 1.9 if (lJetCollection->size() > 0) {
477 amagnan 1.10
478 amagnan 1.9 //std::vector<pat::Jet>::const_iterator iJet = lJetCollection->begin();
479     unsigned int ij = 0;
480     for (std::vector<pat::Jet>::const_iterator iJet = lJetCollection->begin();
481     iJet != lJetCollection->end();
482     iJet++)
483     {
484 amagnan 1.10 double lDeltaRele = deltaRwithLepton<pat::Electron>(*iJet,lElectronCollection);
485     double lDeltaRmu = deltaRwithLepton<pat::Muon>(*iJet,lMuonCollection);
486     double lDeltaRtau = deltaRwithLepton<pat::Tau>(*iJet,lTauCollection);
487    
488     JetHist_.FillIsolationHistograms(lDeltaRele,lDeltaRmu,lDeltaRtau);
489    
490     if (debug_ > 1) std::cout << "Jet #" << ij << ": pT,eta,phi = " << (*iJet).pt() << " " << (*iJet).eta() << " " << (*iJet).phi() << std::endl;
491 amagnan 1.11 JetHist_.FillHistograms(*iJet,lGenParticles);
492     if (ij == 0) {
493     JetHistLead_.FillHistograms(*iJet,lGenParticles);
494     //JetHistLeadGenMatched_.FillHistograms(*iJet,lGenParticles);
495     }
496     else if (ij == 1) {
497     JetHistNtoLead_.FillHistograms(*iJet,lGenParticles);
498     //JetHistNtoLeadGenMatched_.FillHistograms(*iJet,lGenParticles);
499     }
500 amagnan 1.10 ij++;
501    
502 amagnan 1.9 }
503     }
504 amagnan 1.2 }
505    
506 amagnan 1.9 }//if doJets_
507 amagnan 1.3
508    
509 amagnan 1.10 edm::Handle<std::vector<CompositePtrCandidateT1T2MEt<reco::Candidate, reco::Candidate> > > lPair;
510     //edm::Handle<std::vector<CompositePtrCandidateT1T2MEt<reco::Candidate, reco::Candidate> > > lmmPair;
511 amagnan 1.3
512 amagnan 1.10 if (doPairs_){
513 amagnan 1.9 try {
514 amagnan 1.10 aEvt.getByLabel(pairSrc_,lPair);
515     if (!lPair.isValid()){
516     edm::LogInfo("ERROR")<< "Error! Can't get pairs by label. ";
517 amagnan 1.9 }
518 amagnan 1.10 if (debug_) std::cout << "** Pairs = " << lPair->size() << " elements." << std::endl;
519 amagnan 1.9 } catch(cms::Exception& e) {
520 amagnan 1.10 std::cout << "AMM: Collection " << pairSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
521 amagnan 1.9 }
522 amagnan 1.10 if (lPair.isValid()){
523 amagnan 1.9
524 amagnan 1.10 PairHist_.FillEventHistograms(lPair);
525     PairHistLead_.FillEventHistograms(lPair);
526 amagnan 1.9
527 amagnan 1.10 if (lPair->size() > 0) {
528 amagnan 1.9 bool isLead = true;
529 amagnan 1.10 for (std::vector<CompositePtrCandidateT1T2MEt<reco::Candidate, reco::Candidate> >::const_iterator iP = lPair->begin();
530     iP != lPair->end();
531 amagnan 1.9 iP++)
532     {
533 amagnan 1.10 PairHist_.FillHistograms(*iP);
534     if (isLead) PairHistLead_.FillHistograms(*iP);
535 amagnan 1.9 isLead = false;
536 amagnan 1.10 }
537 amagnan 1.9 }
538 amagnan 1.3 }
539    
540 amagnan 1.10 }//if doPairs_
541 amagnan 1.3
542 amagnan 1.9
543 amagnan 1.10 edm::Handle<std::vector<pat::MET> > lMetCol;
544 amagnan 1.3
545 amagnan 1.9 if (doMETs_){
546     try {
547 amagnan 1.10 aEvt.getByLabel(metSrc_,lMetCol);
548     if (!lMetCol.isValid()){
549     edm::LogInfo("ERROR")<< "Error! Can't get Met by label. ";
550 amagnan 1.9 }
551 amagnan 1.10 if (debug_) std::cout << "** Met = " << lMetCol->size() << " elements." << std::endl;
552 amagnan 1.9 } catch(cms::Exception& e) {
553 amagnan 1.10 std::cout << "AMM: Collection " << metSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
554 amagnan 1.9 }
555 amagnan 1.10 if (lMetCol.isValid()){
556 amagnan 1.9
557 amagnan 1.10 MetHist_.FillEventHistograms(lMetCol);
558 amagnan 1.9 }
559    
560     }//if doMETs_
561 amagnan 1.3
562    
563    
564 amagnan 1.4 // //triggers
565     // edm::Handle<edm::TriggerResults> lTrigCol;
566     // try {
567     // aEvt.getByLabel(triggerSrc_,lTrigCol);
568     // if (!lTrigCol.isValid()){
569     // edm::LogInfo("ERROR")<< "Error! Can't get triggers by label. ";
570     // }
571     // if (debug_) std::cout << "** triggers = " << lTrigCol->size() << std::endl;
572     // } catch(cms::Exception& e) {
573     // std::cout << "AMM: Collection " << triggerSrc_ << " not available! Exception : " << e.what() << ". " << std::endl;
574     // }
575     // if (lTrigCol.isValid()){
576     // edm::TriggerNames lNames;
577     // lNames.init(*lTrigCol);
578    
579     // for (unsigned int j=0; j<hltPaths_.size(); j++) {
580     // bool valid=false;
581     // for (unsigned int i=0; i<lTrigCol->size(); i++){
582     // std::string trueName = lNames_.triggerNames().at(i);
583     // //if (debug_ && j==0) std::cout << " Trigger #" << i << ", name = " << trueName << std::endl;
584     // if (trueName.find(hltPaths_.at(j)) != trueName.npos){
585     // //HLTPathsByIndex_[j]=triggerNames_.triggerIndex(HLTPathsByName_[j]);
586     // if (debug_) std::cout << "Trigger: " << trueName << " is valid. Index = " << i << std::endl;
587     // //triggerCol->accept(HLTPathsByIndex_[j]);
588     // valid=true;
589     // break;
590     // }
591     // }
592     // if (!valid) {
593     // std::cout << "*WARNING* Trigger: " << hltPaths_.at(j) << " is invalid." << std::endl;
594     // }
595     // }
596    
597     // }
598    
599 amagnan 1.1 firstEvent = false;
600    
601     }//analyze
602    
603 amagnan 1.6
604     void HbbAnalyzer::dumpContent(const edm::Event& aEvt,
605     std::string aName,
606     std::string aProcess
607     )
608     {//dumpContent
609 amagnan 1.1 //to dump the content of the event
610    
611     typedef std::vector< edm::Provenance const*> Provenances;
612     Provenances lProvenances;
613     aEvt.getAllProvenance(lProvenances);
614    
615     for(Provenances::iterator itProv = lProvenances.begin(), itProvEnd = lProvenances.end();
616     itProv != itProvEnd;
617     ++itProv) {
618    
619     std::string lName = (*itProv)->friendlyClassName();
620     std::string lModLabel = (*itProv)->moduleLabel();
621     std::string lInstanceName = (*itProv)->productInstanceName();
622     std::string lProcessName = (*itProv)->processName();
623    
624     //std::cout << " - friendlyName = " << lName << std::endl;
625     if (lName.find(aName) != lName.npos && lProcessName.find(aProcess) != lProcessName.npos) {
626    
627     //if (debug_>1) {
628     std::cout << " -- Object type = " << lName << std::endl
629     << " ----- Module = " << lModLabel << std::endl
630     << " ----- Instance = " << lInstanceName << std::endl;
631     //<< " ----- Process = " << lProcessName << std::endl;
632     //}
633     }
634     }
635     }//dumpContent
636    
637    
638    
639    
640    
641    
642    
643    
644    
645    
646    
647    
648    
649    
650    
651