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.7 by tboccali, Tue Jun 14 15:55:44 2011 UTC

# Line 20 | Line 20 | Implementation:
20   #include "VHbbAnalysis/HbbAnalyzer/interface/HbbAnalyzerNew.h"
21   #include "VHbbAnalysis/HbbAnalyzer/interface/VHbbEvent.h"
22  
23 + #include "DataFormats/GeometryVector/interface/VectorUtil.h"
24 +
25 +
26   #define GENPTOLOR(a) TLorentzVector((a).px(), (a).py(), (a).pz(), (a).energy())
27   #define GENPTOLORP(a) TLorentzVector((a)->px(), (a)->py(), (a)->pz(), (a)->energy())
28  
29   HbbAnalyzerNew::HbbAnalyzerNew(const edm::ParameterSet& iConfig):
30 <  eleLabel_(iConfig.getUntrackedParameter<edm::InputTag>("electronTag")),
31 <  muoLabel_(iConfig.getUntrackedParameter<edm::InputTag>("muonTag")),
32 <  jetLabel_(iConfig.getUntrackedParameter<edm::InputTag>("jetTag")),
33 <  subjetLabel_(iConfig.getUntrackedParameter<edm::InputTag>("subjetTag")),
34 <  simplejet1Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet1Tag")),
35 <  simplejet2Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet2Tag")),
36 <  simplejet3Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet3Tag")),
37 <  simplejet4Label_(iConfig.getUntrackedParameter<edm::InputTag>("simplejet4Tag")),
38 <  tauLabel_(iConfig.getUntrackedParameter<edm::InputTag>("tauTag")),
39 <  metLabel_(iConfig.getUntrackedParameter<edm::InputTag>("metTag")),
40 <  phoLabel_(iConfig.getUntrackedParameter<edm::InputTag>("photonTag")),
41 <  dimuLabel_(iConfig.getUntrackedParameter<edm::InputTag>("dimuTag")),
42 <  dielecLabel_(iConfig.getUntrackedParameter<edm::InputTag>("dielecTag")),
43 <  hltResults_(iConfig.getUntrackedParameter<edm::InputTag>("hltResultsTag")),
30 >  eleLabel_(iConfig.getParameter<edm::InputTag>("electronTag")),
31 >  muoLabel_(iConfig.getParameter<edm::InputTag>("muonTag")),
32 >  jetLabel_(iConfig.getParameter<edm::InputTag>("jetTag")),
33 >  subjetLabel_(iConfig.getParameter<edm::InputTag>("subjetTag")),
34 >  simplejet1Label_(iConfig.getParameter<edm::InputTag>("simplejet1Tag")),
35 >  simplejet2Label_(iConfig.getParameter<edm::InputTag>("simplejet2Tag")),
36 >  simplejet3Label_(iConfig.getParameter<edm::InputTag>("simplejet3Tag")),
37 >  simplejet4Label_(iConfig.getParameter<edm::InputTag>("simplejet4Tag")),
38 >  tauLabel_(iConfig.getParameter<edm::InputTag>("tauTag")),
39 >  metLabel_(iConfig.getParameter<edm::InputTag>("metTag")),
40 >  phoLabel_(iConfig.getParameter<edm::InputTag>("photonTag")),
41 >  dimuLabel_(iConfig.getParameter<edm::InputTag>("dimuTag")),
42 >  dielecLabel_(iConfig.getParameter<edm::InputTag>("dielecTag")),
43 >  hltResults_(iConfig.getParameter<edm::InputTag>("hltResultsTag")),
44    runOnMC_(iConfig.getParameter<bool>("runOnMC")) {
45  
43
46    //
47    // put the setwhatproduced etc etc
48  
# Line 515 | Line 517 | HbbAnalyzerNew::produce(edm::Event& iEve
517      VHbbEvent::SimpleJet sj;
518      sj.flavour = jet_iter->partonFlavour();
519  
518
520      sj.tche=jet_iter->bDiscriminator("trackCountingHighEffBJetTags");
521      sj.tchp=jet_iter->bDiscriminator("trackCountingHighPurBJetTags");
522      sj.jp=jet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 526 | Line 527 | HbbAnalyzerNew::produce(edm::Event& iEve
527      sj.charge=jet_iter->jetCharge();
528      sj.ntracks=jet_iter->associatedTracks().size();
529      sj.fourMomentum=GENPTOLORP(jet_iter);
530 +    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
531 +    
532 +    //
533 +    // add tVector
534 +    //
535 +    sj.tVector = getTvect(&(*jet_iter));
536  
537      Particle::LorentzVector p4Jet = jet_iter->p4();
538  
# Line 537 | Line 544 | HbbAnalyzerNew::produce(edm::Event& iEve
544          if(abs(id)<=6 || id==21 || id==23 || abs(id)==24){
545            double bb1DR=TMath::Sqrt((p.eta()-p4Jet.eta())*(p.eta()-p4Jet.eta())+
546                                     (p.phi()-p4Jet.phi())*(p.phi()-p4Jet.phi()));
547 <          if(bb1DR<minb1DR) {minb1DR=bb1DR; sj.b1BestMCid=id; if(p.mother()!=0) sj.b1BestMCmomid=p.mother()->pdgId();}
547 >          if(bb1DR<minb1DR) {minb1DR=bb1DR; sj.bestMCid=id; if(p.mother()!=0) sj.bestMCmomid=p.mother()->pdgId();}
548          }
549        }
550      } //isMC    
# Line 562 | Line 569 | HbbAnalyzerNew::produce(edm::Event& iEve
569      sj.charge=jet_iter->jetCharge();
570      sj.ntracks=jet_iter->associatedTracks().size();
571      sj.fourMomentum=GENPTOLORP(jet_iter);
572 +    sj.chargedTracksFourMomentum=(getChargedTracksMomentum(&*(jet_iter)));
573 +    sj.tVector = getTvect(&(*jet_iter));
574  
575      Particle::LorentzVector p4Jet = jet_iter->p4();
576  
# Line 573 | Line 582 | HbbAnalyzerNew::produce(edm::Event& iEve
582          if(abs(id)<=6 || id==21 || id==23 || abs(id)==24){
583            double bb2DR=TMath::Sqrt((p.eta()-p4Jet.eta())*(p.eta()-p4Jet.eta())+
584                                     (p.phi()-p4Jet.phi())*(p.phi()-p4Jet.phi()));
585 <          if(bb2DR<minb2DR) {minb2DR=bb2DR; sj.b1BestMCid=id; if(p.mother()!=0) sj.b1BestMCmomid=p.mother()->pdgId();}
585 >          if(bb2DR<minb2DR) {minb2DR=bb2DR; sj.bestMCid=id; if(p.mother()!=0) sj.bestMCmomid=p.mother()->pdgId();}
586          }
587        }
588      }   //isMC
# Line 625 | Line 634 | HbbAnalyzerNew::produce(edm::Event& iEve
634        hj.subFourMomentum.push_back(GENPTOLORP(icandJet));
635        hj.etaSub.push_back(icandJet->eta());
636        hj.phiSub.push_back(icandJet->phi());
628
637      
638      }
639      hbbInfo->hardJets.push_back(hj);
# Line 650 | Line 658 | HbbAnalyzerNew::produce(edm::Event& iEve
658      VHbbEvent::SimpleJet sj;
659  
660      sj.flavour = subjet_iter->partonFlavour();
661 <    
661 >    sj.tVector = getTvect(&(*subjet_iter));
662      sj.tche=subjet_iter->bDiscriminator("trackCountingHighEffBJetTags");
663      sj.tchp=subjet_iter->bDiscriminator("trackCountingHighPurBJetTags");
664      sj.jp=subjet_iter->bDiscriminator("jetProbabilityBJetTags");
# Line 661 | Line 669 | HbbAnalyzerNew::produce(edm::Event& iEve
669      sj.charge=subjet_iter->jetCharge();
670      sj.ntracks=subjet_iter->associatedTracks().size();
671      sj.fourMomentum=GENPTOLORP(subjet_iter);
672 <
672 >    sj.fourMomentum=(getChargedTracksMomentum(&*(subjet_iter)));
673      hbbInfo->subJets.push_back(sj);
674  
675    }
# Line 941 | Line 949 | void
949   HbbAnalyzerNew::endJob() {
950   }
951  
952 + TVector2 HbbAnalyzerNew::getTvect( const pat::Jet* patJet ){
953 +
954 +  TVector2 t_Vect(0,0);
955 +  TVector2 null(0,0);
956 +  TVector2 ci(0,0);
957 +  TLorentzVector pi(0,0,0,0);
958 +  TLorentzVector J(0,0,0,0);
959 +  TVector2 r(0,0);
960 +  double patJetpfcPt = 1e10;
961 +  double r_mag = 1e10;
962 +  unsigned int nOfconst = 0;
963 +
964 +
965 +  if (patJet->isPFJet() == false) {
966 +    return t_Vect;
967 +  }
968 +  
969 +
970 +  //re-reconstruct the jet direction with the charged tracks
971 +  std::vector<reco::PFCandidatePtr>
972 +    patJetpfc = patJet->getPFConstituents();
973 +  for(size_t idx = 0; idx < patJetpfc.size(); idx++){
974 +    if( patJetpfc.at(idx)->charge() != 0 ){
975 +      pi.SetPtEtaPhiE( patJetpfc.at(idx)->pt(), patJetpfc.at(idx)->eta(), patJetpfc.at(idx)->phi(), patJetpfc.at(idx)->energy() );
976 +      J += pi;
977 +      nOfconst++;
978 +    }
979 +  }
980 + // if there are less than two charged tracks do not calculate the pull (there is not enough info). It returns a null vector
981 +
982 +  if( nOfconst < 2 )
983 +    return null;
984 +  
985 +
986 +
987 +  TVector2 v_J( J.Rapidity(), J.Phi() );
988 + //calculate TVector using only charged tracks
989 +  for(size_t idx = 0; idx < patJetpfc.size(); idx++){
990 +    if( patJetpfc.at(idx)->charge() != 0  ){
991 +      patJetpfcPt = patJetpfc.at(idx)->pt();
992 +      pi.SetPtEtaPhiE( patJetpfc.at(idx)->pt(), patJetpfc.at(idx)->eta(), patJetpfc.at(idx)->phi(), patJetpfc.at(idx)->energy() );
993 +      r.Set( pi.Rapidity() - J.Rapidity(), Geom::deltaPhi( patJetpfc.at(idx)->phi(), J.Phi() ) );
994 +      r_mag = r.Mod();
995 +      t_Vect += ( patJetpfcPt / J.Pt() ) * r_mag * r;
996 +    }
997 +  }
998 +
999 +  
1000 +  return t_Vect;
1001 +  
1002 + }
1003 +
1004 + TLorentzVector HbbAnalyzerNew::getChargedTracksMomentum(const pat::Jet* patJet ){
1005 +  //  return TLorentzVector();
1006 +  TLorentzVector pi(0,0,0,0);
1007 +  TLorentzVector v_j1(0,0,0,0);
1008 +
1009 +
1010 +  //  std::cout <<"fff ECCCCCCOOOOO "<<patJet->isPFJet()<<std::endl;
1011 +
1012 +  if (patJet->isPFJet() == false ){
1013 +      v_j1 = GENPTOLORP(patJet);
1014 +      return v_j1;
1015 +  }
1016 +  std::vector<reco::PFCandidatePtr>
1017 +    j1pfc = patJet->getPFConstituents();
1018 +  for(size_t idx = 0; idx < j1pfc.size(); idx++){
1019 +    if( j1pfc.at(idx)->charge() != 0 ){
1020 +      pi.SetPtEtaPhiE( j1pfc.at(idx)->pt(), j1pfc.at(idx)->eta(), j1pfc.at(idx)->phi(), j1pfc.at(idx)->energy() );
1021 +      v_j1 += pi;
1022 +    }
1023 +  }
1024 +  return v_j1;
1025 +  //re-
1026 + }
1027 +
1028   //define this as a plug-in
1029   DEFINE_FWK_MODULE(HbbAnalyzerNew);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines