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.18 by bortigno, Thu Aug 18 14:11:35 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/PatCandidates/interface/PATObject.h"
25 > #include "DataFormats/PatCandidates/interface/TriggerObject.h"
26 > #include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h"
27 >
28 > #include "DataFormats/GeometryVector/interface/VectorUtil.h"
29 >
30  
31   #define GENPTOLOR(a) TLorentzVector((a).px(), (a).py(), (a).pz(), (a).energy())
32   #define GENPTOLORP(a) TLorentzVector((a)->px(), (a)->py(), (a)->pz(), (a)->energy())
33  
34   HbbAnalyzerNew::HbbAnalyzerNew(const edm::ParameterSet& iConfig):
35 <  eleLabel_(iConfig.getUntrackedParameter<edm::InputTag>("electronTag")),
36 <  muoLabel_(iConfig.getUntrackedParameter<edm::InputTag>("muonTag")),
37 <  jetLabel_(iConfig.getUntrackedParameter<edm::InputTag>("jetTag")),
38 <  subjetLabel_(iConfig.getUntrackedParameter<edm::InputTag>("subjetTag")),
39 <  simplejet1Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet1Tag")),
40 <  simplejet2Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet2Tag")),
41 <  simplejet3Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet3Tag")),
42 <  simplejet4Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet4Tag")),
43 <  tauLabel_(iConfig.getUntrackedParameter<edm::InputTag>("tauTag")),
44 <  metLabel_(iConfig.getUntrackedParameter<edm::InputTag>("metTag")),
45 <  phoLabel_(iConfig.getUntrackedParameter<edm::InputTag>("photonTag")),
46 <  dimuLabel_(iConfig.getUntrackedParameter<edm::InputTag>("dimuTag")),
47 <  dielecLabel_(iConfig.getUntrackedParameter<edm::InputTag>("dielecTag")),
48 <  hltResults_(iConfig.getUntrackedParameter<edm::InputTag>("hltResultsTag")),
49 <  runOnMC_(iConfig.getParameter<bool>("runOnMC")) {
42 <
35 >  eleLabel_(iConfig.getParameter<edm::InputTag>("electronTag")),
36 >  muoLabel_(iConfig.getParameter<edm::InputTag>("muonTag")),
37 >  jetLabel_(iConfig.getParameter<edm::InputTag>("jetTag")),
38 >  subjetLabel_(iConfig.getParameter<edm::InputTag>("subjetTag")),
39 >  simplejet1Label_(iConfig.getParameter<edm::InputTag>("simplejet1Tag")),
40 >  simplejet2Label_(iConfig.getParameter<edm::InputTag>("simplejet2Tag")),
41 >  simplejet3Label_(iConfig.getParameter<edm::InputTag>("simplejet3Tag")),
42 >  simplejet4Label_(iConfig.getParameter<edm::InputTag>("simplejet4Tag")),
43 >  tauLabel_(iConfig.getParameter<edm::InputTag>("tauTag")),
44 >  metLabel_(iConfig.getParameter<edm::InputTag>("metTag")),
45 >  phoLabel_(iConfig.getParameter<edm::InputTag>("photonTag")),
46 >  dimuLabel_(iConfig.getParameter<edm::InputTag>("dimuTag")),
47 >  dielecLabel_(iConfig.getParameter<edm::InputTag>("dielecTag")),
48 >  hltResults_(iConfig.getParameter<edm::InputTag>("hltResultsTag")),
49 >  runOnMC_(iConfig.getParameter<bool>("runOnMC")), verbose_(iConfig.getUntrackedParameter<bool>("verbose")) {
50  
51    //
52    // put the setwhatproduced etc etc
53  
54    produces<VHbbEvent>();
55 +  produces<VHbbEventAuxInfo>();
56  
57  
58   }
# Line 69 | Line 77 | HbbAnalyzerNew::produce(edm::Event& iEve
77    using namespace reco;
78    
79    
80 <  std::auto_ptr<VHbbEvent> hbbInfo( new VHbbEvent() );
80 >  std::auto_ptr<VHbbEvent> hbbInfo( new VHbbEvent() );  
81 >  std::auto_ptr<VHbbEventAuxInfo> auxInfo( new VHbbEventAuxInfo() );
82    
83    //
84    // ??
# Line 92 | Line 101 | HbbAnalyzerNew::produce(edm::Event& iEve
101      TString trigName=triggerNames_.triggerName(itrig);
102      bool accept = hltresults->accept(itrig);
103  
104 <    if (accept){(hbbInfo->triggerInfo.flag)[itrig] = 1;}
105 <    else { (hbbInfo->triggerInfo.flag)[itrig] = 0;}
104 >    if (accept){(auxInfo->triggerInfo.flag)[itrig] = 1;}
105 >    else { (auxInfo->triggerInfo.flag)[itrig] = 0;}
106  
107      //    std::cout << "%HLTInfo --  Number of HLT Triggers: " << ntrigs << std::endl;
108      //    std::cout << "%HLTInfo --  HLTTrigger(" << itrig << "): " << trigName << " = " << accept << std::endl;
# Line 204 | Line 213 | HbbAnalyzerNew::produce(edm::Event& iEve
213    int itrig26=-99;
214    if(goodIsoMu17v6!=0) itrig26 = triggerNames_.triggerIndex("HLT_IsoMu17_v6");
215    
216 <  if (itrig1!=-99 && hltresults->accept(itrig1))  hbbInfo->triggerInfo.triggerMu9=1; else hbbInfo->triggerInfo.triggerMu9=0;
217 <  if (itrig2!=-99 && hltresults->accept(itrig2))  hbbInfo->triggerInfo.triggerIsoMu9=1; else hbbInfo->triggerInfo.triggerIsoMu9=0;
218 <  if (itrig3!=-99 && hltresults->accept(itrig3))  hbbInfo->triggerInfo.triggerIsoMu13_3=1; else hbbInfo->triggerInfo.triggerIsoMu13_3=0;
219 <  if (itrig4!=-99 && hltresults->accept(itrig4))  hbbInfo->triggerInfo.triggerMu11=1; else hbbInfo->triggerInfo.triggerMu11=0;
220 <  if (itrig5!=-99 && hltresults->accept(itrig5))  hbbInfo->triggerInfo.triggerDoubleMu3=1; else hbbInfo->triggerInfo.triggerDoubleMu3=0;
221 <  if (itrig6!=-99 && hltresults->accept(itrig6))  hbbInfo->triggerInfo.triggerDoubleMu3_2=1; else hbbInfo->triggerInfo.triggerDoubleMu3_2=0;
222 <  if (itrig7!=-99 && hltresults->accept(itrig7))  hbbInfo->triggerInfo.triggerMu15=1; else hbbInfo->triggerInfo.triggerMu15=0;
223 <  if (itrig8!=-99 && hltresults->accept(itrig8))  hbbInfo->triggerInfo.triggerMu15_1=1; else hbbInfo->triggerInfo.triggerMu15_1=0;  
224 <  
225 <  if (itrig9!=-99 && hltresults->accept(itrig9))  hbbInfo->triggerInfo.triggerDoubleElec10=1; else hbbInfo->triggerInfo.triggerDoubleElec10=0;  
226 <  if (itrig10!=-99 && hltresults->accept(itrig10))  hbbInfo->triggerInfo.triggerDoubleElec15_1=1; else hbbInfo->triggerInfo.triggerDoubleElec15_1=0;  
227 <  if (itrig11!=-99 && hltresults->accept(itrig11))  hbbInfo->triggerInfo.triggerDoubleElec17_1=1; else hbbInfo->triggerInfo.triggerDoubleElec17_1=0;  
228 <  if (itrig12!=-99 && hltresults->accept(itrig12))  hbbInfo->triggerInfo.triggerMet100_1=1; else hbbInfo->triggerInfo.triggerMet100_1=0;
229 <  
230 <  if (itrig13!=-99 && hltresults->accept(itrig13))  hbbInfo->triggerInfo.triggerSingleEle1=1; else hbbInfo->triggerInfo.triggerSingleEle1=0;
231 <  if (itrig14!=-99 && hltresults->accept(itrig14))  hbbInfo->triggerInfo.triggerSingleEle2=1; else hbbInfo->triggerInfo.triggerSingleEle2=0;
232 <  if (itrig15!=-99 && hltresults->accept(itrig15))  hbbInfo->triggerInfo.triggerSingleEle3=1; else hbbInfo->triggerInfo.triggerSingleEle3=0;
233 <  if (itrig16!=-99 && hltresults->accept(itrig16))  hbbInfo->triggerInfo.triggerSingleEle4=1; else hbbInfo->triggerInfo.triggerSingleEle4=0;
234 <  
235 <  if (itrig17!=-99 && hltresults->accept(itrig17))  hbbInfo->triggerInfo.triggerBtagMu1=1; else hbbInfo->triggerInfo.triggerBtagMu1=0;  
236 <  if (itrig18!=-99 && hltresults->accept(itrig18))  hbbInfo->triggerInfo.triggerBtagMu2=1; else hbbInfo->triggerInfo.triggerBtagMu2=0;
237 <  if (itrig19!=-99 && hltresults->accept(itrig19))  hbbInfo->triggerInfo.triggerBtagMu0=1; else hbbInfo->triggerInfo.triggerBtagMu0=0;
238 <  if (itrig20!=-99 && hltresults->accept(itrig20))  hbbInfo->triggerInfo.triggerBtagMu11=1; else hbbInfo->triggerInfo.triggerBtagMu11=0;
239 <  if (itrig21!=-99 && hltresults->accept(itrig21))  hbbInfo->triggerInfo.triggerBtagMuJet1=1; else hbbInfo->triggerInfo.triggerBtagMuJet1=0;
240 <  if (itrig22!=-99 && hltresults->accept(itrig22))  hbbInfo->triggerInfo.triggerBtagMuJet2=1; else hbbInfo->triggerInfo.triggerBtagMuJet2=0;
241 <  if (itrig23!=-99 && hltresults->accept(itrig23))  hbbInfo->triggerInfo.triggerBtagMuJet3=1; else hbbInfo->triggerInfo.triggerBtagMuJet3=0;
242 <  if (itrig231!=-99 && hltresults->accept(itrig231))  hbbInfo->triggerInfo.triggerBtagMuJet4=1; else hbbInfo->triggerInfo.triggerBtagMuJet4=0;
243 <  
244 <  if (itrig24!=-99 && hltresults->accept(itrig24))  hbbInfo->triggerInfo.triggerIsoMu15=1; else hbbInfo->triggerInfo.triggerIsoMu15=0;
245 <  if (itrig25!=-99 && hltresults->accept(itrig25))  hbbInfo->triggerInfo.triggerIsoMu17v5=1; else hbbInfo->triggerInfo.triggerIsoMu17v5=0;
246 <  if (itrig26!=-99 && hltresults->accept(itrig26))  hbbInfo->triggerInfo.triggerIsoMu17v6=1; else hbbInfo->triggerInfo.triggerIsoMu17v6=0;
247 <  
248 <  if (itrig1==-99)  hbbInfo->triggerInfo.triggerMu9=-99;
249 <  if (itrig2==-99)  hbbInfo->triggerInfo.triggerIsoMu9=-99;
250 <  if (itrig3==-99)  hbbInfo->triggerInfo.triggerIsoMu13_3=-99;
251 <  if (itrig4==-99)  hbbInfo->triggerInfo.triggerMu11=-99;
252 <  if (itrig5==-99)  hbbInfo->triggerInfo.triggerDoubleMu3=-99;
253 <  if (itrig6==-99)  hbbInfo->triggerInfo.triggerDoubleMu3_2=-99;
254 <  if (itrig7==-99)  hbbInfo->triggerInfo.triggerMu15=-99;
255 <  if (itrig8==-99)  hbbInfo->triggerInfo.triggerMu15_1=-99;
256 <
257 <  if (itrig9==-99)  hbbInfo->triggerInfo.triggerDoubleElec10=-99;
258 <  if (itrig10==-99)  hbbInfo->triggerInfo.triggerDoubleElec15_1=-99;
259 <  if (itrig11==-99)  hbbInfo->triggerInfo.triggerDoubleElec17_1=-99;
260 <  if (itrig12==-99) hbbInfo->triggerInfo.triggerMet100_1=-99;
261 <
262 <  if (itrig13==-99) hbbInfo->triggerInfo.triggerSingleEle1=-99;
263 <  if (itrig14==-99) hbbInfo->triggerInfo.triggerSingleEle2=-99;
264 <  if (itrig15==-99) hbbInfo->triggerInfo.triggerSingleEle3=-99;
265 <  if (itrig16==-99) hbbInfo->triggerInfo.triggerSingleEle4=-99;
266 <
267 <  if(itrig17==-99)  hbbInfo->triggerInfo.triggerBtagMu1=-99;  
268 <  if(itrig18==-99)  hbbInfo->triggerInfo.triggerBtagMu2=-99;
269 <  if(itrig19==-99)  hbbInfo->triggerInfo.triggerBtagMu0=-99;
270 <  if(itrig20==-99)  hbbInfo->triggerInfo.triggerBtagMu11=-99;
271 <  if(itrig21==-99)  hbbInfo->triggerInfo.triggerBtagMuJet1=-99;
272 <  if(itrig22==-99)  hbbInfo->triggerInfo.triggerBtagMuJet2=-99;
273 <  if(itrig23==-99)  hbbInfo->triggerInfo.triggerBtagMuJet3=-99;
274 <  if(itrig231==-99)  hbbInfo->triggerInfo.triggerBtagMuJet4=-99;
275 <
276 <  if(itrig24==-99)  hbbInfo->triggerInfo.triggerIsoMu15=-99;
277 <  if(itrig25==-99)  hbbInfo->triggerInfo.triggerIsoMu17v5=-99;
278 <  if(itrig26==-99)  hbbInfo->triggerInfo.triggerIsoMu17v6=-99;
216 >  if (itrig1!=-99 && hltresults->accept(itrig1))  auxInfo->triggerInfo.triggerMu9=1; else auxInfo->triggerInfo.triggerMu9=0;
217 >  if (itrig2!=-99 && hltresults->accept(itrig2))  auxInfo->triggerInfo.triggerIsoMu9=1; else auxInfo->triggerInfo.triggerIsoMu9=0;
218 >  if (itrig3!=-99 && hltresults->accept(itrig3))  auxInfo->triggerInfo.triggerIsoMu13_3=1; else auxInfo->triggerInfo.triggerIsoMu13_3=0;
219 >  if (itrig4!=-99 && hltresults->accept(itrig4))  auxInfo->triggerInfo.triggerMu11=1; else auxInfo->triggerInfo.triggerMu11=0;
220 >  if (itrig5!=-99 && hltresults->accept(itrig5))  auxInfo->triggerInfo.triggerDoubleMu3=1; else auxInfo->triggerInfo.triggerDoubleMu3=0;
221 >  if (itrig6!=-99 && hltresults->accept(itrig6))  auxInfo->triggerInfo.triggerDoubleMu3_2=1; else auxInfo->triggerInfo.triggerDoubleMu3_2=0;
222 >  if (itrig7!=-99 && hltresults->accept(itrig7))  auxInfo->triggerInfo.triggerMu15=1; else auxInfo->triggerInfo.triggerMu15=0;
223 >  if (itrig8!=-99 && hltresults->accept(itrig8))  auxInfo->triggerInfo.triggerMu15_1=1; else auxInfo->triggerInfo.triggerMu15_1=0;  
224 >  
225 >  if (itrig9!=-99 && hltresults->accept(itrig9))  auxInfo->triggerInfo.triggerDoubleElec10=1; else auxInfo->triggerInfo.triggerDoubleElec10=0;  
226 >  if (itrig10!=-99 && hltresults->accept(itrig10))  auxInfo->triggerInfo.triggerDoubleElec15_1=1; else auxInfo->triggerInfo.triggerDoubleElec15_1=0;  
227 >  if (itrig11!=-99 && hltresults->accept(itrig11))  auxInfo->triggerInfo.triggerDoubleElec17_1=1; else auxInfo->triggerInfo.triggerDoubleElec17_1=0;  
228 >  if (itrig12!=-99 && hltresults->accept(itrig12))  auxInfo->triggerInfo.triggerMet100_1=1; else auxInfo->triggerInfo.triggerMet100_1=0;
229 >  
230 >  if (itrig13!=-99 && hltresults->accept(itrig13))  auxInfo->triggerInfo.triggerSingleEle1=1; else auxInfo->triggerInfo.triggerSingleEle1=0;
231 >  if (itrig14!=-99 && hltresults->accept(itrig14))  auxInfo->triggerInfo.triggerSingleEle2=1; else auxInfo->triggerInfo.triggerSingleEle2=0;
232 >  if (itrig15!=-99 && hltresults->accept(itrig15))  auxInfo->triggerInfo.triggerSingleEle3=1; else auxInfo->triggerInfo.triggerSingleEle3=0;
233 >  if (itrig16!=-99 && hltresults->accept(itrig16))  auxInfo->triggerInfo.triggerSingleEle4=1; else auxInfo->triggerInfo.triggerSingleEle4=0;
234 >  
235 >  if (itrig17!=-99 && hltresults->accept(itrig17))  auxInfo->triggerInfo.triggerBtagMu1=1; else auxInfo->triggerInfo.triggerBtagMu1=0;  
236 >  if (itrig18!=-99 && hltresults->accept(itrig18))  auxInfo->triggerInfo.triggerBtagMu2=1; else auxInfo->triggerInfo.triggerBtagMu2=0;
237 >  if (itrig19!=-99 && hltresults->accept(itrig19))  auxInfo->triggerInfo.triggerBtagMu0=1; else auxInfo->triggerInfo.triggerBtagMu0=0;
238 >  if (itrig20!=-99 && hltresults->accept(itrig20))  auxInfo->triggerInfo.triggerBtagMu11=1; else auxInfo->triggerInfo.triggerBtagMu11=0;
239 >  if (itrig21!=-99 && hltresults->accept(itrig21))  auxInfo->triggerInfo.triggerBtagMuJet1=1; else auxInfo->triggerInfo.triggerBtagMuJet1=0;
240 >  if (itrig22!=-99 && hltresults->accept(itrig22))  auxInfo->triggerInfo.triggerBtagMuJet2=1; else auxInfo->triggerInfo.triggerBtagMuJet2=0;
241 >  if (itrig23!=-99 && hltresults->accept(itrig23))  auxInfo->triggerInfo.triggerBtagMuJet3=1; else auxInfo->triggerInfo.triggerBtagMuJet3=0;
242 >  if (itrig231!=-99 && hltresults->accept(itrig231))  auxInfo->triggerInfo.triggerBtagMuJet4=1; else auxInfo->triggerInfo.triggerBtagMuJet4=0;
243 >  
244 >  if (itrig24!=-99 && hltresults->accept(itrig24))  auxInfo->triggerInfo.triggerIsoMu15=1; else auxInfo->triggerInfo.triggerIsoMu15=0;
245 >  if (itrig25!=-99 && hltresults->accept(itrig25))  auxInfo->triggerInfo.triggerIsoMu17v5=1; else auxInfo->triggerInfo.triggerIsoMu17v5=0;
246 >  if (itrig26!=-99 && hltresults->accept(itrig26))  auxInfo->triggerInfo.triggerIsoMu17v6=1; else auxInfo->triggerInfo.triggerIsoMu17v6=0;
247 >  
248 >  if (itrig1==-99)  auxInfo->triggerInfo.triggerMu9=-99;
249 >  if (itrig2==-99)  auxInfo->triggerInfo.triggerIsoMu9=-99;
250 >  if (itrig3==-99)  auxInfo->triggerInfo.triggerIsoMu13_3=-99;
251 >  if (itrig4==-99)  auxInfo->triggerInfo.triggerMu11=-99;
252 >  if (itrig5==-99)  auxInfo->triggerInfo.triggerDoubleMu3=-99;
253 >  if (itrig6==-99)  auxInfo->triggerInfo.triggerDoubleMu3_2=-99;
254 >  if (itrig7==-99)  auxInfo->triggerInfo.triggerMu15=-99;
255 >  if (itrig8==-99)  auxInfo->triggerInfo.triggerMu15_1=-99;
256 >
257 >  if (itrig9==-99)  auxInfo->triggerInfo.triggerDoubleElec10=-99;
258 >  if (itrig10==-99)  auxInfo->triggerInfo.triggerDoubleElec15_1=-99;
259 >  if (itrig11==-99)  auxInfo->triggerInfo.triggerDoubleElec17_1=-99;
260 >  if (itrig12==-99) auxInfo->triggerInfo.triggerMet100_1=-99;
261 >
262 >  if (itrig13==-99) auxInfo->triggerInfo.triggerSingleEle1=-99;
263 >  if (itrig14==-99) auxInfo->triggerInfo.triggerSingleEle2=-99;
264 >  if (itrig15==-99) auxInfo->triggerInfo.triggerSingleEle3=-99;
265 >  if (itrig16==-99) auxInfo->triggerInfo.triggerSingleEle4=-99;
266 >
267 >  if(itrig17==-99)  auxInfo->triggerInfo.triggerBtagMu1=-99;  
268 >  if(itrig18==-99)  auxInfo->triggerInfo.triggerBtagMu2=-99;
269 >  if(itrig19==-99)  auxInfo->triggerInfo.triggerBtagMu0=-99;
270 >  if(itrig20==-99)  auxInfo->triggerInfo.triggerBtagMu11=-99;
271 >  if(itrig21==-99)  auxInfo->triggerInfo.triggerBtagMuJet1=-99;
272 >  if(itrig22==-99)  auxInfo->triggerInfo.triggerBtagMuJet2=-99;
273 >  if(itrig23==-99)  auxInfo->triggerInfo.triggerBtagMuJet3=-99;
274 >  if(itrig231==-99)  auxInfo->triggerInfo.triggerBtagMuJet4=-99;
275 >
276 >  if(itrig24==-99)  auxInfo->triggerInfo.triggerIsoMu15=-99;
277 >  if(itrig25==-99)  auxInfo->triggerInfo.triggerIsoMu17v5=-99;
278 >  if(itrig26==-99)  auxInfo->triggerInfo.triggerIsoMu17v6=-99;
279  
280    //  MinDRMu=-99.,MCBestMuId=-99,MCBestMuMomId=-99,MCBestMuGMomId=-99;
281    //  for(int i=0;i<50;i++) {DeltaRMu[i]=-99;}
# Line 289 | Line 298 | HbbAnalyzerNew::produce(edm::Event& iEve
298    Handle<reco::VertexCollection> recVtxs;
299    iEvent.getByLabel("offlinePrimaryVertices", recVtxs);
300    
301 +  auxInfo->pvInfo.nVertices = recVtxs->size();
302 +
303    for(size_t i = 0; i < recVtxs->size(); ++ i) {
304      const Vertex &vtx = (*recVtxs)[i];
305      double RecVtxProb=TMath::Prob(vtx.chi2(),vtx.ndof());
# Line 301 | Line 312 | HbbAnalyzerNew::produce(edm::Event& iEve
312    const Vertex &RecVtx = (*recVtxs)[VtxIn];
313    const Vertex &RecVtxFirst = (*recVtxs)[0];
314    
315 <  hbbInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
316 <  hbbInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
315 >  auxInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
316 >  auxInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
317  
318      
319    edm::Handle<double> rhoHandle;
320 <  iEvent.getByLabel(edm::InputTag("kt6PFJets", "rho"),rhoHandle); // configure srcRho = cms.InputTag('kt6PFJets")
310 <  hbbInfo->puInfo.rho = *rhoHandle;
320 >  iEvent.getByLabel(edm::InputTag("kt6PFJets", "rho"),rhoHandle);   auxInfo->puInfo.rho = *rhoHandle;
321    
322    //// real start
323    
# Line 320 | Line 330 | HbbAnalyzerNew::produce(edm::Event& iEve
330    if(runOnMC_){
331      
332      int Hin=-99,Win=-99,Zin=-99,bin=-99,bbarin=-99;
323    
333      iEvent.getByLabel("genParticles", genParticles);
334      
335      for(size_t i = 0; i < genParticles->size(); ++ i) {
336 +      int Hin=-99,Win=-99,Zin=-99,bin=-99,bbarin=-99;
337 +      
338        const GenParticle & p = (*genParticles)[i];
339        int id = p.pdgId();
340        int st = p.status();  
341 <        
341 >      
342        if(id==25){
343 <          
343 >        
344          /*          int wh=0;
345                      int nMoth = p.numberOfMothers();
346                      for(size_t jj = 0; jj < nMoth; ++ jj) {
# Line 340 | Line 351 | HbbAnalyzerNew::produce(edm::Event& iEve
351                      if(abs(Wmomdau->pdgId())==24) wh++;
352                      }
353                      }
354 <                      
354 >                    
355                      if(wh==0) continue;
356          */
357 +        VHbbEventAuxInfo::ParticleMCInfo htemp;
358          Hin=i;
359 <        hbbInfo->mcH.status=st;
360 <        hbbInfo->mcH.charge=p.charge();
361 <        if(p.mother(0)!=0) hbbInfo->mcH.momid=p.mother(0)->pdgId();
362 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcH.gmomid=p.mother(0)->mother(0)->pdgId();
363 <        hbbInfo->mcH.fourMomentum = GENPTOLOR(p);
359 >        htemp.status=st;
360 >        htemp.charge=p.charge();
361 >        if(p.mother(0)!=0) htemp.momid=p.mother(0)->pdgId();
362 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) htemp.gmomid=p.mother(0)->mother(0)->pdgId();
363 >        htemp.p4 = GENPTOLOR(p);
364            
365          int ndau = p.numberOfDaughters();
366          for(int j = 0; j < ndau; ++ j) {
367            const Candidate * Hdau = p.daughter( j );
368 <          hbbInfo->mcH.dauid.push_back(Hdau->pdgId());
369 <          hbbInfo->mcH.dauFourMomentum.push_back(GENPTOLORP(Hdau));
368 >          htemp.dauid.push_back(Hdau->pdgId());
369 >          htemp.dauFourMomentum.push_back(GENPTOLORP(Hdau));
370          }
371 +        (auxInfo->mcH).push_back(htemp);
372        }
373          
374          
375        if(abs(id)==24){
376            
377          Win=i;
378 <        hbbInfo->mcW.status=st;
379 <        hbbInfo->mcW.charge=p.charge();
380 <        if(p.mother(0)!=0) hbbInfo->mcW.momid=p.mother(0)->pdgId();
381 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcW.gmomid=p.mother(0)->mother(0)->pdgId();
382 <        hbbInfo->mcW.fourMomentum=GENPTOLOR(p);
378 >        VHbbEventAuxInfo::ParticleMCInfo wtemp;
379 >        wtemp.status=st;
380 >        wtemp.charge=p.charge();
381 >        if(p.mother(0)!=0) wtemp.momid=p.mother(0)->pdgId();
382 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) wtemp.gmomid=p.mother(0)->mother(0)->pdgId();
383 >        wtemp.p4=GENPTOLOR(p);
384  
385          int ndau = p.numberOfDaughters();
386          for(int j = 0; j < ndau; ++ j) {
387            const Candidate * Wdau = p.daughter( j );
388 <          hbbInfo->mcW.dauid.push_back(Wdau->pdgId());
389 <          hbbInfo->mcW.dauFourMomentum.push_back(GENPTOLORP(Wdau));
388 >          wtemp.dauid.push_back(Wdau->pdgId());
389 >          wtemp.dauFourMomentum.push_back(GENPTOLORP(Wdau));
390          }
391 +        auxInfo->mcW.push_back(wtemp);
392        }
393          
394        if(abs(id)==23){
395  
396          Zin=i;
397 <        hbbInfo->mcZ.status=st;
398 <        hbbInfo->mcZ.charge=p.charge();
399 <        if(p.mother(0)!=0) hbbInfo->mcZ.momid=p.mother(0)->pdgId();
400 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcZ.gmomid=p.mother(0)->mother(0)->pdgId();
401 <        hbbInfo->mcZ.fourMomentum=GENPTOLOR(p);
397 >        VHbbEventAuxInfo::ParticleMCInfo ztemp;
398 >        ztemp.status=st;
399 >        ztemp.charge=p.charge();
400 >        if(p.mother(0)!=0) ztemp.momid=p.mother(0)->pdgId();
401 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) ztemp.gmomid=p.mother(0)->mother(0)->pdgId();
402 >        ztemp.p4=GENPTOLOR(p);
403  
404          int ndau = p.numberOfDaughters();
405          for(int j = 0; j < ndau; ++ j) {
406            const Candidate * Zdau = p.daughter( j );
407 <          hbbInfo->mcZ.dauid.push_back(Zdau->pdgId());
408 <          hbbInfo->mcZ.dauFourMomentum.push_back(GENPTOLOR(p));
407 >          ztemp.dauid.push_back(Zdau->pdgId());
408 >          ztemp.dauFourMomentum.push_back(GENPTOLOR(p));
409          }
410 +        auxInfo->mcZ.push_back(ztemp);
411        }
412        //
413        // binfo
414        //
415 <
415 >      
416        
417        if(id==5){
418          bin=i;
419 <        hbbInfo->mcB.status=st;
420 <        hbbInfo->mcB.charge=p.charge();
421 <        if(p.mother(0)!=0) hbbInfo->mcB.momid=p.mother(0)->pdgId();
422 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcB.gmomid=p.mother(0)->mother(0)->pdgId();
419 >        VHbbEventAuxInfo::ParticleMCInfo btemp;
420 >        btemp.status=st;
421 >        btemp.charge=p.charge();
422 >        if(p.mother(0)!=0) btemp.momid=p.mother(0)->pdgId();
423 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) btemp.gmomid=p.mother(0)->mother(0)->pdgId();
424 >        auxInfo->mcB.push_back(btemp);
425        }
426        
427        if(id==-5){
428          bbarin=i;
429 <        hbbInfo->mcBbar.status=st;
430 <        hbbInfo->mcBbar.charge=p.charge();
431 <        if(p.mother(0)!=0) hbbInfo->mcBbar.momid=p.mother(0)->pdgId();
432 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcBbar.gmomid=p.mother(0)->mother(0)->pdgId();
433 <      }
429 >        VHbbEventAuxInfo::ParticleMCInfo bbtemp;
430 >        
431 >        bbtemp.status=st;
432 >        bbtemp.charge=p.charge();
433 >        if(p.mother(0)!=0) bbtemp.momid=p.mother(0)->pdgId();
434 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) bbtemp.gmomid=p.mother(0)->mother(0)->pdgId();
435 >        auxInfo->mcBbar.push_back(bbtemp);
436 >     }
437        
438        if(abs(id)==4){
439 <        hbbInfo->mcC.status=st;
440 <        hbbInfo->mcC.charge=p.charge();
441 <        if(p.mother(0)!=0) hbbInfo->mcC.momid=p.mother(0)->pdgId();
442 <        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) hbbInfo->mcC.gmomid=p.mother(0)->mother(0)->pdgId();
439 >        VHbbEventAuxInfo::ParticleMCInfo ctemp;
440 >        ctemp.status=st;
441 >        ctemp.charge=p.charge();
442 >        if(p.mother(0)!=0) ctemp.momid=p.mother(0)->pdgId();
443 >        if(p.mother(0)!=0 && p.mother(0)->mother(0)!=0) ctemp.gmomid=p.mother(0)->mother(0)->pdgId();
444 >        auxInfo->mcC.push_back(ctemp);  
445        }
446 <
447 <
424 <    }
425 <
426 <
427 <    if(bin!=-99 && bbarin!=-99){
446 >    
447 >      if(bin!=-99 && bbarin!=-99){
448        const Candidate & bGen = (*genParticles)[bin];
449        const Candidate & bbarGen = (*genParticles)[bbarin];
450 <      hbbInfo->mcB.fourMomentum=GENPTOLOR(bGen);
451 <      hbbInfo->mcBbar.fourMomentum=GENPTOLOR(bbarGen);
450 >      ((auxInfo->mcB).back()).p4=GENPTOLOR(bGen);
451 >     ((auxInfo->mcBbar).back()).p4=GENPTOLOR(bbarGen);
452        
453        int nHDaubdau = bGen.numberOfDaughters();
454        for(int j = 0; j < nHDaubdau; ++ j) {
455          const Candidate * Bdau = bGen.daughter( j );
456 <        hbbInfo->mcB.dauid.push_back(Bdau->pdgId());
457 <        hbbInfo->mcB.dauFourMomentum.push_back(GENPTOLORP(Bdau));
456 >        ((auxInfo->mcB).back()).dauid.push_back(Bdau->pdgId());
457 >        ((auxInfo->mcB).back()).dauFourMomentum.push_back(GENPTOLORP(Bdau));
458        }
459        int nHDaubbardau = bbarGen.numberOfDaughters();
460        for(int j = 0; j < nHDaubbardau; ++ j) {
461          const Candidate * Bbardau = bbarGen.daughter( j );
462 <        hbbInfo->mcBbar.dauid.push_back(Bbardau->pdgId());
463 <        hbbInfo->mcBbar.dauFourMomentum.push_back(GENPTOLORP(Bbardau));
462 >        ((auxInfo->mcBbar).back()).dauid.push_back(Bbardau->pdgId());
463 >        ((auxInfo->mcBbar).back()).dauFourMomentum.push_back(GENPTOLORP(Bbardau));
464        }
465 <
466 <  
465 >      
466 >    }
467  
468      }
469  
# Line 515 | Line 535 | HbbAnalyzerNew::produce(edm::Event& iEve
535      VHbbEvent::SimpleJet sj;
536      sj.flavour = jet_iter->partonFlavour();
537  
518
538      sj.tche=jet_iter->bDiscriminator("trackCountingHighEffBJetTags");
539      sj.tchp=jet_iter->bDiscriminator("trackCountingHighPurBJetTags");
540      sj.jp=jet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 525 | Line 544 | HbbAnalyzerNew::produce(edm::Event& iEve
544      sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
545      sj.charge=jet_iter->jetCharge();
546      sj.ntracks=jet_iter->associatedTracks().size();
547 <    sj.fourMomentum=GENPTOLORP(jet_iter);
547 >    sj.p4=GENPTOLORP(jet_iter);
548 >    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
549 >    
550 >    //
551 >    // add tVector
552 >    //
553 >    sj.tVector = getTvect(&(*jet_iter));
554  
555      Particle::LorentzVector p4Jet = jet_iter->p4();
556  
# Line 537 | Line 562 | HbbAnalyzerNew::produce(edm::Event& iEve
562          if(abs(id)<=6 || id==21 || id==23 || abs(id)==24){
563            double bb1DR=TMath::Sqrt((p.eta()-p4Jet.eta())*(p.eta()-p4Jet.eta())+
564                                     (p.phi()-p4Jet.phi())*(p.phi()-p4Jet.phi()));
565 <          if(bb1DR<minb1DR) {minb1DR=bb1DR; sj.b1BestMCid=id; if(p.mother()!=0) sj.b1BestMCmomid=p.mother()->pdgId();}
565 >          if(bb1DR<minb1DR) {minb1DR=bb1DR; sj.bestMCid=id; if(p.mother()!=0) sj.bestMCmomid=p.mother()->pdgId();}
566          }
567        }
568      } //isMC    
# Line 561 | Line 586 | HbbAnalyzerNew::produce(edm::Event& iEve
586      sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
587      sj.charge=jet_iter->jetCharge();
588      sj.ntracks=jet_iter->associatedTracks().size();
589 <    sj.fourMomentum=GENPTOLORP(jet_iter);
589 >    sj.p4=GENPTOLORP(jet_iter);
590 >    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
591 >    sj.tVector = getTvect(&(*jet_iter));
592  
593      Particle::LorentzVector p4Jet = jet_iter->p4();
594  
# Line 573 | Line 600 | HbbAnalyzerNew::produce(edm::Event& iEve
600          if(abs(id)<=6 || id==21 || id==23 || abs(id)==24){
601            double bb2DR=TMath::Sqrt((p.eta()-p4Jet.eta())*(p.eta()-p4Jet.eta())+
602                                     (p.phi()-p4Jet.phi())*(p.phi()-p4Jet.phi()));
603 <          if(bb2DR<minb2DR) {minb2DR=bb2DR; sj.b1BestMCid=id; if(p.mother()!=0) sj.b1BestMCmomid=p.mother()->pdgId();}
603 >          if(bb2DR<minb2DR) {minb2DR=bb2DR; sj.bestMCid=id; if(p.mother()!=0) sj.bestMCmomid=p.mother()->pdgId();}
604          }
605        }
606      }   //isMC
# Line 613 | Line 640 | HbbAnalyzerNew::produce(edm::Event& iEve
640      //    if(printJet) {std::cout << "NsubJets: " << constituents.size() << "\n";}
641      VHbbEvent::HardJet hj;
642      hj.constituents=constituents.size();
643 <    hj.fourMomentum =GENPTOLORP(jet_iter);
643 >    hj.p4 =GENPTOLORP(jet_iter);
644  
645      for (unsigned int iJC(0); iJC<constituents.size(); ++iJC ){
646        Jet::Constituent icandJet = constituents[iJC];
# Line 625 | Line 652 | HbbAnalyzerNew::produce(edm::Event& iEve
652        hj.subFourMomentum.push_back(GENPTOLORP(icandJet));
653        hj.etaSub.push_back(icandJet->eta());
654        hj.phiSub.push_back(icandJet->phi());
628
655      
656      }
657      hbbInfo->hardJets.push_back(hj);
# Line 650 | Line 676 | HbbAnalyzerNew::produce(edm::Event& iEve
676      VHbbEvent::SimpleJet sj;
677  
678      sj.flavour = subjet_iter->partonFlavour();
679 <    
679 >    sj.tVector = getTvect(&(*subjet_iter));
680      sj.tche=subjet_iter->bDiscriminator("trackCountingHighEffBJetTags");
681      sj.tchp=subjet_iter->bDiscriminator("trackCountingHighPurBJetTags");
682      sj.jp=subjet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 660 | Line 686 | HbbAnalyzerNew::produce(edm::Event& iEve
686      sj.csvmva=subjet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
687      sj.charge=subjet_iter->jetCharge();
688      sj.ntracks=subjet_iter->associatedTracks().size();
689 <    sj.fourMomentum=GENPTOLORP(subjet_iter);
690 <
689 >    sj.p4=GENPTOLORP(subjet_iter);
690 >    sj.p4=(getChargedTracksMomentum(&*(subjet_iter)));
691      hbbInfo->subJets.push_back(sj);
692  
693    }
# Line 671 | Line 697 | HbbAnalyzerNew::produce(edm::Event& iEve
697    // met is calomet
698    //
699  
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
700    edm::Handle<edm::View<pat::MET> > metTCHandle;
701    iEvent.getByLabel("patMETsTC",metTCHandle);
702    edm::View<pat::MET> metsTC = *metTCHandle;
703 <  for(edm::View<pat::MET>::const_iterator metTC = metsTC.begin(); metTC!=metsTC.end(); ++metTC){
704 <    hbbInfo->calomet.sumEt=metTC->sumEt();
705 <    hbbInfo->calomet.metSig=metTC->mEtSig();
706 <    hbbInfo->calomet.eLong=metTC->e_longitudinal();
707 <    hbbInfo->calomet.fourMomentum=GENPTOLORP(metTC);
703 >  if(metsTC.size()){
704 >    hbbInfo->tcmet.sumEt=(metsTC[0]).sumEt();
705 >    hbbInfo->tcmet.metSig=(metsTC[0]).mEtSig();
706 >    hbbInfo->tcmet.eLong=(metsTC[0]).e_longitudinal();
707 >    hbbInfo->tcmet.p4=GENPTOLOR((metsTC[0]));
708 >    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->tcmet.metSig <<" " <<     hbbInfo->tcmet.sumEt<<std::endl;
709    }
710 +  
711 +  if(mets.size()){
712 +    hbbInfo->calomet.sumEt=(mets[0]).sumEt();
713 +    hbbInfo->calomet.metSig=(mets[0]).mEtSig();
714 +    hbbInfo->calomet.eLong=(mets[0]).e_longitudinal();
715 +    hbbInfo->calomet.p4=GENPTOLOR((mets[0]));
716 +    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->calomet.metSig <<" " <<     hbbInfo->calomet.sumEt<<std::endl;
717 +  }
718 +
719 +  
720    edm::Handle<edm::View<pat::MET> > metPFHandle;
721    iEvent.getByLabel("patMETsPF",metPFHandle);
722    edm::View<pat::MET> metsPF = *metPFHandle;
723 <  for(edm::View<pat::MET>::const_iterator metPF = metsPF.begin(); metPF!=metsPF.end(); ++metPF){
724 <    hbbInfo->calomet.sumEt=metPF->sumEt();
725 <    hbbInfo->calomet.metSig=metPF->mEtSig();
726 <    hbbInfo->calomet.eLong=metPF->e_longitudinal();
727 <    hbbInfo->calomet.fourMomentum=GENPTOLORP(metPF);
723 >
724 >  if(metsPF.size()){
725 >    hbbInfo->pfmet.sumEt=(metsPF[0]).sumEt();
726 >    hbbInfo->pfmet.metSig=(metsPF[0]).mEtSig();
727 >    hbbInfo->pfmet.eLong=(metsPF[0]).e_longitudinal();
728 >    hbbInfo->pfmet.p4=GENPTOLOR((metsPF[0]));
729 >    if (verbose_)     std::cout <<" METTC "<<     hbbInfo->pfmet.metSig <<" " <<     hbbInfo->pfmet.sumEt<<std::endl;
730    }
731  
732  
733 +  if(verbose_){
734 +    std::cout << "METs: calomet "<<mets.size()<<" tcmet "<<metsTC.size()<<" pfmet "<<metsPF.size()<<std::endl;  
735 +  }
736 +
737 +  std::cout << " INPUT MUONS "<<muons.size()<<std::endl;
738  
739    for(edm::View<pat::Muon>::const_iterator mu = muons.begin(); mu!=muons.end(); ++mu){
740      VHbbEvent::MuonInfo mf;
741 <    mf.fourMomentum =GENPTOLORP( mu);
741 >    mf.p4 =GENPTOLORP( mu);
742      mf.charge=mu->charge();
743      mf.tIso=mu->trackIso();
744      mf.eIso=mu->ecalIso();
745      mf.hIso=mu->hcalIso();
746 <    Geom::Phi<double> deltaphi(mu->phi()-atan2(mf.fourMomentum.Px(), mf.fourMomentum.Py()));
746 >    mf.pfChaIso=mu->chargedHadronIso();
747 >    mf.pfPhoIso=mu->photonIso();
748 >    mf.pfNeuIso=mu->neutralHadronIso();
749 >    Geom::Phi<double> deltaphi(mu->phi()-atan2(mf.p4.Px(), mf.p4.Py()));
750      double acop = deltaphi.value();
751      mf.acop=acop;
752  
# Line 732 | Line 771 | HbbAnalyzerNew::produce(edm::Event& iEve
771        const reco::HitPattern& q = gTrack->hitPattern();
772        mf.globChi2=gTrack.get()->normalizedChi2();
773        mf.globNHits=q.numberOfValidMuonHits();
774 +      mf. validMuStations = q. muonStationsWithValidHits();
775      }else{
776        mf.globChi2=-99;
777        mf.globNHits=-99;
778      }
779  
780 +    //Muon trigger matching
781 +    for (int itrig = 0; itrig != ntrigs; ++itrig){
782 +      std::string trigName=triggerNames_.triggerName(itrig);
783 +      if( (mu->triggerObjectMatchesByPath(trigName).size() != 0) ){
784 +        mf.hltMatchedBits.push_back(itrig);
785 +        if(verbose_){
786 +          std::clog << "Trigger Matching box" << std::endl;
787 +          std::clog << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
788 +          std::clog << "Matching parameters are defined in the cfg" << std::endl;
789 +          std::clog << "Trigger bit = " << itrig << std::endl;
790 +          std::clog << "Trigger name = " << trigName << std::endl;
791 +          std::clog << "Trigger object matched collection size = " << mu->triggerObjectMatchesByPath(trigName).size() << std::endl;
792 +          std::clog << "Pat Muon pt = " << mf.p4.Pt() << " HLT object matched = " << mu->triggerObjectMatch(0)->p4().Pt() << std::endl;
793 +          std::clog << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
794 +        }
795 +      }
796 +    }
797 +    //
798 +
799 +    // add stamuon
800 +
801 +    //    if (mu->isStandAloneMuon()) {
802 +    //      reco::TrackRef sta = mu->standAloneMuon();
803 +    //      
804 +    //    }
805 +
806 +
807      //     int muInfo[12];
808      //     fillMuBlock(mu,  muInfo);
809      if(runOnMC_){
# Line 750 | Line 817 | HbbAnalyzerNew::produce(edm::Event& iEve
817      hbbInfo->muInfo.push_back(mf);
818    }
819  
820 <
820 >  std::cout << " INPUT electrons "<<electrons.size()<<std::endl;
821    for(edm::View<pat::Electron>::const_iterator elec = electrons.begin(); elec!=electrons.end(); ++elec){
822      VHbbEvent::ElectronInfo ef;
823 <    ef.fourMomentum=GENPTOLORP(elec);
823 >    ef.p4=GENPTOLORP(elec);
824      ef.scEta =elec->superCluster()->eta();
825      ef.scPhi =elec->superCluster()->phi();
826      //    if(ElecEta[eleccont]!=0) ElecEt[eleccont]=elec->superCluster()->energy()/cosh(elec->superCluster()->eta());
# Line 761 | Line 828 | HbbAnalyzerNew::produce(edm::Event& iEve
828      ef.tIso=elec->trackIso();
829      ef.eIso=elec->ecalIso();
830      ef.hIso=elec->hcalIso();
831 <    Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->calomet.fourMomentum.Py(),hbbInfo->calomet.fourMomentum.Px()));
831 >    ef.pfChaIso=elec->chargedHadronIso();
832 >    ef.pfPhoIso=elec->photonIso();
833 >    ef.pfNeuIso=elec->neutralHadronIso();
834 >
835 >    Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->calomet.p4.Py(),hbbInfo->calomet.p4.Px()));
836      ef.acop = deltaphi.value();
837 <    
837 >    //
838 >    // fill eleids
839 >    //    
840 > /*    ef.id95 = elec->electronID("simpleEleId95cIso");
841 >    ef.id85 = elec->electronID("simpleEleId85cIso");
842 >    ef.id70 = elec->electronID("simpleEleId70cIso");
843 >    ef.id95r = elec->electronID("simpleEleId95relIso");
844 >    ef.id70r = elec->electronID("simpleEleId70relIso");
845 >    ef.id85r = elec->electronID("simpleEleId85relIso");
846 > */
847 >    ef.id95 =elec->electronID("eidVBTFCom95");
848 >    ef.id95r=elec->electronID("eidVBTFRel95");
849 >    ef.id85 =elec->electronID("eidVBTFCom85");
850 >    ef.id85r=elec->electronID("eidVBTFRel85");
851 >    ef.id80 =elec->electronID("eidVBTFCom80");
852 >    ef.id80r=elec->electronID("eidVBTFRel80");
853 >    ef.id70 =elec->electronID("eidVBTFCom70");
854 >    ef.id70r=elec->electronID("eidVBTFRel70");
855 >
856 >    //Muon trigger matching
857 >    for (int itrig = 0; itrig != ntrigs; ++itrig){
858 >      std::string trigName=triggerNames_.triggerName(itrig);
859 >      if( (elec->triggerObjectMatchesByPath(trigName).size() != 0) ){
860 >        ef.hltMatchedBits.push_back(itrig);
861 >        if(verbose_){
862 >          std::clog << "Trigger Matching box" << std::endl;
863 >          std::clog << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
864 >          std::clog << "Matching parameters are defined in the cfg" << std::endl;
865 >          std::clog << "Trigger bit = " << itrig << std::endl;
866 >          std::clog << "Trigger name = " << trigName << std::endl;
867 >          std::clog << "Trigger object matched collection size = " << elec->triggerObjectMatchesByPath(trigName).size() << std::endl;
868 >          std::clog << "Pat Electron pt = " << ef.p4.Pt() << " HLT object matched = " << elec->triggerObjectMatch(0)->p4().Pt() << std::endl;
869 >          std::clog << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
870 >        }
871 >      }
872 >    }
873 >
874      if(runOnMC_){
875        const GenParticle* elecMc = elec->genLepton();
876        if(elecMc!=0){
# Line 775 | Line 882 | HbbAnalyzerNew::produce(edm::Event& iEve
882      hbbInfo->eleInfo.push_back(ef);
883    }
884  
885 +
886 +  std::cout << " INPUT taus "<<taus.size()<<std::endl;
887    for(edm::View<pat::Tau>::const_iterator tau = taus.begin(); tau!=taus.end(); ++tau){
888      VHbbEvent::TauInfo tf;
889 <    tf.fourMomentum=GENPTOLORP(tau);
889 >    tf.p4=GENPTOLORP(tau);
890      tf.charge=tau->charge();
891      tf.tIso=tau->trackIso();
892      tf.eIso=tau->ecalIso();
893      tf.hIso=tau->hcalIso();
894 <    Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->calomet.fourMomentum.Py(),hbbInfo->calomet.fourMomentum.Px()));
894 >    Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->calomet.p4.Py(),hbbInfo->calomet.p4.Px()));
895      double acop = deltaphi.value();
896      tf.acop=acop;
897      tf.idbyIso=tau->tauID("byIsolation");
# Line 801 | Line 910 | HbbAnalyzerNew::produce(edm::Event& iEve
910    for( size_t i = 0; i < dimuons->size(); i++ ) {
911      VHbbEvent::DiMuonInfo df;
912      const Candidate & dimuonCand = (*dimuons)[ i ];
913 <    df.fourMomentum= GENPTOLOR(dimuonCand);
913 >    df.p4= GENPTOLOR(dimuonCand);
914      const Candidate * lep0 = dimuonCand.daughter( 0 );
915      const Candidate * lep1 = dimuonCand.daughter( 1 );
916      // needed to access specific methods of pat::Muon
917      const pat::Muon & muonDau0 = dynamic_cast<const pat::Muon &>(*lep0->masterClone());
918      const pat::Muon & muonDau1 = dynamic_cast<const pat::Muon &>(*lep1->masterClone());
919      
920 <    df.daughter1.fourMomentum=GENPTOLOR(muonDau0);
921 <    df.daughter2.fourMomentum=GENPTOLOR(muonDau1);
920 >    df.daughter1.p4=GENPTOLOR(muonDau0);
921 >    df.daughter2.p4=GENPTOLOR(muonDau1);
922      
923      df.daughter1.tIso= muonDau0.trackIso();
924      df.daughter2.tIso= muonDau1.trackIso();
# Line 864 | Line 973 | HbbAnalyzerNew::produce(edm::Event& iEve
973          const reco::HitPattern& q = gTrack->hitPattern();
974          df.daughter1.globNHits=q.numberOfValidMuonHits();
975          df.daughter1.globChi2=gTrack.get()->normalizedChi2();
976 +        df.daughter1.validMuStations = q. muonStationsWithValidHits();
977        }
978        if(muonDau1.isGlobalMuon()){
979          TrackRef gTrack = muonDau1.globalTrack();
980          const reco::HitPattern& q = gTrack->hitPattern();
981          df.daughter2.globNHits=q.numberOfValidMuonHits();
982          df.daughter2.globChi2=gTrack.get()->normalizedChi2();
983 +        df.daughter2.validMuStations = q. muonStationsWithValidHits();
984        }
985    
986      }
# Line 881 | Line 992 | HbbAnalyzerNew::produce(edm::Event& iEve
992      VHbbEvent::DiElectronInfo df;
993      const Candidate & dielecCand = (*dielectrons)[ i ];
994  
995 <    df.fourMomentum=GENPTOLOR(dielecCand);
995 >    df.p4=GENPTOLOR(dielecCand);
996  
997      // accessing the daughters of the dimuon candidate
998      const Candidate * lep0 = dielecCand.daughter( 0 );
# Line 890 | Line 1001 | HbbAnalyzerNew::produce(edm::Event& iEve
1001      const pat::Electron & elecDau0 = dynamic_cast<const pat::Electron &>(*lep0->masterClone());
1002      const pat::Electron & elecDau1 = dynamic_cast<const pat::Electron &>(*lep1->masterClone());
1003  
1004 <    df.daughter1.fourMomentum = GENPTOLOR(elecDau0);
1005 <    df.daughter2.fourMomentum = GENPTOLOR(elecDau1);
1004 >    df.daughter1.p4 = GENPTOLOR(elecDau0);
1005 >    df.daughter2.p4= GENPTOLOR(elecDau1);
1006  
1007      df.daughter1.tIso = elecDau0.trackIso();
1008      df.daughter2.tIso = elecDau1.trackIso();
# Line 902 | Line 1013 | HbbAnalyzerNew::produce(edm::Event& iEve
1013      df.daughter1.hIso = elecDau0.hcalIso();
1014      df.daughter2.hIso = elecDau1.hcalIso();
1015      
1016 <    
1016 >    // ids
1017 >    /*df.daughter1.id95 = elecDau0.electronID("simpleEleId95cIso");
1018 >    df.daughter1.id85 = elecDau0.electronID  ("simpleEleId85cIso");
1019 >    df.daughter1.id70 = elecDau0.electronID  ("simpleEleId70cIso");
1020 >    df.daughter1.id95r = elecDau0.electronID ("simpleEleId95relIso");
1021 >    df.daughter1.id85r = elecDau0.electronID ("simpleEleId85relIso");
1022 >    df.daughter1.id70r = elecDau0.electronID ("simpleEleId70relIso");
1023 >
1024 >
1025 >    df.daughter2.id95 = elecDau1.electronID("simpleEleId95cIso");
1026 >    df.daughter2.id85 = elecDau1.electronID  ("simpleEleId85cIso");
1027 >    df.daughter2.id70 = elecDau1.electronID  ("simpleEleId70cIso");
1028 >    df.daughter2.id95r = elecDau1.electronID ("simpleEleId95relIso");
1029 >    df.daughter2.id85r = elecDau1.electronID ("simpleEleId85relIso");
1030 >    df.daughter2.id70r = elecDau1.electronID ("simpleEleId70relIso");
1031 > */
1032      hbbInfo->diElectronInfo.push_back(df);
1033      
1034    }
1035 +   if (verbose_){
1036 +     std::cout <<" Pushing hbbInfo "<<std::endl;
1037 +     std::cout <<" SimpleJets1 = "<<hbbInfo->simpleJets.size()<<std::endl<<
1038 +       " SimpleJets2 = "<<hbbInfo->simpleJets2.size()<<std::endl<<
1039 +       " SubJets = "<<hbbInfo->subJets.size()<<std::endl<<
1040 +       " HardJets = "<<hbbInfo->hardJets.size()<<std::endl<<
1041 +       " Muons = "<<hbbInfo->muInfo.size()<<std::endl<<
1042 +       " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
1043 +       " Taus = "<<hbbInfo->tauInfo.size()<<std::endl<<
1044 +       " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
1045 +       "--------------------- "<<std::endl;
1046 +  }
1047 +
1048 +
1049    iEvent.put(hbbInfo);
1050 +  iEvent.put(auxInfo);
1051 +
1052  
1053   }
1054    
# Line 941 | Line 1083 | void
1083   HbbAnalyzerNew::endJob() {
1084   }
1085  
1086 + TVector2 HbbAnalyzerNew::getTvect( const pat::Jet* patJet ){
1087 +
1088 +  TVector2 t_Vect(0,0);
1089 +  TVector2 null(0,0);
1090 +  TVector2 ci(0,0);
1091 +  TLorentzVector pi(0,0,0,0);
1092 +  TLorentzVector J(0,0,0,0);
1093 +  TVector2 r(0,0);
1094 +  double patJetpfcPt = 1e10;
1095 +  double r_mag = 1e10;
1096 +  unsigned int nOfconst = 0;
1097 +
1098 +
1099 +  if (patJet->isPFJet() == false) {
1100 +    return t_Vect;
1101 +  }
1102 +  
1103 +
1104 +  //re-reconstruct the jet direction with the charged tracks
1105 +  std::vector<reco::PFCandidatePtr>
1106 +    patJetpfc = patJet->getPFConstituents();
1107 +  for(size_t idx = 0; idx < patJetpfc.size(); idx++){
1108 +    if( patJetpfc.at(idx)->charge() != 0 ){
1109 +      pi.SetPtEtaPhiE( patJetpfc.at(idx)->pt(), patJetpfc.at(idx)->eta(), patJetpfc.at(idx)->phi(), patJetpfc.at(idx)->energy() );
1110 +      J += pi;
1111 +      nOfconst++;
1112 +    }
1113 +  }
1114 + // if there are less than two charged tracks do not calculate the pull (there is not enough info). It returns a null vector
1115 +
1116 +  if( nOfconst < 2 )
1117 +    return null;
1118 +  
1119 +
1120 +
1121 +  TVector2 v_J( J.Rapidity(), J.Phi() );
1122 + //calculate TVector using only charged tracks
1123 +  for(size_t idx = 0; idx < patJetpfc.size(); idx++){
1124 +    if( patJetpfc.at(idx)->charge() != 0  ){
1125 +      patJetpfcPt = patJetpfc.at(idx)->pt();
1126 +      pi.SetPtEtaPhiE( patJetpfc.at(idx)->pt(), patJetpfc.at(idx)->eta(), patJetpfc.at(idx)->phi(), patJetpfc.at(idx)->energy() );
1127 +      r.Set( pi.Rapidity() - J.Rapidity(), Geom::deltaPhi( patJetpfc.at(idx)->phi(), J.Phi() ) );
1128 +      r_mag = r.Mod();
1129 +      t_Vect += ( patJetpfcPt / J.Pt() ) * r_mag * r;
1130 +    }
1131 +  }
1132 +
1133 +  
1134 +  return t_Vect;
1135 +  
1136 + }
1137 +
1138 + TLorentzVector HbbAnalyzerNew::getChargedTracksMomentum(const pat::Jet* patJet ){
1139 +  //  return TLorentzVector();
1140 +  TLorentzVector pi(0,0,0,0);
1141 +  TLorentzVector v_j1(0,0,0,0);
1142 +
1143 +
1144 +  //  std::cout <<"fff ECCCCCCOOOOO "<<patJet->isPFJet()<<std::endl;
1145 +
1146 +  if (patJet->isPFJet() == false ){
1147 +      v_j1 = GENPTOLORP(patJet);
1148 +      return v_j1;
1149 +  }
1150 +  std::vector<reco::PFCandidatePtr>
1151 +    j1pfc = patJet->getPFConstituents();
1152 +  for(size_t idx = 0; idx < j1pfc.size(); idx++){
1153 +    if( j1pfc.at(idx)->charge() != 0 ){
1154 +      pi.SetPtEtaPhiE( j1pfc.at(idx)->pt(), j1pfc.at(idx)->eta(), j1pfc.at(idx)->phi(), j1pfc.at(idx)->energy() );
1155 +      v_j1 += pi;
1156 +    }
1157 +  }
1158 +  return v_j1;
1159 +  //re-
1160 + }
1161 +
1162   //define this as a plug-in
1163   DEFINE_FWK_MODULE(HbbAnalyzerNew);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines