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

Add LST and LSTCore #30

Draft
wants to merge 40 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0cf5c03
Added RecoTracker/LSTCore package
ariostas May 31, 2024
7bc53be
Added RecoTracker/LST package
ariostas May 31, 2024
7c6bcfa
Add two-iteration,tracking-only LST workflows, both on CPU and GPU
VourMa Jun 3, 2024
0edc116
Update directory for LST data files
VourMa Jun 5, 2024
ee1e94e
Fixed standalone build
ariostas Jun 5, 2024
f1dee27
Truncate git logs to 100 commits
ariostas Jun 5, 2024
e9733d4
Remove outdated files
VourMa Jun 6, 2024
9f697fd
put lstModulesDevESProducer on a dummy visible task to bypass the mod…
slava77devel Jun 5, 2024
314e95d
code-format
slava77devel Jun 6, 2024
4747b41
Make compilation flags for duplicate cleaning and triplet pLSs into r…
VourMa Jun 7, 2024
0829926
Code checks and format
VourMa Jun 8, 2024
85682e8
Resolving PR comments LST folder
VourMa Jun 10, 2024
f555485
Merge pull request #37 from SegmentLinking/CMSSW_14_1_0_pre3_LST_X_LS…
slava77 Jun 10, 2024
944652f
Keep comment closer to the added task object
VourMa Jun 10, 2024
f4bd702
Fix typo in T3 code
VourMa Jun 12, 2024
3552ad3
Fixing CMS coding rule 1
VourMa Jun 13, 2024
14af981
Merge pull request #44 from SegmentLinking/CMSSW_14_1_0_pre3_LST_X_LS…
slava77 Jun 13, 2024
dc13ac5
Removed LST_IS_CMSSW_PACKAGE flag
ariostas Jun 14, 2024
e64c2cc
Merge pull request #38 from SegmentLinking/CMSSW_14_1_0_pre3_LST_X_LS…
slava77 Jun 15, 2024
4cd8924
code-format/checks
slava77devel Jun 15, 2024
e0acfa5
Addressed ESProducer comments
ariostas Jun 18, 2024
ef48f74
Removal of gpu modifier from LST workflows
VourMa Jun 24, 2024
a3f65da
Separated EndcapGeometry into host-only and buffers struct
ariostas Jun 24, 2024
eb5de05
Minor cleanup
ariostas Jun 24, 2024
f46b6cb
Removed -Wshadow flag
ariostas Jun 24, 2024
149c628
Resolve conflicts regarding workflows
VourMa Jun 28, 2024
236ad8c
Simplification of sqrt operations for pT3s
VourMa Jun 29, 2024
a97714a
Apply reco comments: Naming values and sqrt, loop, etc. simplifications
VourMa Jul 3, 2024
4d7e54a
Merge pull request #58 from SegmentLinking/remove_LST_IS_CMSSW_PACKAGE
slava77 Jul 5, 2024
c563eb0
Further work on naming values and sqrt, loop, etc. simplifications
VourMa Jul 8, 2024
d3e5999
Merge remote-tracking branch 'SegLink/CMSSW_14_1_0_pre3_LST_X_LSTCore…
ariostas Jul 8, 2024
f47212f
Renamed new endcap geometry class
ariostas Jul 8, 2024
86503a2
Fixed include guards for headers in interface directory
ariostas Jul 8, 2024
a3a8054
Even further work on naming values and sqrt, loop, etc. simplifications
VourMa Jul 9, 2024
7cfe3a5
Code format and checks
VourMa Jul 9, 2024
ae67290
Simplify LST workflows
VourMa Jul 9, 2024
34c56c6
Merge pull request #49 from SegmentLinking/ESProducer_fixes
slava77 Jul 9, 2024
7187927
Merge pull request #50 from SegmentLinking/CMSSW_14_1_0_pre3_LST_X_LS…
slava77 Jul 10, 2024
23ec786
Merge tag 'CMSSW_14_1_0_pre5' into CMSSW_14_1_0_pre3_LST_X_LSTCore_re…
ariostas Jul 16, 2024
1d9b396
Updated setup scripts to use CMSSW 14_1_0_pre5
ariostas Jul 16, 2024
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
4 changes: 4 additions & 0 deletions Configuration/ProcessModifiers/python/trackingIters01_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import FWCore.ParameterSet.Config as cms

# This modifier sets the iterative tracking to use a minimal set of iterations, first two
trackingIters01 = cms.Modifier()
5 changes: 5 additions & 0 deletions Configuration/ProcessModifiers/python/trackingLST_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import FWCore.ParameterSet.Config as cms

# This modifier sets the LST (Phase-2 line segment tracking) used for track building
trackingLST = cms.Modifier()

2 changes: 2 additions & 0 deletions Configuration/PyReleaseValidation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ The offsets currently in use are:
* 0.7: trackingMkFit modifier
* 0.701: DisplacedRegionalStep tracking iteration for Run-3
* 0.702: trackingMkFit modifier for Phase-2 (initialStep only)
* 0.703: LST tracking, initialStep+HighPtTripletStep only, on CPU
* 0.704: LST tracking, initialStep+HighPtTripletStep only, on GPU
* 0.78: Complete L1 workflow
* 0.8: BPH Parking (Run-2)
* 0.81: Running also HeavyFlavor DQM
Expand Down
3 changes: 3 additions & 0 deletions Configuration/PyReleaseValidation/python/relval_2026.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,8 @@
numWFIB.extend([prefixDet+234.9921]) #prodlike premix stage1+stage2
numWFIB.extend([prefixDet+234.114]) #PU, with 10% OT inefficiency

# Temporary placement for LST workflow to workaround PR conflicts - to be formatted and placed in an upcoming PR
numWFIB.extend([24834.703,24834.704]) #2026D98 LST tracking (initialStep+HighPtTripletStep only): CPU, GPU

for numWF in numWFIB:
workflows[numWF] = _upgrade_workflows[numWF]
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,56 @@ def condition_(self, fragment, stepList, key, hasHarvest):
'--procModifiers': 'trackingMkFitCommon,trackingMkFitInitialStep'
}

# LST on CPU, initialStep+highPtTripletStep-only tracking-only
class UpgradeWorkflow_lstOnCPUIters01TrackingOnly(UpgradeWorkflowTracking):
def setup__(self, step, stepName, stepDict, k, properties):
if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
elif 'ALCA' in step: stepDict[stepName][k] = None
def condition_(self, fragment, stepList, key, hasHarvest):
return ('2026' in key)
upgradeWFs['lstOnCPUIters01TrackingOnly'] = UpgradeWorkflow_lstOnCPUIters01TrackingOnly(
steps = [
'RecoGlobal',
'HARVESTGlobal',
# Add ALCA steps explicitly, so that they can be properly removed
'ALCA',
'ALCAPhase2'
],
PU = [],
suffix = '_lstOnCPUIters01TrackingOnly',
offset = 0.703,
)
upgradeWFs['lstOnCPUIters01TrackingOnly'].step3 = upgradeWFs['trackingOnly'].step3 | {
'--procModifiers': 'trackingIters01,trackingLST',
'--accelerators' : 'cpu'
}

# LST on GPU, initialStep+highPtTripletStep-only tracking-only
class UpgradeWorkflow_lstOnGPUIters01TrackingOnly(UpgradeWorkflowTracking):
def setup__(self, step, stepName, stepDict, k, properties):
if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
elif 'ALCA' in step: stepDict[stepName][k] = None
def condition_(self, fragment, stepList, key, hasHarvest):
return ('2026' in key)
upgradeWFs['lstOnGPUIters01TrackingOnly'] = UpgradeWorkflow_lstOnGPUIters01TrackingOnly(
steps = [
'RecoGlobal',
'HARVESTGlobal',
# Add ALCA steps explicitly, so that they can be properly removed
'ALCA',
'ALCAPhase2'
],
PU = [],
suffix = '_lstOnGPUIters01TrackingOnly',
offset = 0.704,
)
upgradeWFs['lstOnGPUIters01TrackingOnly'].step3 = upgradeWFs['trackingOnly'].step3 | {
'--procModifiers': 'trackingIters01,trackingLST',
'--accelerators' : 'gpu-nvidia'
}

#DeepCore seeding for JetCore iteration workflow
class UpgradeWorkflow_seedingDeepCore(UpgradeWorkflow):
def setup_(self, step, stepName, stepDict, k, properties):
Expand Down
10 changes: 10 additions & 0 deletions RecoTracker/ConversionSeedGenerators/python/ConversionStep_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@
oldClusterRemovalInfo = 'detachedQuadStepClusters',
overrideTrkQuals = 'detachedQuadStepSelector:detachedQuadStepTrk'
))
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
trackingIters01.toModify(convClusters,
trajectories = "highPtTripletStepTracks",
oldClusterRemovalInfo = "highPtTripletStepClusters",
overrideTrkQuals = "highPtTripletStepSelector:highPtTripletStep"
)
from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
(trackingIters01 & trackingPhase2PU140 & trackingLST).toModify(convClusters,
overrideTrkQuals = ""
)

_convLayerPairsStripOnlyLayers = ['TIB1+TID1_pos',
'TIB1+TID1_neg',
Expand Down
2 changes: 1 addition & 1 deletion RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ void TrackListMerger::produce(edm::Event& e, const edm::EventSetup& es) {
}

//DL here
if LIKELY (ngood > 1 && collsSize > 1)
if LIKELY (ngood > 0 && collsSize > 0)
VourMa marked this conversation as resolved.
Show resolved Hide resolved
for (unsigned int ltm = 0; ltm < listsToMerge_.size(); ltm++) {
int saveSelected[rSize];
bool notActive[collsSize];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
ttrhBuilderName = "WithAngleAndTemplate",
chi2EstimatorName = "duplicateTrackCandidatesChi2Est"
)
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
trackingIters01.toModify(duplicateTrackCandidates, source = "earlyGeneralTracks")

import RecoTracker.TrackProducer.TrackProducer_cfi
mergedDuplicateTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
Expand Down Expand Up @@ -44,6 +46,10 @@
candidateSource = "duplicateTrackCandidates:candidates",
candidateComponents = "duplicateTrackCandidates:candidateMap"
)
trackingIters01.toModify(generalTracks,
originalSource = "earlyGeneralTracks",
originalMVAVals = "earlyGeneralTracks:MVAValues"
)

generalTracksTask = cms.Task(
duplicateTrackCandidates,
Expand Down
20 changes: 20 additions & 0 deletions RecoTracker/FinalTrackSelectors/python/earlyGeneralTracks_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,16 @@ def _extend_displacedGeneral(x):
makeReKeyedSeeds = cms.untracked.bool(False)
)
)
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
trackingIters01.toModify(earlyGeneralTracks,
TrackProducers = ['initialStepTracks', 'highPtTripletStepTracks'],
hasSelector = [1,1],
indivShareFrac = [1,0.16],
selectedTrackQuals = ['initialStepSelector:initialStep',
'highPtTripletStepSelector:highPtTripletStep'
],
setsToMerge = {0: dict(tLists = [0,1])}
)
from Configuration.ProcessModifiers.vectorHits_cff import vectorHits
def _extend_pixelLess(x):
x.TrackProducers += ['pixelLessStepTracks']
Expand All @@ -116,3 +126,13 @@ def _extend_pixelLess(x):
x.setsToMerge[0].tLists += [6]
(trackingPhase2PU140 & vectorHits).toModify(earlyGeneralTracks, _extend_pixelLess)

from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
(trackingPhase2PU140 & trackingLST).toModify(earlyGeneralTracks,
TrackProducers = ['highPtTripletStepLSTpTracks', 'highPtTripletStepLSTT5Tracks'],
hasSelector = [1,0],
indivShareFrac = [0.1,0.1],
selectedTrackQuals = ['highPtTripletStepSelector:highPtTripletStep',
'highPtTripletStepSelectorLSTT5:highPtTripletStepLSTT5'
],
setsToMerge = {0: dict(tLists = [0,1])}
)
56 changes: 56 additions & 0 deletions RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,10 @@
phase2clustersToSkip = 'highPtTripletStepClusters'
)

from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
from RecoTracker.LST.lstOutputConverter_cfi import lstOutputConverter as _lstOutputConverter
(trackingPhase2PU140 & trackingLST).toReplaceWith(highPtTripletStepTrackCandidates, _lstOutputConverter.clone())

#For FastSim phase1 tracking
import FastSimulation.Tracking.TrackCandidateProducer_cfi
_fastSim_highPtTripletStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone(
Expand All @@ -280,6 +284,25 @@
from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer
phase2_timing_layer.toModify(highPtTripletStepTracks, TrajectoryInEvent = True)

highPtTripletStepLSTpTracks = highPtTripletStepTracks.clone(
src = 'highPtTripletStepTrackCandidates:pTCsLST'
)
highPtTripletStepLSTT5Tracks = highPtTripletStepTracks.clone(
src = 'highPtTripletStepTrackCandidates:t5TCsLST'
)
_highPtTripletStepTracks_LST = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
TrackProducers = ['highPtTripletStepLSTpTracks',
'highPtTripletStepLSTT5Tracks'],
hasSelector = [1,0],
indivShareFrac = [0.1,0.1],
selectedTrackQuals = ['highPtTripletStepSelector:highPtTripletStep',
'highPtTripletStepSelectorLSTT5:highPtTripletStepLSTT5'],
copyExtras = True,
copyMVA = False,
setsToMerge = [cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )]
)
(trackingPhase2PU140 & trackingLST).toReplaceWith(highPtTripletStepTracks, _highPtTripletStepTracks_LST)

# Final selection
from RecoTracker.FinalTrackSelectors.TrackMVAClassifierPrompt_cfi import *
highPtTripletStep = TrackMVAClassifierPrompt.clone(
Expand Down Expand Up @@ -357,6 +380,28 @@
from Configuration.ProcessModifiers.vectorHits_cff import vectorHits
vectorHits.toModify(highPtTripletStepSelector.trackSelectors[2], minNumberLayers = 3, minNumber3DLayers = 3, d0_par1 = ( 0.5, 4.0 ), dz_par1 = ( 0.6, 4.0 ))

(trackingPhase2PU140 & trackingLST).toModify(highPtTripletStepSelector, src = 'highPtTripletStepLSTpTracks')
# Passthrough selector to satisfy the TrackListMerger requirement for selector values
highPtTripletStepSelectorLSTT5 = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
src = 'highPtTripletStepLSTT5Tracks',
trackSelectors = [
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
name = 'highPtTripletStepLSTT5Loose',
minHitsToBypassChecks = 0
), #end of pset
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
name = 'highPtTripletStepLSTT5Tight',
preFilterName = 'highPtTripletStepLSTT5Loose',
minHitsToBypassChecks = 0
),
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
name = 'highPtTripletStepLSTT5',
preFilterName = 'highPtTripletStepLSTT5Tight',
minHitsToBypassChecks = 0
),
] #end of vpset
) #end of clone

# Final sequence
HighPtTripletStepTask = cms.Task(highPtTripletStepClusters,
highPtTripletStepSeedLayers,
Expand All @@ -378,6 +423,17 @@
_HighPtTripletStep_Phase2PU140 = cms.Sequence(_HighPtTripletStepTask_Phase2PU140)
trackingPhase2PU140.toReplaceWith(HighPtTripletStepTask, _HighPtTripletStepTask_Phase2PU140)

_HighPtTripletStepTask_LST = HighPtTripletStepTask.copy()
from RecoLocalTracker.Phase2TrackerRecHits.Phase2TrackerRecHits_cfi import siPhase2RecHits
from RecoTracker.LST.lstSeedTracks_cff import lstInitialStepSeedTracks,lstHighPtTripletStepSeedTracks
from RecoTracker.LST.lstPixelSeedInputProducer_cfi import lstPixelSeedInputProducer
from RecoTracker.LST.lstPhase2OTHitsInputProducer_cfi import lstPhase2OTHitsInputProducer
from RecoTracker.LST.lstProducer_cff import *

_HighPtTripletStepTask_LST.add(siPhase2RecHits, lstInitialStepSeedTracks, lstHighPtTripletStepSeedTracks, lstPixelSeedInputProducer, lstPhase2OTHitsInputProducer,
lstProducer, lstModulesDevESProducer, highPtTripletStepLSTpTracks, highPtTripletStepLSTT5Tracks, highPtTripletStepSelectorLSTT5)
(trackingPhase2PU140 & trackingLST).toReplaceWith(HighPtTripletStepTask, _HighPtTripletStepTask_LST)

# fast tracking mask producer
from FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi import maskProducerFromClusterRemover
highPtTripletStepMasks = maskProducerFromClusterRemover(highPtTripletStepClusters)
Expand Down
3 changes: 3 additions & 0 deletions RecoTracker/IterativeTracking/python/LowPtQuadStep_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
for _eraName, _postfix, _era in _cfg.nonDefaultEras():
_era.toReplaceWith(lowPtQuadStepClusters, _cfg.clusterRemoverForIter('LowPtQuadStep', _eraName, _postfix))

from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
# with LST, this is the first iteration with proper cluster masking
trackingLST.toModify(lowPtQuadStepClusters, oldClusterRemovalInfo = "")

# SEEDING LAYERS
import RecoTracker.TkSeedingLayers.PixelLayerQuadruplets_cfi
Expand Down
18 changes: 13 additions & 5 deletions RecoTracker/IterativeTracking/python/iterativeTkConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,21 @@

_iterations_trackingPhase1.append('JetCoreRegionalStep')

_iterations_trackingPhase2PU140 = [
_iterations_trackingPhase2PU140_VS = cms.PSet(names = cms.vstring(
"InitialStep",
"HighPtTripletStep",
"LowPtQuadStep",
"LowPtTripletStep",
"DetachedQuadStep",
"PixelPairStep",
]
))
from Configuration.ProcessModifiers.vectorHits_cff import vectorHits
vectorHits.toModify(_iterations_trackingPhase2PU140, func=lambda x: x.append('PixelLessStep'))
vectorHits.toModify(_iterations_trackingPhase2PU140_VS.names, func=lambda x: x.append('PixelLessStep'))
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
trackingIters01.toModify(_iterations_trackingPhase2PU140_VS, names = ["InitialStep", "HighPtTripletStep"])
# apply all procModifiers before this
_iterations_trackingPhase2PU140 = _iterations_trackingPhase2PU140_VS.names.value()

_iterations_muonSeeded = [
"MuonSeededStepInOut",
"MuonSeededStepOutIn",
Expand All @@ -72,10 +77,13 @@
"MuonSeededStepOutIn",
]
#Phase2
_iterations_muonSeeded_trackingPhase2PU140 = [
_iterations_muonSeeded_trackingPhase2PU140_VS = cms.PSet(names = cms.vstring(
"MuonSeededStepInOut",
"MuonSeededStepOutIn",
]
))
trackingIters01.toModify(_iterations_muonSeeded_trackingPhase2PU140_VS, names = [])
_iterations_muonSeeded_trackingPhase2PU140 = _iterations_muonSeeded_trackingPhase2PU140_VS.names.value()

_multipleSeedProducers = {
"MixedTripletStep": ["A", "B"],
"TobTecStep": ["Pair", "Tripl"],
Expand Down
10 changes: 10 additions & 0 deletions RecoTracker/LST/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<use name="DataFormats/Common"/>
<use name="alpaka"/>
<use name="DataFormats/TrackerRecHit2D"/>
<use name="HeterogeneousCore/AlpakaInterface"/>
<use name="RecoTracker/LSTCore"/>
<flags CXXFLAGS="-DLST_IS_CMSSW_PACKAGE"/>
<flags ALPAKA_BACKENDS="1"/>
<export>
<lib name="1"/>
</export>
36 changes: 36 additions & 0 deletions RecoTracker/LST/interface/LSTOutput.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#ifndef RecoTracker_LST_interface_LSTOutput_h
#define RecoTracker_LST_interface_LSTOutput_h

#include <memory>
#include <vector>

class LSTOutput {
public:
LSTOutput() = default;
LSTOutput(std::vector<std::vector<unsigned int>> hitIdx,
std::vector<unsigned int> len,
std::vector<int> seedIdx,
std::vector<short> trackCandidateType) {
hitIdx_ = std::move(hitIdx);
len_ = std::move(len);
seedIdx_ = std::move(seedIdx);
trackCandidateType_ = std::move(trackCandidateType);
}

~LSTOutput() = default;

enum LSTTCType { T5 = 4, pT3 = 5, pT5 = 7, pLS = 8 };

std::vector<std::vector<unsigned int>> const& hitIdx() const { return hitIdx_; }
std::vector<unsigned int> const& len() const { return len_; }
std::vector<int> const& seedIdx() const { return seedIdx_; }
std::vector<short> const& trackCandidateType() const { return trackCandidateType_; }

private:
std::vector<std::vector<unsigned int>> hitIdx_;
std::vector<unsigned int> len_;
std::vector<int> seedIdx_;
std::vector<short> trackCandidateType_;
};

#endif
40 changes: 40 additions & 0 deletions RecoTracker/LST/interface/LSTPhase2OTHitsInput.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#ifndef RecoTracker_LST_interface_LSTPhase2OTHitsInput_h
#define RecoTracker_LST_interface_LSTPhase2OTHitsInput_h

#include <memory>
#include <vector>

#include "DataFormats/TrackerRecHit2D/interface/Phase2TrackerRecHit1D.h"

class LSTPhase2OTHitsInput {
public:
LSTPhase2OTHitsInput() = default;
LSTPhase2OTHitsInput(std::vector<unsigned int> detId,
std::vector<float> x,
std::vector<float> y,
std::vector<float> z,
std::vector<TrackingRecHit const*> hits) {
detId_ = std::move(detId);
x_ = std::move(x);
y_ = std::move(y);
z_ = std::move(z);
hits_ = std::move(hits);
}

~LSTPhase2OTHitsInput() = default;

std::vector<unsigned int> const& detId() const { return detId_; }
std::vector<float> const& x() const { return x_; }
std::vector<float> const& y() const { return y_; }
std::vector<float> const& z() const { return z_; }
std::vector<TrackingRecHit const*> const& hits() const { return hits_; }

private:
std::vector<unsigned int> detId_;
std::vector<float> x_;
std::vector<float> y_;
std::vector<float> z_;
std::vector<TrackingRecHit const*> hits_;
};

#endif
Loading