Skip to content

Commit f046bd8

Browse files
committed
add fillDescriptions to AnalyticalTrackSelector
1 parent c6b3321 commit f046bd8

File tree

1 file changed

+96
-36
lines changed

1 file changed

+96
-36
lines changed

RecoTracker/FinalTrackSelectors/plugins/AnalyticalTrackSelector.cc

+96-36
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,22 @@
1313
#include <memory>
1414
#include <algorithm>
1515
#include <map>
16-
#include "FWCore/Framework/interface/Event.h"
17-
#include "FWCore/ParameterSet/interface/ParameterSet.h"
18-
#include "FWCore/Utilities/interface/InputTag.h"
1916

20-
#include "DataFormats/TrackReco/interface/TrackFwd.h"
17+
#include "CommonTools/Utils/interface/StringCutObjectSelector.h"
18+
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
2119
#include "DataFormats/TrackReco/interface/Track.h"
2220
#include "DataFormats/TrackReco/interface/TrackExtra.h"
23-
#include "DataFormats/VertexReco/interface/VertexFwd.h"
21+
#include "DataFormats/TrackReco/interface/TrackFwd.h"
22+
#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h"
2423
#include "DataFormats/VertexReco/interface/Vertex.h"
25-
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
26-
#include "TrackingTools/PatternTools/interface/Trajectory.h"
24+
#include "DataFormats/VertexReco/interface/VertexFwd.h"
25+
#include "FWCore/Framework/interface/Event.h"
26+
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
27+
#include "FWCore/ParameterSet/interface/ParameterSet.h"
28+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
29+
#include "FWCore/Utilities/interface/InputTag.h"
2730
#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
28-
#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h"
29-
#include "CommonTools/Utils/interface/StringCutObjectSelector.h"
31+
#include "TrackingTools/PatternTools/interface/Trajectory.h"
3032

3133
#include "MultiTrackSelector.h"
3234

@@ -38,7 +40,9 @@ class dso_hidden AnalyticalTrackSelector final : public MultiTrackSelector {
3840
/// constructor
3941
explicit AnalyticalTrackSelector(const edm::ParameterSet& cfg);
4042
/// destructor
41-
~AnalyticalTrackSelector() override;
43+
~AnalyticalTrackSelector() override = default;
44+
/// fillDescriptions
45+
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
4246

4347
private:
4448
typedef math::XYZPoint Point;
@@ -101,10 +105,8 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) :
101105
produces<edm::ValueMap<float>>("MVAVals");
102106
//foward compatibility
103107
produces<MVACollection>("MVAValues");
104-
useAnyMVA_ = false;
105108
forest_[0] = nullptr;
106-
if (cfg.exists("useAnyMVA"))
107-
useAnyMVA_ = cfg.getParameter<bool>("useAnyMVA");
109+
useAnyMVA_ = cfg.getParameter<bool>("useAnyMVA");
108110

109111
src_ = consumes<reco::TrackCollection>(cfg.getParameter<edm::InputTag>("src"));
110112
hSrc_ = consumes<TrackingRecHitCollection>(cfg.getParameter<edm::InputTag>("src"));
@@ -146,16 +148,14 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) :
146148
min_hits_bypass_.push_back(cfg.getParameter<uint32_t>("minHitsToBypassChecks"));
147149
max_relpterr_.push_back(cfg.getParameter<double>("max_relpterr"));
148150
min_nhits_.push_back(cfg.getParameter<uint32_t>("min_nhits"));
149-
max_minMissHitOutOrIn_.push_back(
150-
cfg.existsAs<int32_t>("max_minMissHitOutOrIn") ? cfg.getParameter<int32_t>("max_minMissHitOutOrIn") : 99);
151-
max_lostHitFraction_.push_back(
152-
cfg.existsAs<double>("max_lostHitFraction") ? cfg.getParameter<double>("max_lostHitFraction") : 1.0);
151+
max_minMissHitOutOrIn_.push_back(cfg.getParameter<int32_t>("max_minMissHitOutOrIn"));
152+
max_lostHitFraction_.push_back(cfg.getParameter<double>("max_lostHitFraction"));
153153
min_eta_.push_back(cfg.getParameter<double>("min_eta"));
154154
max_eta_.push_back(cfg.getParameter<double>("max_eta"));
155155

156156
// Flag to apply absolute cuts if no PV passes the selection
157157
applyAbsCutsIfNoPV_.push_back(cfg.getParameter<bool>("applyAbsCutsIfNoPV"));
158-
keepAllTracks_.push_back(cfg.exists("keepAllTracks") ? cfg.getParameter<bool>("keepAllTracks") : false);
158+
keepAllTracks_.push_back(cfg.getParameter<bool>("keepAllTracks"));
159159

160160
setQualityBit_.push_back(false);
161161
std::string qualityStr = cfg.getParameter<std::string>("qualityBit");
@@ -165,12 +165,9 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) :
165165
throw;
166166
}
167167

168-
if (cfg.exists("qualityBit")) {
169-
std::string qualityStr = cfg.getParameter<std::string>("qualityBit");
170-
if (!qualityStr.empty()) {
171-
setQualityBit_[0] = true;
172-
qualityToSet_[0] = TrackBase::qualityByName(cfg.getParameter<std::string>("qualityBit"));
173-
}
168+
if (!qualityStr.empty()) {
169+
setQualityBit_[0] = true;
170+
qualityToSet_[0] = TrackBase::qualityByName(cfg.getParameter<std::string>("qualityBit"));
174171
}
175172

176173
if (keepAllTracks_[0] && !setQualityBit_[0])
@@ -189,19 +186,14 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) :
189186
}
190187

191188
if (useAnyMVA_) {
192-
bool thisMVA = false;
193-
if (cfg.exists("useMVA"))
194-
thisMVA = cfg.getParameter<bool>("useMVA");
189+
bool thisMVA = cfg.getParameter<bool>("useMVA");
195190
useMVA_.push_back(thisMVA);
196191
if (thisMVA) {
197-
double minVal = -1;
198-
if (cfg.exists("minMVA"))
199-
minVal = cfg.getParameter<double>("minMVA");
192+
double minVal = cfg.getParameter<double>("minMVA");
200193
min_MVA_.push_back(minVal);
201-
mvaType_.push_back(cfg.exists("mvaType") ? cfg.getParameter<std::string>("mvaType") : "Detached");
202-
forestLabel_.push_back(cfg.exists("GBRForestLabel") ? cfg.getParameter<std::string>("GBRForestLabel")
203-
: "MVASelectorIter0");
204-
useMVAonly_.push_back(cfg.exists("useMVAonly") ? cfg.getParameter<bool>("useMVAonly") : false);
194+
mvaType_.push_back(cfg.getParameter<std::string>("mvaType"));
195+
forestLabel_.push_back(cfg.getParameter<std::string>("GBRForestLabel"));
196+
useMVAonly_.push_back(cfg.getParameter<bool>("useMVAonly"));
205197
} else {
206198
min_MVA_.push_back(-9999.0);
207199
useMVAonly_.push_back(false);
@@ -231,8 +223,6 @@ AnalyticalTrackSelector::AnalyticalTrackSelector(const edm::ParameterSet& cfg) :
231223
produces<reco::TrackCollection>().setBranchAlias(alias + "Tracks");
232224
}
233225

234-
AnalyticalTrackSelector::~AnalyticalTrackSelector() {}
235-
236226
void AnalyticalTrackSelector::run(edm::Event& evt, const edm::EventSetup& es) const {
237227
// storage....
238228
std::unique_ptr<reco::TrackCollection> selTracks_;
@@ -397,6 +387,76 @@ void AnalyticalTrackSelector::run(edm::Event& evt, const edm::EventSetup& es) co
397387
}
398388
}
399389

390+
void AnalyticalTrackSelector::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
391+
edm::ParameterSetDescription desc;
392+
393+
desc.add<edm::InputTag>("src", edm::InputTag("generalTracks"));
394+
desc.add<bool>("keepAllTracks", false)
395+
->setComment("if set to true tracks failing this filter are kept in the output");
396+
desc.add<edm::InputTag>("beamspot", edm::InputTag("offlineBeamSpot"));
397+
398+
// vertex selection
399+
desc.add<bool>("useVertices", true);
400+
desc.add<bool>("useVtxError", false);
401+
desc.add<edm::InputTag>("vertices", edm::InputTag("firstStepPrimaryVertices"));
402+
desc.add<int32_t>("vtxNumber", -1);
403+
desc.add<std::string>("vertexCut", "ndof>=2&!isFake");
404+
405+
desc.addUntracked<bool>("copyExtras", false);
406+
desc.addUntracked<bool>("copyTrajectories", false);
407+
desc.add<std::string>("qualityBit", std::string(""))->setComment("set to ''if you don't want to set the bit");
408+
409+
// parameters for adapted optimal cuts on chi2 and primary vertex compatibility
410+
desc.add<double>("chi2n_no1Dmod_par", 9999.)
411+
->setComment("parameter for adapted optimal cuts on chi2 and primary vertex compatibility");
412+
desc.add<double>("chi2n_par", 1.6)
413+
->setComment("parameter for adapted optimal cuts on chi2 and primary vertex compatibility");
414+
desc.add<std::vector<double>>("res_par", {0.003, 0.01})->setComment("default: Loose");
415+
desc.add<std::vector<double>>("d0_par1", {0.55, 4.0})->setComment("default: Loose");
416+
desc.add<std::vector<double>>("d0_par2", {0.65, 4.0})->setComment("default: Loose");
417+
desc.add<std::vector<double>>("dz_par1", {0.55, 4.0})->setComment("default: Loose");
418+
desc.add<std::vector<double>>("dz_par2", {0.45, 4.0})->setComment("default: Loose");
419+
desc.add<bool>("applyAdaptedPVCuts", true)
420+
->setComment("Boolean indicating if adapted primary vertex compatibility cuts are to be applied.");
421+
422+
// Impact parameter absolute cuts.
423+
desc.add<double>("max_d0", 100.)->setComment("transverse impact parameter absolute cut");
424+
desc.add<double>("max_z0", 100.)->setComment("longitudinal impact parameter absolute cut");
425+
desc.add<double>("nSigmaZ", 4.);
426+
427+
// Cuts on numbers of layers with hits/3D hits/lost hits.
428+
desc.add<uint32_t>("minNumberLayers", 0);
429+
desc.add<uint32_t>("minNumber3DLayers", 0);
430+
desc.add<uint32_t>("minHitsToBypassChecks", 20);
431+
desc.add<uint32_t>("maxNumberLostLayers", 999);
432+
433+
// Absolute cuts in case of no PV. If yes, please define also max_d0NoPV and max_z0NoPV
434+
desc.add<bool>("applyAbsCutsIfNoPV", false);
435+
desc.add<double>("max_d0NoPV", 100.);
436+
desc.add<double>("max_z0NoPV", 100.);
437+
438+
// parameters for cutting on pterror/pt and number of valid hits
439+
desc.add<double>("max_relpterr", 9999)->setComment("parameter for cutting on pterror/pt");
440+
desc.add<uint32_t>("min_nhits", 0)->setComment("parameter for cutting on number of valid hits");
441+
442+
desc.add<double>("max_lostHitFraction", 1.0);
443+
desc.add<int32_t>("max_minMissHitOutOrIn", 99);
444+
445+
// parameters for cutting on eta
446+
desc.add<double>("max_eta", 9999.);
447+
desc.add<double>("min_eta", -9999.);
448+
449+
// optional parameters for MVA selection
450+
desc.add<bool>("useMVA", false);
451+
desc.add<bool>("useAnyMVA", false);
452+
desc.add<bool>("useMVAonly", false);
453+
desc.add<double>("minMVA", -1.);
454+
desc.add<std::string>("GBRForestLabel", "MVASelectorIter0");
455+
desc.add<std::string>("mvaType", "Detached");
456+
457+
descriptions.addWithDefaultLabel(desc);
458+
}
459+
400460
#include "FWCore/PluginManager/interface/ModuleDef.h"
401461
#include "FWCore/Framework/interface/MakerMacros.h"
402462

0 commit comments

Comments
 (0)