Skip to content

Commit 794c6c6

Browse files
authored
Merge pull request #48881 from slava77/CMSSW_15_1_0_pre5/lst011-hlt-tknt-noto
revive support for HLT in the tracking ntuple
2 parents 988d395 + a3ddbd8 commit 794c6c6

File tree

5 files changed

+208
-92
lines changed

5 files changed

+208
-92
lines changed

RecoTracker/LST/plugins/LSTOutputConverter.cc

Lines changed: 50 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ class LSTOutputConverter : public edm::stream::EDProducer<> {
5454
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidatepTTCPutToken_;
5555
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidatepLSTCPutToken_;
5656
const edm::EDPutTokenT<std::vector<SeedStopInfo>> seedStopInfoPutToken_;
57+
const edm::EDPutTokenT<std::vector<SeedStopInfo>> pTCsSeedStopInfoPutToken_;
58+
const edm::EDPutTokenT<std::vector<SeedStopInfo>> t5TCsSeedStopInfoPutToken_;
59+
const edm::EDPutTokenT<std::vector<SeedStopInfo>> pTTCsSeedStopInfoPutToken_;
5760
};
5861

5962
LSTOutputConverter::LSTOutputConverter(edm::ParameterSet const& iConfig)
@@ -83,7 +86,10 @@ LSTOutputConverter::LSTOutputConverter(edm::ParameterSet const& iConfig)
8386
trackCandidateNopLSTCPutToken_(produces("nopLSTCsLST")),
8487
trackCandidatepTTCPutToken_(produces("pTTCsLST")),
8588
trackCandidatepLSTCPutToken_(produces("pLSTCsLST")),
86-
seedStopInfoPutToken_(produces()) {}
89+
seedStopInfoPutToken_(produces("")),
90+
pTCsSeedStopInfoPutToken_(produces("pTCsLST")),
91+
t5TCsSeedStopInfoPutToken_(produces("t5TCsLST")),
92+
pTTCsSeedStopInfoPutToken_(produces("pTTCsLST")) {}
8793

8894
void LSTOutputConverter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
8995
edm::ParameterSetDescription desc;
@@ -115,6 +121,7 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
115121
auto const& lstOutput = iEvent.get(lstOutputToken_);
116122
auto const& lstInputHC = iEvent.get(lstInputToken_);
117123
auto const& pixelSeeds = iEvent.get(lstPixelSeedToken_);
124+
auto const& pixelSeedsRBP = edm::RefToBaseProd<TrajectorySeed>(iEvent.getHandle(lstPixelSeedToken_));
118125
auto const& mf = iSetup.getData(mfToken_);
119126
auto const& propAlo = iSetup.getData(propagatorAlongToken_);
120127
auto const& propOppo = iSetup.getData(propagatorOppositeToken_);
@@ -123,6 +130,8 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
123130
auto lstOutput_view = lstOutput.const_view();
124131
unsigned int nTrackCandidates = lstOutput_view.nTrackCandidates();
125132

133+
auto const outputTSRP = iEvent.getRefBeforePut(trajectorySeedPutToken_);
134+
126135
TrajectorySeedCollection outputTS, outputpLSTS;
127136
outputTS.reserve(nTrackCandidates);
128137
outputpLSTS.reserve(nTrackCandidates);
@@ -138,22 +147,25 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
138147

139148
LogDebug("LSTOutputConverter") << "nTrackCandidates " << nTrackCandidates;
140149
for (unsigned int i = 0; i < nTrackCandidates; i++) {
141-
LogDebug("LSTOutputConverter") << " cand " << i << " " << lstOutput_view.trackCandidateType()[i] << " "
142-
<< lstOutput_view.pixelSeedIndex()[i];
150+
auto iType = lstOutput_view.trackCandidateType()[i];
151+
LogDebug("LSTOutputConverter") << " cand " << i << " " << iType << " " << lstOutput_view.pixelSeedIndex()[i];
143152
TrajectorySeed seed;
144-
if (lstOutput_view.trackCandidateType()[i] != lst::LSTObjType::T5)
153+
edm::RefToBase<TrajectorySeed> seedRef;
154+
if (iType != lst::LSTObjType::T5) {
145155
seed = pixelSeeds[lstOutput_view.pixelSeedIndex()[i]];
156+
seedRef = {pixelSeedsRBP, lstOutput_view.pixelSeedIndex()[i]};
157+
}
146158

147159
edm::OwnVector<TrackingRecHit> recHits;
148-
if (lstOutput_view.trackCandidateType()[i] != lst::LSTObjType::T5) {
160+
if (iType != lst::LSTObjType::T5) {
149161
for (auto const& hit : seed.recHits())
150162
recHits.push_back(hit.clone());
151163
}
152164

153165
// pixel-seeded TCs from LST always have 4 pixel hits
154-
unsigned int const nPixelHits = lstOutput_view.trackCandidateType()[i] == lst::LSTObjType::T5 ? 0 : 4;
166+
unsigned int const nPixelHits = iType == lst::LSTObjType::T5 ? 0 : 4;
155167
unsigned int nHits = 0;
156-
switch (lstOutput_view.trackCandidateType()[i]) {
168+
switch (iType) {
157169
case lst::LSTObjType::T5:
158170
nHits = lst::Params_T5::kHits;
159171
break;
@@ -191,16 +203,16 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
191203
});
192204

193205
TrajectorySeedCollection seeds;
194-
if (lstOutput_view.trackCandidateType()[i] != lst::LSTObjType::pLS) {
206+
if (iType != lst::LSTObjType::pLS) {
195207
// Construct a full-length TrajectorySeed always for T5s,
196208
// only when required by a flag for other pT objects.
197-
if (includeNonpLSTSs_ || lstOutput_view.trackCandidateType()[i] == lst::LSTObjType::T5) {
209+
if (includeNonpLSTSs_ || iType == lst::LSTObjType::T5) {
198210
using Hit = SeedingHitSet::ConstRecHitPointer;
199211
std::vector<Hit> hitsForSeed;
200212
hitsForSeed.reserve(nHits);
201213
int n = 0;
202214
for (auto const& hit : recHits) {
203-
if (lstOutput_view.trackCandidateType()[i] == lst::LSTObjType::T5) {
215+
if (iType == lst::LSTObjType::T5) {
204216
auto hType = tracker.getDetectorType(hit.geographicalId());
205217
if (hType != TrackerGeometry::ModuleType::Ph2PSP && n < 2)
206218
continue; // the first two should be P
@@ -212,20 +224,21 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
212224
seedCreator_->init(region, iSetup, nullptr);
213225
seedCreator_->makeSeed(seeds, hitsForSeed);
214226
if (seeds.empty()) {
215-
edm::LogInfo("LSTOutputConverter")
216-
<< "failed to convert a LST object to a seed" << i << " " << lstOutput_view.trackCandidateType()[i] << " "
217-
<< lstOutput_view.pixelSeedIndex()[i];
218-
if (lstOutput_view.trackCandidateType()[i] == lst::LSTObjType::T5)
227+
edm::LogInfo("LSTOutputConverter") << "failed to convert a LST object to a seed" << i << " " << iType << " "
228+
<< lstOutput_view.pixelSeedIndex()[i];
229+
if (iType == lst::LSTObjType::T5)
219230
continue;
220231
}
221-
if (lstOutput_view.trackCandidateType()[i] == lst::LSTObjType::T5)
232+
if (iType == lst::LSTObjType::T5) {
222233
seed = seeds[0];
234+
seedRef = edm::RefToBase<TrajectorySeed>(edm::Ref(outputTSRP, outputTS.size()));
235+
}
223236

224237
auto trajectorySeed = (seeds.empty() ? seed : seeds[0]);
225238
outputTS.emplace_back(trajectorySeed);
226239
auto const& ss = trajectorySeed.startingState();
227-
LogDebug("LSTOutputConverter") << "Created a seed with " << seed.nHits() << " " << ss.detId() << " " << ss.pt()
228-
<< " " << ss.parameters().vector() << " " << ss.error(0);
240+
LogDebug("LSTOutputConverter") << "Created a seed with " << trajectorySeed.nHits() << " " << ss.detId() << " "
241+
<< ss.pt() << " " << ss.parameters().vector() << " " << ss.error(0);
229242
}
230243
} else {
231244
outputTS.emplace_back(seed);
@@ -244,20 +257,17 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
244257
PTrajectoryStateOnDet st =
245258
trajectoryStateTransform::persistentState(tsosPair.first, recHits[0].det()->geographicalId().rawId());
246259

247-
if (lstOutput_view.trackCandidateType()[i] == lst::LSTObjType::T5) {
248-
if (!includeT5s_) {
249-
continue;
250-
} else {
251-
auto tc = TrackCandidate(recHits, seed, st);
252-
outputTC.emplace_back(tc);
253-
outputT5TC.emplace_back(tc);
254-
outputNopLSTC.emplace_back(tc);
255-
}
260+
if (!includeT5s_ && iType == lst::LSTObjType::T5)
261+
continue;
262+
263+
auto tc = TrackCandidate(recHits, seed, st, seedRef);
264+
outputTC.emplace_back(tc);
265+
if (iType == lst::LSTObjType::T5) {
266+
outputT5TC.emplace_back(tc);
267+
outputNopLSTC.emplace_back(tc);
256268
} else {
257-
auto tc = TrackCandidate(recHits, seed, st);
258-
outputTC.emplace_back(tc);
259269
outputpTC.emplace_back(tc);
260-
if (lstOutput_view.trackCandidateType()[i] != lst::LSTObjType::pLS) {
270+
if (iType != lst::LSTObjType::pLS) {
261271
outputNopLSTC.emplace_back(tc);
262272
outputpTTC.emplace_back(tc);
263273
} else {
@@ -275,7 +285,16 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
275285

276286
LogDebug("LSTOutputConverter") << "done with conversion: Track candidate output size = " << outputpTC.size()
277287
<< " (p* objects) + " << outputT5TC.size() << " (T5 objects)";
278-
std::vector<SeedStopInfo> outputSeedStopInfo(pixelSeeds.size());
288+
//dummy (for now) stop infos: one per used kind of candidates
289+
std::vector<SeedStopInfo> seedStopInfo(pixelSeeds.size());
290+
iEvent.emplace(seedStopInfoPutToken_, std::move(seedStopInfo));
291+
std::vector<SeedStopInfo> pTCsSeedStopInfo(pixelSeeds.size());
292+
iEvent.emplace(pTCsSeedStopInfoPutToken_, std::move(pTCsSeedStopInfo));
293+
std::vector<SeedStopInfo> t5TCsSeedStopInfo(outputTS.size());
294+
iEvent.emplace(t5TCsSeedStopInfoPutToken_, std::move(t5TCsSeedStopInfo));
295+
std::vector<SeedStopInfo> pTTCsSeedStopInfo(pixelSeeds.size());
296+
iEvent.emplace(pTTCsSeedStopInfoPutToken_, std::move(pTTCsSeedStopInfo));
297+
279298
iEvent.emplace(trajectorySeedPutToken_, std::move(outputTS));
280299
iEvent.emplace(trajectorySeedpLSPutToken_, std::move(outputpLSTS));
281300
iEvent.emplace(trackCandidatePutToken_, std::move(outputTC));
@@ -284,7 +303,6 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
284303
iEvent.emplace(trackCandidateNopLSTCPutToken_, std::move(outputNopLSTC));
285304
iEvent.emplace(trackCandidatepTTCPutToken_, std::move(outputpTTC));
286305
iEvent.emplace(trackCandidatepLSTCPutToken_, std::move(outputpLSTC));
287-
iEvent.emplace(seedStopInfoPutToken_, std::move(outputSeedStopInfo)); //dummy stop info
288306
}
289307

290-
DEFINE_FWK_MODULE(LSTOutputConverter);
308+
DEFINE_FWK_MODULE(LSTOutputConverter);

Validation/RecoTrack/plugins/TrackingNtuple.cc

Lines changed: 69 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,9 @@ class TrackingNtuple : public edm::one::EDAnalyzer<edm::one::SharedResources> {
688688

689689
std::string builderName_;
690690
const bool includeSeeds_;
691+
const bool seedUniqueCheck_;
692+
const bool seedAlgoDetect_;
693+
std::vector<unsigned int> seedAlgos_;
691694
const bool includeTrackCandidates_;
692695
const bool addSeedCurvCov_;
693696
const bool includeAllHits_;
@@ -1369,8 +1372,10 @@ class TrackingNtuple : public edm::one::EDAnalyzer<edm::one::SharedResources> {
13691372
std::vector<unsigned int> see_algo;
13701373
std::vector<unsigned short> see_stopReason;
13711374
std::vector<unsigned short> see_nCands;
1372-
std::vector<int> see_trkIdx;
1373-
std::vector<int> see_tcandIdx;
1375+
std::vector<unsigned int> see_nTrk;
1376+
std::vector<unsigned int> see_nTCand;
1377+
std::vector<std::vector<unsigned int>> see_trkIdx;
1378+
std::vector<std::vector<unsigned int>> see_tcandIdx;
13741379
std::vector<short> see_isTrue;
13751380
std::vector<int> see_bestSimTrkIdx;
13761381
std::vector<float> see_bestSimTrkShareFrac;
@@ -1454,6 +1459,10 @@ TrackingNtuple::TrackingNtuple(const edm::ParameterSet& iConfig)
14541459
tpNStripStereoLayersToken_(consumes<edm::ValueMap<unsigned int>>(
14551460
iConfig.getUntrackedParameter<edm::InputTag>("trackingParticleNstripstereolayers"))),
14561461
includeSeeds_(iConfig.getUntrackedParameter<bool>("includeSeeds")),
1462+
seedUniqueCheck_(includeSeeds_ && iConfig.getUntrackedParameter<bool>("seedUniqueCheck")),
1463+
seedAlgoDetect_(includeSeeds_ && iConfig.getUntrackedParameter<bool>("seedAlgoDetect")),
1464+
seedAlgos_(seedAlgoDetect_ ? std::vector<unsigned int>()
1465+
: iConfig.getUntrackedParameter<std::vector<unsigned int>>("seedAlgos")),
14571466
includeTrackCandidates_(iConfig.getUntrackedParameter<bool>("includeTrackCandidates")),
14581467
addSeedCurvCov_(iConfig.getUntrackedParameter<bool>("addSeedCurvCov")),
14591468
includeAllHits_(iConfig.getUntrackedParameter<bool>("includeAllHits")),
@@ -1476,6 +1485,37 @@ TrackingNtuple::TrackingNtuple(const edm::ParameterSet& iConfig)
14761485
throw cms::Exception("Configuration") << "Got " << seedTokens_.size() << " seed collections, but "
14771486
<< seedStopInfoTokens_.size() << " track candidate collections";
14781487
}
1488+
if (seedAlgoDetect_) {
1489+
for (auto const& token : seedStopInfoTokens_) {
1490+
edm::EDConsumerBase::Labels labels;
1491+
labelsForToken(token, labels);
1492+
1493+
TString label = labels.module;
1494+
//format label to match algoName
1495+
label.ReplaceAll("seedTracks", "");
1496+
label.ReplaceAll("Seeds", "");
1497+
label.ReplaceAll("TrackCandidates", "");
1498+
label.ReplaceAll("muonSeeded", "muonSeededStep");
1499+
//for HLT seeds
1500+
label.ReplaceAll("FromPixelTracks", "");
1501+
label.ReplaceAll("PFLowPixel", "");
1502+
label.ReplaceAll("PFlowPixel", "");
1503+
label.ReplaceAll("hltIni", "ini");
1504+
label.ReplaceAll("hltHigh", "high");
1505+
label.ReplaceAll("hltDoubletRecovery", "pixelPairStep");
1506+
label.ReplaceAll("hltInputLST", "hltPixel");
1507+
1508+
int algo = reco::TrackBase::algoByName(label.Data());
1509+
if (algo == 0)
1510+
throw cms::Exception("LogicError") << "Failed to detect seed algo for collection " << labels.module << ":"
1511+
<< labels.productInstance << " last transform is " << label;
1512+
seedAlgos_.push_back(algo);
1513+
}
1514+
} else {
1515+
if (seedAlgos_.size() != seedTokens_.size())
1516+
throw cms::Exception("Configuration")
1517+
<< "Got " << seedTokens_.size() << " seed collections, but " << seedAlgos_.size() << " algo overrides";
1518+
}
14791519
}
14801520
if (includeTrackCandidates_)
14811521
candidateTokens_ =
@@ -1964,9 +2004,12 @@ TrackingNtuple::TrackingNtuple(const edm::ParameterSet& iConfig)
19642004
t->Branch("see_algo", &see_algo);
19652005
t->Branch("see_stopReason", &see_stopReason);
19662006
t->Branch("see_nCands", &see_nCands);
2007+
t->Branch("see_nTrk", &see_nTrk);
19672008
t->Branch("see_trkIdx", &see_trkIdx);
1968-
if (includeTrackCandidates_)
2009+
if (includeTrackCandidates_) {
2010+
t->Branch("see_nTCand", &see_nTCand);
19692011
t->Branch("see_tcandIdx", &see_tcandIdx);
2012+
}
19702013
if (includeTrackingParticles_) {
19712014
t->Branch("see_simTrkIdx", &see_simTrkIdx);
19722015
t->Branch("see_simTrkShareFrac", &see_simTrkShareFrac);
@@ -2380,6 +2423,8 @@ void TrackingNtuple::clearVariables() {
23802423
see_algo.clear();
23812424
see_stopReason.clear();
23822425
see_nCands.clear();
2426+
see_nTrk.clear();
2427+
see_nTCand.clear();
23832428
see_trkIdx.clear();
23842429
see_tcandIdx.clear();
23852430
see_isTrue.clear();
@@ -3429,6 +3474,7 @@ void TrackingNtuple::fillSeeds(const edm::Event& iEvent,
34293474
TSCBLBuilderNoMaterial tscblBuilder;
34303475
for (size_t iColl = 0; iColl < seedTokens_.size(); ++iColl) {
34313476
const auto& seedToken = seedTokens_[iColl];
3477+
const auto algo = seedAlgos_[iColl];
34323478

34333479
edm::Handle<edm::View<reco::Track>> seedTracksHandle;
34343480
iEvent.getByToken(seedToken, seedTracksHandle);
@@ -3469,28 +3515,17 @@ void TrackingNtuple::fillSeeds(const edm::Event& iEvent,
34693515
reco::RecoToSimCollection recSimColl = associatorByHits.associateRecoToSim(seedTrackRefs, tpCollection);
34703516
reco::SimToRecoCollection simRecColl = associatorByHits.associateSimToReco(seedTrackRefs, tpCollection);
34713517

3472-
TString label = labels.module;
3473-
//format label to match algoName
3474-
label.ReplaceAll("seedTracks", "");
3475-
label.ReplaceAll("Seeds", "");
3476-
label.ReplaceAll("muonSeeded", "muonSeededStep");
3477-
//for HLT seeds
3478-
label.ReplaceAll("FromPixelTracks", "");
3479-
label.ReplaceAll("PFLowPixel", "");
3480-
label.ReplaceAll("hltDoubletRecovery", "pixelPairStep"); //random choice
3481-
int algo = reco::TrackBase::algoByName(label.Data());
3482-
34833518
edm::ProductID id = seedTracks[0].seedRef().id();
34843519
const auto offset = see_fitok.size();
34853520
auto inserted = seedCollToOffset.emplace(id, offset);
34863521
if (!inserted.second)
34873522
throw cms::Exception("Configuration")
34883523
<< "Trying to add seeds with ProductID " << id << " for a second time from collection " << labels.module
3489-
<< ", seed algo " << label << ". Typically this is caused by a configuration problem.";
3524+
<< ", seed algo " << algo << ". Typically this is caused by a configuration problem.";
34903525
see_offset.push_back(offset);
34913526

3492-
LogTrace("TrackingNtuple") << "NEW SEED LABEL: " << label << " size: " << seedTracks.size() << " algo=" << algo
3493-
<< " ProductID " << id;
3527+
LogTrace("TrackingNtuple") << "NEW SEED LABEL: for " << labels.module << " size: " << seedTracks.size()
3528+
<< " algo=" << algo << " ProductID " << id;
34943529

34953530
for (size_t iSeed = 0; iSeed < seedTrackRefs.size(); ++iSeed) {
34963531
const auto& seedTrackRef = seedTrackRefs[iSeed];
@@ -3592,8 +3627,12 @@ void TrackingNtuple::fillSeeds(const edm::Event& iEvent,
35923627
see_stateCurvCov.push_back(std::move(cov));
35933628
}
35943629

3595-
see_trkIdx.push_back(-1); // to be set correctly in fillTracks
3596-
see_tcandIdx.push_back(-1); // to be set correctly in fillCandidates
3630+
// to be set correctly in fillTracks
3631+
see_nTrk.push_back(0);
3632+
see_nTCand.push_back(0);
3633+
see_trkIdx.push_back({});
3634+
see_tcandIdx.push_back({});
3635+
35973636
if (includeTrackingParticles_) {
35983637
see_simTrkIdx.push_back(tpIdx);
35993638
see_simTrkShareFrac.push_back(sharedFraction);
@@ -3967,11 +4006,12 @@ void TrackingNtuple::fillTracks(const edm::RefToBaseVector<reco::Track>& tracks,
39674006

39684007
const auto seedIndex = offset->second + itTrack->seedRef().key();
39694008
trk_seedIdx.push_back(seedIndex);
3970-
if (see_trkIdx[seedIndex] != -1) {
4009+
if (seedUniqueCheck_ && see_nTrk[seedIndex] > 0) {
39714010
throw cms::Exception("LogicError") << "Track index has already been set for seed " << seedIndex << " to "
3972-
<< see_trkIdx[seedIndex] << "; was trying to set it to " << iTrack;
4011+
<< see_trkIdx[seedIndex][0] << "; was trying to set it to " << iTrack;
39734012
}
3974-
see_trkIdx[seedIndex] = iTrack;
4013+
see_nTrk[seedIndex]++;
4014+
see_trkIdx[seedIndex].push_back(iTrack);
39754015
}
39764016
trk_vtxIdx.push_back(-1); // to be set correctly in fillVertices
39774017
if (includeTrackingParticles_) {
@@ -4260,12 +4300,13 @@ void TrackingNtuple::fillCandidates(const edm::Handle<TrackCandidateCollection>&
42604300

42614301
const auto seedIndex = offset->second + aCand.seedRef().key();
42624302
tcand_seedIdx.push_back(seedIndex);
4263-
if (see_tcandIdx[seedIndex] != -1) {
4303+
if (seedUniqueCheck_ && see_nTCand[seedIndex] > 0) {
42644304
throw cms::Exception("LogicError")
4265-
<< "Track cand index has already been set for seed " << seedIndex << " to " << see_tcandIdx[seedIndex]
4305+
<< "Track cand index has already been set for seed " << seedIndex << " to " << see_tcandIdx[seedIndex][0]
42664306
<< "; was trying to set it to " << iglobCand << " current " << iCand;
42674307
}
4268-
see_tcandIdx[seedIndex] = iglobCand;
4308+
see_nTCand[seedIndex]++;
4309+
see_tcandIdx[seedIndex].push_back(iglobCand);
42694310
}
42704311
tcand_vtxIdx.push_back(-1); // to be set correctly in fillVertices
42714312
if (includeTrackingParticles_) {
@@ -4667,6 +4708,9 @@ void TrackingNtuple::fillDescriptions(edm::ConfigurationDescriptions& descriptio
46674708
desc.addUntracked<std::string>("TTRHBuilder", "WithTrackAngle")
46684709
->setComment("currently not used: keep for possible future use");
46694710
desc.addUntracked<bool>("includeSeeds", false);
4711+
desc.addOptionalUntracked<bool>("seedUniqueCheck", true);
4712+
desc.addOptionalUntracked<bool>("seedAlgoDetect", true);
4713+
desc.addOptionalUntracked<std::vector<unsigned int>>("seedAlgos");
46704714
desc.addUntracked<bool>("includeTrackCandidates", false);
46714715
desc.addUntracked<bool>("addSeedCurvCov", false);
46724716
desc.addUntracked<bool>("includeAllHits", false);

Validation/RecoTrack/python/TrackValidation_cff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def _addSeedToTrackProducers(seedProducers,modDict):
135135
names = []
136136
task = cms.Task()
137137
for seed in seedProducers:
138-
modName = "seedTracks"+seed
138+
modName = ("seedTracks"+seed).replace(":", "MI")
139139
if modName not in modDict:
140140
mod = _trajectorySeedTracks.clone(src=seed)
141141
modDict[modName] = mod

0 commit comments

Comments
 (0)