Skip to content

Commit

Permalink
addressing Review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
pmeridian committed Feb 3, 2020
1 parent f6caa8e commit e2abc64
Show file tree
Hide file tree
Showing 14 changed files with 341 additions and 319 deletions.
1 change: 0 additions & 1 deletion CommonTools/RecoAlgos/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
<use name="TrackingTools/Records"/>
<use name="TrackingTools/IPTools"/>
<use name="TrackingTools/TransientTrack"/>
<use name="CommonTools/MVAUtils"/>
<use name="fastjet"/>

<export>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ pat::PATPackedCandidateProducer::PATPackedCandidateProducer(const edm::Parameter
pfCandidateTypesForHcalDepth_(iConfig.getParameter<std::vector<int>>("pfCandidateTypesForHcalDepth")),
storeHcalDepthEndcapOnly_(iConfig.getParameter<bool>("storeHcalDepthEndcapOnly")),
storeTiming_(iConfig.getParameter<bool>("storeTiming")),
timeFromValueMap_(!iConfig.getParameter<edm::InputTag>("timeMap").encode().empty() ||
timeFromValueMap_(!iConfig.getParameter<edm::InputTag>("timeMap").encode().empty() &&
!iConfig.getParameter<edm::InputTag>("timeMapErr").encode().empty()),
t0Map_(timeFromValueMap_ ? consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("timeMap"))
: edm::EDGetTokenT<edm::ValueMap<float>>()),
Expand Down
2 changes: 1 addition & 1 deletion RecoMTD/Configuration/python/RecoMTD_EventContent_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
RecoMTDAOD = cms.PSet(
outputCommands = cms.untracked.vstring(
'keep *_trackExtenderWithMTD_*_*',
'keep *_trackPUIDMVA_*_*'
'keep *_mtdTrackQualityMVA_*_*'
)
)

Expand Down
4 changes: 2 additions & 2 deletions RecoMTD/Configuration/python/RecoMTD_cff.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FWCore.ParameterSet.Config as cms

from RecoMTD.TrackExtender.trackExtenderWithMTD_cfi import *
from RecoMTD.TimingIDTools.trackPUIDMVA_cfi import *
from RecoMTD.TimingIDTools.mtdTrackQualityMVA_cfi import *

fastTimingGlobalRecoTask = cms.Task(trackExtenderWithMTD,trackPUIDMVA)
fastTimingGlobalRecoTask = cms.Task(trackExtenderWithMTD,mtdTrackQualityMVA)
fastTimingGlobalReco = cms.Sequence(fastTimingGlobalRecoTask)
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef COMMONTOOLS_RECOALGOS_TRACKPUIDMVA
#define COMMONTOOLS_RECOALGOS_TRACKPUIDMVA
#ifndef RECOMTD_TIMINGIDTOOLS_MTDTRACKQUALITYMVA
#define RECOMTD_TIMINGIDTOOLS_MTDTRACKQUALITYMVA

#include "DataFormats/VertexReco/interface/Vertex.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"
Expand All @@ -9,13 +9,36 @@

#include "CommonTools/MVAUtils/interface/TMVAEvaluator.h"

class TrackPUIDMVA {
#define MTDTRACKQUALITYMVA_VARS(VAR) \
VAR(pt) \
VAR(eta) \
VAR(phi) \
VAR(chi2) \
VAR(ndof) \
VAR(numberOfValidHits) \
VAR(numberOfValidPixelBarrelHits) \
VAR(numberOfValidPixelEndcapHits) \
VAR(btlMatchChi2) \
VAR(btlMatchTimeChi2) \
VAR(etlMatchChi2) \
VAR(etlMatchTimeChi2) \
VAR(mtdt) \
VAR(path_len) \

#define VAR_ENUM(ENUM) ENUM,
#define VAR_STRING(STRING) #STRING,

class MTDTrackQualityMVA {
public:
//---ctors---
TrackPUIDMVA(std::string weights_file);
MTDTrackQualityMVA(std::string weights_file);

//---dtor---
~TrackPUIDMVA(){};
~MTDTrackQualityMVA(){};

enum varID {
MTDTRACKQUALITYMVA_VARS(VAR_ENUM)
};

//---getters---
// 4D
Expand All @@ -31,6 +54,8 @@ class TrackPUIDMVA {
private:
std::vector<std::string> vars_, spec_vars_;
std::unique_ptr<TMVAEvaluator> mva_;


};

#endif
2 changes: 0 additions & 2 deletions RecoMTD/TimingIDTools/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
<export>
</export>
<library name="RecoMTDTimingIDTools_plugins" file="*.cc">
<use name="FWCore/Framework"/>
<use name="FWCore/ParameterSet"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/VertexReco/interface/Vertex.h"

#include "RecoMTD/TimingIDTools/interface/TrackPUIDMVA.h"
#include "RecoMTD/TimingIDTools/interface/MTDTrackQualityMVA.h"

using namespace std;
using namespace edm;

class TrackPUIDMVAProducer : public edm::stream::EDProducer<> {
class MTDTrackQualityMVAProducer : public edm::stream::EDProducer<> {
public:
TrackPUIDMVAProducer(const ParameterSet& pset);
MTDTrackQualityMVAProducer(const ParameterSet& pset);

static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

Expand All @@ -46,10 +46,10 @@ class TrackPUIDMVAProducer : public edm::stream::EDProducer<> {
edm::EDGetTokenT<edm::ValueMap<float>> pathLengthToken_;
edm::EDGetTokenT<edm::ValueMap<int>> trackAssocToken_;

TrackPUIDMVA mva_;
MTDTrackQualityMVA mva_;
};

TrackPUIDMVAProducer::TrackPUIDMVAProducer(const ParameterSet& iConfig)
MTDTrackQualityMVAProducer::MTDTrackQualityMVAProducer(const ParameterSet& iConfig)
: tracksToken_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracksSrc"))),
tracksMTDToken_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracksMTDSrc"))),
btlMatchChi2Token_(consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("btlMatchChi2Src"))),
Expand All @@ -61,12 +61,12 @@ TrackPUIDMVAProducer::TrackPUIDMVAProducer(const ParameterSet& iConfig)
mtdTimeToken_(consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("mtdTimeSrc"))),
pathLengthToken_(consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("pathLengthSrc"))),
trackAssocToken_(consumes<edm::ValueMap<int>>(iConfig.getParameter<edm::InputTag>("trackAssocSrc"))),
mva_(iConfig.getParameter<edm::FileInPath>("trackPUID_mtdQualBDT_weights_file").fullPath()) {
mva_(iConfig.getParameter<edm::FileInPath>("qualityBDT_weights_file").fullPath()) {
produces<edm::ValueMap<float>>(mvaName);
}

// Configuration descriptions
void TrackPUIDMVAProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
void MTDTrackQualityMVAProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("tracksSrc", edm::InputTag("generalTracks"))->setComment("Input tracks collection");
desc.add<edm::InputTag>("tracksMTDSrc", edm::InputTag("trackExtenderWithMTD"))
Expand All @@ -85,14 +85,14 @@ void TrackPUIDMVAProducer::fillDescriptions(edm::ConfigurationDescriptions& desc
->setComment("MTD PathLength value Map");
desc.add<edm::InputTag>("trackAssocSrc", edm::InputTag("trackExtenderWithMTD", "generalTrackassoc"))
->setComment("Association between General and MTD Extended tracks");
desc.add<edm::FileInPath>("trackPUID_mtdQualBDT_weights_file",
desc.add<edm::FileInPath>("qualityBDT_weights_file",
edm::FileInPath("RecoMTD/TimingIDTools/data/clf4D_MTDquality_bo.xml"))
->setComment("Track MTD quality BDT weights");
descriptions.add("trackPUIDMVAProducer", desc);
descriptions.add("mtdTrackQualityMVAProducer", desc);
}

template <class H, class T>
void TrackPUIDMVAProducer::fillValueMap(edm::Event& iEvent,
void MTDTrackQualityMVAProducer::fillValueMap(edm::Event& iEvent,
const edm::Handle<H>& handle,
const std::vector<T>& vec,
const std::string& name) const {
Expand All @@ -103,7 +103,7 @@ void TrackPUIDMVAProducer::fillValueMap(edm::Event& iEvent,
iEvent.put(std::move(out), name);
}

void TrackPUIDMVAProducer::produce(edm::Event& ev, const edm::EventSetup& es) {
void MTDTrackQualityMVAProducer::produce(edm::Event& ev, const edm::EventSetup& es) {
edm::Handle<reco::TrackCollection> tracksH;
ev.getByToken(tracksToken_, tracksH);
const auto& tracks = *tracksH;
Expand Down Expand Up @@ -137,4 +137,4 @@ void TrackPUIDMVAProducer::produce(edm::Event& ev, const edm::EventSetup& es) {

//define this as a plug-in
#include <FWCore/Framework/interface/MakerMacros.h>
DEFINE_FWK_MODULE(TrackPUIDMVAProducer);
DEFINE_FWK_MODULE(MTDTrackQualityMVAProducer);
5 changes: 5 additions & 0 deletions RecoMTD/TimingIDTools/python/mtdTrackQualityMVA_cfi.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import FWCore.ParameterSet.Config as cms

from RecoMTD.TimingIDTools.mtdTrackQualityMVAProducer_cfi import *

mtdTrackQualityMVA = mtdTrackQualityMVAProducer.clone()
5 changes: 0 additions & 5 deletions RecoMTD/TimingIDTools/python/trackPUIDMVA_cfi.py

This file was deleted.

52 changes: 52 additions & 0 deletions RecoMTD/TimingIDTools/src/MTDTrackQualityMVA.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include "RecoMTD/TimingIDTools/interface/MTDTrackQualityMVA.h"

MTDTrackQualityMVA::MTDTrackQualityMVA(std::string weights_file) {
std::string options("!Color:Silent");
std::string method("BDT");

std::string vars_array[] = { MTDTRACKQUALITYMVA_VARS(VAR_STRING) };
int nvars = sizeof(vars_array) / sizeof(vars_array[0]);
vars_.assign(vars_array,vars_array+nvars);

mva_ = std::make_unique<TMVAEvaluator>();
mva_->initialize(options, method, weights_file, vars_, spec_vars_, true, false); //use GBR, GradBoost
}

float MTDTrackQualityMVA::operator()(const reco::TrackRef& trk,
const reco::TrackRef& ext_trk,
const edm::ValueMap<float>& btl_chi2s,
const edm::ValueMap<float>& btl_time_chi2s,
const edm::ValueMap<float>& etl_chi2s,
const edm::ValueMap<float>& etl_time_chi2s,
const edm::ValueMap<float>& tmtds,
const edm::ValueMap<float>& trk_lengths) const {
const auto& pattern = ext_trk->hitPattern();

std::map<std::string, float> vars;

//---training performed only above 0.5 GeV
constexpr float minPtForMVA = 0.5;
if (trk->pt() < minPtForMVA)
return -1;

//---training performed only for tracks with MTD hits
if (tmtds[ext_trk] > 0) {
vars.emplace(vars_[pt], trk->pt());
vars.emplace(vars_[eta], trk->eta());
vars.emplace(vars_[phi], trk->phi());
vars.emplace(vars_[chi2], trk->chi2());
vars.emplace(vars_[ndof], trk->ndof());
vars.emplace(vars_[numberOfValidHits], trk->numberOfValidHits());
vars.emplace(vars_[numberOfValidPixelBarrelHits], pattern.numberOfValidPixelBarrelHits());
vars.emplace(vars_[numberOfValidPixelEndcapHits], pattern.numberOfValidPixelEndcapHits());
vars.emplace(vars_[btlMatchChi2], btl_chi2s.contains(ext_trk.id()) ? btl_chi2s[ext_trk] : -1);
vars.emplace(vars_[btlMatchTimeChi2], btl_time_chi2s.contains(ext_trk.id()) ? btl_time_chi2s[ext_trk] : -1);
vars.emplace(vars_[etlMatchChi2], etl_chi2s.contains(ext_trk.id()) ? etl_chi2s[ext_trk] : -1);
vars.emplace(vars_[etlMatchTimeChi2], etl_time_chi2s.contains(ext_trk.id()) ? etl_time_chi2s[ext_trk] : -1);
vars.emplace(vars_[mtdt], tmtds[ext_trk]);
vars.emplace(vars_[path_len], trk_lengths[ext_trk]);
return 1. /
(1 + sqrt(2 / (1 + mva_->evaluate(vars, false)) - 1)); //return values between 0-1 (probability)
} else
return -1;
}
63 changes: 0 additions & 63 deletions RecoMTD/TimingIDTools/src/TrackPUIDMVA.cc

This file was deleted.

Loading

0 comments on commit e2abc64

Please sign in to comment.