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.40 by tboccali, Mon Sep 19 10:14:16 2011 UTC vs.
Revision 1.62 by degrutto, Fri Mar 16 09:12:46 2012 UTC

# Line 32 | Line 32 | Implementation:
32   #include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h"
33  
34   #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
35 + #include "DataFormats/Math/interface/deltaR.h"
36 + #include "DataFormats/Math/interface/LorentzVector.h"
37 + #include "DataFormats/Math/interface/Vector3D.h"
38 + #include "Math/GenVector/PxPyPzM4D.h"
39 +
40 +
41 + #include <cmath>
42 +
43 +
44 +
45  
46   #define GENPTOLOR(a) TLorentzVector((a).px(), (a).py(), (a).pz(), (a).energy())
47   #define GENPTOLORP(a) TLorentzVector((a)->px(), (a)->py(), (a)->pz(), (a)->energy())
48  
49  
50 +
51   struct CompareJetPtMuons {
52    bool operator()( const VHbbEvent::MuonInfo& j1, const  VHbbEvent::MuonInfo& j2 ) const {
53      return j1.p4.Pt() > j2.p4.Pt();
# Line 58 | Line 69 | struct CompareJetPtTaus {
69   HbbAnalyzerNew::HbbAnalyzerNew(const edm::ParameterSet& iConfig):
70    eleLabel_(iConfig.getParameter<edm::InputTag>("electronTag")),
71    muoLabel_(iConfig.getParameter<edm::InputTag>("muonTag")),
72 +  lep_ptCutForBjets_(iConfig.getParameter<double>("lep_ptCutForBjets")),
73 +  elenoCutsLabel_(iConfig.getParameter<edm::InputTag>("electronNoCutsTag")),
74 +  muonoCutsLabel_(iConfig.getParameter<edm::InputTag>("muonNoCutsTag")),
75    jetLabel_(iConfig.getParameter<edm::InputTag>("jetTag")),
76    subjetLabel_(iConfig.getParameter<edm::InputTag>("subjetTag")),
77 +  filterjetLabel_(iConfig.getParameter<edm::InputTag>("filterjetTag")),
78    simplejet1Label_(iConfig.getParameter<edm::InputTag>("simplejet1Tag")),
79    simplejet2Label_(iConfig.getParameter<edm::InputTag>("simplejet2Tag")),
80    simplejet3Label_(iConfig.getParameter<edm::InputTag>("simplejet3Tag")),
# Line 103 | Line 118 | HbbAnalyzerNew::produce(edm::Event& iEve
118  
119    //  JetCorrectionUncertainty *jecUnc=0;
120    edm::ESHandle<JetCorrectorParametersCollection> JetCorParColl;
121 <  iSetup.get<JetCorrectionsRecord>().get("AK5PF",JetCorParColl);
121 >  iSetup.get<JetCorrectionsRecord>().get("AK5PFchs",JetCorParColl);
122    JetCorrectionUncertainty *jecUnc=0;
123    //  if (!runOnMC_){
124    JetCorrectorParameters const & JetCorPar = (*JetCorParColl)["Uncertainty"];
# Line 171 | Line 186 | HbbAnalyzerNew::produce(edm::Event& iEve
186    
187    auxInfo->pvInfo.firstPVInPT2 = TVector3(RecVtxFirst.x(), RecVtxFirst.y(), RecVtxFirst.z());
188    auxInfo->pvInfo.firstPVInProb = TVector3(RecVtx.x(), RecVtx.y(), RecVtx.z());
189 <
189 >  
190 >  (auxInfo->pvInfo).efirstPVInPT2 = (RecVtxFirst.error());
191 >  (auxInfo->pvInfo).efirstPVInProb = RecVtx.error();
192      
193    edm::Handle<double> rhoHandle;
194    iEvent.getByLabel(edm::InputTag("kt6PFJets", "rho"),rhoHandle);  
# Line 266 | Line 283 | HbbAnalyzerNew::produce(edm::Event& iEve
283          for(int j = 0; j < ndau; ++ j) {
284            const Candidate * Zdau = p.daughter( j );
285            ztemp.dauid.push_back(Zdau->pdgId());
286 <          ztemp.dauFourMomentum.push_back(GENPTOLOR(p));
286 >          ztemp.dauFourMomentum.push_back(GENPTOLORP(Zdau));
287          }
288          auxInfo->mcZ.push_back(ztemp);
289        }
# Line 354 | Line 371 | HbbAnalyzerNew::produce(edm::Event& iEve
371    iEvent.getByLabel(subjetLabel_,subjetHandle);
372    edm::View<pat::Jet> subjets = *subjetHandle;
373  
374 +  // filter jet  
375 +  edm::Handle<edm::View<pat::Jet> > filterjetHandle;
376 +  iEvent.getByLabel(filterjetLabel_,filterjetHandle);
377 +  edm::View<pat::Jet> filterjets = *filterjetHandle;
378 +
379    // standard jets
380  
381    edm::Handle<edm::View<pat::Jet> > simplejet1Handle;
# Line 420 | Line 442 | BTagSFContainer btagSFs;
442      //     if(jet_iter->pt()>50)
443      //       njetscounter++;
444      VHbbEvent::SimpleJet sj;
445 +    //    std::cout <<" sj1"<<std::endl;
446      fillSimpleJet(sj,jet_iter);
447      //    if(!runOnMC_)
448  
# Line 435 | Line 458 | BTagSFContainer btagSFs;
458        //genJet
459        const reco::GenJet *gJ = jet_iter->genJet();
460        //physical parton for mother info ONLY
461 <      if( (jet_iter->genParton())
462 <          and (jet_iter->genParton()->mother()) )
463 <        sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
461 >      if( (jet_iter->genParton()) ){
462 >        sj.bestMCid = jet_iter->genParton()->pdgId();
463 >        if( (jet_iter->genParton()->mother()) )
464 >          sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
465 >      }
466        TLorentzVector gJp4;
467        if(gJ){
468          gJp4.SetPtEtaPhiE(gJ->pt(),gJ->eta(),gJ->phi(),gJ->energy());
469 <        sj.bestMCp4mom = gJp4;
469 >        sj.bestMCp4 = gJp4;
470          if(verbose_){
471            std::clog << "genJet matched Pt = " << gJp4.Pt() << std::endl;
472            std::clog << "genJet matched eta = " << gJp4.Eta() << std::endl;
# Line 460 | Line 485 | BTagSFContainer btagSFs;
485      //     if(jet_iter->pt()>50)
486      //       njetscounter++;
487      VHbbEvent::SimpleJet sj;
488 +    //    std::cout <<" sj3"<<std::endl;
489      fillSimpleJet(sj,jet_iter);
490      //    if(!runOnMC_)  
491    setJecUnc(sj,jecUnc);
492  
467
493     Particle::LorentzVector p4Jet = jet_iter->p4();
494  
495      if(runOnMC_){
# Line 475 | Line 500 | BTagSFContainer btagSFs;
500        //genJet
501        const reco::GenJet *gJ = jet_iter->genJet();
502        //physical parton for mother info ONLY
503 <      if( (jet_iter->genParton())
504 <          and (jet_iter->genParton()->mother()) )
505 <        sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
503 >      if( (jet_iter->genParton()) ){
504 >        sj.bestMCid = jet_iter->genParton()->pdgId();
505 >        if( (jet_iter->genParton()->mother()) )
506 >          sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
507 >      }
508        TLorentzVector gJp4;
509        if(gJ){
510          gJp4.SetPtEtaPhiE(gJ->pt(),gJ->eta(),gJ->phi(),gJ->energy());
511 <        sj.bestMCp4mom = gJp4;
511 >        sj.bestMCp4 = gJp4;
512          if(verbose_){
513            std::clog << "genJet matched Pt = " << gJp4.Pt() << std::endl;
514            std::clog << "genJet matched eta = " << gJp4.Eta() << std::endl;
# Line 491 | Line 518 | BTagSFContainer btagSFs;
518        }
519        
520      } //isMC
521 +    //
522 +
523 +
524      hbbInfo->simpleJets3.push_back(sj);
525      
526    }
# Line 500 | Line 530 | BTagSFContainer btagSFs;
530      //     if(jet_iter->pt()>50)
531      //       njetscounter++;
532      VHbbEvent::SimpleJet sj;
533 +    //    std::cout <<" sj4"<<std::endl;
534      fillSimpleJet(sj,jet_iter);
535      //    if(!runOnMC_)  
536      setJecUnc(sj,jecUnc);
# Line 515 | Line 546 | BTagSFContainer btagSFs;
546        //genJet
547        const reco::GenJet *gJ = jet_iter->genJet();
548        //physical parton for mother info ONLY
549 <      if( (jet_iter->genParton())
550 <          and (jet_iter->genParton()->mother()) )
551 <        sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
549 >      if( (jet_iter->genParton()) ){
550 >        sj.bestMCid = jet_iter->genParton()->pdgId();
551 >        if( (jet_iter->genParton()->mother()) )
552 >          sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
553 >      }
554        TLorentzVector gJp4;
555        if(gJ){
556          gJp4.SetPtEtaPhiE(gJ->pt(),gJ->eta(),gJ->phi(),gJ->energy());
557 <        sj.bestMCp4mom = gJp4;
557 >        sj.bestMCp4 = gJp4;
558          if(verbose_){
559            std::clog << "genJet matched Pt = " << gJp4.Pt() << std::endl;
560            std::clog << "genJet matched eta = " << gJp4.Eta() << std::endl;
# Line 540 | Line 573 | BTagSFContainer btagSFs;
573    for(edm::View<pat::Jet>::const_iterator jet_iter = simplejets2.begin(); jet_iter!=simplejets2.end(); ++jet_iter){
574      
575      VHbbEvent::SimpleJet sj;
576 +    //    std::cout <<" sj2"<<std::endl;
577      fillSimpleJet(sj,jet_iter);    
578      //  if(!runOnMC_)  
579   setJecUnc(sj,jecUnc);
# Line 595 | Line 629 | BTagSFContainer btagSFs;
629        //genJet
630        const reco::GenJet *gJ = jet_iter->genJet();
631        //physical parton for mother info ONLY
632 <      if( (jet_iter->genParton())
633 <          and (jet_iter->genParton()->mother()) )
634 <        sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
632 >      if( (jet_iter->genParton()) ){
633 >        sj.bestMCid = jet_iter->genParton()->pdgId();
634 >        if( (jet_iter->genParton()->mother()) )
635 >          sj.bestMCmomid=jet_iter->genParton()->mother()->pdgId();
636 >      }
637        TLorentzVector gJp4;
638        if(gJ){
639          gJp4.SetPtEtaPhiE(gJ->pt(),gJ->eta(),gJ->phi(),gJ->energy());
640 <        sj.bestMCp4mom = gJp4;
640 >        sj.bestMCp4 = gJp4;
641          if(verbose_){
642            std::clog << "genJet matched Pt = " << gJp4.Pt() << std::endl;
643            std::clog << "genJet matched eta = " << gJp4.Eta() << std::endl;
# Line 610 | Line 646 | BTagSFContainer btagSFs;
646          }
647        }
648  
649 <    }   //isMC
649 >        // add flag if a mc lepton is find inside a cone around the jets...
650 >      iEvent.getByLabel("genParticles", genParticles);
651 >      
652 >      for(size_t i = 0; i < genParticles->size(); ++ i) {
653 >    
654 >      const GenParticle & p = (*genParticles)[i];
655 >      int id = 0;
656 >      p.pt()> lep_ptCutForBjets_ ? id= p.pdgId(): 0;
657 >  
658 >      //      std::cout<< "found a muon with pt " << mu->pt()   << std::endl;
659 >      if   ((abs(id)==13 || abs(id)==11) && deltaR(p.eta(), p.phi(), sj.p4.Eta(), sj.p4.Phi() ) <0.5)  sj.isSemiLeptMCtruth=1;
660 >      }
661 >
662 >    }  //isMC
663 >
664 >        // add flag if a reco lepton is find inside a cone around the jets...
665 >    edm::Handle<edm::View<reco::Candidate> > muonNoCutsHandle;
666 >    iEvent.getByLabel(muonoCutsLabel_,muonNoCutsHandle);
667 >    edm::View<reco::Candidate> muonsNoCuts = *muonNoCutsHandle;
668 >    
669 >    
670 >
671 >    for(edm::View<reco::Candidate>::const_iterator mu = muonsNoCuts.begin(); mu!=muonsNoCuts.end() && sj.isSemiLept!=1; ++mu){
672 >      //      std::cout<< "found a muon with pt " << mu->pt()   << std::endl;
673 >      const pat::Muon& m = static_cast <const pat::Muon&> (*mu);
674 >      float Smpt = m.pt();
675 >      float Smeta = m.eta();
676 >      float Smphi = m.phi();
677 >      
678 >      float SmJdR = deltaR(Smeta, Smphi, sj.p4.Eta(), sj.p4.Phi());
679 >      
680 >      if   ( Smpt> lep_ptCutForBjets_ && SmJdR <0.5)  {
681 >        sj.isSemiLept=1;
682 >        //isSemiLept(-99), isSemiLeptMCtruth(-99), SoftLeptPt(-99), SoftLeptdR(-99), SoftLeptptRel(-99), SoftLeptpdgId(-99), SoftLeptIdlooseMu(-99), SoftLeptId95(-99), SoftLeptRelCombIso(-99),  
683 >        sj.SoftLeptpdgId =13;
684 >        sj.SoftLeptdR= SmJdR;
685 >        sj.SoftLeptPt=Smpt;
686 >        TVector3 mvec ( m.p4().Vect().X(), m.p4().Vect().Y(), m.p4().Vect().Z()  );
687 >        sj.SoftLeptptRel=  sj.p4.Perp(  mvec );
688 >        sj.SoftLeptRelCombIso = (m.trackIso() + m.ecalIso() + m.hcalIso() ) / Smpt ;
689 >        sj.SoftLeptIdlooseMu=m.muonID("TMLastStationLoose");
690 >      }
691 >    }
692 >    
693 >    
694 >    edm::Handle<edm::View<reco::Candidate> > eleNoCutsHandle;
695 >      iEvent.getByLabel(elenoCutsLabel_,eleNoCutsHandle);
696 >      edm::View<reco::Candidate> elesNoCuts = *eleNoCutsHandle;
697 >
698 >    
699 >
700 >      for(edm::View<reco::Candidate>::const_iterator ele = elesNoCuts.begin(); ele!=elesNoCuts.end() && sj.isSemiLept!=1; ++ele){
701 >    
702 >        const pat::Electron& e = static_cast <const pat::Electron&> (*ele);
703 >        float Smpt = e.pt();
704 >        float Smeta = e.eta();
705 >        float Smphi = e.phi();
706 >      
707 >        float SmJdR = deltaR(Smeta, Smphi, sj.p4.Eta(), sj.p4.Phi());
708 >        if   ( Smpt> lep_ptCutForBjets_ && SmJdR <0.5)  {
709 >         sj.isSemiLept=1;
710 >         sj.SoftLeptpdgId =11;
711 >         sj.SoftLeptdR= SmJdR;
712 >         sj.SoftLeptPt=Smpt;
713 >         TVector3 mvec ( e.p4().Vect().X(), e.p4().Vect().Y(), e.p4().Vect().Z()  );
714 >         sj.SoftLeptptRel=  sj.p4.Perp(  mvec );
715 >         sj.SoftLeptRelCombIso = (e.trackIso() + e.ecalIso() + e.hcalIso() ) / Smpt ;
716 >         //      sj.SoftLeptId95=e.electronID("eidVBTFCom95");
717 >         //std::cout << "before ele id " << std::endl;      
718 >         // std::cout << " e.e.sigmaIetaIeta " << e.sigmaIetaIeta() <<  std::endl;
719 >         //std::cout << " e.isEB() " << e.isEB() << std::endl;
720 >         if (  
721 >             ( fabs(Smeta)<2.5 && !( abs(Smeta)>1.4442 && abs(Smeta)<1.566))  &&
722 >              
723 >             (( abs(Smeta)>1.566  && (e.sigmaIetaIeta()<0.01) && ( e.deltaPhiSuperClusterTrackAtVtx()<0.8  && e.deltaPhiSuperClusterTrackAtVtx()>-0.8) && ( e.deltaEtaSuperClusterTrackAtVtx()<0.007 && e.deltaEtaSuperClusterTrackAtVtx()>-0.007 )  )
724 >              || ( abs(Smeta)<1.4442  && (e.sigmaIetaIeta()<0.03) && ( e.deltaPhiSuperClusterTrackAtVtx()<0.7 && e.deltaPhiSuperClusterTrackAtVtx()>-0.7 ) && ( e.deltaEtaSuperClusterTrackAtVtx()<0.01 && e.deltaEtaSuperClusterTrackAtVtx()>-0.01 ) ))
725 >             )
726 >           sj.SoftLeptId95=1;
727 >       }
728 >     }
729 >  
730 >        
731 >
732 >    
733      
734      hbbInfo->simpleJets2.push_back(sj);
735      
# Line 681 | Line 800 | BTagSFContainer btagSFs;
800                              << "," << subjet_iter->bDiscriminator("combinedSecondaryVertexBJetTags") << "\n";}
801  
802      VHbbEvent::SimpleJet sj;
803 +    //    std::cout <<" sub jet "<<std::endl;
804      fillSimpleJet(sj,subjet_iter);
805      //  if(!runOnMC_)  
806      setJecUnc(sj,jecUnc);
# Line 716 | Line 836 | BTagSFContainer btagSFs;
836  
837    }
838  
839 +  for(edm::View<pat::Jet>::const_iterator filterjet_iter = filterjets.begin(); filterjet_iter!=filterjets.end(); ++filterjet_iter){
840 +
841 +    if(printJet) {std::cout << "FilterjetTagged Pt: " << filterjet_iter->pt() << " E,M,eta,phi,Btag: " << filterjet_iter->p4().E()  << "," << filterjet_iter->p4().M() << "," << filterjet_iter->eta() << "," << filterjet_iter->phi()  << "," << filterjet_iter->bDiscriminator("combinedSecondaryVertexBJetTags") << "\n";}
842 +
843 +    VHbbEvent::SimpleJet fj;
844 +    //    std::cout <<" sub jet "<<std::endl;
845 +    fillSimpleJet(fj,filterjet_iter);
846 +    //  if(!runOnMC_)  
847 +    setJecUnc(fj,jecUnc);
848 +
849 +    hbbInfo->filterJets.push_back(fj);
850 +    
851 +
852 +  }
853 +
854 +  //
855 +  // add charged met
856 +  //
857 +  
858 +  edm::Handle<edm::View<reco::MET> > metChargedHandle;
859 +  iEvent.getByLabel("pfMETNoPUCharge",metChargedHandle);
860 +  edm::View<reco::MET> metsCh = *metChargedHandle;
861 +  if(metsCh.size()){
862 +    hbbInfo->metCh.sumEt=(metsCh[0]).sumEt();
863 +    hbbInfo->metCh.metSig=metSignificance(& (metsCh[0]));
864 +    hbbInfo->metCh.eLong=(metsCh[0]).e_longitudinal();
865 +    hbbInfo->metCh.p4=GENPTOLOR((metsCh[0]));
866 +    if (verbose_)     std::cout <<" METCharged "<<     hbbInfo->metCh.metSig <<" " <<     hbbInfo->metCh.sumEt<<std::endl;
867 +  }
868 +
869 +  // type 1 corr met
870 +  edm::Handle<edm::View<reco::MET> > pfmetType1corrHandle;
871 +  iEvent.getByLabel("patType1CorrectedPFMet",pfmetType1corrHandle);
872 +  edm::View<reco::MET> pfmetsType1corr = *pfmetType1corrHandle;
873 +  if(pfmetsType1corr.size()){
874 +    hbbInfo->pfmetType1corr.sumEt=(pfmetsType1corr[0]).sumEt();
875 +    hbbInfo->pfmetType1corr.metSig=metSignificance(& (pfmetsType1corr[0]));
876 +    hbbInfo->pfmetType1corr.eLong=(pfmetsType1corr[0]).e_longitudinal();
877 +    hbbInfo->pfmetType1corr.p4=GENPTOLOR((pfmetsType1corr[0]));
878 +    if (verbose_)     std::cout <<" type 1 corrected pfMET "<<     hbbInfo->pfmetType1corr.metSig <<" " <<     hbbInfo->pfmetType1corr.sumEt<<std::endl;
879 +  }
880 +
881 +
882 +  // type 1 + 2 corr met
883 +  edm::Handle<edm::View<reco::MET> > pfmetType1p2corrHandle;
884 +  iEvent.getByLabel("patType1p2CorrectedPFMet",pfmetType1p2corrHandle);
885 +  edm::View<reco::MET> pfmetsType1p2corr = *pfmetType1p2corrHandle;
886 +  if(pfmetsType1p2corr.size()){
887 +    hbbInfo->pfmetType1p2corr.sumEt=(pfmetsType1p2corr[0]).sumEt();
888 +    hbbInfo->pfmetType1p2corr.metSig=metSignificance(& (pfmetsType1p2corr[0]));
889 +    hbbInfo->pfmetType1p2corr.eLong=(pfmetsType1p2corr[0]).e_longitudinal();
890 +    hbbInfo->pfmetType1p2corr.p4=GENPTOLOR((pfmetsType1p2corr[0]));
891 +    if (verbose_)     std::cout <<" type 1 +2 corrected pfMET "<<     hbbInfo->pfmetType1p2corr.metSig <<" " <<     hbbInfo->pfmetType1p2corr.sumEt<<std::endl;
892 +  }
893 +
894 +  // type 1 corr met NoPU
895 +  edm::Handle<edm::View<reco::MET> > pfmetNoPUType1corrHandle;
896 +  iEvent.getByLabel("patType1CorrectedPFMetNoPU",pfmetNoPUType1corrHandle);
897 +  edm::View<reco::MET> pfmetsNoPUType1corr = *pfmetNoPUType1corrHandle;
898 +  if(pfmetsNoPUType1corr.size()){
899 +    hbbInfo->pfmetNoPUType1corr.sumEt=(pfmetsNoPUType1corr[0]).sumEt();
900 +    hbbInfo->pfmetNoPUType1corr.metSig=metSignificance(& (pfmetsNoPUType1corr[0]));
901 +    hbbInfo->pfmetNoPUType1corr.eLong=(pfmetsNoPUType1corr[0]).e_longitudinal();
902 +    hbbInfo->pfmetNoPUType1corr.p4=GENPTOLOR((pfmetsNoPUType1corr[0]));
903 +    if (verbose_)     std::cout <<" type 1 corrected pfMET NoPU"<<     hbbInfo->pfmetNoPUType1corr.metSig <<" " <<     hbbInfo->pfmetNoPUType1corr.sumEt<<std::endl;
904 +  }
905 +
906 +
907 +  // type 1 + 2 corr met
908 +  edm::Handle<edm::View<reco::MET> > pfmetNoPUType1p2corrHandle;
909 +  iEvent.getByLabel("patType1p2CorrectedPFMetNoPU",pfmetNoPUType1p2corrHandle);
910 +  edm::View<reco::MET> pfmetsNoPUType1p2corr = *pfmetNoPUType1p2corrHandle;
911 +  if(pfmetsNoPUType1p2corr.size()){
912 +    hbbInfo->pfmetNoPUType1p2corr.sumEt=(pfmetsNoPUType1p2corr[0]).sumEt();
913 +    hbbInfo->pfmetNoPUType1p2corr.metSig=metSignificance(& (pfmetsNoPUType1p2corr[0]));
914 +    hbbInfo->pfmetNoPUType1p2corr.eLong=(pfmetsNoPUType1p2corr[0]).e_longitudinal();
915 +    hbbInfo->pfmetNoPUType1p2corr.p4=GENPTOLOR((pfmetsNoPUType1p2corr[0]));
916 +    if (verbose_)     std::cout <<" type 1 +2 corrected pfMET "<<     hbbInfo->pfmetNoPUType1p2corr.metSig <<" " <<     hbbInfo->pfmetNoPUType1p2corr.sumEt<<std::endl;
917 +  }
918 +
919 +
920 +  /*
921 +  // MET uncertainty vector
922 +    vector<pat::MET>                 "patType1CorrectedPFMet"    ""                "VH"      
923 +    vector<pat::MET>                 "patType1CorrectedPFMetElectronEnDown"   ""                "VH"      
924 +    vector<pat::MET>                 "patType1CorrectedPFMetElectronEnUp"   ""                "VH"      
925 +    vector<pat::MET>                 "patType1CorrectedPFMetJetEnDown"   ""                "VH"      
926 +    vector<pat::MET>                 "patType1CorrectedPFMetJetEnUp"   ""                "VH"      
927 +    vector<pat::MET>                 "patType1CorrectedPFMetJetResDown"   ""                "VH"      
928 +    vector<pat::MET>                 "patType1CorrectedPFMetJetResUp"   ""                "VH"      
929 +    vector<pat::MET>                 "patType1CorrectedPFMetMuonEnDown"   ""                "VH"      
930 +    vector<pat::MET>                 "patType1CorrectedPFMetMuonEnUp"   ""                "VH"      
931 +    vector<pat::MET>                 "patType1CorrectedPFMetNoPU"   ""                "VH"      
932 +    vector<pat::MET>                 "patType1CorrectedPFMetTauEnDown"   ""                "VH"      
933 +    vector<pat::MET>                 "patType1CorrectedPFMetTauEnUp"   ""                "VH"      
934 +    vector<pat::MET>                 "patType1CorrectedPFMetUnclusteredEnDown"   ""                "VH"      
935 +    vector<pat::MET>                 "patType1CorrectedPFMetUnclusteredEnUp"   ""                "VH"      
936 +    vector<pat::MET>                 "patType1p2CorrectedPFMet"   ""                "VH"      
937 +    vector<pat::MET>                 "patType1p2CorrectedPFMetElectronEnDown"   ""                "VH"      
938 +    vector<pat::MET>                 "patType1p2CorrectedPFMetElectronEnUp"   ""                "VH"      
939 +    vector<pat::MET>                 "patType1p2CorrectedPFMetJetEnDown"   ""                "VH"      
940 +    vector<pat::MET>                 "patType1p2CorrectedPFMetJetEnUp"   ""                "VH"      
941 +    vector<pat::MET>                 "patType1p2CorrectedPFMetJetResDown"   ""                "VH"      
942 +    vector<pat::MET>                 "patType1p2CorrectedPFMetJetResUp"   ""                "VH"      
943 +    vector<pat::MET>                 "patType1p2CorrectedPFMetMuonEnDown"   ""                "VH"      
944 +    vector<pat::MET>                 "patType1p2CorrectedPFMetMuonEnUp"   ""                "VH"      
945 +    vector<pat::MET>                 "patType1p2CorrectedPFMetNoPU"   ""                "VH"      
946 +    vector<pat::MET>                 "patType1p2CorrectedPFMetTauEnDown"   ""                "VH"      
947 +    vector<pat::MET>                 "patType1p2CorrectedPFMetTauEnUp"   ""                "VH"      
948 +    vector<pat::MET>                 "patType1p2CorrectedPFMetUnclusteredEnDown"   ""                "VH"      
949 +    vector<pat::MET>                 "patType1p2CorrectedPFMetUnclusteredEnUp"   ""                "VH"      
950 +      */
951 +
952 +    VHbbEvent::METInfo metunc;
953 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetElectronEnDownHandle;
954 +  iEvent.getByLabel("patType1CorrectedPFMetElectronEnDown",patType1CorrectedPFMetElectronEnDownHandle);
955 +  edm::View<reco::MET> patType1CorrectedPFMetsElectronEnDown = *patType1CorrectedPFMetElectronEnDownHandle;
956 +  if(patType1CorrectedPFMetsElectronEnDown.size()){
957 +    metunc.sumEt =(patType1CorrectedPFMetsElectronEnDown[0]).sumEt();
958 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsElectronEnDown[0]));
959 +    metunc.eLong=(patType1CorrectedPFMetsElectronEnDown[0]).e_longitudinal();
960 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsElectronEnDown[0]));
961 +    hbbInfo->metUncInfo.push_back(metunc);
962 +  }
963 +
964 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetElectronEnUpHandle;
965 +  iEvent.getByLabel("patType1CorrectedPFMetElectronEnUp",patType1CorrectedPFMetElectronEnUpHandle);
966 +  edm::View<reco::MET> patType1CorrectedPFMetsElectronEnUp = *patType1CorrectedPFMetElectronEnUpHandle;
967 +  if(patType1CorrectedPFMetsElectronEnUp.size()){
968 +    metunc.sumEt =(patType1CorrectedPFMetsElectronEnUp[0]).sumEt();
969 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsElectronEnUp[0]));
970 +    metunc.eLong=(patType1CorrectedPFMetsElectronEnUp[0]).e_longitudinal();
971 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsElectronEnUp[0]));
972 +    hbbInfo->metUncInfo.push_back(metunc);
973 +  }
974 +
975 +
976 +
977 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetMuonEnDownHandle;
978 +  iEvent.getByLabel("patType1CorrectedPFMetMuonEnDown",patType1CorrectedPFMetMuonEnDownHandle);
979 +  edm::View<reco::MET> patType1CorrectedPFMetsMuonEnDown = *patType1CorrectedPFMetMuonEnDownHandle;
980 +  if(patType1CorrectedPFMetsMuonEnDown.size()){
981 +    metunc.sumEt =(patType1CorrectedPFMetsMuonEnDown[0]).sumEt();
982 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsMuonEnDown[0]));
983 +    metunc.eLong=(patType1CorrectedPFMetsMuonEnDown[0]).e_longitudinal();
984 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsMuonEnDown[0]));
985 +    hbbInfo->metUncInfo.push_back(metunc);
986 +  }
987 +
988 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetMuonEnUpHandle;
989 +  iEvent.getByLabel("patType1CorrectedPFMetMuonEnUp",patType1CorrectedPFMetMuonEnUpHandle);
990 +  edm::View<reco::MET> patType1CorrectedPFMetsMuonEnUp = *patType1CorrectedPFMetMuonEnUpHandle;
991 +  if(patType1CorrectedPFMetsMuonEnUp.size()){
992 +    metunc.sumEt =(patType1CorrectedPFMetsMuonEnUp[0]).sumEt();
993 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsMuonEnUp[0]));
994 +    metunc.eLong=(patType1CorrectedPFMetsMuonEnUp[0]).e_longitudinal();
995 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsMuonEnUp[0]));
996 +    hbbInfo->metUncInfo.push_back(metunc);
997 +  }
998 +
999 +
1000 +
1001 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetTauEnDownHandle;
1002 +  iEvent.getByLabel("patType1CorrectedPFMetTauEnDown",patType1CorrectedPFMetTauEnDownHandle);
1003 +  edm::View<reco::MET> patType1CorrectedPFMetsTauEnDown = *patType1CorrectedPFMetTauEnDownHandle;
1004 +  if(patType1CorrectedPFMetsTauEnDown.size()){
1005 +    metunc.sumEt =(patType1CorrectedPFMetsTauEnDown[0]).sumEt();
1006 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsTauEnDown[0]));
1007 +    metunc.eLong=(patType1CorrectedPFMetsTauEnDown[0]).e_longitudinal();
1008 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsTauEnDown[0]));
1009 +    hbbInfo->metUncInfo.push_back(metunc);
1010 +  }
1011 +
1012 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetTauEnUpHandle;
1013 +  iEvent.getByLabel("patType1CorrectedPFMetTauEnUp",patType1CorrectedPFMetTauEnUpHandle);
1014 +  edm::View<reco::MET> patType1CorrectedPFMetsTauEnUp = *patType1CorrectedPFMetTauEnUpHandle;
1015 +  if(patType1CorrectedPFMetsTauEnUp.size()){
1016 +    metunc.sumEt =(patType1CorrectedPFMetsTauEnUp[0]).sumEt();
1017 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsTauEnUp[0]));
1018 +    metunc.eLong=(patType1CorrectedPFMetsTauEnUp[0]).e_longitudinal();
1019 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsTauEnUp[0]));
1020 +    hbbInfo->metUncInfo.push_back(metunc);
1021 +  }
1022 +
1023 +
1024 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetJetEnDownHandle;
1025 +  iEvent.getByLabel("patType1CorrectedPFMetJetEnDown",patType1CorrectedPFMetJetEnDownHandle);
1026 +  edm::View<reco::MET> patType1CorrectedPFMetsJetEnDown = *patType1CorrectedPFMetJetEnDownHandle;
1027 +  if(patType1CorrectedPFMetsJetEnDown.size()){
1028 +    metunc.sumEt =(patType1CorrectedPFMetsJetEnDown[0]).sumEt();
1029 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsJetEnDown[0]));
1030 +    metunc.eLong=(patType1CorrectedPFMetsJetEnDown[0]).e_longitudinal();
1031 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsJetEnDown[0]));
1032 +    hbbInfo->metUncInfo.push_back(metunc);
1033 +  }
1034 +
1035 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetJetEnUpHandle;
1036 +  iEvent.getByLabel("patType1CorrectedPFMetJetEnUp",patType1CorrectedPFMetJetEnUpHandle);
1037 +  edm::View<reco::MET> patType1CorrectedPFMetsJetEnUp = *patType1CorrectedPFMetJetEnUpHandle;
1038 +  if(patType1CorrectedPFMetsJetEnUp.size()){
1039 +    metunc.sumEt =(patType1CorrectedPFMetsJetEnUp[0]).sumEt();
1040 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsJetEnUp[0]));
1041 +    metunc.eLong=(patType1CorrectedPFMetsJetEnUp[0]).e_longitudinal();
1042 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsJetEnUp[0]));
1043 +    hbbInfo->metUncInfo.push_back(metunc);
1044 +  }
1045 +
1046 +
1047 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetJetResDownHandle;
1048 +  iEvent.getByLabel("patType1CorrectedPFMetJetResDown",patType1CorrectedPFMetJetResDownHandle);
1049 +  edm::View<reco::MET> patType1CorrectedPFMetsJetResDown = *patType1CorrectedPFMetJetResDownHandle;
1050 +  if(patType1CorrectedPFMetsJetResDown.size()){
1051 +    metunc.sumEt =(patType1CorrectedPFMetsJetResDown[0]).sumEt();
1052 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsJetResDown[0]));
1053 +    metunc.eLong=(patType1CorrectedPFMetsJetResDown[0]).e_longitudinal();
1054 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsJetResDown[0]));
1055 +    hbbInfo->metUncInfo.push_back(metunc);
1056 +  }
1057 +
1058 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetJetResUpHandle;
1059 +  iEvent.getByLabel("patType1CorrectedPFMetJetResUp",patType1CorrectedPFMetJetResUpHandle);
1060 +  edm::View<reco::MET> patType1CorrectedPFMetsJetResUp = *patType1CorrectedPFMetJetResUpHandle;
1061 +  if(patType1CorrectedPFMetsJetResUp.size()){
1062 +    metunc.sumEt =(patType1CorrectedPFMetsJetResUp[0]).sumEt();
1063 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsJetResUp[0]));
1064 +    metunc.eLong=(patType1CorrectedPFMetsJetResUp[0]).e_longitudinal();
1065 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsJetResUp[0]));
1066 +    hbbInfo->metUncInfo.push_back(metunc);
1067 +  }
1068 +
1069 +
1070 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetUnclusteredEnDownHandle;
1071 +  iEvent.getByLabel("patType1CorrectedPFMetUnclusteredEnDown",patType1CorrectedPFMetUnclusteredEnDownHandle);
1072 +  edm::View<reco::MET> patType1CorrectedPFMetsUnclusteredEnDown = *patType1CorrectedPFMetUnclusteredEnDownHandle;
1073 +  if(patType1CorrectedPFMetsUnclusteredEnDown.size()){
1074 +    metunc.sumEt =(patType1CorrectedPFMetsUnclusteredEnDown[0]).sumEt();
1075 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsUnclusteredEnDown[0]));
1076 +    metunc.eLong=(patType1CorrectedPFMetsUnclusteredEnDown[0]).e_longitudinal();
1077 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsUnclusteredEnDown[0]));
1078 +    hbbInfo->metUncInfo.push_back(metunc);
1079 +  }
1080 +
1081 +  edm::Handle<edm::View<reco::MET> > patType1CorrectedPFMetUnclusteredEnUpHandle;
1082 +  iEvent.getByLabel("patType1CorrectedPFMetUnclusteredEnUp",patType1CorrectedPFMetUnclusteredEnUpHandle);
1083 +  edm::View<reco::MET> patType1CorrectedPFMetsUnclusteredEnUp = *patType1CorrectedPFMetUnclusteredEnUpHandle;
1084 +  if(patType1CorrectedPFMetsUnclusteredEnUp.size()){
1085 +    metunc.sumEt =(patType1CorrectedPFMetsUnclusteredEnUp[0]).sumEt();
1086 +    metunc.metSig=metSignificance(& (patType1CorrectedPFMetsUnclusteredEnUp[0]));
1087 +    metunc.eLong=(patType1CorrectedPFMetsUnclusteredEnUp[0]).e_longitudinal();
1088 +    metunc.p4=GENPTOLOR((patType1CorrectedPFMetsUnclusteredEnUp[0]));
1089 +    hbbInfo->metUncInfo.push_back(metunc);
1090 +  }
1091 +
1092 +
1093 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetElectronEnDownHandle;
1094 +  iEvent.getByLabel("patType1p2CorrectedPFMetElectronEnDown",patType1p2CorrectedPFMetElectronEnDownHandle);
1095 +  edm::View<reco::MET> patType1p2CorrectedPFMetsElectronEnDown = *patType1p2CorrectedPFMetElectronEnDownHandle;
1096 +  if(patType1p2CorrectedPFMetsElectronEnDown.size()){
1097 +    metunc.sumEt =(patType1p2CorrectedPFMetsElectronEnDown[0]).sumEt();
1098 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsElectronEnDown[0]));
1099 +    metunc.eLong=(patType1p2CorrectedPFMetsElectronEnDown[0]).e_longitudinal();
1100 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsElectronEnDown[0]));
1101 +    hbbInfo->metUncInfo.push_back(metunc);
1102 +  }
1103 +
1104 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetElectronEnUpHandle;
1105 +  iEvent.getByLabel("patType1p2CorrectedPFMetElectronEnUp",patType1p2CorrectedPFMetElectronEnUpHandle);
1106 +  edm::View<reco::MET> patType1p2CorrectedPFMetsElectronEnUp = *patType1p2CorrectedPFMetElectronEnUpHandle;
1107 +  if(patType1p2CorrectedPFMetsElectronEnUp.size()){
1108 +    metunc.sumEt =(patType1p2CorrectedPFMetsElectronEnUp[0]).sumEt();
1109 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsElectronEnUp[0]));
1110 +    metunc.eLong=(patType1p2CorrectedPFMetsElectronEnUp[0]).e_longitudinal();
1111 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsElectronEnUp[0]));
1112 +    hbbInfo->metUncInfo.push_back(metunc);
1113 +  }
1114 +
1115 +
1116 +
1117 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetMuonEnDownHandle;
1118 +  iEvent.getByLabel("patType1p2CorrectedPFMetMuonEnDown",patType1p2CorrectedPFMetMuonEnDownHandle);
1119 +  edm::View<reco::MET> patType1p2CorrectedPFMetsMuonEnDown = *patType1p2CorrectedPFMetMuonEnDownHandle;
1120 +  if(patType1p2CorrectedPFMetsMuonEnDown.size()){
1121 +    metunc.sumEt =(patType1p2CorrectedPFMetsMuonEnDown[0]).sumEt();
1122 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsMuonEnDown[0]));
1123 +    metunc.eLong=(patType1p2CorrectedPFMetsMuonEnDown[0]).e_longitudinal();
1124 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsMuonEnDown[0]));
1125 +    hbbInfo->metUncInfo.push_back(metunc);
1126 +  }
1127 +
1128 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetMuonEnUpHandle;
1129 +  iEvent.getByLabel("patType1p2CorrectedPFMetMuonEnUp",patType1p2CorrectedPFMetMuonEnUpHandle);
1130 +  edm::View<reco::MET> patType1p2CorrectedPFMetsMuonEnUp = *patType1p2CorrectedPFMetMuonEnUpHandle;
1131 +  if(patType1p2CorrectedPFMetsMuonEnUp.size()){
1132 +    metunc.sumEt =(patType1p2CorrectedPFMetsMuonEnUp[0]).sumEt();
1133 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsMuonEnUp[0]));
1134 +    metunc.eLong=(patType1p2CorrectedPFMetsMuonEnUp[0]).e_longitudinal();
1135 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsMuonEnUp[0]));
1136 +    hbbInfo->metUncInfo.push_back(metunc);
1137 +  }
1138 +
1139 +
1140 +
1141 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetTauEnDownHandle;
1142 +  iEvent.getByLabel("patType1p2CorrectedPFMetTauEnDown",patType1p2CorrectedPFMetTauEnDownHandle);
1143 +  edm::View<reco::MET> patType1p2CorrectedPFMetsTauEnDown = *patType1p2CorrectedPFMetTauEnDownHandle;
1144 +  if(patType1p2CorrectedPFMetsTauEnDown.size()){
1145 +    metunc.sumEt =(patType1p2CorrectedPFMetsTauEnDown[0]).sumEt();
1146 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsTauEnDown[0]));
1147 +    metunc.eLong=(patType1p2CorrectedPFMetsTauEnDown[0]).e_longitudinal();
1148 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsTauEnDown[0]));
1149 +    hbbInfo->metUncInfo.push_back(metunc);
1150 +  }
1151 +
1152 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetTauEnUpHandle;
1153 +  iEvent.getByLabel("patType1p2CorrectedPFMetTauEnUp",patType1p2CorrectedPFMetTauEnUpHandle);
1154 +  edm::View<reco::MET> patType1p2CorrectedPFMetsTauEnUp = *patType1p2CorrectedPFMetTauEnUpHandle;
1155 +  if(patType1p2CorrectedPFMetsTauEnUp.size()){
1156 +    metunc.sumEt =(patType1p2CorrectedPFMetsTauEnUp[0]).sumEt();
1157 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsTauEnUp[0]));
1158 +    metunc.eLong=(patType1p2CorrectedPFMetsTauEnUp[0]).e_longitudinal();
1159 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsTauEnUp[0]));
1160 +    hbbInfo->metUncInfo.push_back(metunc);
1161 +  }
1162 +
1163 +
1164 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetJetEnDownHandle;
1165 +  iEvent.getByLabel("patType1p2CorrectedPFMetJetEnDown",patType1p2CorrectedPFMetJetEnDownHandle);
1166 +  edm::View<reco::MET> patType1p2CorrectedPFMetsJetEnDown = *patType1p2CorrectedPFMetJetEnDownHandle;
1167 +  if(patType1p2CorrectedPFMetsJetEnDown.size()){
1168 +    metunc.sumEt =(patType1p2CorrectedPFMetsJetEnDown[0]).sumEt();
1169 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsJetEnDown[0]));
1170 +    metunc.eLong=(patType1p2CorrectedPFMetsJetEnDown[0]).e_longitudinal();
1171 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsJetEnDown[0]));
1172 +    hbbInfo->metUncInfo.push_back(metunc);
1173 +  }
1174 +
1175 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetJetEnUpHandle;
1176 +  iEvent.getByLabel("patType1p2CorrectedPFMetJetEnUp",patType1p2CorrectedPFMetJetEnUpHandle);
1177 +  edm::View<reco::MET> patType1p2CorrectedPFMetsJetEnUp = *patType1p2CorrectedPFMetJetEnUpHandle;
1178 +  if(patType1p2CorrectedPFMetsJetEnUp.size()){
1179 +    metunc.sumEt =(patType1p2CorrectedPFMetsJetEnUp[0]).sumEt();
1180 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsJetEnUp[0]));
1181 +    metunc.eLong=(patType1p2CorrectedPFMetsJetEnUp[0]).e_longitudinal();
1182 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsJetEnUp[0]));
1183 +    hbbInfo->metUncInfo.push_back(metunc);
1184 +  }
1185 +
1186 +
1187 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetJetResDownHandle;
1188 +  iEvent.getByLabel("patType1p2CorrectedPFMetJetResDown",patType1p2CorrectedPFMetJetResDownHandle);
1189 +  edm::View<reco::MET> patType1p2CorrectedPFMetsJetResDown = *patType1p2CorrectedPFMetJetResDownHandle;
1190 +  if(patType1p2CorrectedPFMetsJetResDown.size()){
1191 +    metunc.sumEt =(patType1p2CorrectedPFMetsJetResDown[0]).sumEt();
1192 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsJetResDown[0]));
1193 +    metunc.eLong=(patType1p2CorrectedPFMetsJetResDown[0]).e_longitudinal();
1194 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsJetResDown[0]));
1195 +    hbbInfo->metUncInfo.push_back(metunc);
1196 +  }
1197 +
1198 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetJetResUpHandle;
1199 +  iEvent.getByLabel("patType1p2CorrectedPFMetJetResUp",patType1p2CorrectedPFMetJetResUpHandle);
1200 +  edm::View<reco::MET> patType1p2CorrectedPFMetsJetResUp = *patType1p2CorrectedPFMetJetResUpHandle;
1201 +  if(patType1p2CorrectedPFMetsJetResUp.size()){
1202 +    metunc.sumEt =(patType1p2CorrectedPFMetsJetResUp[0]).sumEt();
1203 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsJetResUp[0]));
1204 +    metunc.eLong=(patType1p2CorrectedPFMetsJetResUp[0]).e_longitudinal();
1205 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsJetResUp[0]));
1206 +    hbbInfo->metUncInfo.push_back(metunc);
1207 +  }
1208 +
1209 +
1210 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetUnclusteredEnDownHandle;
1211 +  iEvent.getByLabel("patType1p2CorrectedPFMetUnclusteredEnDown",patType1p2CorrectedPFMetUnclusteredEnDownHandle);
1212 +  edm::View<reco::MET> patType1p2CorrectedPFMetsUnclusteredEnDown = *patType1p2CorrectedPFMetUnclusteredEnDownHandle;
1213 +  if(patType1p2CorrectedPFMetsUnclusteredEnDown.size()){
1214 +    metunc.sumEt =(patType1p2CorrectedPFMetsUnclusteredEnDown[0]).sumEt();
1215 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsUnclusteredEnDown[0]));
1216 +    metunc.eLong=(patType1p2CorrectedPFMetsUnclusteredEnDown[0]).e_longitudinal();
1217 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsUnclusteredEnDown[0]));
1218 +    hbbInfo->metUncInfo.push_back(metunc);
1219 +  }
1220 +
1221 +  edm::Handle<edm::View<reco::MET> > patType1p2CorrectedPFMetUnclusteredEnUpHandle;
1222 +  iEvent.getByLabel("patType1p2CorrectedPFMetUnclusteredEnUp",patType1p2CorrectedPFMetUnclusteredEnUpHandle);
1223 +  edm::View<reco::MET> patType1p2CorrectedPFMetsUnclusteredEnUp = *patType1p2CorrectedPFMetUnclusteredEnUpHandle;
1224 +  if(patType1p2CorrectedPFMetsUnclusteredEnUp.size()){
1225 +    metunc.sumEt =(patType1p2CorrectedPFMetsUnclusteredEnUp[0]).sumEt();
1226 +    metunc.metSig=metSignificance(& (patType1p2CorrectedPFMetsUnclusteredEnUp[0]));
1227 +    metunc.eLong=(patType1p2CorrectedPFMetsUnclusteredEnUp[0]).e_longitudinal();
1228 +    metunc.p4=GENPTOLOR((patType1p2CorrectedPFMetsUnclusteredEnUp[0]));
1229 +    hbbInfo->metUncInfo.push_back(metunc);
1230 +  }
1231 +
1232 +
1233  
1234    //
1235    // met is calomet
# Line 726 | Line 1240 | BTagSFContainer btagSFs;
1240    edm::View<pat::MET> metsTC = *metTCHandle;
1241    if(metsTC.size()){
1242      hbbInfo->tcmet.sumEt=(metsTC[0]).sumEt();
1243 <    hbbInfo->tcmet.metSig=(metsTC[0]).significance();
1243 >    hbbInfo->tcmet.metSig=metSignificance(&(metsTC[0]));
1244      hbbInfo->tcmet.eLong=(metsTC[0]).e_longitudinal();
1245      hbbInfo->tcmet.p4=GENPTOLOR((metsTC[0]));
1246      if (verbose_)     std::cout <<" METTC "<<     hbbInfo->tcmet.metSig <<" " <<     hbbInfo->tcmet.sumEt<<std::endl;
# Line 737 | Line 1251 | BTagSFContainer btagSFs;
1251    edm::View<reco::MET> metspfMETNoPU = *pfMETNoPUHandle;
1252    if(metspfMETNoPU.size()){
1253      hbbInfo->metNoPU.sumEt=(metspfMETNoPU[0]).sumEt();
1254 <    hbbInfo->metNoPU.metSig=(metspfMETNoPU[0]).significance();
1254 >    hbbInfo->metNoPU.metSig=metSignificance(&(metspfMETNoPU[0]));                
1255      hbbInfo->metNoPU.eLong=(metspfMETNoPU[0]).e_longitudinal();
1256      hbbInfo->metNoPU.p4=GENPTOLOR((metspfMETNoPU[0]));
1257      if (verbose_)     std::cout <<" pfMETNoPU "<<     hbbInfo->metNoPU.metSig <<" " <<     hbbInfo->metNoPU.sumEt<<std::endl;
# Line 748 | Line 1262 | BTagSFContainer btagSFs;
1262    edm::View<reco::MET> metsHT = *mHTHandle;
1263    if(metsHT.size()){
1264      hbbInfo->mht.sumEt=(metsHT[0]).sumEt();
1265 <    hbbInfo->mht.metSig=(metsHT[0]).significance();
1265 >    hbbInfo->mht.metSig=metSignificance(&(metsHT[0]));
1266      hbbInfo->mht.eLong=(metsHT[0]).e_longitudinal();
1267      hbbInfo->mht.p4=GENPTOLOR((metsHT[0]));
1268      if (verbose_)     std::cout <<" METHT "<<     hbbInfo->mht.metSig <<" " <<     hbbInfo->mht.sumEt<<std::endl;
# Line 760 | Line 1274 | BTagSFContainer btagSFs;
1274    
1275    if(mets.size()){
1276      hbbInfo->calomet.sumEt=(mets[0]).sumEt();
1277 <    hbbInfo->calomet.metSig=(mets[0]).significance();
1277 >    hbbInfo->calomet.metSig=metSignificance(&(mets[0]));
1278      hbbInfo->calomet.eLong=(mets[0]).e_longitudinal();
1279      hbbInfo->calomet.p4=GENPTOLOR((mets[0]));
1280      if (verbose_)     std::cout <<" METCALO "<<     hbbInfo->calomet.metSig <<" " <<     hbbInfo->calomet.sumEt<<std::endl;
# Line 772 | Line 1286 | BTagSFContainer btagSFs;
1286    
1287    if(metsPF.size()){
1288      hbbInfo->pfmet.sumEt=(metsPF[0]).sumEt();
1289 <    hbbInfo->pfmet.metSig=(metsPF[0]).significance();
1289 >    hbbInfo->pfmet.metSig=metSignificance(&(metsPF[0]));
1290      hbbInfo->pfmet.eLong=(metsPF[0]).e_longitudinal();
1291      hbbInfo->pfmet.p4=GENPTOLOR((metsPF[0]));
1292      if (verbose_)     std::cout <<" METPF "<<     hbbInfo->pfmet.metSig <<" " <<     hbbInfo->pfmet.sumEt<<std::endl;
# Line 801 | Line 1315 | BTagSFContainer btagSFs;
1315      double acop = deltaphi.value();
1316      mf.acop=acop;
1317  
1318 +    mf.emEnergy = mu->calEnergy().em;
1319 +    mf.hadEnergy = mu->calEnergy().had;
1320 +
1321 +    mf.nMatches = mu->numberOfMatches();
1322 +
1323      mf.ipDb=mu->dB();
1324      mf.ipErrDb=mu->edB();
1325      mf.cat=0;
1326 +
1327      if(mu->isGlobalMuon()) mf.cat|=1;
1328      if(mu->isTrackerMuon()) mf.cat|=2;
1329      if(mu->isStandAloneMuon()) mf.cat|=4;
# Line 817 | Line 1337 | BTagSFContainer btagSFs;
1337        TrackRef iTrack1 = mu->innerTrack();
1338        const reco::HitPattern& p1 = iTrack1->hitPattern();
1339        mf.nPixelHits=p1.pixelLayersWithMeasurement();
1340 <    }
1340 >
1341 >      mf.nValidTracker = p1.numberOfValidTrackerHits();
1342 >      mf.nValidPixel = p1.numberOfValidPixelHits();
1343 >
1344 >
1345 >
1346 >   }
1347      if(mu->isGlobalMuon()){
1348        TrackRef gTrack = mu->globalTrack();
1349        const reco::HitPattern& q = gTrack->hitPattern();
# Line 886 | Line 1412 | BTagSFContainer btagSFs;
1412      ef.pfPhoIso=elec->photonIso();
1413      ef.pfNeuIso=elec->neutralHadronIso();
1414  
1415 +    //
1416 +    // ip info
1417 +    //
1418 +
1419 +    ef.ipDb=elec->dB();
1420 +    ef.ipErrDb=elec->edB();
1421 +    
1422 +
1423 +
1424      Geom::Phi<double> deltaphi(elec->superCluster()->phi()-atan2(hbbInfo->pfmet.p4.Py(),hbbInfo->pfmet.p4.Px()));
1425      ef.acop = deltaphi.value();
1426      //
1427 +    ef.sihih = elec->sigmaIetaIeta();
1428 +    ef.Dphi = elec->deltaPhiSuperClusterTrackAtVtx();
1429 +    ef.Deta = elec->deltaEtaSuperClusterTrackAtVtx();
1430 +    ef.HoE = elec->hadronicOverEm();
1431 +    ef.convDist = elec->convDist();
1432 +    ef.convDcot = elec->convDcot();
1433 +    if(elec->gsfTrack().isNonnull()) ef.innerHits = elec->gsfTrack()->trackerExpectedHitsInner().numberOfHits();  
1434 +    ef.isEB = elec->isEB();
1435 +    ef.isEE = elec->isEE();
1436 +    //
1437      // fill eleids
1438      //    
1439   /*    ef.id95 = elec->electronID("simpleEleId95cIso");
# Line 948 | Line 1493 | BTagSFContainer btagSFs;
1493      Geom::Phi<double> deltaphi(tau->phi()-atan2(hbbInfo->pfmet.p4.Py(),hbbInfo->pfmet.p4.Px()));
1494      double acop = deltaphi.value();
1495      tf.acop=acop;
1496 <    tf.idbyIso=tau->tauID("byIsolation");
1497 <    tf.idbyTrackIso=tau->tauID("trackIsolation");
1498 <    tf.idbyTaNCfrOnePercent=tau->tauID("byTaNCfrOnePercent");
1499 <    tf.idbyTaNCfrHalfPercent=tau->tauID("byTaNCfrHalfPercent");
1500 <    tf.idbyTaNCfrQuarterPercent=tau->tauID("byTaNCfrQuarterPercent");
1501 <    tf.idbyTaNCfrTenthPercent=tau->tauID("byTaNCfrTenthPercent");  
1502 <    tf.idbyTaNC=tau->tauID("byTaNC");
1496 >    if (tau->isTauIDAvailable("againstElectronLoose")) tf.idagainstElectronLoose=tau->tauID("againstElectronLoose");
1497 >    if (tau->isTauIDAvailable("againstElectronMedium")) tf.idagainstElectronMedium=tau->tauID("againstElectronMedium");
1498 >    if (tau->isTauIDAvailable("againstElectronTight")) tf.idagainstElectronTight=tau->tauID("againstElectronTight");
1499 >    if (tau->isTauIDAvailable("againstMuonLoose")) tf.idagainstMuonLoose=tau->tauID("againstMuonLoose");
1500 >    if (tau->isTauIDAvailable("againstMuonTight")) tf.idagainstMuonTight=tau->tauID("againstMuonTight");
1501 >    if (tau->isTauIDAvailable("byLooseIsolation")) tf.idbyLooseIsolation=tau->tauID("byLooseIsolation");
1502 >    if (tau->isTauIDAvailable("byMediumIsolation")) tf.idbyMediumIsolation=tau->tauID("byMediumIsolation");
1503 >    if (tau->isTauIDAvailable("byTightIsolation")) tf.idbyTightIsolation=tau->tauID("byTightIsolation");
1504 >    if (tau->isTauIDAvailable("byVLooseIsolation")) tf.idbyVLooseIsolation=tau->tauID("byVLooseIsolation");
1505 >    if (tau->isTauIDAvailable("decayModeFinding")) tf.iddecayModeFinding=tau->tauID("decayModeFinding");
1506 >    if (tau->isTauIDAvailable("byIsolation")) tf.idbyIso=tau->tauID("byIsolation");
1507 >    if (tau->isTauIDAvailable("trackIsolation")) tf.idbyTrackIso=tau->tauID("trackIsolation");
1508 >    if (tau->isTauIDAvailable("byTaNCfrOnePercent")) tf.idbyTaNCfrOnePercent=tau->tauID("byTaNCfrOnePercent");
1509 >    if (tau->isTauIDAvailable("byTaNCfrHalfPercent")) tf.idbyTaNCfrHalfPercent=tau->tauID("byTaNCfrHalfPercent");
1510 >    if (tau->isTauIDAvailable("byTaNCfrQuarterPercent")) tf.idbyTaNCfrQuarterPercent=tau->tauID("byTaNCfrQuarterPercent");
1511 >    if (tau->isTauIDAvailable("byTaNCfrTenthPercent")) tf.idbyTaNCfrTenthPercent=tau->tauID("byTaNCfrTenthPercent");
1512 >    if (tau->isTauIDAvailable("byTaNC")) tf.idbyTaNC=tau->tauID("byTaNC");
1513 >    if (tau->isPFTau()) {
1514 >      tf.isolationPFChargedHadrCandsPtSum = tau->isolationPFChargedHadrCandsPtSum();
1515 >      tf.isolationPFGammaCandsEtSum = tau->isolationPFGammaCandsEtSum();
1516 >      if (tau->leadPFChargedHadrCand().isAvailable()) tf.leadPFChargedHadrCandPt = tau->leadPFChargedHadrCand()->pt();
1517 >      tf.NsignalPFChargedHadrCands = tau->signalPFChargedHadrCands().size();
1518 >      tf.NsignalPFGammaCands = tau->signalPFGammaCands().size();
1519 >    }
1520      hbbInfo->tauInfo.push_back(tf);
1521 +    if (verbose_) {
1522 +      std::cout << "SCZ DEBUG: againstElectronLoose is " << tf.idagainstElectronLoose << std::endl;
1523 +      std::cout << "SCZ DEBUG: againstElectronMedium is " << tf.idagainstElectronMedium << std::endl;
1524 +      std::cout << "SCZ DEBUG: againstElectronTight is " << tf.idagainstElectronTight << std::endl;
1525 +      std::cout << "SCZ DEBUG: againstMuonLoose is " << tf.idagainstMuonLoose << std::endl;
1526 +      std::cout << "SCZ DEBUG: againstMuonTight is " << tf.idagainstMuonTight << std::endl;
1527 +      std::cout << "SCZ DEBUG: byLooseIsolation is " << tf.idbyLooseIsolation << std::endl;
1528 +      std::cout << "SCZ DEBUG: byMediumIsolation is " << tf.idbyMediumIsolation << std::endl;
1529 +      std::cout << "SCZ DEBUG: byTightIsolation is " << tf.idbyTightIsolation << std::endl;
1530 +      std::cout << "SCZ DEBUG: byVLooseIsolation is " << tf.idbyVLooseIsolation << std::endl;
1531 +      std::cout << "SCZ DEBUG: decayModeFinding is " << tf.iddecayModeFinding << std::endl;
1532 +      std::cout << "SCZ DEBUG: byIsolation is " << tf.idbyIso<< std::endl;
1533 +      std::cout << "SCZ DEBUG: trackIsolation is " << tf.idbyTrackIso << std::endl;
1534 +      std::cout << "SCZ DEBUG: byTaNCfrOnePercent is " << tf.idbyTaNCfrOnePercent << std::endl;
1535 +      std::cout << "SCZ DEBUG: byTaNCfrHalfPercent is " << tf.idbyTaNCfrHalfPercent << std::endl;
1536 +      std::cout << "SCZ DEBUG: byTaNCfrQuarterPercent is " << tf.idbyTaNCfrQuarterPercent << std::endl;
1537 +      std::cout << "SCZ DEBUG: byTaNCfrTenthPercent is " << tf.idbyTaNCfrTenthPercent << std::endl;
1538 +      std::cout << "SCZ DEBUG: byTaNC is " << tf.idbyTaNC << std::endl;
1539 +      std::cout << "SCZ DEBUG: isolationPFChargedHadrCandsPtSum is " << tf.isolationPFChargedHadrCandsPtSum << std::endl;
1540 +      std::cout << "SCZ DEBUG: isolationPFGammaCandsEtSum is " << tf.isolationPFGammaCandsEtSum << std::endl;
1541 +      std::cout << "SCZ DEBUG: isolationPFGammaCandsEtSum is " << tf.leadPFChargedHadrCandPt << std::endl;
1542 +      std::cout << "SCZ DEBUG: NsignalPFChargedHadrCands is " << tf.NsignalPFChargedHadrCands << std::endl;
1543 +      std::cout << "SCZ DEBUG: NsignalPFGammaCands is " << tf.NsignalPFGammaCands << std::endl;
1544 +    }
1545    }
1546  
1547    CompareJetPtMuons ptComparatorMu;
# Line 975 | Line 1561 | BTagSFContainer btagSFs;
1561         " SimpleJets2 = "<<hbbInfo->simpleJets2.size()<<std::endl<<
1562         " SubJets = "<<hbbInfo->subJets.size()<<std::endl<<
1563         " HardJets = "<<hbbInfo->hardJets.size()<<std::endl<<
1564 +       " FilterJets = "<<hbbInfo->filterJets.size()<<std::endl<<
1565         " Muons = "<<hbbInfo->muInfo.size()<<std::endl<<
1566         " Electrons = "<<hbbInfo->eleInfo.size()<<std::endl<<
1567         " Taus = "<<hbbInfo->tauInfo.size()<<std::endl<<
# Line 987 | Line 1574 | BTagSFContainer btagSFs;
1574    iEvent.put(auxInfo);
1575  
1576  
1577 +  delete jecUnc;
1578 +
1579   }
1580    
1581   void
# Line 1175 | Line 1764 | void HbbAnalyzerNew::setJecUnc(VHbbEvent
1764    // test
1765    //
1766  
1767 <  return;
1767 >  //  return;
1768    double eta = sj.p4.Eta();
1769    double pt = sj.p4.Pt();
1770    
# Line 1195 | Line 1784 | void HbbAnalyzerNew ::fillSimpleJet (VHb
1784      sj.jpb=jet_iter->bDiscriminator("jetBProbabilityBJetTags");
1785      sj.ssvhe=jet_iter->bDiscriminator("simpleSecondaryVertexHighEffBJetTags");
1786      sj.csv=jet_iter->bDiscriminator("combinedSecondaryVertexBJetTags");
1787 <    sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
1787 >   sj.csvmva=jet_iter->bDiscriminator("combinedSecondaryVertexMVABJetTags");
1788      sj.charge=jet_iter->jetCharge();
1789      sj.ntracks=jet_iter->associatedTracks().size();
1790      sj.p4=GENPTOLORP(jet_iter);
1791 +    //    std::cout << " ECCO "<<sj.csv<< " "<< sj.p4.Pt()<<std::endl;
1792      sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
1793      sj.SF_CSVL=1;
1794      sj.SF_CSVM=1;
# Line 1241 | Line 1831 | void HbbAnalyzerNew ::fillSimpleJet (VHb
1831      // add tVector
1832      //
1833      sj.tVector = getTvect(&(*jet_iter));
1834 +
1835 +
1836 + }
1837 +
1838 + float HbbAnalyzerNew::metSignificance(const reco::MET * met)
1839 + {
1840 + double sigmaX2= met->getSignificanceMatrix()(0,0);
1841 + double sigmaY2= met->getSignificanceMatrix()(1,1);
1842 + double significance = 0;
1843 + try {
1844 + if(sigmaX2<1.e10 && sigmaY2<1.e10) significance = met->significance();
1845 + }
1846 + catch(...)
1847 + {
1848 + std::cout << "PROBLEM WITH MET SIGNIFICANCE sigma X2 and Y2 are: " << sigmaX2 << " " << sigmaY2 << std::endl;
1849 + }
1850 + return significance;
1851   }
1852  
1853  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines