ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/HbbAnalyzer/plugins/HbbAnalyzerNew.cc
(Generate patch)

Comparing UserCode/VHbbAnalysis/HbbAnalyzer/plugins/HbbAnalyzerNew.cc (file contents):
Revision 1.5 by tboccali, Thu Jun 9 16:51:52 2011 UTC vs.
Revision 1.13 by tboccali, Mon Jul 25 08:55:40 2011 UTC

# Line 18 | Line 18 | Implementation:
18   //
19  
20   #include "VHbbAnalysis/HbbAnalyzer/interface/HbbAnalyzerNew.h"
21 < #include "VHbbAnalysis/HbbAnalyzer/interface/VHbbEvent.h"
21 > #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbEvent.h"
22 > #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbEventAuxInfo.h"
23  
24   #include "DataFormats/GeometryVector/interface/VectorUtil.h"
25  
# Line 27 | Line 28 | Implementation:
28   #define GENPTOLORP(a) TLorentzVector((a)->px(), (a)->py(), (a)->pz(), (a)->energy())
29  
30   HbbAnalyzerNew::HbbAnalyzerNew(const edm::ParameterSet& iConfig):
31 <  eleLabel_(iConfig.getUntrackedParameter<edm::InputTag>("electronTag")),
32 <  muoLabel_(iConfig.getUntrackedParameter<edm::InputTag>("muonTag")),
33 <  jetLabel_(iConfig.getUntrackedParameter<edm::InputTag>("jetTag")),
34 <  subjetLabel_(iConfig.getUntrackedParameter<edm::InputTag>("subjetTag")),
35 <  simplejet1Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet1Tag")),
36 <  simplejet2Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet2Tag")),
37 <  simplejet3Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet3Tag")),
38 <  simplejet4Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet4Tag")),
39 <  tauLabel_(iConfig.getUntrackedParameter<edm::InputTag>("tauTag")),
40 <  metLabel_(iConfig.getUntrackedParameter<edm::InputTag>("metTag")),
41 <  phoLabel_(iConfig.getUntrackedParameter<edm::InputTag>("photonTag")),
42 <  dimuLabel_(iConfig.getUntrackedParameter<edm::InputTag>("dimuTag")),
43 <  dielecLabel_(iConfig.getUntrackedParameter<edm::InputTag>("dielecTag")),
44 <  hltResults_(iConfig.getUntrackedParameter<edm::InputTag>("hltResultsTag")),
45 <  runOnMC_(iConfig.getParameter<bool>("runOnMC")) {
45 <
31 >  eleLabel_(iConfig.getParameter<edm::InputTag>("electronTag")),
32 >  muoLabel_(iConfig.getParameter<edm::InputTag>("muonTag")),
33 >  jetLabel_(iConfig.getParameter<edm::InputTag>("jetTag")),
34 >  subjetLabel_(iConfig.getParameter<edm::InputTag>("subjetTag")),
35 >  simplejet1Label_(iConfig.getParameter<edm::InputTag>("simplejet1Tag")),
36 >  simplejet2Label_(iConfig.getParameter<edm::InputTag>("simplejet2Tag")),
37 >  simplejet3Label_(iConfig.getParameter<edm::InputTag>("simplejet3Tag")),
38 >  simplejet4Label_(iConfig.getParameter<edm::InputTag>("simplejet4Tag")),
39 >  tauLabel_(iConfig.getParameter<edm::InputTag>("tauTag")),
40 >  metLabel_(iConfig.getParameter<edm::InputTag>("metTag")),
41 >  phoLabel_(iConfig.getParameter<edm::InputTag>("photonTag")),
42 >  dimuLabel_(iConfig.getParameter<edm::InputTag>("dimuTag")),
43 >  dielecLabel_(iConfig.getParameter<edm::InputTag>("dielecTag")),
44 >  hltResults_(iConfig.getParameter<edm::InputTag>("hltResultsTag")),
45 >  runOnMC_(iConfig.getParameter<bool>("runOnMC")), verbose_(iConfig.getUntrackedParameter<bool>("verbose")) {
46  
47    //
48    // put the setwhatproduced etc etc
49  
50    produces<VHbbEvent>();
51 +  produces<VHbbEventAuxInfo>();
52  
53  
54   }
# Line 72 | Line 73 | HbbAnalyzerNew::produce(edm::Event& iEve
73    using namespace reco;
74    
75    
76 <  std::auto_ptr<VHbbEvent> hbbInfo( new VHbbEvent() );
76 >  std::auto_ptr<VHbbEvent> hbbInfo( new VHbbEvent() );  
77 >  std::auto_ptr<VHbbEventAuxInfo> auxInfo( new VHbbEventAuxInfo() );
78    
79    //
80    // ??
# Line 95 | Line 97 | HbbAnalyzerNew::produce(edm::Event& iEve
97      TString trigName=triggerNames_.triggerName(itrig);
98      bool accept = hltresults->accept(itrig);
99  
100 <    if (accept){(hbbInfo->triggerInfo.flag)[itrig] = 1;}
101 <    else { (hbbInfo->triggerInfo.flag)[itrig] = 0;}
100 >    if (accept){(auxInfo->triggerInfo.flag)[itrig] = 1;}
101 >    else { (auxInfo->triggerInfo.flag)[itrig] = 0;}
102  
103      //    std::cout << "%HLTInfo --  Number of HLT Triggers: " << ntrigs << std::endl;
104      //    std::cout << "%HLTInfo --  HLTTrigger(" << itrig << "): " << trigName << " = " << accept << std::endl;
# Line 207 | Line 209 | HbbAnalyzerNew::produce(edm::Event& iEve
209    int itrig26=-99;
210    if(goodIsoMu17v6!=0) itrig26 = triggerNames_.triggerIndex("HLT_IsoMu17_v6");
211    
212 <  if (itrig1!=-99 && hltresults->accept(itrig1))  hbbInfo->triggerInfo.triggerMu9=1; else hbbInfo->triggerInfo.triggerMu9=0;
213 <  if (itrig2!=-99 && hltresults->accept(itrig2))  hbbInfo->triggerInfo.triggerIsoMu9=1; else hbbInfo->triggerInfo.triggerIsoMu9=0;
214 <  if (itrig3!=-99 && hltresults->accept(itrig3))  hbbInfo->triggerInfo.triggerIsoMu13_3=1; else hbbInfo->triggerInfo.triggerIsoMu13_3=0;
215 <  if (itrig4!=-99 && hltresults->accept(itrig4))  hbbInfo->triggerInfo.triggerMu11=1; else hbbInfo->triggerInfo.triggerMu11=0;
216 <  if (itrig5!=-99 && hltresults->accept(itrig5))  hbbInfo->triggerInfo.triggerDoubleMu3=1; else hbbInfo->triggerInfo.triggerDoubleMu3=0;
217 <  if (itrig6!=-99 && hltresults->accept(itrig6))  hbbInfo->triggerInfo.triggerDoubleMu3_2=1; else hbbInfo->triggerInfo.triggerDoubleMu3_2=0;
218 <  if (itrig7!=-99 && hltresults->accept(itrig7))  hbbInfo->triggerInfo.triggerMu15=1; else hbbInfo->triggerInfo.triggerMu15=0;
219 <  if (itrig8!=-99 && hltresults->accept(itrig8))  hbbInfo->triggerInfo.triggerMu15_1=1; else hbbInfo->triggerInfo.triggerMu15_1=0;  
220 <  
221 <  if (itrig9!=-99 && hltresults->accept(itrig9))  hbbInfo->triggerInfo.triggerDoubleElec10=1; else hbbInfo->triggerInfo.triggerDoubleElec10=0;  
222 <  if (itrig10!=-99 && hltresults->accept(itrig10))  hbbInfo->triggerInfo.triggerDoubleElec15_1=1; else hbbInfo->triggerInfo.triggerDoubleElec15_1=0;  
223 <  if (itrig11!=-99 && hltresults->accept(itrig11))  hbbInfo->triggerInfo.triggerDoubleElec17_1=1; else hbbInfo->triggerInfo.triggerDoubleElec17_1=0;  
224 <  if (itrig12!=-99 && hltresults->accept(itrig12))  hbbInfo->triggerInfo.triggerMet100_1=1; else hbbInfo->triggerInfo.triggerMet100_1=0;
225 <  
226 <  if (itrig13!=-99 && hltresults->accept(itrig13))  hbbInfo->triggerInfo.triggerSingleEle1=1; else hbbInfo->triggerInfo.triggerSingleEle1=0;
227 <  if (itrig14!=-99 && hltresults->accept(itrig14))  hbbInfo->triggerInfo.triggerSingleEle2=1; else hbbInfo->triggerInfo.triggerSingleEle2=0;
228 <  if (itrig15!=-99 && hltresults->accept(itrig15))  hbbInfo->triggerInfo.triggerSingleEle3=1; else hbbInfo->triggerInfo.triggerSingleEle3=0;
229 <  if (itrig16!=-99 && hltresults->accept(itrig16))  hbbInfo->triggerInfo.triggerSingleEle4=1; else hbbInfo->triggerInfo.triggerSingleEle4=0;
230 <  
231 <  if (itrig17!=-99 && hltresults->accept(itrig17))  hbbInfo->triggerInfo.triggerBtagMu1=1; else hbbInfo->triggerInfo.triggerBtagMu1=0;  
232 <  if (itrig18!=-99 && hltresults->accept(itrig18))  hbbInfo->triggerInfo.triggerBtagMu2=1; else hbbInfo->triggerInfo.triggerBtagMu2=0;
233 <  if (itrig19!=-99 && hltresults->accept(itrig19))  hbbInfo->triggerInfo.triggerBtagMu0=1; else hbbInfo->triggerInfo.triggerBtagMu0=0;
234 <  if (itrig20!=-99 && hltresults->accept(itrig20))  hbbInfo->triggerInfo.triggerBtagMu11=1; else hbbInfo->triggerInfo.triggerBtagMu11=0;
235 <  if (itrig21!=-99 && hltresults->accept(itrig21))  hbbInfo->triggerInfo.triggerBtagMuJet1=1; else hbbInfo->triggerInfo.triggerBtagMuJet1=0;
236 <  if (itrig22!=-99 && hltresults->accept(itrig22))  hbbInfo->triggerInfo.triggerBtagMuJet2=1; else hbbInfo->triggerInfo.triggerBtagMuJet2=0;
237 <  if (itrig23!=-99 && hltresults->accept(itrig23))  hbbInfo->triggerInfo.triggerBtagMuJet3=1; else hbbInfo->triggerInfo.triggerBtagMuJet3=0;
238 <  if (itrig231!=-99 && hltresults->accept(itrig231))  hbbInfo->triggerInfo.triggerBtagMuJet4=1; else hbbInfo->triggerInfo.triggerBtagMuJet4=0;
239 <  
240 <  if (itrig24!=-99 && hltresults->accept(itrig24))  hbbInfo->triggerInfo.triggerIsoMu15=1; else hbbInfo->triggerInfo.triggerIsoMu15=0;
241 <  if (itrig25!=-99 && hltresults->accept(itrig25))  hbbInfo->triggerInfo.triggerIsoMu17v5=1; else hbbInfo->triggerInfo.triggerIsoMu17v5=0;
242 <  if (itrig26!=-99 && hltresults->accept(itrig26))  hbbInfo->triggerInfo.triggerIsoMu17v6=1; else hbbInfo->triggerInfo.triggerIsoMu17v6=0;
243 <  
244 <  if (itrig1==-99)  hbbInfo->triggerInfo.triggerMu9=-99;
245 <  if (itrig2==-99)  hbbInfo->triggerInfo.triggerIsoMu9=-99;
246 <  if (itrig3==-99)  hbbInfo->triggerInfo.triggerIsoMu13_3=-99;
247 <  if (itrig4==-99)  hbbInfo->triggerInfo.triggerMu11=-99;
248 <  if (itrig5==-99)  hbbInfo->triggerInfo.triggerDoubleMu3=-99;
249 <  if (itrig6==-99)  hbbInfo->triggerInfo.triggerDoubleMu3_2=-99;
250 <  if (itrig7==-99)  hbbInfo->triggerInfo.triggerMu15=-99;
251 <  if (itrig8==-99)  hbbInfo->triggerInfo.triggerMu15_1=-99;
252 <
253 <  if (itrig9==-99)  hbbInfo->triggerInfo.triggerDoubleElec10=-99;
254 <  if (itrig10==-99)  hbbInfo->triggerInfo.triggerDoubleElec15_1=-99;
255 <  if (itrig11==-99)  hbbInfo->triggerInfo.triggerDoubleElec17_1=-99;
256 <  if (itrig12==-99) hbbInfo->triggerInfo.triggerMet100_1=-99;
257 <
258 <  if (itrig13==-99) hbbInfo->triggerInfo.triggerSingleEle1=-99;
259 <  if (itrig14==-99) hbbInfo->triggerInfo.triggerSingleEle2=-99;
260 <  if (itrig15==-99) hbbInfo->triggerInfo.triggerSingleEle3=-99;
261 <  if (itrig16==-99) hbbInfo->triggerInfo.triggerSingleEle4=-99;
262 <
263 <  if(itrig17==-99)  hbbInfo->triggerInfo.triggerBtagMu1=-99;  
264 <  if(itrig18==-99)  hbbInfo->triggerInfo.triggerBtagMu2=-99;
265 <  if(itrig19==-99)  hbbInfo->triggerInfo.triggerBtagMu0=-99;
266 <  if(itrig20==-99)  hbbInfo->triggerInfo.triggerBtagMu11=-99;
267 <  if(itrig21==-99)  hbbInfo->triggerInfo.triggerBtagMuJet1=-99;
268 <  if(itrig22==-99)  hbbInfo->triggerInfo.triggerBtagMuJet2=-99;
269 <  if(itrig23==-99)  hbbInfo->triggerInfo.triggerBtagMuJet3=-99;
270 <  if(itrig231==-99)  hbbInfo->triggerInfo.triggerBtagMuJet4=-99;
271 <
272 <  if(itrig24==-99)  hbbInfo->triggerInfo.triggerIsoMu15=-99;
273 <  if(itrig25==-99)  hbbInfo->triggerInfo.triggerIsoMu17v5=-99;
274 <  if(itrig26==-99)  hbbInfo->triggerInfo.triggerIsoMu17v6=-99;
212 >  if (itrig1!=-99 && hltresults->accept(itrig1))  auxInfo->triggerInfo.triggerMu9=1; else auxInfo->triggerInfo.triggerMu9=0;
213 >  if (itrig2!=-99 && hltresults->accept(itrig2))  auxInfo->triggerInfo.triggerIsoMu9=1; else auxInfo->triggerInfo.triggerIsoMu9=0;
214 >  if (itrig3!=-99 && hltresults->accept(itrig3))  auxInfo->triggerInfo.triggerIsoMu13_3=1; else auxInfo->triggerInfo.triggerIsoMu13_3=0;
215 >  if (itrig4!=-99 && hltresults->accept(itrig4))  auxInfo->triggerInfo.triggerMu11=1; else auxInfo->triggerInfo.triggerMu11=0;
216 >  if (itrig5!=-99 && hltresults->accept(itrig5))  auxInfo->triggerInfo.triggerDoubleMu3=1; else auxInfo->triggerInfo.triggerDoubleMu3=0;
217 >  if (itrig6!=-99 && hltresults->accept(itrig6))  auxInfo->triggerInfo.triggerDoubleMu3_2=1; else auxInfo->triggerInfo.triggerDoubleMu3_2=0;
218 >  if (itrig7!=-99 && hltresults->accept(itrig7))  auxInfo->triggerInfo.triggerMu15=1; else auxInfo->triggerInfo.triggerMu15=0;
219 >  if (itrig8!=-99 && hltresults->accept(itrig8))  auxInfo->triggerInfo.triggerMu15_1=1; else auxInfo->triggerInfo.triggerMu15_1=0;  
220 >  
221 >  if (itrig9!=-99 && hltresults->accept(itrig9))  auxInfo->triggerInfo.triggerDoubleElec10=1; else auxInfo->triggerInfo.triggerDoubleElec10=0;  
222 >  if (itrig10!=-99 && hltresults->accept(itrig10))  auxInfo->triggerInfo.triggerDoubleElec15_1=1; else auxInfo->triggerInfo.triggerDoubleElec15_1=0;  
223 >  if (itrig11!=-99 && hltresults->accept(itrig11))  auxInfo->triggerInfo.triggerDoubleElec17_1=1; else auxInfo->triggerInfo.triggerDoubleElec17_1=0;  
224 >  if (itrig12!=-99 && hltresults->accept(itrig12))  auxInfo->triggerInfo.triggerMet100_1=1; else auxInfo->triggerInfo.triggerMet100_1=0;
225 >  
226 >  if (itrig13!=-99 && hltresults->accept(itrig13))  auxInfo->triggerInfo.triggerSingleEle1=1; else auxInfo->triggerInfo.triggerSingleEle1=0;
227 >  if (itrig14!=-99 && hltresults->accept(itrig14))  auxInfo->triggerInfo.triggerSingleEle2=1; else auxInfo->triggerInfo.triggerSingleEle2=0;
228 >  if (itrig15!=-99 && hltresults->accept(itrig15))  auxInfo->triggerInfo.triggerSingleEle3=1; else auxInfo->triggerInfo.triggerSingleEle3=0;
229 >  if (itrig16!=-99 && hltresults->accept(itrig16))  auxInfo->triggerInfo.triggerSingleEle4=1; else auxInfo->triggerInfo.triggerSingleEle4=0;
230 >  
231 >  if (itrig17!=-99 && hltresults->accept(itrig17))  auxInfo->triggerInfo.triggerBtagMu1=1; else auxInfo->triggerInfo.triggerBtagMu1=0;  
232 >  if (itrig18!=-99 && hltresults->accept(itrig18))  auxInfo->triggerInfo.triggerBtagMu2=1; else auxInfo->triggerInfo.triggerBtagMu2=0;
233 >  if (itrig19!=-99 && hltresults->accept(itrig19))  auxInfo->triggerInfo.triggerBtagMu0=1; else auxInfo->triggerInfo.triggerBtagMu0=0;
234 >  if (itrig20!=-99 && hltresults->accept(itrig20))  auxInfo->triggerInfo.triggerBtagMu11=1; else auxInfo->triggerInfo.triggerBtagMu11=0;
235 >  if (itrig21!=-99 && hltresults->accept(itrig21))  auxInfo->triggerInfo.triggerBtagMuJet1=1; else auxInfo->triggerInfo.triggerBtagMuJet1=0;
236 >  if (itrig22!=-99 && hltresults->accept(itrig22))  auxInfo->triggerInfo.triggerBtagMuJet2=1; else auxInfo->triggerInfo.triggerBtagMuJet2=0;
237 >  if (itrig23!=-99 && hltresults->accept(itrig23))  auxInfo->triggerInfo.triggerBtagMuJet3=1; else auxInfo->triggerInfo.triggerBtagMuJet3=0;
238 >  if (itrig231!=-99 && hltresults->accept(itrig231))  auxInfo->triggerInfo.triggerBtagMuJet4=1; else auxInfo->triggerInfo.triggerBtagMuJet4=0;
239 >  
240 >  if (itrig24!=-99 && hltresults->accept(itrig24))  auxInfo->triggerInfo.triggerIsoMu15=1; else auxInfo->triggerInfo.triggerIsoMu15=0;
241 >  if (itrig25!=-99 && hltresults->accept(itrig25))  auxInfo->triggerInfo.triggerIsoMu17v5=1; else auxInfo->triggerInfo.triggerIsoMu17v5=0;
242 >  if (itrig26!=-99 && hltresults->accept(itrig26))  auxInfo->triggerInfo.triggerIsoMu17v6=1; else auxInfo->triggerInfo.triggerIsoMu17v6=0;
243 >  
244 >  if (itrig1==-99)  auxInfo->triggerInfo.triggerMu9=-99;
245 >  if (itrig2==-99)  auxInfo->triggerInfo.triggerIsoMu9=-99;
246 >  if (itrig3==-99)  auxInfo->triggerInfo.triggerIsoMu13_3=-99;
247 >  if (itrig4==-99)  auxInfo->triggerInfo.triggerMu11=-99;
248 >  if (itrig5==-99)  auxInfo->triggerInfo.triggerDoubleMu3=-99;
249 >  if (itrig6==-99)  auxInfo->triggerInfo.triggerDoubleMu3_2=-99;
250 >  if (itrig7==-99)  auxInfo->triggerInfo.triggerMu15=-99;
251 >  if (itrig8==-99)  auxInfo->triggerInfo.triggerMu15_1=-99;
252 >
253 >  if (itrig9==-99)  auxInfo->triggerInfo.triggerDoubleElec10=-99;
254 >  if (itrig10==-99)  auxInfo->triggerInfo.triggerDoubleElec15_1=-99;
255 >  if (itrig11==-99)  auxInfo->triggerInfo.triggerDoubleElec17_1=-99;
256 >  if (itrig12==-99) auxInfo->triggerInfo.triggerMet100_1=-99;
257 >
258 >  if (itrig13==-99) auxInfo->triggerInfo.triggerSingleEle1=-99;
259 >  if (itrig14==-99) auxInfo->triggerInfo.triggerSingleEle2=-99;
260 >  if (itrig15==-99) auxInfo->triggerInfo.triggerSingleEle3=-99;
261 >  if (itrig16==-99) auxInfo->triggerInfo.triggerSingleEle4=-99;
262 >
263 >  if(itrig17==-99)  auxInfo->triggerInfo.triggerBtagMu1=-99;  
264 >  if(itrig18==-99)  auxInfo->triggerInfo.triggerBtagMu2=-99;
265 >  if(itrig19==-99)  auxInfo->triggerInfo.triggerBtagMu0=-99;
266 >  if(itrig20==-99)  auxInfo->triggerInfo.triggerBtagMu11=-99;
267 >  if(itrig21==-99)  auxInfo->triggerInfo.triggerBtagMuJet1=-99;
268 >  if(itrig22==-99)  auxInfo->triggerInfo.triggerBtagMuJet2=-99;
269 >  if(itrig23==-99)  auxInfo->triggerInfo.triggerBtagMuJet3=-99;
270 >  if(itrig231==-99)  auxInfo->triggerInfo.triggerBtagMuJet4=-99;
271 >
272 >  if(itrig24==-99)  auxInfo->triggerInfo.triggerIsoMu15=-99;
273 >  if(itrig25==-99)  auxInfo->triggerInfo.triggerIsoMu17v5=-99;
274 >  if(itrig26==-99)  auxInfo->triggerInfo.triggerIsoMu17v6=-99;
275  
276    //  MinDRMu=-99.,MCBestMuId=-99,MCBestMuMomId=-99,MCBestMuGMomId=-99;
277    //  for(int i=0;i<50;i++) {DeltaRMu[i]=-99;}
# Line 304 | Line 306 | HbbAnalyzerNew::produce(edm::Event& iEve
306    const Vertex &RecVtx = (*recVtxs)[VtxIn];
307    const Vertex &RecVtxFirst = (*recVtxs)[0];
308    
309 <  hbbInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
310 <  hbbInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
309 >  auxInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
310 >  auxInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
311  
312      
313    edm::Handle<double> rhoHandle;
314    iEvent.getByLabel(edm::InputTag("kt6PFJets", "rho"),rhoHandle); // configure srcRho = cms.InputTag('kt6PFJets")
315 <  hbbInfo->puInfo.rho = *rhoHandle;
315 >  auxInfo->puInfo.rho = *rhoHandle;
316    
317    //// real start
318    
# Line 323 | Line 325 | HbbAnalyzerNew::produce(edm::Event& iEve
325    if(runOnMC_){
326      
327      int Hin=-99,Win=-99,Zin=-99,bin=-99,bbarin=-99;
326    
328      iEvent.getByLabel("genParticles", genParticles);
329      
330      for(size_t i = 0; i < genParticles->size(); ++ i) {
331 +      int Hin=-99,Win=-99,Zin=-99,bin=-99,bbarin=-99;
332 +      
333        const GenParticle & p = (*genParticles)[i];
334        int id = p.pdgId();
335        int st = p.status();  
336 <        
336 >      
337        if(id==25){
338 <          
338 >        
339          /*          int wh=0;
340                      int nMoth = p.numberOfMothers();
341                      for(size_t jj = 0; jj < nMoth; ++ jj) {
# Line 343 | Line 346 | HbbAnalyzerNew::produce(edm::Event& iEve
346                      if(abs(Wmomdau->pdgId())==24) wh++;
347                      }
348                      }
349 <                      
349 >                    
350                      if(wh==0) continue;
351          */
352 +        VHbbEventAuxInfo::ParticleMCInfo htemp;
353          Hin=i;
354 <        hbbInfo->mcH.status=st;
355 <        hbbInfo->mcH.charge=p.charge();
356 <        if(p.mother(0)!=0) hbbInfo->mcH.momid=p.mother(0)->pdgId();
357 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcH.gmomid=p.mother(0)->mother(0)->pdgId();
358 <        hbbInfo->mcH.fourMomentum = GENPTOLOR(p);
354 >        htemp.status=st;
355 >        htemp.charge=p.charge();
356 >        if(p.mother(0)!=0) htemp.momid=p.mother(0)->pdgId();
357 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) htemp.gmomid=p.mother(0)->mother(0)->pdgId();
358 >        htemp.p4 = GENPTOLOR(p);
359            
360          int ndau = p.numberOfDaughters();
361          for(int j = 0; j < ndau; ++ j) {
362            const Candidate * Hdau = p.daughter( j );
363 <          hbbInfo->mcH.dauid.push_back(Hdau->pdgId());
364 <          hbbInfo->mcH.dauFourMomentum.push_back(GENPTOLORP(Hdau));
363 >          htemp.dauid.push_back(Hdau->pdgId());
364 >          htemp.dauFourMomentum.push_back(GENPTOLORP(Hdau));
365          }
366 +        (auxInfo->mcH).push_back(htemp);
367        }
368          
369          
370        if(abs(id)==24){
371            
372          Win=i;
373 <        hbbInfo->mcW.status=st;
374 <        hbbInfo->mcW.charge=p.charge();
375 <        if(p.mother(0)!=0) hbbInfo->mcW.momid=p.mother(0)->pdgId();
376 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcW.gmomid=p.mother(0)->mother(0)->pdgId();
377 <        hbbInfo->mcW.fourMomentum=GENPTOLOR(p);
373 >        VHbbEventAuxInfo::ParticleMCInfo wtemp;
374 >        wtemp.status=st;
375 >        wtemp.charge=p.charge();
376 >        if(p.mother(0)!=0) wtemp.momid=p.mother(0)->pdgId();
377 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) wtemp.gmomid=p.mother(0)->mother(0)->pdgId();
378 >        wtemp.p4=GENPTOLOR(p);
379  
380          int ndau = p.numberOfDaughters();
381          for(int j = 0; j < ndau; ++ j) {
382            const Candidate * Wdau = p.daughter( j );
383 <          hbbInfo->mcW.dauid.push_back(Wdau->pdgId());
384 <          hbbInfo->mcW.dauFourMomentum.push_back(GENPTOLORP(Wdau));
383 >          wtemp.dauid.push_back(Wdau->pdgId());
384 >          wtemp.dauFourMomentum.push_back(GENPTOLORP(Wdau));
385          }
386 +        auxInfo->mcW.push_back(wtemp);
387        }
388          
389        if(abs(id)==23){
390  
391          Zin=i;
392 <        hbbInfo->mcZ.status=st;
393 <        hbbInfo->mcZ.charge=p.charge();
394 <        if(p.mother(0)!=0) hbbInfo->mcZ.momid=p.mother(0)->pdgId();
395 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcZ.gmomid=p.mother(0)->mother(0)->pdgId();
396 <        hbbInfo->mcZ.fourMomentum=GENPTOLOR(p);
392 >        VHbbEventAuxInfo::ParticleMCInfo ztemp;
393 >        ztemp.status=st;
394 >        ztemp.charge=p.charge();
395 >        if(p.mother(0)!=0) ztemp.momid=p.mother(0)->pdgId();
396 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) ztemp.gmomid=p.mother(0)->mother(0)->pdgId();
397 >        ztemp.p4=GENPTOLOR(p);
398  
399          int ndau = p.numberOfDaughters();
400          for(int j = 0; j < ndau; ++ j) {
401            const Candidate * Zdau = p.daughter( j );
402 <          hbbInfo->mcZ.dauid.push_back(Zdau->pdgId());
403 <          hbbInfo->mcZ.dauFourMomentum.push_back(GENPTOLOR(p));
402 >          ztemp.dauid.push_back(Zdau->pdgId());
403 >          ztemp.dauFourMomentum.push_back(GENPTOLOR(p));
404          }
405 +        auxInfo->mcZ.push_back(ztemp);
406        }
407        //
408        // binfo
409        //
410 <
410 >      
411        
412        if(id==5){
413          bin=i;
414 <        hbbInfo->mcB.status=st;
415 <        hbbInfo->mcB.charge=p.charge();
416 <        if(p.mother(0)!=0) hbbInfo->mcB.momid=p.mother(0)->pdgId();
417 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcB.gmomid=p.mother(0)->mother(0)->pdgId();
414 >        VHbbEventAuxInfo::ParticleMCInfo btemp;
415 >        btemp.status=st;
416 >        btemp.charge=p.charge();
417 >        if(p.mother(0)!=0) btemp.momid=p.mother(0)->pdgId();
418 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) btemp.gmomid=p.mother(0)->mother(0)->pdgId();
419 >        auxInfo->mcB.push_back(btemp);
420        }
421        
422        if(id==-5){
423          bbarin=i;
424 <        hbbInfo->mcBbar.status=st;
425 <        hbbInfo->mcBbar.charge=p.charge();
426 <        if(p.mother(0)!=0) hbbInfo->mcBbar.momid=p.mother(0)->pdgId();
427 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcBbar.gmomid=p.mother(0)->mother(0)->pdgId();
428 <      }
424 >        VHbbEventAuxInfo::ParticleMCInfo bbtemp;
425 >        
426 >        bbtemp.status=st;
427 >        bbtemp.charge=p.charge();
428 >        if(p.mother(0)!=0) bbtemp.momid=p.mother(0)->pdgId();
429 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) bbtemp.gmomid=p.mother(0)->mother(0)->pdgId();
430 >        auxInfo->mcBbar.push_back(bbtemp);
431 >     }
432        
433        if(abs(id)==4){
434 <        hbbInfo->mcC.status=st;
435 <        hbbInfo->mcC.charge=p.charge();
436 <        if(p.mother(0)!=0) hbbInfo->mcC.momid=p.mother(0)->pdgId();
437 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcC.gmomid=p.mother(0)->mother(0)->pdgId();
434 >        VHbbEventAuxInfo::ParticleMCInfo ctemp;
435 >        ctemp.status=st;
436 >        ctemp.charge=p.charge();
437 >        if(p.mother(0)!=0) ctemp.momid=p.mother(0)->pdgId();
438 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) ctemp.gmomid=p.mother(0)->mother(0)->pdgId();
439 >        auxInfo->mcC.push_back(ctemp);  
440        }
441 <
442 <
427 <    }
428 <
429 <
430 <    if(bin!=-99 && bbarin!=-99){
441 >    
442 >      if(bin!=-99 && bbarin!=-99){
443        const Candidate & bGen = (*genParticles)[bin];
444        const Candidate & bbarGen = (*genParticles)[bbarin];
445 <      hbbInfo->mcB.fourMomentum=GENPTOLOR(bGen);
446 <      hbbInfo->mcBbar.fourMomentum=GENPTOLOR(bbarGen);
445 >      ((auxInfo->mcB).back()).p4=GENPTOLOR(bGen);
446 >     ((auxInfo->mcBbar).back()).p4=GENPTOLOR(bbarGen);
447        
448        int nHDaubdau = bGen.numberOfDaughters();
449        for(int j = 0; j < nHDaubdau; ++ j) {
450          const Candidate * Bdau = bGen.daughter( j );
451 <        hbbInfo->mcB.dauid.push_back(Bdau->pdgId());
452 <        hbbInfo->mcB.dauFourMomentum.push_back(GENPTOLORP(Bdau));
451 >        ((auxInfo->mcB).back()).dauid.push_back(Bdau->pdgId());
452 >        ((auxInfo->mcB).back()).dauFourMomentum.push_back(GENPTOLORP(Bdau));
453        }
454        int nHDaubbardau = bbarGen.numberOfDaughters();
455        for(int j = 0; j < nHDaubbardau; ++ j) {
456          const Candidate * Bbardau = bbarGen.daughter( j );
457 <        hbbInfo->mcBbar.dauid.push_back(Bbardau->pdgId());
458 <        hbbInfo->mcBbar.dauFourMomentum.push_back(GENPTOLORP(Bbardau));
457 >        ((auxInfo->mcBbar).back()).dauid.push_back(Bbardau->pdgId());
458 >        ((auxInfo->mcBbar).back()).dauFourMomentum.push_back(GENPTOLORP(Bbardau));
459        }
460 <
461 <  
460 >      
461 >    }
462  
463      }
464  
# Line 518 | Line 530 | HbbAnalyzerNew::produce(edm::Event& iEve
530      VHbbEvent::SimpleJet sj;
531      sj.flavour = jet_iter->partonFlavour();
532  
521
533      sj.tche=jet_iter->bDiscriminator("trackCountingHighEffBJetTags");
534      sj.tchp=jet_iter->bDiscriminator("trackCountingHighPurBJetTags");
535      sj.jp=jet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 528 | Line 539 | HbbAnalyzerNew::produce(edm::Event& iEve
539      sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
540      sj.charge=jet_iter->jetCharge();
541      sj.ntracks=jet_iter->associatedTracks().size();
542 <    sj.fourMomentum=GENPTOLORP(jet_iter);
542 >    sj.p4=GENPTOLORP(jet_iter);
543 >    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
544 >    
545      //
546      // add tVector
547      //
# Line 568 | Line 581 | HbbAnalyzerNew::produce(edm::Event& iEve
581      sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
582      sj.charge=jet_iter->jetCharge();
583      sj.ntracks=jet_iter->associatedTracks().size();
584 <    sj.fourMomentum=GENPTOLORP(jet_iter);
585 <
584 >    sj.p4=GENPTOLORP(jet_iter);
585 >    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
586      sj.tVector = getTvect(&(*jet_iter));
587  
588      Particle::LorentzVector p4Jet = jet_iter->p4();
# Line 622 | Line 635 | HbbAnalyzerNew::produce(edm::Event& iEve
635      //    if(printJet) {std::cout << "NsubJets: " << constituents.size() << "\n";}
636      VHbbEvent::HardJet hj;
637      hj.constituents=constituents.size();
638 <    hj.fourMomentum =GENPTOLORP(jet_iter);
638 >    hj.p4 =GENPTOLORP(jet_iter);
639  
640      for (unsigned int iJC(0); iJC<constituents.size(); ++iJC ){
641        Jet::Constituent icandJet = constituents[iJC];
# Line 634 | Line 647 | HbbAnalyzerNew::produce(edm::Event& iEve
647        hj.subFourMomentum.push_back(GENPTOLORP(icandJet));
648        hj.etaSub.push_back(icandJet->eta());
649        hj.phiSub.push_back(icandJet->phi());
637
650      
651      }
652      hbbInfo->hardJets.push_back(hj);
# Line 669 | Line 681 | HbbAnalyzerNew::produce(edm::Event& iEve
681      sj.csvmva=subjet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
682      sj.charge=subjet_iter->jetCharge();
683      sj.ntracks=subjet_iter->associatedTracks().size();
684 <    sj.fourMomentum=GENPTOLORP(subjet_iter);
685 <
684 >    sj.p4=GENPTOLORP(subjet_iter);
685 >    sj.p4=(getChargedTracksMomentum(&*(subjet_iter)));
686      hbbInfo->subJets.push_back(sj);
687  
688    }
# Line 680 | Line 692 | HbbAnalyzerNew::produce(edm::Event& iEve
692    // met is calomet
693    //
694  
683
684  for(edm::View<pat::MET>::const_iterator met = mets.begin(); met!=mets.end(); ++met){
685    hbbInfo->calomet.sumEt=met->sumEt();
686    hbbInfo->calomet.metSig=met->mEtSig();
687    hbbInfo->calomet.eLong=met->e_longitudinal();
688    hbbInfo->calomet.fourMomentum=GENPTOLORP(met);
689  }
690
695    edm::Handle<edm::View<pat::MET> > metTCHandle;
696    iEvent.getByLabel("patMETsTC",metTCHandle);
697    edm::View<pat::MET> metsTC = *metTCHandle;
698 <  for(edm::View<pat::MET>::const_iterator metTC = metsTC.begin(); metTC!=metsTC.end(); ++metTC){
699 <    hbbInfo->calomet.sumEt=metTC->sumEt();
700 <    hbbInfo->calomet.metSig=metTC->mEtSig();
701 <    hbbInfo->calomet.eLong=metTC->e_longitudinal();
702 <    hbbInfo->calomet.fourMomentum=GENPTOLORP(metTC);
698 >  if(metsTC.size()){
699 >    hbbInfo->tcmet.sumEt=(metsTC[0]).sumEt();
700 >    hbbInfo->tcmet.metSig=(metsTC[0]).mEtSig();
701 >    hbbInfo->tcmet.eLong=(metsTC[0]).e_longitudinal();
702 >    hbbInfo->tcmet.p4=GENPTOLOR((metsTC[0]));
703 >    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->tcmet.metSig <<" " <<     hbbInfo->tcmet.sumEt<<std::endl;
704    }
705 +  
706 +  if(mets.size()){
707 +    hbbInfo->calomet.sumEt=(mets[0]).sumEt();
708 +    hbbInfo->calomet.metSig=(mets[0]).mEtSig();
709 +    hbbInfo->calomet.eLong=(mets[0]).e_longitudinal();
710 +    hbbInfo->calomet.p4=GENPTOLOR((mets[0]));
711 +    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->calomet.metSig <<" " <<     hbbInfo->calomet.sumEt<<std::endl;
712 +  }
713 +
714 +  
715    edm::Handle<edm::View<pat::MET> > metPFHandle;
716    iEvent.getByLabel("patMETsPF",metPFHandle);
717    edm::View<pat::MET> metsPF = *metPFHandle;
718 <  for(edm::View<pat::MET>::const_iterator metPF = metsPF.begin(); metPF!=metsPF.end(); ++metPF){
719 <    hbbInfo->calomet.sumEt=metPF->sumEt();
720 <    hbbInfo->calomet.metSig=metPF->mEtSig();
721 <    hbbInfo->calomet.eLong=metPF->e_longitudinal();
722 <    hbbInfo->calomet.fourMomentum=GENPTOLORP(metPF);
718 >
719 >  if(metsPF.size()){
720 >    hbbInfo->pfmet.sumEt=(metsPF[0]).sumEt();
721 >    hbbInfo->pfmet.metSig=(metsPF[0]).mEtSig();
722 >    hbbInfo->pfmet.eLong=(metsPF[0]).e_longitudinal();
723 >    hbbInfo->pfmet.p4=GENPTOLOR((metsPF[0]));
724 >    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->pfmet.metSig <<" " <<     hbbInfo->pfmet.sumEt<<std::endl;
725    }
726  
727  
728 +  if(verbose_){
729 +    std::cout << "METs: calomet "<<mets.size()<<" tcmet "<<metsTC.size()<<" pfmet "<<metsPF.size()<<std::endl;  
730 +  }
731 +
732 +  std::cout << " INPUT MUONS "<<muons.size()<<std::endl;
733  
734    for(edm::View<pat::Muon>::const_iterator mu = muons.begin(); mu!=muons.end(); ++mu){
735      VHbbEvent::MuonInfo mf;
736 <    mf.fourMomentum =GENPTOLORP( mu);
736 >    mf.p4 =GENPTOLORP( mu);
737      mf.charge=mu->charge();
738      mf.tIso=mu->trackIso();
739      mf.eIso=mu->ecalIso();
740      mf.hIso=mu->hcalIso();
741 <    Geom::Phi<double> deltaphi(mu->phi()-atan2(mf.fourMomentum.Px(), mf.fourMomentum.Py()));
741 >    Geom::Phi<double> deltaphi(mu->phi()-atan2(mf.p4.Px(), mf.p4.Py()));
742      double acop = deltaphi.value();
743      mf.acop=acop;
744  
# Line 741 | Line 763 | HbbAnalyzerNew::produce(edm::Event& iEve
763        const reco::HitPattern& q = gTrack->hitPattern();
764        mf.globChi2=gTrack.get()->normalizedChi2();
765        mf.globNHits=q.numberOfValidMuonHits();
766 +      mf. validMuStations = q. muonStationsWithValidHits();
767      }else{
768        mf.globChi2=-99;
769        mf.globNHits=-99;
770      }
771 +    //
772 +    // add stamuon
773 +
774 +    //    if (mu->isStandAloneMuon()) {
775 +    //      reco::TrackRef sta = mu->standAloneMuon();
776 +    //      
777 +    //    }
778 +
779  
780      //     int muInfo[12];
781      //     fillMuBlock(mu,  muInfo);
# Line 759 | Line 790 | HbbAnalyzerNew::produce(edm::Event& iEve
790      hbbInfo->muInfo.push_back(mf);
791    }
792  
793 <
793 >  std::cout << " INPUT electrons "<<electrons.size()<<std::endl;
794    for(edm::View<pat::Electron>::const_iterator elec = electrons.begin(); elec!=electrons.end(); ++elec){
795      VHbbEvent::ElectronInfo ef;
796 <    ef.fourMomentum=GENPTOLORP(elec);
796 >    ef.p4=GENPTOLORP(elec);
797      ef.scEta =elec->superCluster()->eta();
798      ef.scPhi =elec->superCluster()->phi();
799      //    if(ElecEta[eleccont]!=0) ElecEt[eleccont]=elec->superCluster()->energy()/cosh(elec->superCluster()->eta());
# Line 770 | Line 801 | HbbAnalyzerNew::produce(edm::Event& iEve
801      ef.tIso=elec->trackIso();
802      ef.eIso=elec->ecalIso();
803      ef.hIso=elec->hcalIso();
804 <    Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->calomet.fourMomentum.Py(),hbbInfo->calomet.fourMomentum.Px()));
804 >    Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->calomet.p4.Py(),hbbInfo->calomet.p4.Px()));
805      ef.acop = deltaphi.value();
806 <    
806 >    //
807 >    // fill eleids
808 >    //    
809 >    ef.id95 = elec->electronID("simpleEleId95cIso");
810 >    ef.id85 = elec->electronID("simpleEleId85cIso");
811 >    ef.id70 = elec->electronID("simpleEleId70cIso");
812 >    ef.id95r = elec->electronID("simpleEleId95relIso");
813 >    ef.id70r = elec->electronID("simpleEleId70relIso");
814 >    ef.id85r = elec->electronID("simpleEleId85relIso");
815 >
816      if(runOnMC_){
817        const GenParticle* elecMc = elec->genLepton();
818        if(elecMc!=0){
# Line 784 | Line 824 | HbbAnalyzerNew::produce(edm::Event& iEve
824      hbbInfo->eleInfo.push_back(ef);
825    }
826  
827 +
828 +  std::cout << " INPUT taus "<<taus.size()<<std::endl;
829    for(edm::View<pat::Tau>::const_iterator tau = taus.begin(); tau!=taus.end(); ++tau){
830      VHbbEvent::TauInfo tf;
831 <    tf.fourMomentum=GENPTOLORP(tau);
831 >    tf.p4=GENPTOLORP(tau);
832      tf.charge=tau->charge();
833      tf.tIso=tau->trackIso();
834      tf.eIso=tau->ecalIso();
835      tf.hIso=tau->hcalIso();
836 <    Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->calomet.fourMomentum.Py(),hbbInfo->calomet.fourMomentum.Px()));
836 >    Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->calomet.p4.Py(),hbbInfo->calomet.p4.Px()));
837      double acop = deltaphi.value();
838      tf.acop=acop;
839      tf.idbyIso=tau->tauID("byIsolation");
# Line 810 | Line 852 | HbbAnalyzerNew::produce(edm::Event& iEve
852    for( size_t i = 0; i < dimuons->size(); i++ ) {
853      VHbbEvent::DiMuonInfo df;
854      const Candidate & dimuonCand = (*dimuons)[ i ];
855 <    df.fourMomentum= GENPTOLOR(dimuonCand);
855 >    df.p4= GENPTOLOR(dimuonCand);
856      const Candidate * lep0 = dimuonCand.daughter( 0 );
857      const Candidate * lep1 = dimuonCand.daughter( 1 );
858      // needed to access specific methods of pat::Muon
859      const pat::Muon & muonDau0 = dynamic_cast<const pat::Muon &>(*lep0->masterClone());
860      const pat::Muon & muonDau1 = dynamic_cast<const pat::Muon &>(*lep1->masterClone());
861      
862 <    df.daughter1.fourMomentum=GENPTOLOR(muonDau0);
863 <    df.daughter2.fourMomentum=GENPTOLOR(muonDau1);
862 >    df.daughter1.p4=GENPTOLOR(muonDau0);
863 >    df.daughter2.p4=GENPTOLOR(muonDau1);
864      
865      df.daughter1.tIso= muonDau0.trackIso();
866      df.daughter2.tIso= muonDau1.trackIso();
# Line 873 | Line 915 | HbbAnalyzerNew::produce(edm::Event& iEve
915          const reco::HitPattern& q = gTrack->hitPattern();
916          df.daughter1.globNHits=q.numberOfValidMuonHits();
917          df.daughter1.globChi2=gTrack.get()->normalizedChi2();
918 +        df.daughter1.validMuStations = q. muonStationsWithValidHits();
919        }
920        if(muonDau1.isGlobalMuon()){
921          TrackRef gTrack = muonDau1.globalTrack();
922          const reco::HitPattern& q = gTrack->hitPattern();
923          df.daughter2.globNHits=q.numberOfValidMuonHits();
924          df.daughter2.globChi2=gTrack.get()->normalizedChi2();
925 +        df.daughter2.validMuStations = q. muonStationsWithValidHits();
926        }
927    
928      }
# Line 890 | Line 934 | HbbAnalyzerNew::produce(edm::Event& iEve
934      VHbbEvent::DiElectronInfo df;
935      const Candidate & dielecCand = (*dielectrons)[ i ];
936  
937 <    df.fourMomentum=GENPTOLOR(dielecCand);
937 >    df.p4=GENPTOLOR(dielecCand);
938  
939      // accessing the daughters of the dimuon candidate
940      const Candidate * lep0 = dielecCand.daughter( 0 );
# Line 899 | Line 943 | HbbAnalyzerNew::produce(edm::Event& iEve
943      const pat::Electron & elecDau0 = dynamic_cast<const pat::Electron &>(*lep0->masterClone());
944      const pat::Electron & elecDau1 = dynamic_cast<const pat::Electron &>(*lep1->masterClone());
945  
946 <    df.daughter1.fourMomentum = GENPTOLOR(elecDau0);
947 <    df.daughter2.fourMomentum = GENPTOLOR(elecDau1);
946 >    df.daughter1.p4 = GENPTOLOR(elecDau0);
947 >    df.daughter2.p4= GENPTOLOR(elecDau1);
948  
949      df.daughter1.tIso = elecDau0.trackIso();
950      df.daughter2.tIso = elecDau1.trackIso();
# Line 911 | Line 955 | HbbAnalyzerNew::produce(edm::Event& iEve
955      df.daughter1.hIso = elecDau0.hcalIso();
956      df.daughter2.hIso = elecDau1.hcalIso();
957      
958 <    
958 >    // ids
959 >    df.daughter1.id95 = elecDau0.electronID("simpleEleId95cIso");
960 >    df.daughter1.id85 = elecDau0.electronID  ("simpleEleId85cIso");
961 >    df.daughter1.id70 = elecDau0.electronID  ("simpleEleId70cIso");
962 >    df.daughter1.id95r = elecDau0.electronID ("simpleEleId95relIso");
963 >    df.daughter1.id85r = elecDau0.electronID ("simpleEleId85relIso");
964 >    df.daughter1.id70r = elecDau0.electronID ("simpleEleId70relIso");
965 >
966 >
967 >    df.daughter2.id95 = elecDau1.electronID("simpleEleId95cIso");
968 >    df.daughter2.id85 = elecDau1.electronID  ("simpleEleId85cIso");
969 >    df.daughter2.id70 = elecDau1.electronID  ("simpleEleId70cIso");
970 >    df.daughter2.id95r = elecDau1.electronID ("simpleEleId95relIso");
971 >    df.daughter2.id85r = elecDau1.electronID ("simpleEleId85relIso");
972 >    df.daughter2.id70r = elecDau1.electronID ("simpleEleId70relIso");
973 >
974      hbbInfo->diElectronInfo.push_back(df);
975      
976    }
977 +   if (verbose_){
978 +     std::cout <<" Pushing hbbInfo "<<std::endl;
979 +     std::cout <<" SimpleJets1 = "<<hbbInfo->simpleJets.size()<<std::endl<<
980 +       " SimpleJets2 = "<<hbbInfo->simpleJets2.size()<<std::endl<<
981 +       " SubJets = "<<hbbInfo->subJets.size()<<std::endl<<
982 +       " HardJets = "<<hbbInfo->hardJets.size()<<std::endl<<
983 +       " Muons = "<<hbbInfo->muInfo.size()<<std::endl<<
984 +       " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
985 +       " Taus = "<<hbbInfo->tauInfo.size()<<std::endl<<
986 +       " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
987 +       "--------------------- "<<std::endl;
988 +  }
989 +
990 +
991    iEvent.put(hbbInfo);
992  
993 +
994   }
995    
996   void
# Line 950 | Line 1024 | void
1024   HbbAnalyzerNew::endJob() {
1025   }
1026  
953
1027   TVector2 HbbAnalyzerNew::getTvect( const pat::Jet* patJet ){
1028  
1029    TVector2 t_Vect(0,0);
# Line 963 | Line 1036 | TVector2 HbbAnalyzerNew::getTvect( const
1036    double r_mag = 1e10;
1037    unsigned int nOfconst = 0;
1038  
1039 < //re-reconstruct the jet direction with the charged tracks
1039 >
1040 >  if (patJet->isPFJet() == false) {
1041 >    return t_Vect;
1042 >  }
1043 >  
1044 >
1045 >  //re-reconstruct the jet direction with the charged tracks
1046    std::vector<reco::PFCandidatePtr>
1047      patJetpfc = patJet->getPFConstituents();
1048    for(size_t idx = 0; idx < patJetpfc.size(); idx++){
# Line 973 | Line 1052 | TVector2 HbbAnalyzerNew::getTvect( const
1052        nOfconst++;
1053      }
1054    }
976
1055   // if there are less than two charged tracks do not calculate the pull (there is not enough info). It returns a null vector
1056  
1057    if( nOfconst < 2 )
1058      return null;
1059 +  
1060 +
1061  
1062    TVector2 v_J( J.Rapidity(), J.Phi() );
1063   //calculate TVector using only charged tracks
# Line 991 | Line 1071 | TVector2 HbbAnalyzerNew::getTvect( const
1071      }
1072    }
1073  
1074 +  
1075    return t_Vect;
1076    
1077   }
1078  
1079 + TLorentzVector HbbAnalyzerNew::getChargedTracksMomentum(const pat::Jet* patJet ){
1080 +  //  return TLorentzVector();
1081 +  TLorentzVector pi(0,0,0,0);
1082 +  TLorentzVector v_j1(0,0,0,0);
1083 +
1084 +
1085 +  //  std::cout <<"fff ECCCCCCOOOOO "<<patJet->isPFJet()<<std::endl;
1086 +
1087 +  if (patJet->isPFJet() == false ){
1088 +      v_j1 = GENPTOLORP(patJet);
1089 +      return v_j1;
1090 +  }
1091 +  std::vector<reco::PFCandidatePtr>
1092 +    j1pfc = patJet->getPFConstituents();
1093 +  for(size_t idx = 0; idx < j1pfc.size(); idx++){
1094 +    if( j1pfc.at(idx)->charge() != 0 ){
1095 +      pi.SetPtEtaPhiE( j1pfc.at(idx)->pt(), j1pfc.at(idx)->eta(), j1pfc.at(idx)->phi(), j1pfc.at(idx)->energy() );
1096 +      v_j1 += pi;
1097 +    }
1098 +  }
1099 +  return v_j1;
1100 +  //re-
1101 + }
1102  
1103   //define this as a plug-in
1104   DEFINE_FWK_MODULE(HbbAnalyzerNew);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines