ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/NtupleWriter/src/NtupleWriter.cc
(Generate patch)

Comparing UserCode/UHHAnalysis/NtupleWriter/src/NtupleWriter.cc (file contents):
Revision 1.22 by peiffer, Wed Jul 25 09:56:57 2012 UTC vs.
Revision 1.23 by eusai, Fri Apr 5 13:23:16 2013 UTC

# Line 17 | Line 17
17   //
18   //
19  
20 < #include "UHHAnalysis//NtupleWriter/interface/NtupleWriter.h"
21 <
22 <
20 > #include "UHHAnalysis/NtupleWriter/interface/NtupleWriter.h"
21 > #include "RecoBTau/JetTagComputer/interface/GenericMVAJetTagComputer.h"
22 > #include "RecoBTau/JetTagComputer/interface/GenericMVAJetTagComputerWrapper.h"
23 > #include "RecoBTau/JetTagComputer/interface/JetTagComputer.h"
24 > #include "RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h"
25 > #include "RecoBTag/SecondaryVertex/interface/CombinedSVComputer.h"
26  
27   //
28   // constants, enums and typedefs
# Line 60 | Line 63 | NtupleWriter::NtupleWriter(const edm::Pa
63    doPV = iConfig.getParameter<bool>("doPV");
64    doTopJets = iConfig.getParameter<bool>("doTopJets");
65    doTrigger = iConfig.getParameter<bool>("doTrigger");
66 <
66 >  SVComputer_  = iConfig.getUntrackedParameter<edm::InputTag>("svComputer",edm::InputTag("combinedSecondaryVertex"));
67 >  doTagInfos = iConfig.getUntrackedParameter<bool>("doTagInfos",false);
68    // initialization of tree variables
69  
70    tr->Branch("run",&run);
# Line 705 | Line 709 | NtupleWriter::analyze(const edm::Event&
709  
710           for (unsigned int k = 0; k < pat_topjet.numberOfDaughters(); k++) {
711             Particle subjet_v4;
712 <           subjet_v4.set_pt(pat_topjet.daughter(k)->p4().pt());
713 <           subjet_v4.set_eta(pat_topjet.daughter(k)->p4().eta());
714 <           subjet_v4.set_phi(pat_topjet.daughter(k)->p4().phi());
715 <           subjet_v4.set_energy(pat_topjet.daughter(k)->p4().E());
716 <           topjet.add_subjet(subjet_v4);
712 >
713 >           reco::Candidate const * subjetd =  pat_topjet.daughter(k);
714 >           pat::Jet const * patsubjetd = dynamic_cast<pat::Jet const *>(subjetd);
715 >           if(patsubjetd)
716 >           {
717 >              subjet_v4.set_pt(patsubjetd->correctedP4(0).pt());
718 >              subjet_v4.set_eta(patsubjetd->correctedP4(0).eta());
719 >              subjet_v4.set_phi(patsubjetd->correctedP4(0).phi());
720 >              subjet_v4.set_energy(patsubjetd->correctedP4(0).E());
721 >              topjet.add_subjet(subjet_v4);
722 >              //btag info
723 >              topjet.add_subFlavour(patsubjetd->partonFlavour());
724 >              topjet.add_subCSV(patsubjetd->bDiscriminator("combinedSecondaryVertexBJetTags"));
725 >              if (doTagInfos)
726 >                {
727 >                  //ip tag info
728 >                  reco::TaggingVariableList tvlIP=patsubjetd->tagInfoTrackIP("impactParameter")->taggingVariables();
729 >                  topjet.add_subTrackMomentum(tvlIP.getList(reco::btau::trackMomentum,false));
730 >                  topjet.add_subTrackEta(tvlIP.getList(reco::btau::trackEta,false));
731 >                  topjet.add_subTrackEtaRel(tvlIP.getList(reco::btau::trackEtaRel,false));
732 >                  topjet.add_subTrackDeltaR(tvlIP.getList(reco::btau::trackDeltaR,false));
733 >                  topjet.add_subTrackSip3dVal(tvlIP.getList(reco::btau::trackSip3dVal,false));
734 >                  topjet.add_subTrackSip3dSig(tvlIP.getList(reco::btau::trackSip3dSig,false));
735 >                  topjet.add_subTrackSip2dVal(tvlIP.getList(reco::btau::trackSip2dVal,false));
736 >                  topjet.add_subTrackSip2dSig(tvlIP.getList(reco::btau::trackSip2dSig,false));
737 >                  topjet.add_subTrackDecayLenVal(tvlIP.getList(reco::btau::trackDecayLenVal,false));
738 >                  topjet.add_subTrackChi2(tvlIP.getList(reco::btau::trackChi2,false));
739 >                  topjet.add_subTrackNTotalHits(tvlIP.getList(reco::btau::trackNTotalHits,false));
740 >                  topjet.add_subTrackNPixelHits(tvlIP.getList(reco::btau::trackNPixelHits,false));    
741 >                  topjet.add_subTrackPtRel(tvlIP.getList(reco::btau::trackPtRel,false));
742 >                  topjet.add_subTrackPPar(tvlIP.getList(reco::btau::trackPPar,false));
743 >                  topjet.add_subTrackPtRatio(tvlIP.getList(reco::btau::trackPtRatio,false));
744 >                  topjet.add_subTrackPParRatio(tvlIP.getList(reco::btau::trackPParRatio,false));
745 >                  topjet.add_subTrackJetDistVal(tvlIP.getList(reco::btau::trackJetDistVal,false));
746 >                  topjet.add_subTrackJetDistSig(tvlIP.getList(reco::btau::trackJetDistSig,false));
747 >                  topjet.add_subTrackGhostTrackDistVal(tvlIP.getList(reco::btau::trackGhostTrackDistVal,false));
748 >                  topjet.add_subTrackGhostTrackDistSig(tvlIP.getList(reco::btau::trackGhostTrackDistSig,false));
749 >                  topjet.add_subTrackGhostTrackWeight(tvlIP.getList(reco::btau::trackGhostTrackWeight,false));
750 >                  //sv tag info
751 >                  reco::TaggingVariableList tvlSV=patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->taggingVariables();
752 >                  topjet.add_subFlightDistance2dVal(tvlSV.getList(reco::btau::flightDistance2dVal,false));
753 >                  topjet.add_subFlightDistance2dSig(tvlSV.getList(reco::btau::flightDistance2dSig,false));
754 >                  topjet.add_subFlightDistance3dVal(tvlSV.getList(reco::btau::flightDistance3dVal,false));
755 >                  topjet.add_subFlightDistance3dSig(tvlSV.getList(reco::btau::flightDistance3dSig,false));
756 >                  topjet.add_subVertexJetDeltaR(tvlSV.getList(reco::btau::vertexJetDeltaR,false));
757 >                  topjet.add_subJetNSecondaryVertices(tvlSV.get(reco::btau::jetNSecondaryVertices,-9999));
758 >                  topjet.add_subVertexNTracks(tvlSV.get(reco::btau::vertexNTracks,-9999));
759 >                  std::vector<TLorentzVector> vp4; vp4.clear();
760 >                  std::vector<float> vchi2; vchi2.clear();
761 >                  std::vector<float> vndof; vndof.clear();
762 >                  std::vector<float> vchi2ndof; vchi2ndof.clear();
763 >                  std::vector<float> vtrsize; vtrsize.clear();
764 >                  for(unsigned int i=0; i<patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->nVertices(); i++)
765 >                    {
766 >                      ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > p4 = patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->secondaryVertex(i).p4();
767 >                      vp4.push_back(TLorentzVector(p4.px(),p4.py(),p4.pz(),p4.e()));
768 >                      vchi2.push_back(patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->secondaryVertex(i).chi2());  
769 >                      vndof.push_back(patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->secondaryVertex(i).ndof());  
770 >                      vchi2ndof.push_back(patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->secondaryVertex(i).normalizedChi2());  
771 >                      vtrsize.push_back(patsubjetd->tagInfoSecondaryVertex("secondaryVertex")->secondaryVertex(i).tracksSize());  
772 >                    }
773 >                  topjet.add_subSecondaryVertex(vp4);
774 >                  topjet.add_subVertexChi2(vchi2);
775 >                  topjet.add_subVertexNdof(vndof);
776 >                  topjet.add_subVertexNormalizedChi2(vchi2ndof);
777 >                  topjet.add_subVertexTracksSize(vtrsize);
778 >                  //try computer
779 >                  edm::ESHandle<JetTagComputer> computerHandle;
780 >                  iSetup.get<JetTagComputerRecord>().get( SVComputer_.label(), computerHandle );
781 >                  const GenericMVAJetTagComputer *computer = dynamic_cast<const GenericMVAJetTagComputer*>( computerHandle.product() );
782 >                  if(computer)
783 >                    {
784 >                      computer->passEventSetup(iSetup);
785 >                      std::vector<const reco::BaseTagInfo*>  baseTagInfos;
786 >                      baseTagInfos.push_back(patsubjetd->tagInfoTrackIP("impactParameter") );
787 >                      baseTagInfos.push_back(patsubjetd->tagInfoSecondaryVertex("secondaryVertex") );      
788 >                      JetTagComputer::TagInfoHelper helper(baseTagInfos);
789 >                      reco::TaggingVariableList vars = computer->taggingVariables(helper);
790 >                      topjet.add_subVertexMassJTC(vars.get(reco::btau::vertexMass,-9999));
791 >                      topjet.add_subVertexCategoryJTC(vars.get(reco::btau::vertexCategory,-9999));
792 >                      topjet.add_subVertexEnergyRatioJTC(vars.get(reco::btau::vertexEnergyRatio,-9999));
793 >                      topjet.add_subTrackSip3dSigAboveCharmJTC(vars.get(reco::btau::trackSip3dSigAboveCharm,-9999));
794 >                    }
795 >                }
796 >           }
797 >           else
798 >             {
799 >               //filling only standard information in case the subjet has not been pat-tified during the pattuples production
800 >               subjet_v4.set_pt(pat_topjet.daughter(k)->p4().pt());
801 >               subjet_v4.set_eta(pat_topjet.daughter(k)->p4().eta());
802 >               subjet_v4.set_phi(pat_topjet.daughter(k)->p4().phi());
803 >               subjet_v4.set_energy(pat_topjet.daughter(k)->p4().E());
804 >               topjet.add_subjet(subjet_v4);
805 >             }
806 >          
807 >          
808           }
809           topjets[j].push_back(topjet);
810         }
811       }
812     }
813 <
814 <
813 >  
814 >  
815     // ------------- generator top jets -------------
816     if(doGenTopJets){
817       for(size_t j=0; j< gentopjet_sources.size(); ++j){
818        
819         gentopjets[j].clear();
820 <
820 >      
821         edm::Handle<reco::BasicJetCollection> reco_gentopjets;
822         //edm::Handle<std::vector<reco::Jet> > reco_gentopjets;
823         iEvent.getByLabel(gentopjet_sources[j], reco_gentopjets);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines