@@ -52,7 +52,7 @@ class BoostedJetToolboxUserData : public edm::EDProducer {
5252
5353
5454 edm::EDGetTokenT<std::vector<pat::Jet> > jToken_;
55- // edm::EDGetTokenT<std::vector<pat::Jet> > tToken_;
55+ edm::EDGetTokenT<std::vector<pat::Jet> > tToken_;
5656 edm::EDGetTokenT<std::vector<pat::Jet> > vToken_;
5757
5858 double distMax_;
@@ -62,8 +62,8 @@ class BoostedJetToolboxUserData : public edm::EDProducer {
6262
6363BoostedJetToolboxUserData::BoostedJetToolboxUserData (const edm::ParameterSet& iConfig) :
6464 jToken_ (consumes<std::vector<pat::Jet> > ( iConfig.getParameter<edm::InputTag>(" jetLabel" ) )),
65- // tToken_ (consumes<std::vector<pat::Jet> > ( iConfig.getParameter<edm::InputTag>("topjetLabel ")) ),
66- vToken_ (consumes<std::vector<pat::Jet> > ( iConfig.getParameter<edm::InputTag>(" vjetLabel " )) ),
65+ tToken_ (consumes<std::vector<pat::Jet> > ( iConfig.getParameter<edm::InputTag>(" puppiSDjetLabel " )) ),
66+ vToken_ (consumes<std::vector<pat::Jet> > ( iConfig.getParameter<edm::InputTag>(" jetWithSubjetLabel " )) ),
6767 distMax_ ( iConfig.getParameter<double >( " distMax" ) )
6868{
6969 produces<vector<pat::Jet> >();
@@ -72,60 +72,50 @@ BoostedJetToolboxUserData::BoostedJetToolboxUserData(const edm::ParameterSet& iC
7272
7373void BoostedJetToolboxUserData::produce ( edm::Event& iEvent, const edm::EventSetup& iSetup) {
7474
75- edm::Handle<std::vector<pat::Jet> > jetHandle, vjetHandle; // topjetHandle
76- iEvent.getByToken (jToken_, jetHandle);
77- // iEvent.getByToken(tToken_, topjetHandle );
78- iEvent.getByToken (vToken_, vjetHandle );
75+ edm::Handle<std::vector<pat::Jet> > jetHandle, jetWithSubjetHandle, puppiSDjetHandle;
76+ iEvent.getByToken (jToken_, jetHandle);
77+ iEvent.getByToken (tToken_, puppiSDjetHandle );
78+ iEvent.getByToken (vToken_, jetWithSubjetHandle );
7979
80+ auto_ptr<vector<pat::Jet> > jetColl ( new vector<pat::Jet> (*jetHandle) );
8081
81- auto_ptr<vector<pat::Jet> > jetColl ( new vector<pat::Jet> (* jetHandle) );
82+ for ( size_t i = 0 ; i< jetHandle-> size (); i++){
8283
84+ pat::Jet & jet = (*jetColl)[i];
8385
84- for (size_t i = 0 ; i< jetHandle->size (); i++){
85- pat::Jet & jet = (*jetColl)[i];
86+ for ( auto const & puppiSDJet : *puppiSDjetHandle ) {
8687
87- /* for ( auto const & topJet : *topjetHandle ) {
88- float temp_dR2 = reco::deltaR2(jet.eta(),jet.phi(),topJet.eta(),topJet.phi());
89- if ( temp_dR2 < distMax_ ) {
90- int topSubjet0=-1, topSubjet1=-1, topSubjet2=-1, topSubjet3=-1;
91- if ( topJet.numberOfDaughters() > 0 )
92- topSubjet0 = topJet.daughterPtr(0).key();
93- if ( topJet.numberOfDaughters() > 1 )
94- topSubjet1 = topJet.daughterPtr(1).key();
95- if ( topJet.numberOfDaughters() > 2 )
96- topSubjet2 = topJet.daughterPtr(2).key();
97- if ( topJet.numberOfDaughters() > 3 )
98- topSubjet3 = topJet.daughterPtr(3).key();
99- jet.addUserInt("TopSubjet0", topSubjet0 );
100- jet.addUserInt("TopSubjet1", topSubjet1 );
101- jet.addUserInt("TopSubjet2", topSubjet2 );
102- jet.addUserInt("TopSubjet3", topSubjet3 );
103- break;
104- }
88+ float temp_dR2 = reco::deltaR2 (jet.eta (),jet.phi (),puppiSDJet.eta (),puppiSDJet.phi ());
89+ if ( temp_dR2 < distMax_ ) {
10590
106- }*/
91+ TLorentzVector puppi_softdrop, puppi_softdrop_subjet;
92+ auto const & sbSubjetsPuppi = puppiSDJet.subjets (" SoftDrop" );
93+ for ( auto const & it : sbSubjetsPuppi ) {
94+ puppi_softdrop_subjet.SetPtEtaPhiM (it->pt (),it->eta (),it->phi (),it->mass ());
95+ puppi_softdrop+=puppi_softdrop_subjet;
96+ }
97+ jet.addUserFloat (" subjetSumMassSoftDropPuppi" , puppi_softdrop.M () );
98+ }
99+ }
107100
108101
102+ for ( auto const & jetWithSubjet : *jetWithSubjetHandle ) {
109103
110- for ( auto const & vJet : *vjetHandle ) {
111- float temp_dR2 = reco::deltaR2 (jet.eta (),jet.phi (),vJet.eta (),vJet.phi ());
112- if ( temp_dR2 < distMax_ ) {
104+ float temp_dR2 = reco::deltaR2 (jet.eta (),jet.phi (),jetWithSubjet.eta (),jetWithSubjet.phi ());
105+ if ( temp_dR2 < distMax_ ) {
106+ int vSubjet0=-1 , vSubjet1=-1 ;
107+ if ( jetWithSubjet.numberOfDaughters () > 0 )
108+ vSubjet0 = jetWithSubjet.daughterPtr (0 ).key ();
109+ if ( jetWithSubjet.numberOfDaughters () > 1 )
110+ vSubjet1 = jetWithSubjet.daughterPtr (1 ).key ();
111+ jet.addUserInt (" VSubjet0" , vSubjet0 );
112+ jet.addUserInt (" VSubjet1" , vSubjet1 );
113+ break ;
114+ }
115+ }
113116
114- int vSubjet0=-1 , vSubjet1=-1 ;
115- if ( vJet.numberOfDaughters () > 0 )
116- vSubjet0 = vJet.daughterPtr (0 ).key ();
117- if ( vJet.numberOfDaughters () > 1 )
118- vSubjet1 = vJet.daughterPtr (1 ).key ();
119- jet.addUserInt (" VSubjet0" , vSubjet0 );
120- jet.addUserInt (" VSubjet1" , vSubjet1 );
121- break ;
122- }
123-
124- }
125-
126- } // // Loop over all jets
127-
128- iEvent.put ( jetColl );
117+ } // // Loop over all jets
118+ iEvent.put ( jetColl );
129119
130120}
131121
0 commit comments