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

Optimizations to the Scouting Data Formats #37646

Merged
merged 9 commits into from
May 3, 2022
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions DataFormats/Scouting/interface/Run3ScoutingElectron.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ class Run3ScoutingElectron {
uint32_t seedId,
std::vector<float> energyMatrix,
std::vector<uint32_t> detIds,
std::vector<float> timingMatrix)
std::vector<float> timingMatrix,
bool rechitZeroSuppression)
: pt_(pt),
eta_(eta),
phi_(phi),
Expand All @@ -54,7 +55,8 @@ class Run3ScoutingElectron {
seedId_(seedId),
energyMatrix_(std::move(energyMatrix)),
detIds_(std::move(detIds)),
timingMatrix_(std::move(timingMatrix)) {}
timingMatrix_(std::move(timingMatrix)),
rechitZeroSuppression_(rechitZeroSuppression) {}
//default constructor
Run3ScoutingElectron()
: pt_(0),
Expand All @@ -76,7 +78,8 @@ class Run3ScoutingElectron {
r9_(0),
sMin_(0),
sMaj_(0),
seedId_(0) {}
seedId_(0),
rechitZeroSuppression_(false) {}

//accessor functions
float pt() const { return pt_; }
Expand All @@ -102,6 +105,7 @@ class Run3ScoutingElectron {
std::vector<float> const& energyMatrix() const { return energyMatrix_; }
std::vector<uint32_t> const& detIds() const { return detIds_; }
std::vector<float> const& timingMatrix() const { return timingMatrix_; }
bool rechitZeroSuppression() const { return rechitZeroSuppression_; }

private:
float pt_;
Expand All @@ -127,6 +131,7 @@ class Run3ScoutingElectron {
std::vector<float> energyMatrix_;
std::vector<uint32_t> detIds_;
std::vector<float> timingMatrix_;
bool rechitZeroSuppression_;
};

typedef std::vector<Run3ScoutingElectron> Run3ScoutingElectronCollection;
Expand Down
16 changes: 8 additions & 8 deletions DataFormats/Scouting/interface/Run3ScoutingParticle.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ class Run3ScoutingParticle {
Run3ScoutingParticle(float pt,
float eta,
float phi,
float m,
int pdgId,
int vertex,
float normchi2,
Expand All @@ -24,11 +23,11 @@ class Run3ScoutingParticle {
uint8_t quality,
float trk_pt,
float trk_eta,
float trk_phi)
float trk_phi,
bool relative_trk_vars)
: pt_(pt),
eta_(eta),
phi_(phi),
m_(m),
pdgId_(pdgId),
vertex_(vertex),
normchi2_(normchi2),
Expand All @@ -40,14 +39,14 @@ class Run3ScoutingParticle {
quality_(quality),
trk_pt_(trk_pt),
trk_eta_(trk_eta),
trk_phi_(trk_phi) {}
trk_phi_(trk_phi),
relative_trk_vars_(relative_trk_vars) {}

// default constractor
Run3ScoutingParticle()
: pt_(0),
eta_(0),
phi_(0),
m_(0),
pdgId_(0),
vertex_(-1),
normchi2_(0),
Expand All @@ -59,13 +58,13 @@ class Run3ScoutingParticle {
quality_(0),
trk_pt_(0),
trk_eta_(0),
trk_phi_(0) {}
trk_phi_(0),
relative_trk_vars_(false) {}

//accessor functions
float pt() const { return pt_; }
float eta() const { return eta_; }
float phi() const { return phi_; }
float m() const { return m_; }
int pdgId() const { return pdgId_; }
int vertex() const { return vertex_; }
float normchi2() const { return normchi2_; }
Expand All @@ -78,12 +77,12 @@ class Run3ScoutingParticle {
float trk_pt() const { return trk_pt_; }
float trk_eta() const { return trk_eta_; }
float trk_phi() const { return trk_phi_; }
bool relative_trk_vars() const { return relative_trk_vars_; }

private:
float pt_;
float eta_;
float phi_;
float m_;
int pdgId_;
int vertex_;
float normchi2_;
Expand All @@ -96,6 +95,7 @@ class Run3ScoutingParticle {
float trk_pt_;
float trk_eta_;
float trk_phi_;
bool relative_trk_vars_;
};

typedef std::vector<Run3ScoutingParticle> Run3ScoutingParticleCollection;
Expand Down
11 changes: 8 additions & 3 deletions DataFormats/Scouting/interface/Run3ScoutingPhoton.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ class Run3ScoutingPhoton {
uint32_t seedId,
std::vector<float> energyMatrix,
std::vector<uint32_t> detIds,
std::vector<float> timingMatrix)
std::vector<float> timingMatrix,
bool rechitZeroSuppression)
: pt_(pt),
eta_(eta),
phi_(phi),
Expand All @@ -40,7 +41,8 @@ class Run3ScoutingPhoton {
seedId_(seedId),
energyMatrix_(std::move(energyMatrix)),
detIds_(std::move(detIds)),
timingMatrix_(std::move(timingMatrix)) {}
timingMatrix_(std::move(timingMatrix)),
rechitZeroSuppression_(rechitZeroSuppression) {}
//default constructor
Run3ScoutingPhoton()
: pt_(0),
Expand All @@ -57,7 +59,8 @@ class Run3ScoutingPhoton {
sMaj_(0),
seedId_(0),
energyMatrix_(0),
timingMatrix_(0) {}
timingMatrix_(0),
rechitZeroSuppression_(false) {}

//accessor functions
float pt() const { return pt_; }
Expand All @@ -76,6 +79,7 @@ class Run3ScoutingPhoton {
std::vector<float> const& energyMatrix() const { return energyMatrix_; }
std::vector<uint32_t> const& detIds() const { return detIds_; }
std::vector<float> const& timingMatrix() const { return timingMatrix_; }
bool rechitZeroSuppression() const { return rechitZeroSuppression_; }

private:
float pt_;
Expand All @@ -94,6 +98,7 @@ class Run3ScoutingPhoton {
std::vector<float> energyMatrix_;
std::vector<uint32_t> detIds_;
std::vector<float> timingMatrix_;
bool rechitZeroSuppression_;
};

typedef std::vector<Run3ScoutingPhoton> Run3ScoutingPhotonCollection;
Expand Down
11 changes: 8 additions & 3 deletions DataFormats/Scouting/src/classes_def.xml
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,27 @@
<class name="Run3ScoutingPFJet" ClassVersion="3">
<version ClassVersion="3" checksum="3819751468"/>
</class>
<class name="Run3ScoutingParticle" ClassVersion="4">
<class name="Run3ScoutingParticle" ClassVersion="7">
<version ClassVersion="7" checksum="2425016900"/>
<version ClassVersion="6" checksum="3844610129"/>
<version ClassVersion="5" checksum="583559071"/>
<version ClassVersion="3" checksum="1672617274"/>
<version ClassVersion="4" checksum="1541586682"/>
</class>
<class name="Run3ScoutingVertex" ClassVersion="3">
<version ClassVersion="3" checksum="316446070"/>
</class>
<class name="Run3ScoutingElectron" ClassVersion="4">
<class name="Run3ScoutingElectron" ClassVersion="5">
<version ClassVersion="5" checksum="2230390721"/>
<version ClassVersion="3" checksum="1086011373"/>
<version ClassVersion="4" checksum="1250202632"/>
</class>
<class name="Run3ScoutingMuon" ClassVersion="4">
<version ClassVersion="3" checksum="3882497397"/>
<version ClassVersion="4" checksum="4206297195"/>
</class>
<class name="Run3ScoutingPhoton" ClassVersion="4">
<class name="Run3ScoutingPhoton" ClassVersion="5">
<version ClassVersion="5" checksum="1238010495"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move below 4 and use consistent indentation.

<version ClassVersion="3" checksum="1683146807"/>
<version ClassVersion="4" checksum="1725280278"/>
</class>
Expand Down
33 changes: 22 additions & 11 deletions HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ HLTScoutingEgammaProducer::HLTScoutingEgammaProducer(const edm::ParameterSet& iC
mantissaPrecision(iConfig.getParameter<int>("mantissaPrecision")),
saveRecHitTiming(iConfig.getParameter<bool>("saveRecHitTiming")),
rechitMatrixSize(iConfig.getParameter<int>("rechitMatrixSize")), //(2n+1)^2
rechitZeroSuppression(iConfig.getParameter<bool>("rechitZeroSuppression")),
ecalRechitEB_(consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("ecalRechitEB"))),
ecalRechitEE_(consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("ecalRechitEE"))) {
//register products
Expand Down Expand Up @@ -212,16 +213,23 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e
std::vector<DetId> mDetIds = EcalClusterTools::matrixDetId((topology), (*SCseed).seed(), rechitMatrixSize);

int detSize = mDetIds.size();
std::vector<uint32_t> mDetIdIds(detSize, 0);
std::vector<float> mEnergies(detSize, 0.);
std::vector<float> mTimes(detSize, 0.);
std::vector<uint32_t> mDetIdIds;
std::vector<float> mEnergies;
std::vector<float> mTimes;
mDetIdIds.reserve(detSize);
mEnergies.reserve(detSize);
mTimes.reserve(detSize);

for (int i = 0; i < detSize; i++) {
mDetIdIds[i] = mDetIds[i];
mEnergies[i] =
MiniFloatConverter::reduceMantissaToNbitsRounding(recHitE(mDetIds[i], *rechits), mantissaPrecision);
if (saveRecHitTiming)
mTimes[i] = MiniFloatConverter::reduceMantissaToNbitsRounding(recHitT(mDetIds[i], *rechits), mantissaPrecision);
if (not rechitZeroSuppression or recHitE(mDetIds[i], *rechits) > 0) {
mDetIdIds.push_back(mDetIds[i]);
mEnergies.push_back(
MiniFloatConverter::reduceMantissaToNbitsRounding(recHitE(mDetIds[i], *rechits), mantissaPrecision));
if (saveRecHitTiming) {
mTimes.push_back(
MiniFloatConverter::reduceMantissaToNbitsRounding(recHitT(mDetIds[i], *rechits), mantissaPrecision));
}
}
}

float HoE = 999.;
Expand Down Expand Up @@ -258,8 +266,9 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e
seedId,
mEnergies,
mDetIdIds,
mTimes); //read for(ieta){for(iphi){}}
} else { // Candidate is a scouting electron
mTimes,
rechitZeroSuppression); //read for(ieta){for(iphi){}}
} else { // Candidate is a scouting electron
outElectrons->emplace_back(candidate.pt(),
candidate.eta(),
candidate.phi(),
Expand All @@ -282,7 +291,8 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e
seedId,
mEnergies,
mDetIdIds,
mTimes); //read for(ieta){for(iphi){}}
mTimes,
rechitZeroSuppression); //read for(ieta){for(iphi){}}
}
}

Expand Down Expand Up @@ -312,6 +322,7 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions&
desc.add<bool>("saveRecHitTiming", false);
desc.add<int>("mantissaPrecision", 10)->setComment("default float16, change to 23 for float32");
desc.add<int>("rechitMatrixSize", 10);
desc.add<bool>("rechitZeroSuppression", true);
desc.add<edm::InputTag>("ecalRechitEB", edm::InputTag("hltEcalRecHit:EcalRecHitsEB"));
desc.add<edm::InputTag>("ecalRechitEE", edm::InputTag("hltEcalRecHit:EcalRecHitsEE"));
descriptions.add("hltScoutingEgammaProducer", desc);
Expand Down
1 change: 1 addition & 0 deletions HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class HLTScoutingEgammaProducer : public edm::global::EDProducer<> {
const int mantissaPrecision;
const bool saveRecHitTiming;
const int rechitMatrixSize;
const bool rechitZeroSuppression;

const edm::EDGetTokenT<EcalRecHitCollection> ecalRechitEB_;
const edm::EDGetTokenT<EcalRecHitCollection> ecalRechitEE_;
Expand Down
57 changes: 32 additions & 25 deletions HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class HLTScoutingPFProducer : public edm::global::EDProducer<> {
const bool doJetTags_;
const bool doCandidates_;
const bool doMet_;
const bool doTrackRelVars_;
const bool doTrackVars_;
const bool relativeTrackVars_;
const bool doCandIndsForJets_;
};

Expand All @@ -91,7 +92,8 @@ HLTScoutingPFProducer::HLTScoutingPFProducer(const edm::ParameterSet &iConfig)
doJetTags_(iConfig.getParameter<bool>("doJetTags")),
doCandidates_(iConfig.getParameter<bool>("doCandidates")),
doMet_(iConfig.getParameter<bool>("doMet")),
doTrackRelVars_(iConfig.getParameter<bool>("doTrackRelVars")),
doTrackVars_(iConfig.getParameter<bool>("doTrackVars")),
relativeTrackVars_(iConfig.getParameter<bool>("relativeTrackVars")),
doCandIndsForJets_(iConfig.getParameter<bool>("doCandIndsForJets")) {
//register products
produces<Run3ScoutingPFJetCollection>();
Expand Down Expand Up @@ -162,16 +164,21 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm::
}
float normchi2{0}, dz{0}, dxy{0}, dzError{0}, dxyError{0}, trk_pt{0}, trk_eta{0}, trk_phi{0};
uint8_t lostInnerHits{0}, quality{0};
if (doTrackRelVars_) {
if (doTrackVars_) {
const auto *trk = cand.bestTrack();
if (trk != nullptr) {
normchi2 = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->normalizedChi2(), mantissaPrecision_);
lostInnerHits = btagbtvdeep::lost_inner_hits_from_pfcand(cand);
quality = btagbtvdeep::quality_from_pfcand(cand);
trk_pt = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->pt(), mantissaPrecision_);
trk_eta = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->eta(), mantissaPrecision_);
trk_phi = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->phi(), mantissaPrecision_);

if (relativeTrackVars_) {
trk_pt = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->pt() - cand.pt(), mantissaPrecision_);
trk_eta = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->eta() - cand.eta(), mantissaPrecision_);
trk_phi = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->phi() - cand.phi(), mantissaPrecision_);
} else {
trk_pt = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->pt(), mantissaPrecision_);
trk_eta = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->eta(), mantissaPrecision_);
trk_phi = MiniFloatConverter::reduceMantissaToNbitsRounding(trk->phi(), mantissaPrecision_);
}
if (not vertexCollection->empty()) {
const reco::Vertex &pv = (*vertexCollection)[0];

Expand All @@ -187,23 +194,22 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm::
normchi2 = MiniFloatConverter::reduceMantissaToNbitsRounding(999, mantissaPrecision_);
}
}
outPFCandidates->emplace_back(
MiniFloatConverter::reduceMantissaToNbitsRounding(cand.pt(), mantissaPrecision_),
MiniFloatConverter::reduceMantissaToNbitsRounding(cand.eta(), mantissaPrecision_),
MiniFloatConverter::reduceMantissaToNbitsRounding(cand.phi(), mantissaPrecision_),
MiniFloatConverter::reduceMantissaToNbitsRounding(cand.mass(), mantissaPrecision_),
cand.pdgId(),
vertex_index,
normchi2,
dz,
dxy,
dzError,
dxyError,
lostInnerHits,
quality,
trk_pt,
trk_eta,
trk_phi);
outPFCandidates->emplace_back(MiniFloatConverter::reduceMantissaToNbitsRounding(cand.pt(), mantissaPrecision_),
MiniFloatConverter::reduceMantissaToNbitsRounding(cand.eta(), mantissaPrecision_),
MiniFloatConverter::reduceMantissaToNbitsRounding(cand.phi(), mantissaPrecision_),
cand.pdgId(),
vertex_index,
normchi2,
dz,
dxy,
dzError,
dxyError,
lostInnerHits,
quality,
trk_pt,
trk_eta,
trk_phi,
relativeTrackVars_);
}
}
}
Expand Down Expand Up @@ -314,7 +320,8 @@ void HLTScoutingPFProducer::fillDescriptions(edm::ConfigurationDescriptions &des
desc.add<bool>("doJetTags", true);
desc.add<bool>("doCandidates", true);
desc.add<bool>("doMet", true);
desc.add<bool>("doTrackRelVars", true);
desc.add<bool>("doTrackVars", true);
desc.add<bool>("relativeTrackVars", true);
desc.add<bool>("doCandIndsForJets", false);
descriptions.addWithDefaultLabel(desc);
}
Expand Down