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.3 by tboccali, Thu Jun 9 06:51:57 2011 UTC vs.
Revision 1.17 by arizzi, Wed Aug 10 13:35:43 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 >
26  
27   #define GENPTOLOR(a) TLorentzVector((a).px(), (a).py(), (a).pz(), (a).energy())
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")) {
42 <
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 69 | 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 92 | 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 204 | 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 289 | Line 294 | HbbAnalyzerNew::produce(edm::Event& iEve
294    Handle<reco::VertexCollection> recVtxs;
295    iEvent.getByLabel("offlinePrimaryVertices", recVtxs);
296    
297 +  auxInfo->pvInfo.nVertices = recVtxs->size();
298 +
299    for(size_t i = 0; i < recVtxs->size(); ++ i) {
300      const Vertex &vtx = (*recVtxs)[i];
301      double RecVtxProb=TMath::Prob(vtx.chi2(),vtx.ndof());
# Line 301 | Line 308 | HbbAnalyzerNew::produce(edm::Event& iEve
308    const Vertex &RecVtx = (*recVtxs)[VtxIn];
309    const Vertex &RecVtxFirst = (*recVtxs)[0];
310    
311 <  hbbInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
312 <  hbbInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
311 >  auxInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
312 >  auxInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
313  
314      
315    edm::Handle<double> rhoHandle;
316 <  iEvent.getByLabel(edm::InputTag("kt6PFJets", "rho"),rhoHandle); // configure srcRho = cms.InputTag('kt6PFJets")
310 <  hbbInfo->puInfo.rho = *rhoHandle;
316 >  iEvent.getByLabel(edm::InputTag("kt6PFJets", "rho"),rhoHandle);   auxInfo->puInfo.rho = *rhoHandle;
317    
318    //// real start
319    
# Line 320 | Line 326 | HbbAnalyzerNew::produce(edm::Event& iEve
326    if(runOnMC_){
327      
328      int Hin=-99,Win=-99,Zin=-99,bin=-99,bbarin=-99;
323    
329      iEvent.getByLabel("genParticles", genParticles);
330      
331      for(size_t i = 0; i < genParticles->size(); ++ i) {
332 +      int Hin=-99,Win=-99,Zin=-99,bin=-99,bbarin=-99;
333 +      
334        const GenParticle & p = (*genParticles)[i];
335        int id = p.pdgId();
336        int st = p.status();  
337 <        
337 >      
338        if(id==25){
339 <          
339 >        
340          /*          int wh=0;
341                      int nMoth = p.numberOfMothers();
342                      for(size_t jj = 0; jj < nMoth; ++ jj) {
# Line 340 | Line 347 | HbbAnalyzerNew::produce(edm::Event& iEve
347                      if(abs(Wmomdau->pdgId())==24) wh++;
348                      }
349                      }
350 <                      
350 >                    
351                      if(wh==0) continue;
352          */
353 +        VHbbEventAuxInfo::ParticleMCInfo htemp;
354          Hin=i;
355 <        hbbInfo->mcH.status=st;
356 <        hbbInfo->mcH.charge=p.charge();
357 <        if(p.mother(0)!=0) hbbInfo->mcH.momid=p.mother(0)->pdgId();
358 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcH.gmomid=p.mother(0)->mother(0)->pdgId();
359 <        hbbInfo->mcH.fourMomentum = GENPTOLOR(p);
355 >        htemp.status=st;
356 >        htemp.charge=p.charge();
357 >        if(p.mother(0)!=0) htemp.momid=p.mother(0)->pdgId();
358 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) htemp.gmomid=p.mother(0)->mother(0)->pdgId();
359 >        htemp.p4 = GENPTOLOR(p);
360            
361          int ndau = p.numberOfDaughters();
362          for(int j = 0; j < ndau; ++ j) {
363            const Candidate * Hdau = p.daughter( j );
364 <          hbbInfo->mcH.dauid.push_back(Hdau->pdgId());
365 <          hbbInfo->mcH.dauFourMomentum.push_back(GENPTOLORP(Hdau));
364 >          htemp.dauid.push_back(Hdau->pdgId());
365 >          htemp.dauFourMomentum.push_back(GENPTOLORP(Hdau));
366          }
367 +        (auxInfo->mcH).push_back(htemp);
368        }
369          
370          
371        if(abs(id)==24){
372            
373          Win=i;
374 <        hbbInfo->mcW.status=st;
375 <        hbbInfo->mcW.charge=p.charge();
376 <        if(p.mother(0)!=0) hbbInfo->mcW.momid=p.mother(0)->pdgId();
377 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcW.gmomid=p.mother(0)->mother(0)->pdgId();
378 <        hbbInfo->mcW.fourMomentum=GENPTOLOR(p);
374 >        VHbbEventAuxInfo::ParticleMCInfo wtemp;
375 >        wtemp.status=st;
376 >        wtemp.charge=p.charge();
377 >        if(p.mother(0)!=0) wtemp.momid=p.mother(0)->pdgId();
378 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) wtemp.gmomid=p.mother(0)->mother(0)->pdgId();
379 >        wtemp.p4=GENPTOLOR(p);
380  
381          int ndau = p.numberOfDaughters();
382          for(int j = 0; j < ndau; ++ j) {
383            const Candidate * Wdau = p.daughter( j );
384 <          hbbInfo->mcW.dauid.push_back(Wdau->pdgId());
385 <          hbbInfo->mcW.dauFourMomentum.push_back(GENPTOLORP(Wdau));
384 >          wtemp.dauid.push_back(Wdau->pdgId());
385 >          wtemp.dauFourMomentum.push_back(GENPTOLORP(Wdau));
386          }
387 +        auxInfo->mcW.push_back(wtemp);
388        }
389          
390        if(abs(id)==23){
391  
392          Zin=i;
393 <        hbbInfo->mcZ.status=st;
394 <        hbbInfo->mcZ.charge=p.charge();
395 <        if(p.mother(0)!=0) hbbInfo->mcZ.momid=p.mother(0)->pdgId();
396 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcZ.gmomid=p.mother(0)->mother(0)->pdgId();
397 <        hbbInfo->mcZ.fourMomentum=GENPTOLOR(p);
393 >        VHbbEventAuxInfo::ParticleMCInfo ztemp;
394 >        ztemp.status=st;
395 >        ztemp.charge=p.charge();
396 >        if(p.mother(0)!=0) ztemp.momid=p.mother(0)->pdgId();
397 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) ztemp.gmomid=p.mother(0)->mother(0)->pdgId();
398 >        ztemp.p4=GENPTOLOR(p);
399  
400          int ndau = p.numberOfDaughters();
401          for(int j = 0; j < ndau; ++ j) {
402            const Candidate * Zdau = p.daughter( j );
403 <          hbbInfo->mcZ.dauid.push_back(Zdau->pdgId());
404 <          hbbInfo->mcZ.dauFourMomentum.push_back(GENPTOLOR(p));
403 >          ztemp.dauid.push_back(Zdau->pdgId());
404 >          ztemp.dauFourMomentum.push_back(GENPTOLOR(p));
405          }
406 +        auxInfo->mcZ.push_back(ztemp);
407        }
408        //
409        // binfo
410        //
411 <
411 >      
412        
413        if(id==5){
414          bin=i;
415 <        hbbInfo->mcB.status=st;
416 <        hbbInfo->mcB.charge=p.charge();
417 <        if(p.mother(0)!=0) hbbInfo->mcB.momid=p.mother(0)->pdgId();
418 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcB.gmomid=p.mother(0)->mother(0)->pdgId();
415 >        VHbbEventAuxInfo::ParticleMCInfo btemp;
416 >        btemp.status=st;
417 >        btemp.charge=p.charge();
418 >        if(p.mother(0)!=0) btemp.momid=p.mother(0)->pdgId();
419 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) btemp.gmomid=p.mother(0)->mother(0)->pdgId();
420 >        auxInfo->mcB.push_back(btemp);
421        }
422        
423        if(id==-5){
424          bbarin=i;
425 <        hbbInfo->mcBbar.status=st;
426 <        hbbInfo->mcBbar.charge=p.charge();
427 <        if(p.mother(0)!=0) hbbInfo->mcBbar.momid=p.mother(0)->pdgId();
428 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcBbar.gmomid=p.mother(0)->mother(0)->pdgId();
429 <      }
425 >        VHbbEventAuxInfo::ParticleMCInfo bbtemp;
426 >        
427 >        bbtemp.status=st;
428 >        bbtemp.charge=p.charge();
429 >        if(p.mother(0)!=0) bbtemp.momid=p.mother(0)->pdgId();
430 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) bbtemp.gmomid=p.mother(0)->mother(0)->pdgId();
431 >        auxInfo->mcBbar.push_back(bbtemp);
432 >     }
433        
434        if(abs(id)==4){
435 <        hbbInfo->mcC.status=st;
436 <        hbbInfo->mcC.charge=p.charge();
437 <        if(p.mother(0)!=0) hbbInfo->mcC.momid=p.mother(0)->pdgId();
438 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcC.gmomid=p.mother(0)->mother(0)->pdgId();
435 >        VHbbEventAuxInfo::ParticleMCInfo ctemp;
436 >        ctemp.status=st;
437 >        ctemp.charge=p.charge();
438 >        if(p.mother(0)!=0) ctemp.momid=p.mother(0)->pdgId();
439 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) ctemp.gmomid=p.mother(0)->mother(0)->pdgId();
440 >        auxInfo->mcC.push_back(ctemp);  
441        }
442 <
443 <
424 <    }
425 <
426 <
427 <    if(bin!=-99 && bbarin!=-99){
442 >    
443 >      if(bin!=-99 && bbarin!=-99){
444        const Candidate & bGen = (*genParticles)[bin];
445        const Candidate & bbarGen = (*genParticles)[bbarin];
446 <      hbbInfo->mcB.fourMomentum=GENPTOLOR(bGen);
447 <      hbbInfo->mcBbar.fourMomentum=GENPTOLOR(bbarGen);
446 >      ((auxInfo->mcB).back()).p4=GENPTOLOR(bGen);
447 >     ((auxInfo->mcBbar).back()).p4=GENPTOLOR(bbarGen);
448        
449        int nHDaubdau = bGen.numberOfDaughters();
450        for(int j = 0; j < nHDaubdau; ++ j) {
451          const Candidate * Bdau = bGen.daughter( j );
452 <        hbbInfo->mcB.dauid.push_back(Bdau->pdgId());
453 <        hbbInfo->mcB.dauFourMomentum.push_back(GENPTOLORP(Bdau));
452 >        ((auxInfo->mcB).back()).dauid.push_back(Bdau->pdgId());
453 >        ((auxInfo->mcB).back()).dauFourMomentum.push_back(GENPTOLORP(Bdau));
454        }
455        int nHDaubbardau = bbarGen.numberOfDaughters();
456        for(int j = 0; j < nHDaubbardau; ++ j) {
457          const Candidate * Bbardau = bbarGen.daughter( j );
458 <        hbbInfo->mcBbar.dauid.push_back(Bbardau->pdgId());
459 <        hbbInfo->mcBbar.dauFourMomentum.push_back(GENPTOLORP(Bbardau));
458 >        ((auxInfo->mcBbar).back()).dauid.push_back(Bbardau->pdgId());
459 >        ((auxInfo->mcBbar).back()).dauFourMomentum.push_back(GENPTOLORP(Bbardau));
460        }
461 <
462 <  
461 >      
462 >    }
463  
464      }
465  
# Line 515 | Line 531 | HbbAnalyzerNew::produce(edm::Event& iEve
531      VHbbEvent::SimpleJet sj;
532      sj.flavour = jet_iter->partonFlavour();
533  
518
534      sj.tche=jet_iter->bDiscriminator("trackCountingHighEffBJetTags");
535      sj.tchp=jet_iter->bDiscriminator("trackCountingHighPurBJetTags");
536      sj.jp=jet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 525 | Line 540 | HbbAnalyzerNew::produce(edm::Event& iEve
540      sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
541      sj.charge=jet_iter->jetCharge();
542      sj.ntracks=jet_iter->associatedTracks().size();
543 <    sj.fourMomentum=GENPTOLORP(jet_iter);
543 >    sj.p4=GENPTOLORP(jet_iter);
544 >    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
545 >    
546 >    //
547 >    // add tVector
548 >    //
549 >    sj.tVector = getTvect(&(*jet_iter));
550  
551      Particle::LorentzVector p4Jet = jet_iter->p4();
552  
# Line 537 | Line 558 | HbbAnalyzerNew::produce(edm::Event& iEve
558          if(abs(id)<=6 || id==21 || id==23 || abs(id)==24){
559            double bb1DR=TMath::Sqrt((p.eta()-p4Jet.eta())*(p.eta()-p4Jet.eta())+
560                                     (p.phi()-p4Jet.phi())*(p.phi()-p4Jet.phi()));
561 <          if(bb1DR<minb1DR) {minb1DR=bb1DR; sj.b1BestMCid=id; if(p.mother()!=0) sj.b1BestMCmomid=p.mother()->pdgId();}
561 >          if(bb1DR<minb1DR) {minb1DR=bb1DR; sj.bestMCid=id; if(p.mother()!=0) sj.bestMCmomid=p.mother()->pdgId();}
562          }
563        }
564      } //isMC    
# Line 561 | Line 582 | HbbAnalyzerNew::produce(edm::Event& iEve
582      sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
583      sj.charge=jet_iter->jetCharge();
584      sj.ntracks=jet_iter->associatedTracks().size();
585 <    sj.fourMomentum=GENPTOLORP(jet_iter);
585 >    sj.p4=GENPTOLORP(jet_iter);
586 >    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
587 >    sj.tVector = getTvect(&(*jet_iter));
588  
589      Particle::LorentzVector p4Jet = jet_iter->p4();
590  
# Line 573 | Line 596 | HbbAnalyzerNew::produce(edm::Event& iEve
596          if(abs(id)<=6 || id==21 || id==23 || abs(id)==24){
597            double bb2DR=TMath::Sqrt((p.eta()-p4Jet.eta())*(p.eta()-p4Jet.eta())+
598                                     (p.phi()-p4Jet.phi())*(p.phi()-p4Jet.phi()));
599 <          if(bb2DR<minb2DR) {minb2DR=bb2DR; sj.b1BestMCid=id; if(p.mother()!=0) sj.b1BestMCmomid=p.mother()->pdgId();}
599 >          if(bb2DR<minb2DR) {minb2DR=bb2DR; sj.bestMCid=id; if(p.mother()!=0) sj.bestMCmomid=p.mother()->pdgId();}
600          }
601        }
602      }   //isMC
# Line 613 | Line 636 | HbbAnalyzerNew::produce(edm::Event& iEve
636      //    if(printJet) {std::cout << "NsubJets: " << constituents.size() << "\n";}
637      VHbbEvent::HardJet hj;
638      hj.constituents=constituents.size();
639 <    hj.fourMomentum =GENPTOLORP(jet_iter);
639 >    hj.p4 =GENPTOLORP(jet_iter);
640  
641      for (unsigned int iJC(0); iJC<constituents.size(); ++iJC ){
642        Jet::Constituent icandJet = constituents[iJC];
# Line 625 | Line 648 | HbbAnalyzerNew::produce(edm::Event& iEve
648        hj.subFourMomentum.push_back(GENPTOLORP(icandJet));
649        hj.etaSub.push_back(icandJet->eta());
650        hj.phiSub.push_back(icandJet->phi());
628
651      
652      }
653      hbbInfo->hardJets.push_back(hj);
# Line 650 | Line 672 | HbbAnalyzerNew::produce(edm::Event& iEve
672      VHbbEvent::SimpleJet sj;
673  
674      sj.flavour = subjet_iter->partonFlavour();
675 <    
675 >    sj.tVector = getTvect(&(*subjet_iter));
676      sj.tche=subjet_iter->bDiscriminator("trackCountingHighEffBJetTags");
677      sj.tchp=subjet_iter->bDiscriminator("trackCountingHighPurBJetTags");
678      sj.jp=subjet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 660 | Line 682 | HbbAnalyzerNew::produce(edm::Event& iEve
682      sj.csvmva=subjet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
683      sj.charge=subjet_iter->jetCharge();
684      sj.ntracks=subjet_iter->associatedTracks().size();
685 <    sj.fourMomentum=GENPTOLORP(subjet_iter);
686 <
685 >    sj.p4=GENPTOLORP(subjet_iter);
686 >    sj.p4=(getChargedTracksMomentum(&*(subjet_iter)));
687      hbbInfo->subJets.push_back(sj);
688  
689    }
# Line 671 | Line 693 | HbbAnalyzerNew::produce(edm::Event& iEve
693    // met is calomet
694    //
695  
674
675  for(edm::View<pat::MET>::const_iterator met = mets.begin(); met!=mets.end(); ++met){
676    hbbInfo->calomet.sumEt=met->sumEt();
677    hbbInfo->calomet.metSig=met->mEtSig();
678    hbbInfo->calomet.eLong=met->e_longitudinal();
679    hbbInfo->calomet.fourMomentum=GENPTOLORP(met);
680  }
681
696    edm::Handle<edm::View<pat::MET> > metTCHandle;
697    iEvent.getByLabel("patMETsTC",metTCHandle);
698    edm::View<pat::MET> metsTC = *metTCHandle;
699 <  for(edm::View<pat::MET>::const_iterator metTC = metsTC.begin(); metTC!=metsTC.end(); ++metTC){
700 <    hbbInfo->calomet.sumEt=metTC->sumEt();
701 <    hbbInfo->calomet.metSig=metTC->mEtSig();
702 <    hbbInfo->calomet.eLong=metTC->e_longitudinal();
703 <    hbbInfo->calomet.fourMomentum=GENPTOLORP(metTC);
699 >  if(metsTC.size()){
700 >    hbbInfo->tcmet.sumEt=(metsTC[0]).sumEt();
701 >    hbbInfo->tcmet.metSig=(metsTC[0]).mEtSig();
702 >    hbbInfo->tcmet.eLong=(metsTC[0]).e_longitudinal();
703 >    hbbInfo->tcmet.p4=GENPTOLOR((metsTC[0]));
704 >    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->tcmet.metSig <<" " <<     hbbInfo->tcmet.sumEt<<std::endl;
705    }
706 +  
707 +  if(mets.size()){
708 +    hbbInfo->calomet.sumEt=(mets[0]).sumEt();
709 +    hbbInfo->calomet.metSig=(mets[0]).mEtSig();
710 +    hbbInfo->calomet.eLong=(mets[0]).e_longitudinal();
711 +    hbbInfo->calomet.p4=GENPTOLOR((mets[0]));
712 +    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->calomet.metSig <<" " <<     hbbInfo->calomet.sumEt<<std::endl;
713 +  }
714 +
715 +  
716    edm::Handle<edm::View<pat::MET> > metPFHandle;
717    iEvent.getByLabel("patMETsPF",metPFHandle);
718    edm::View<pat::MET> metsPF = *metPFHandle;
719 <  for(edm::View<pat::MET>::const_iterator metPF = metsPF.begin(); metPF!=metsPF.end(); ++metPF){
720 <    hbbInfo->calomet.sumEt=metPF->sumEt();
721 <    hbbInfo->calomet.metSig=metPF->mEtSig();
722 <    hbbInfo->calomet.eLong=metPF->e_longitudinal();
723 <    hbbInfo->calomet.fourMomentum=GENPTOLORP(metPF);
719 >
720 >  if(metsPF.size()){
721 >    hbbInfo->pfmet.sumEt=(metsPF[0]).sumEt();
722 >    hbbInfo->pfmet.metSig=(metsPF[0]).mEtSig();
723 >    hbbInfo->pfmet.eLong=(metsPF[0]).e_longitudinal();
724 >    hbbInfo->pfmet.p4=GENPTOLOR((metsPF[0]));
725 >    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->pfmet.metSig <<" " <<     hbbInfo->pfmet.sumEt<<std::endl;
726    }
727  
728  
729 +  if(verbose_){
730 +    std::cout << "METs: calomet "<<mets.size()<<" tcmet "<<metsTC.size()<<" pfmet "<<metsPF.size()<<std::endl;  
731 +  }
732 +
733 +  std::cout << " INPUT MUONS "<<muons.size()<<std::endl;
734  
735    for(edm::View<pat::Muon>::const_iterator mu = muons.begin(); mu!=muons.end(); ++mu){
736      VHbbEvent::MuonInfo mf;
737 <    mf.fourMomentum =GENPTOLORP( mu);
737 >    mf.p4 =GENPTOLORP( mu);
738      mf.charge=mu->charge();
739      mf.tIso=mu->trackIso();
740      mf.eIso=mu->ecalIso();
741      mf.hIso=mu->hcalIso();
742 <    Geom::Phi<double> deltaphi(mu->phi()-atan2(mf.fourMomentum.Px(), mf.fourMomentum.Py()));
742 >    mf.pfChaIso=mu->chargedHadronIso();
743 >    mf.pfPhoIso=mu->photonIso();
744 >    mf.pfNeuIso=mu->neutralHadronIso();
745 >    Geom::Phi<double> deltaphi(mu->phi()-atan2(mf.p4.Px(), mf.p4.Py()));
746      double acop = deltaphi.value();
747      mf.acop=acop;
748  
# Line 732 | Line 767 | HbbAnalyzerNew::produce(edm::Event& iEve
767        const reco::HitPattern& q = gTrack->hitPattern();
768        mf.globChi2=gTrack.get()->normalizedChi2();
769        mf.globNHits=q.numberOfValidMuonHits();
770 +      mf. validMuStations = q. muonStationsWithValidHits();
771      }else{
772        mf.globChi2=-99;
773        mf.globNHits=-99;
774      }
775 +    //
776 +    // add stamuon
777 +
778 +    //    if (mu->isStandAloneMuon()) {
779 +    //      reco::TrackRef sta = mu->standAloneMuon();
780 +    //      
781 +    //    }
782 +
783  
784      //     int muInfo[12];
785      //     fillMuBlock(mu,  muInfo);
# Line 750 | Line 794 | HbbAnalyzerNew::produce(edm::Event& iEve
794      hbbInfo->muInfo.push_back(mf);
795    }
796  
797 <
797 >  std::cout << " INPUT electrons "<<electrons.size()<<std::endl;
798    for(edm::View<pat::Electron>::const_iterator elec = electrons.begin(); elec!=electrons.end(); ++elec){
799      VHbbEvent::ElectronInfo ef;
800 <    ef.fourMomentum=GENPTOLORP(elec);
800 >    ef.p4=GENPTOLORP(elec);
801      ef.scEta =elec->superCluster()->eta();
802      ef.scPhi =elec->superCluster()->phi();
803      //    if(ElecEta[eleccont]!=0) ElecEt[eleccont]=elec->superCluster()->energy()/cosh(elec->superCluster()->eta());
# Line 761 | Line 805 | HbbAnalyzerNew::produce(edm::Event& iEve
805      ef.tIso=elec->trackIso();
806      ef.eIso=elec->ecalIso();
807      ef.hIso=elec->hcalIso();
808 <    Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->calomet.fourMomentum.Py(),hbbInfo->calomet.fourMomentum.Px()));
808 >    ef.pfChaIso=elec->chargedHadronIso();
809 >    ef.pfPhoIso=elec->photonIso();
810 >    ef.pfNeuIso=elec->neutralHadronIso();
811 >
812 >    Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->calomet.p4.Py(),hbbInfo->calomet.p4.Px()));
813      ef.acop = deltaphi.value();
814 <    
814 >    //
815 >    // fill eleids
816 >    //    
817 > /*    ef.id95 = elec->electronID("simpleEleId95cIso");
818 >    ef.id85 = elec->electronID("simpleEleId85cIso");
819 >    ef.id70 = elec->electronID("simpleEleId70cIso");
820 >    ef.id95r = elec->electronID("simpleEleId95relIso");
821 >    ef.id70r = elec->electronID("simpleEleId70relIso");
822 >    ef.id85r = elec->electronID("simpleEleId85relIso");
823 > */
824 >    ef.id95 =elec->electronID("eidVBTFCom95");
825 >    ef.id95r=elec->electronID("eidVBTFRel95");
826 >    ef.id85 =elec->electronID("eidVBTFCom85");
827 >    ef.id85r=elec->electronID("eidVBTFRel85");
828 >    ef.id80 =elec->electronID("eidVBTFCom80");
829 >    ef.id80r=elec->electronID("eidVBTFRel80");
830 >    ef.id70 =elec->electronID("eidVBTFCom70");
831 >    ef.id70r=elec->electronID("eidVBTFRel70");
832 >
833      if(runOnMC_){
834        const GenParticle* elecMc = elec->genLepton();
835        if(elecMc!=0){
# Line 775 | Line 841 | HbbAnalyzerNew::produce(edm::Event& iEve
841      hbbInfo->eleInfo.push_back(ef);
842    }
843  
844 +
845 +  std::cout << " INPUT taus "<<taus.size()<<std::endl;
846    for(edm::View<pat::Tau>::const_iterator tau = taus.begin(); tau!=taus.end(); ++tau){
847      VHbbEvent::TauInfo tf;
848 <    tf.fourMomentum=GENPTOLORP(tau);
848 >    tf.p4=GENPTOLORP(tau);
849      tf.charge=tau->charge();
850      tf.tIso=tau->trackIso();
851      tf.eIso=tau->ecalIso();
852      tf.hIso=tau->hcalIso();
853 <    Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->calomet.fourMomentum.Py(),hbbInfo->calomet.fourMomentum.Px()));
853 >    Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->calomet.p4.Py(),hbbInfo->calomet.p4.Px()));
854      double acop = deltaphi.value();
855      tf.acop=acop;
856      tf.idbyIso=tau->tauID("byIsolation");
# Line 801 | Line 869 | HbbAnalyzerNew::produce(edm::Event& iEve
869    for( size_t i = 0; i < dimuons->size(); i++ ) {
870      VHbbEvent::DiMuonInfo df;
871      const Candidate & dimuonCand = (*dimuons)[ i ];
872 <    df.fourMomentum= GENPTOLOR(dimuonCand);
872 >    df.p4= GENPTOLOR(dimuonCand);
873      const Candidate * lep0 = dimuonCand.daughter( 0 );
874      const Candidate * lep1 = dimuonCand.daughter( 1 );
875      // needed to access specific methods of pat::Muon
876      const pat::Muon & muonDau0 = dynamic_cast<const pat::Muon &>(*lep0->masterClone());
877      const pat::Muon & muonDau1 = dynamic_cast<const pat::Muon &>(*lep1->masterClone());
878      
879 <    df.daughter1.fourMomentum=GENPTOLOR(muonDau0);
880 <    df.daughter2.fourMomentum=GENPTOLOR(muonDau1);
879 >    df.daughter1.p4=GENPTOLOR(muonDau0);
880 >    df.daughter2.p4=GENPTOLOR(muonDau1);
881      
882      df.daughter1.tIso= muonDau0.trackIso();
883      df.daughter2.tIso= muonDau1.trackIso();
# Line 864 | Line 932 | HbbAnalyzerNew::produce(edm::Event& iEve
932          const reco::HitPattern& q = gTrack->hitPattern();
933          df.daughter1.globNHits=q.numberOfValidMuonHits();
934          df.daughter1.globChi2=gTrack.get()->normalizedChi2();
935 +        df.daughter1.validMuStations = q. muonStationsWithValidHits();
936        }
937        if(muonDau1.isGlobalMuon()){
938          TrackRef gTrack = muonDau1.globalTrack();
939          const reco::HitPattern& q = gTrack->hitPattern();
940          df.daughter2.globNHits=q.numberOfValidMuonHits();
941          df.daughter2.globChi2=gTrack.get()->normalizedChi2();
942 +        df.daughter2.validMuStations = q. muonStationsWithValidHits();
943        }
944    
945      }
# Line 881 | Line 951 | HbbAnalyzerNew::produce(edm::Event& iEve
951      VHbbEvent::DiElectronInfo df;
952      const Candidate & dielecCand = (*dielectrons)[ i ];
953  
954 <    df.fourMomentum=GENPTOLOR(dielecCand);
954 >    df.p4=GENPTOLOR(dielecCand);
955  
956      // accessing the daughters of the dimuon candidate
957      const Candidate * lep0 = dielecCand.daughter( 0 );
# Line 890 | Line 960 | HbbAnalyzerNew::produce(edm::Event& iEve
960      const pat::Electron & elecDau0 = dynamic_cast<const pat::Electron &>(*lep0->masterClone());
961      const pat::Electron & elecDau1 = dynamic_cast<const pat::Electron &>(*lep1->masterClone());
962  
963 <    df.daughter1.fourMomentum = GENPTOLOR(elecDau0);
964 <    df.daughter2.fourMomentum = GENPTOLOR(elecDau1);
963 >    df.daughter1.p4 = GENPTOLOR(elecDau0);
964 >    df.daughter2.p4= GENPTOLOR(elecDau1);
965  
966      df.daughter1.tIso = elecDau0.trackIso();
967      df.daughter2.tIso = elecDau1.trackIso();
# Line 902 | Line 972 | HbbAnalyzerNew::produce(edm::Event& iEve
972      df.daughter1.hIso = elecDau0.hcalIso();
973      df.daughter2.hIso = elecDau1.hcalIso();
974      
975 <    
975 >    // ids
976 >    /*df.daughter1.id95 = elecDau0.electronID("simpleEleId95cIso");
977 >    df.daughter1.id85 = elecDau0.electronID  ("simpleEleId85cIso");
978 >    df.daughter1.id70 = elecDau0.electronID  ("simpleEleId70cIso");
979 >    df.daughter1.id95r = elecDau0.electronID ("simpleEleId95relIso");
980 >    df.daughter1.id85r = elecDau0.electronID ("simpleEleId85relIso");
981 >    df.daughter1.id70r = elecDau0.electronID ("simpleEleId70relIso");
982 >
983 >
984 >    df.daughter2.id95 = elecDau1.electronID("simpleEleId95cIso");
985 >    df.daughter2.id85 = elecDau1.electronID  ("simpleEleId85cIso");
986 >    df.daughter2.id70 = elecDau1.electronID  ("simpleEleId70cIso");
987 >    df.daughter2.id95r = elecDau1.electronID ("simpleEleId95relIso");
988 >    df.daughter2.id85r = elecDau1.electronID ("simpleEleId85relIso");
989 >    df.daughter2.id70r = elecDau1.electronID ("simpleEleId70relIso");
990 > */
991      hbbInfo->diElectronInfo.push_back(df);
992      
993    }
994 +   if (verbose_){
995 +     std::cout <<" Pushing hbbInfo "<<std::endl;
996 +     std::cout <<" SimpleJets1 = "<<hbbInfo->simpleJets.size()<<std::endl<<
997 +       " SimpleJets2 = "<<hbbInfo->simpleJets2.size()<<std::endl<<
998 +       " SubJets = "<<hbbInfo->subJets.size()<<std::endl<<
999 +       " HardJets = "<<hbbInfo->hardJets.size()<<std::endl<<
1000 +       " Muons = "<<hbbInfo->muInfo.size()<<std::endl<<
1001 +       " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
1002 +       " Taus = "<<hbbInfo->tauInfo.size()<<std::endl<<
1003 +       " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
1004 +       "--------------------- "<<std::endl;
1005 +  }
1006 +
1007 +
1008    iEvent.put(hbbInfo);
1009 +  iEvent.put(auxInfo);
1010 +
1011  
1012   }
1013    
# Line 941 | Line 1042 | void
1042   HbbAnalyzerNew::endJob() {
1043   }
1044  
1045 + TVector2 HbbAnalyzerNew::getTvect( const pat::Jet* patJet ){
1046 +
1047 +  TVector2 t_Vect(0,0);
1048 +  TVector2 null(0,0);
1049 +  TVector2 ci(0,0);
1050 +  TLorentzVector pi(0,0,0,0);
1051 +  TLorentzVector J(0,0,0,0);
1052 +  TVector2 r(0,0);
1053 +  double patJetpfcPt = 1e10;
1054 +  double r_mag = 1e10;
1055 +  unsigned int nOfconst = 0;
1056 +
1057 +
1058 +  if (patJet->isPFJet() == false) {
1059 +    return t_Vect;
1060 +  }
1061 +  
1062 +
1063 +  //re-reconstruct the jet direction with the charged tracks
1064 +  std::vector<reco::PFCandidatePtr>
1065 +    patJetpfc = patJet->getPFConstituents();
1066 +  for(size_t idx = 0; idx < patJetpfc.size(); idx++){
1067 +    if( patJetpfc.at(idx)->charge() != 0 ){
1068 +      pi.SetPtEtaPhiE( patJetpfc.at(idx)->pt(), patJetpfc.at(idx)->eta(), patJetpfc.at(idx)->phi(), patJetpfc.at(idx)->energy() );
1069 +      J += pi;
1070 +      nOfconst++;
1071 +    }
1072 +  }
1073 + // if there are less than two charged tracks do not calculate the pull (there is not enough info). It returns a null vector
1074 +
1075 +  if( nOfconst < 2 )
1076 +    return null;
1077 +  
1078 +
1079 +
1080 +  TVector2 v_J( J.Rapidity(), J.Phi() );
1081 + //calculate TVector using only charged tracks
1082 +  for(size_t idx = 0; idx < patJetpfc.size(); idx++){
1083 +    if( patJetpfc.at(idx)->charge() != 0  ){
1084 +      patJetpfcPt = patJetpfc.at(idx)->pt();
1085 +      pi.SetPtEtaPhiE( patJetpfc.at(idx)->pt(), patJetpfc.at(idx)->eta(), patJetpfc.at(idx)->phi(), patJetpfc.at(idx)->energy() );
1086 +      r.Set( pi.Rapidity() - J.Rapidity(), Geom::deltaPhi( patJetpfc.at(idx)->phi(), J.Phi() ) );
1087 +      r_mag = r.Mod();
1088 +      t_Vect += ( patJetpfcPt / J.Pt() ) * r_mag * r;
1089 +    }
1090 +  }
1091 +
1092 +  
1093 +  return t_Vect;
1094 +  
1095 + }
1096 +
1097 + TLorentzVector HbbAnalyzerNew::getChargedTracksMomentum(const pat::Jet* patJet ){
1098 +  //  return TLorentzVector();
1099 +  TLorentzVector pi(0,0,0,0);
1100 +  TLorentzVector v_j1(0,0,0,0);
1101 +
1102 +
1103 +  //  std::cout <<"fff ECCCCCCOOOOO "<<patJet->isPFJet()<<std::endl;
1104 +
1105 +  if (patJet->isPFJet() == false ){
1106 +      v_j1 = GENPTOLORP(patJet);
1107 +      return v_j1;
1108 +  }
1109 +  std::vector<reco::PFCandidatePtr>
1110 +    j1pfc = patJet->getPFConstituents();
1111 +  for(size_t idx = 0; idx < j1pfc.size(); idx++){
1112 +    if( j1pfc.at(idx)->charge() != 0 ){
1113 +      pi.SetPtEtaPhiE( j1pfc.at(idx)->pt(), j1pfc.at(idx)->eta(), j1pfc.at(idx)->phi(), j1pfc.at(idx)->energy() );
1114 +      v_j1 += pi;
1115 +    }
1116 +  }
1117 +  return v_j1;
1118 +  //re-
1119 + }
1120 +
1121   //define this as a plug-in
1122   DEFINE_FWK_MODULE(HbbAnalyzerNew);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines