Skip to content

Commit

Permalink
further generalization for N's used in the tauN computation
Browse files Browse the repository at this point in the history
  • Loading branch information
ferencek committed Jul 16, 2014
1 parent 994d68d commit a7c2001
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 42 deletions.
28 changes: 17 additions & 11 deletions RecoJets/JetProducers/interface/NjettinessAdder.h
Expand Up @@ -12,25 +12,31 @@

class NjettinessAdder : public edm::EDProducer {
public:
explicit NjettinessAdder(const edm::ParameterSet& iConfig) :
src_(iConfig.getParameter<edm::InputTag>("src")),
src_token_(consumes<edm::View<reco::Jet>>(src_)),
cone_(iConfig.getParameter<double>("cone"))
explicit NjettinessAdder(const edm::ParameterSet& iConfig) :
src_(iConfig.getParameter<edm::InputTag>("src")),
src_token_(consumes<edm::View<reco::Jet>>(src_)),
cone_(iConfig.getParameter<double>("cone")),
Njets_(iConfig.getParameter<std::vector<unsigned> >("Njets"))
{
for ( std::vector<unsigned>::const_iterator n = Njets_.begin(); n != Njets_.end(); ++n )
{
produces<edm::ValueMap<float> >("tau1");
produces<edm::ValueMap<float> >("tau2");
produces<edm::ValueMap<float> >("tau3");
std::ostringstream tauN_str;
tauN_str << "tau" << *n;

produces<edm::ValueMap<float> >(tauN_str.str().c_str());
}
}

virtual ~NjettinessAdder() {}

void produce(edm::Event & iEvent, const edm::EventSetup & iSetup) ;
float getTau(int num, const edm::Ptr<reco::Jet> & object) const;
float getTau(unsigned num, const edm::Ptr<reco::Jet> & object) const;

private:
edm::InputTag src_ ;
edm::EDGetTokenT<edm::View<reco::Jet>> src_token_;
double cone_ ;
const edm::InputTag src_;
const edm::EDGetTokenT<edm::View<reco::Jet>> src_token_;
const double cone_ ;
const std::vector<unsigned> Njets_;
};

#endif
51 changes: 21 additions & 30 deletions RecoJets/JetProducers/plugins/NjettinessAdder.cc
Expand Up @@ -8,43 +8,34 @@ void NjettinessAdder::produce(edm::Event & iEvent, const edm::EventSetup & iSetu
edm::Handle<edm::View<reco::Jet> > jets;
iEvent.getByToken(src_token_, jets);

// prepare room for output
std::vector<float> tau1; tau1.reserve(jets->size());
std::vector<float> tau2; tau2.reserve(jets->size());
std::vector<float> tau3; tau3.reserve(jets->size());
for ( std::vector<unsigned>::const_iterator n = Njets_.begin(); n != Njets_.end(); ++n )
{
std::ostringstream tauN_str;
tauN_str << "tau" << *n;

for ( typename edm::View<reco::Jet>::const_iterator jetIt = jets->begin() ; jetIt != jets->end() ; ++jetIt ) {
// prepare room for output
std::vector<float> tauN;
tauN.reserve(jets->size());

edm::Ptr<reco::Jet> jetPtr = jets->ptrAt(jetIt - jets->begin());
for ( typename edm::View<reco::Jet>::const_iterator jetIt = jets->begin() ; jetIt != jets->end() ; ++jetIt ) {

float t1=getTau(1, jetPtr );
float t2=getTau(2, jetPtr );
float t3=getTau(3, jetPtr );
edm::Ptr<reco::Jet> jetPtr = jets->ptrAt(jetIt - jets->begin());

tau1.push_back(t1);
tau2.push_back(t2);
tau3.push_back(t3);
}
float t=getTau( *n, jetPtr );

std::auto_ptr<edm::ValueMap<float> > outT1(new edm::ValueMap<float>());
std::auto_ptr<edm::ValueMap<float> > outT2(new edm::ValueMap<float>());
std::auto_ptr<edm::ValueMap<float> > outT3(new edm::ValueMap<float>());
edm::ValueMap<float>::Filler fillerT1(*outT1);
edm::ValueMap<float>::Filler fillerT2(*outT2);
edm::ValueMap<float>::Filler fillerT3(*outT3);
fillerT1.insert(jets, tau1.begin(), tau1.end());
fillerT2.insert(jets, tau2.begin(), tau2.end());
fillerT3.insert(jets, tau3.begin(), tau3.end());
fillerT1.fill();
fillerT2.fill();
fillerT3.fill();

iEvent.put(outT1,"tau1");
iEvent.put(outT2,"tau2");
iEvent.put(outT3,"tau3");
tauN.push_back(t);
}

std::auto_ptr<edm::ValueMap<float> > outT(new edm::ValueMap<float>());
edm::ValueMap<float>::Filler fillerT(*outT);
fillerT.insert(jets, tauN.begin(), tauN.end());
fillerT.fill();

iEvent.put(outT,tauN_str.str().c_str());
}
}

float NjettinessAdder::getTau(int num, const edm::Ptr<reco::Jet> & object) const
float NjettinessAdder::getTau(unsigned num, const edm::Ptr<reco::Jet> & object) const
{
std::vector<fastjet::PseudoJet> FJparticles;
for (unsigned k = 0; k < object->numberOfDaughters(); ++k)
Expand Down
3 changes: 2 additions & 1 deletion RecoJets/JetProducers/python/nJettinessAdder_cfi.py
Expand Up @@ -2,5 +2,6 @@

Njettiness = cms.EDProducer("NjettinessAdder",
src=cms.InputTag("ca8PFJetsCHS"),
cone=cms.double(0.8)
cone=cms.double(0.8),
Njets=cms.vuint32(1,2,3)
)

0 comments on commit a7c2001

Please sign in to comment.