Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Configuration/PyReleaseValidation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ The offsets currently in use are:
* 0.756 HLT phase-2 timing menu trimmed tracking
* 0.757: HLT phase-2 timing menu mkFitFit variant
* 0.758 HLT phase-2 timing menu ticl_barrel variant
* 0.759: HLT phase-2 timing menu, with NANO:@Phase2HLT
* 0.759: HLT phase-2 menu, with NANO:@Phase2HLT
* 0.7591: HLT phase-2 menu, with NANO:@Phase2HLTVal
* 0.76: HLT phase-2 reduced menu, with DIGI step
* 0.77: HLT phase-2 NGT Scouting menu
* 0.771: HLT phase-2 NGT Scouting menu, Alpaka, TICL-v5, TICL-Barrel
Expand Down
3 changes: 2 additions & 1 deletion Configuration/PyReleaseValidation/python/relval_Run4.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@
numWFIB.extend([prefixDet+34.756]) # HLTTiming75e33, phase2_hlt_vertexTrimming
numWFIB.extend([prefixDet+34.757]) # HLTTiming75e33, MkFitFit
numWFIB.extend([prefixDet+34.758]) # HLTTiming75e33, ticl_barrel
numWFIB.extend([prefixDet+34.759]) # HLTTiming75e33 + NANO
numWFIB.extend([prefixDet+34.759]) # HLT75e33 + NANO
numWFIB.extend([prefixDet+34.7591]) # HLT75e33 + NANO (including validation)
numWFIB.extend([prefixDet+34.77]) # NGTScouting
numWFIB.extend([prefixDet+34.771]) # NGTScouting + alpaka + TICL-v5 + TICL-Barrel
numWFIB.extend([prefixDet+34.772]) # NGTScouting + NANO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2185,6 +2185,15 @@ def condition(self, fragment, stepList, key, hasHarvest):
'--eventcontent':'FEVTDEBUGHLT,NANOAODSIM'
}

upgradeWFs['HLTPhase2WithNanoValid'] = deepcopy(upgradeWFs['HLTPhase2WithNano'])
upgradeWFs['HLTPhase2WithNanoValid'].suffix = '_HLTPhase2WithNanoValid'
upgradeWFs['HLTPhase2WithNanoValid'].offset = 0.7591
upgradeWFs['HLTPhase2WithNanoValid'].step2 = {
'-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:75e33,VALIDATION:@hltValidation,NANO:@Phase2HLTVal',
'--datatier':'GEN-SIM-DIGI-RAW,NANOAODSIM',
'--eventcontent':'FEVTDEBUGHLT,NANOAODSIM'
}

upgradeWFs['NGTScoutingWithNano'] = deepcopy(upgradeWFs['HLTPhase2WithNano'])
upgradeWFs['NGTScoutingWithNano'].suffix = '_NGTScoutingWithNano'
upgradeWFs['NGTScoutingWithNano'].offset = 0.772
Expand Down
3 changes: 2 additions & 1 deletion Configuration/PyReleaseValidation/scripts/runTheMatrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ def runSelected(opt):
prefixDet+34.756, # HLT phase-2 timing menu trimmed tracking
prefixDet+34.757, # HLT phase-2 timing menu mkFit fitting variant
prefixDet+34.758, # HLT phase-2 timing menu ticl_barrel variant
prefixDet+34.759, # HLT phase-2 timing menu, with NANO:@Phase2HLT
prefixDet+34.759, # HLT phase-2 menu, with NANO:@Phase2HLT
prefixDet+34.7591, # HLT phase-2 menu, with NANO:@Phase2HLTVal
prefixDet+34.77, # HLT phase-2 NGT Scouting menu
prefixDet+34.771, # HLT phase-2 NGT Scouting menu, Alpaka, TICL-v5, TICL-Barrel
prefixDet+34.772, # HLT phase-2 NGT Scouting menu, with NANO:@NGTScouting
Expand Down
60 changes: 33 additions & 27 deletions HLTrigger/NGTScouting/plugins/SimTracksterTableProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,10 @@ class SimTracksterTableProducer : public edm::global::EDProducer<> {
private:
void produce(edm::StreamID id, edm::Event& event, const edm::EventSetup& setup) const override {
const auto simTrackstersHandle = event.getHandle(simTrackstersToken_);
const auto& simTracksters = *simTrackstersHandle;
const auto caloParticlesHandle = event.getHandle(caloParticlesToken_);
const auto& caloParticles = *caloParticlesHandle;
const auto simClustersHandle = event.getHandle(simClustersToken_);
const auto& simClusters = *simClustersHandle;
const auto cpToSCMap = event.get(caloParticleToSimClustersMap_token_);
const auto cpToSCMapHandle = event.getHandle(caloParticleToSimClustersMap_token_);

const size_t nSimTracksters = simTrackstersHandle.isValid() ? simTrackstersHandle->size() : 0;

static constexpr float default_value = std::numeric_limits<float>::quiet_NaN();
Expand All @@ -64,29 +62,36 @@ class SimTracksterTableProducer : public edm::global::EDProducer<> {
std::vector<float> genPt(nSimTracksters, default_value);
std::vector<float> mass(nSimTracksters, default_value);

//utility lambda for filling vectors
auto fillVectors = [&](const auto& obj, size_t iSim, float time) {
const auto& simTrack = obj.g4Tracks()[0];
const auto caloPt = obj.pt();
const auto simHitSumEnergy = obj.simEnergy();
const auto caloMass = obj.mass();

boundaryX[iSim] = simTrack.getPositionAtBoundary().x();
boundaryY[iSim] = simTrack.getPositionAtBoundary().y();
boundaryZ[iSim] = simTrack.getPositionAtBoundary().z();
boundaryEta[iSim] = simTrack.getPositionAtBoundary().eta();
boundaryPhi[iSim] = simTrack.getPositionAtBoundary().phi();
boundaryPx[iSim] = simTrack.getMomentumAtBoundary().x();
boundaryPy[iSim] = simTrack.getMomentumAtBoundary().y();
boundaryPz[iSim] = simTrack.getMomentumAtBoundary().z();

simTime[iSim] = time;
simEnergy[iSim] = simHitSumEnergy;
genPt[iSim] = caloPt;
mass[iSim] = caloMass;
};

if (simTrackstersHandle.isValid() || !(this->skipNonExistingSrc_)) {
if ((simTrackstersHandle.isValid() && caloParticlesHandle.isValid() && simClustersHandle.isValid() &&
cpToSCMapHandle.isValid()) ||
!(this->skipNonExistingSrc_)) {
const auto& simTracksters = *simTrackstersHandle;
const auto& caloParticles = *caloParticlesHandle;
const auto& simClusters = *simClustersHandle;
const auto& cpToSCMap = *cpToSCMapHandle;

//utility lambda for filling vectors
auto fillVectors = [&](const auto& obj, size_t iSim, float time) {
const auto& simTrack = obj.g4Tracks()[0];
const auto caloPt = obj.pt();
const auto simHitSumEnergy = obj.simEnergy();
const auto caloMass = obj.mass();

boundaryX[iSim] = simTrack.getPositionAtBoundary().x();
boundaryY[iSim] = simTrack.getPositionAtBoundary().y();
boundaryZ[iSim] = simTrack.getPositionAtBoundary().z();
boundaryEta[iSim] = simTrack.getPositionAtBoundary().eta();
boundaryPhi[iSim] = simTrack.getPositionAtBoundary().phi();
boundaryPx[iSim] = simTrack.getMomentumAtBoundary().x();
boundaryPy[iSim] = simTrack.getMomentumAtBoundary().y();
boundaryPz[iSim] = simTrack.getMomentumAtBoundary().z();

simTime[iSim] = time;
simEnergy[iSim] = simHitSumEnergy;
genPt[iSim] = caloPt;
mass[iSim] = caloMass;
};

for (size_t iSim = 0; iSim < simTracksters.size(); ++iSim) {
const auto& simT = simTracksters[iSim];
float time = default_value;
Expand All @@ -108,6 +113,7 @@ class SimTracksterTableProducer : public edm::global::EDProducer<> {
}
}
}

auto simTrackstersTable =
std::make_unique<nanoaod::FlatTable>(nSimTracksters, tableName_, /*singleton*/ false, /*extension*/ true);
simTrackstersTable->addColumn<float>(
Expand Down
30 changes: 30 additions & 0 deletions HLTrigger/NGTScouting/plugins/TICLCandidateExtraTableProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,36 @@ class TICLCandidateExtraTableProducer : public SimpleFlatTableProducerBase<TICLC
void produce(edm::Event& iEvent, const edm::EventSetup&) override {
const auto& prod = iEvent.getHandle(this->src_);

// Check if handle is valid
if (!prod.isValid() && this->skipNonExistingSrc_) {
// Still book and write empty FlatTables
auto out = std::make_unique<nanoaod::FlatTable>(0, this->name_, /*singleton*/ false, /*extension*/ false);

for (const auto& coltable : this->coltables_) {
std::vector<uint16_t> emptyCounts;
std::vector<uint16_t> emptyOffsets;

if (coltable.useCount) {
out->addColumn<uint16_t>("n" + coltable.name, emptyCounts, "Count for " + coltable.name);
}
if (coltable.useOffset) {
out->addColumn<uint16_t>("o" + coltable.name, emptyOffsets, "Offset for " + coltable.name);
}

auto outcoltable = std::make_unique<nanoaod::FlatTable>(0, coltable.name, false, false);
std::vector<uint32_t> emptyTracksterKeys;
outcoltable->addColumn<uint32_t>("tracksterIndex", emptyTracksterKeys, "Index of associated Trackster");
outcoltable->setDoc(coltable.doc);
iEvent.put(std::move(outcoltable), coltable.name + "Table");
}

if (out->nColumns() > 0) {
out->setDoc(this->doc_);
iEvent.put(std::move(out));
}
return;
}

const auto& candidates = *prod;
const size_t table_size = candidates.size();

Expand Down
2 changes: 2 additions & 0 deletions HLTrigger/NGTScouting/python/hltTICLCandidates_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
"TICLCandidateExtraTableProducer",
src = cms.InputTag("hltTiclTrackstersMerge"),
name = cms.string("Candidate2Tracksters"),
skipNonExistingSrc = cms.bool(True),
doc = cms.string("TICLCandidates extra table with linked Tracksters"),
collectionVariables = cms.PSet(
tracksters = cms.PSet(
Expand All @@ -115,6 +116,7 @@
"TICLCandidateExtraTableProducer",
src = cms.InputTag("hltTiclSimTracksters"),
name = cms.string("SimCandidate2Tracksters"),
skipNonExistingSrc = cms.bool(True),
doc = cms.string("TICLCandidates extra table with linked Tracksters"),
collectionVariables = cms.PSet(
tracksters = cms.PSet(
Expand Down
Loading