Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernized L1TCaloRCTToUpgradeConverter #29118

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
172 changes: 86 additions & 86 deletions L1Trigger/L1TCalorimeter/plugins/L1TCaloRCTToUpgradeConverter.cc
@@ -1,4 +1,31 @@
#include "L1Trigger/L1TCalorimeter/plugins/L1TCaloRCTToUpgradeConverter.h"
// -*- C++ -*-
//
// Package: L1Trigger/L1TCalorimeter
// Class: L1TCaloRCTToUpgradeConverter
//
/**\class l1t::L1TCaloRCTToUpgradeConverter L1TCaloRCTToUpgradeConverter.cc L1Trigger/L1TCalorimeter/plugins/L1TCaloRCTToUpgradeConverter.cc

Description: [one line class summary]

Implementation:
[Notes on implementation]
*/
//
// Original Author: James Brooke
// Created: Thu, 05 Dec 2013 17:39:27 GMT
//
//
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/global/EDProducer.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/Utilities/interface/EDPutToken.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include "DataFormats/L1CaloTrigger/interface/L1CaloEmCand.h"
#include "DataFormats/L1CaloTrigger/interface/L1CaloRegion.h"
Expand All @@ -13,145 +40,118 @@

#include <vector>

using namespace l1t;
namespace l1t {

L1TCaloRCTToUpgradeConverter::L1TCaloRCTToUpgradeConverter(const edm::ParameterSet& ps) {
produces<CaloRegionBxCollection>();
produces<CaloEmCandBxCollection>();
class L1TCaloRCTToUpgradeConverter : public edm::global::EDProducer<> {
public:
explicit L1TCaloRCTToUpgradeConverter(const edm::ParameterSet& ps);

rgnToken_ = consumes<L1CaloRegionCollection>(ps.getParameter<edm::InputTag>("regionTag"));
emToken_ = consumes<L1CaloEmCollection>(ps.getParameter<edm::InputTag>("emTag"));
}
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;

// ----------member data ---------------------------

edm::EDGetTokenT<L1CaloRegionCollection> const rgnToken_;
edm::EDGetTokenT<L1CaloEmCollection> const emToken_;

L1TCaloRCTToUpgradeConverter::~L1TCaloRCTToUpgradeConverter() {}
edm::EDPutTokenT<CaloRegionBxCollection> const rgnPutToken_;
edm::EDPutTokenT<CaloEmCandBxCollection> const emPutToken_;
};

} // namespace l1t

using namespace l1t;

L1TCaloRCTToUpgradeConverter::L1TCaloRCTToUpgradeConverter(const edm::ParameterSet& ps)
: rgnToken_{consumes<L1CaloRegionCollection>(ps.getParameter<edm::InputTag>("regionTag"))},
emToken_{consumes<L1CaloEmCollection>(ps.getParameter<edm::InputTag>("emTag"))},
rgnPutToken_{produces<CaloRegionBxCollection>()},
emPutToken_{produces<CaloEmCandBxCollection>()} {}

// ------------ method called to produce the data ------------
void L1TCaloRCTToUpgradeConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
void L1TCaloRCTToUpgradeConverter::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
// check status of RCT conditions & renew if needed

// store new formats
std::unique_ptr<BXVector<CaloEmCand> > emcands(new CaloEmCandBxCollection);
std::unique_ptr<BXVector<CaloRegion> > regions(new CaloRegionBxCollection);
BXVector<CaloEmCand> emcands;
BXVector<CaloRegion> regions;

// get old formats
edm::Handle<L1CaloEmCollection> ems;
edm::Handle<L1CaloRegionCollection> rgns;

iEvent.getByToken(emToken_, ems);
iEvent.getByToken(rgnToken_, rgns);
auto const& ems = iEvent.get(emToken_);
auto const& rgns = iEvent.get(rgnToken_);

// get the firstBx_ and lastBx_ from the input datatypes (assume bx for em same as rgn)
int firstBx = 0;
int lastBx = 0;
for (std::vector<L1CaloEmCand>::const_iterator em = ems->begin(); em != ems->end(); ++em) {
int bx = em->bx();
for (auto const& em : ems) {
int bx = em.bx();
if (bx < firstBx)
firstBx = bx;
if (bx > lastBx)
lastBx = bx;
}

emcands->setBXRange(firstBx, lastBx);
regions->setBXRange(firstBx, lastBx);
emcands.setBXRange(firstBx, lastBx);
regions.setBXRange(firstBx, lastBx);

const ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > p4(0, 0, 0, 0);

// loop over EM
for (std::vector<L1CaloEmCand>::const_iterator em = ems->begin(); em != ems->end(); ++em) {
for (auto const& em : ems) {
// get physical units
// double pt = 0.;
// double eta = 0.;
// double phi = 0.;
//math::PtEtaPhiMLorentzVector p4( pt+1.e-6, eta, phi, 0. );
ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > p4(0, 0, 0, 0);

//CaloStage1Cluster cluster;
CaloEmCand EmCand(*&p4, (int)em->rank(), (int)em->regionId().ieta(), (int)em->regionId().iphi(), (int)em->index());
CaloEmCand EmCand(p4, (int)em.rank(), (int)em.regionId().ieta(), (int)em.regionId().iphi(), (int)em.index());

EmCand.setHwIso((int)em->isolated());
//std::cout<<"ISO: "<<EmCand.hwIso()<<" "<<em->isolated()<<std::endl;
EmCand.setHwIso((int)em.isolated());
//std::cout<<"ISO: "<<EmCand.hwIso()<<" "<<em.isolated()<<std::endl;

// create new format
emcands->push_back(em->bx(), EmCand);
emcands.push_back(em.bx(), EmCand);
}

// loop over regions
for (std::vector<L1CaloRegion>::const_iterator rgn = rgns->begin(); rgn != rgns->end(); ++rgn) {
for (auto const& rgn : rgns) {
// get physical units
// double pt = 0.;
// double eta = 0.;
// double phi = 0.;
//math::PtEtaPhiMLorentzVector p4( pt+1.e-6, eta, phi, 0 );

bool tauVeto = rgn->fineGrain(); //equivalent to tauVeto for HB/HE, includes extra info for HF
bool tauVeto = rgn.fineGrain(); //equivalent to tauVeto for HB/HE, includes extra info for HF
int hwQual = (int)tauVeto;

ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > p4(0, 0, 0, 0);

// create new format
// several values here are stage 2 only, leave empty
CaloRegion region(*&p4, // LorentzVector& p4,
0., // etEm,
0., // etHad,
(int)rgn->et(), // pt,
(int)rgn->id().ieta(), // eta,
(int)rgn->id().iphi(), // phi,
hwQual, // qual,
0, // hwEtEm,
0); // hwEtHad
CaloRegion region(p4, // LorentzVector& p4,
0., // etEm,
0., // etHad,
(int)rgn.et(), // pt,
(int)rgn.id().ieta(), // eta,
(int)rgn.id().iphi(), // phi,
hwQual, // qual,
0, // hwEtEm,
0); // hwEtHad

// add to output
regions->push_back(rgn->bx(), region);
regions.push_back(rgn.bx(), region);
}

iEvent.put(std::move(emcands));
iEvent.put(std::move(regions));
iEvent.emplace(emPutToken_, std::move(emcands));
iEvent.emplace(rgnPutToken_, std::move(regions));
}

// ------------ method called once each job just before starting event loop ------------
void L1TCaloRCTToUpgradeConverter::beginJob() {}

// ------------ method called once each job just after ending the event loop ------------
void L1TCaloRCTToUpgradeConverter::endJob() {}

// ------------ method called when starting to processes a run ------------
/*
void
L1TCaloRCTToUpgradeConverter::beginRun(edm::Run const&, edm::EventSetup const&)
{
}
*/

// ------------ method called when ending the processing of a run ------------
/*
void
L1TCaloRCTToUpgradeConverter::endRun(edm::Run const&, edm::EventSetup const&)
{
}
*/

// ------------ method called when starting to processes a luminosity block ------------
/*
void
L1TCaloRCTToUpgradeConverter::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup cons
t&)
{
}
*/

// ------------ method called when ending the processing of a luminosity block ------------
/*
void
L1TCaloRCTToUpgradeConverter::endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&
)
{
}
*/

// ------------ method fills 'descriptions' with the allowed parameters for the module ------------
void L1TCaloRCTToUpgradeConverter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
//The following says we do not know what parameters are allowed so do no validation
// Please change this to state exactly what you do use, even if it is no parameters
edm::ParameterSetDescription desc;
desc.setUnknown();
desc.add<edm::InputTag>("regionTag");
desc.add<edm::InputTag>("emTag");
descriptions.addDefault(desc);
}

Expand Down
74 changes: 0 additions & 74 deletions L1Trigger/L1TCalorimeter/plugins/L1TCaloRCTToUpgradeConverter.h

This file was deleted.