-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #31723 from cms-patatrack/patatrack_integration_11…
…_N_pixel_vertices Patatrack integration - Pixel vertex reconstruction (11/N)
- Loading branch information
Showing
31 changed files
with
2,255 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<use name="cuda"/> | ||
<use name="eigen"/> | ||
<use name="rootcore"/> | ||
<use name="CUDADataFormats/Common"/> | ||
<use name="DataFormats/Common"/> | ||
<use name="HeterogeneousCore/CUDAUtilities"/> | ||
<export> | ||
<lib name="1"/> | ||
</export> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#ifndef CUDADataFormatsVertexZVertexHeterogeneous_H | ||
#define CUDADataFormatsVertexZVertexHeterogeneous_H | ||
|
||
#include "CUDADataFormats/Vertex/interface/ZVertexSoA.h" | ||
#include "CUDADataFormats/Common/interface/HeterogeneousSoA.h" | ||
#include "CUDADataFormats/Track/interface/PixelTrackHeterogeneous.h" | ||
|
||
using ZVertexHeterogeneous = HeterogeneousSoA<ZVertexSoA>; | ||
#ifndef __CUDACC__ | ||
#include "CUDADataFormats/Common/interface/Product.h" | ||
using ZVertexCUDAProduct = cms::cuda::Product<ZVertexHeterogeneous>; | ||
#endif | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#ifndef CUDADataFormats_Vertex_ZVertexSoA_h | ||
#define CUDADataFormats_Vertex_ZVertexSoA_h | ||
|
||
#include <cstdint> | ||
#include "HeterogeneousCore/CUDAUtilities/interface/cudaCompat.h" | ||
|
||
// SOA for vertices | ||
// These vertices are clusterized and fitted only along the beam line (z) | ||
// to obtain their global coordinate the beam spot position shall be added (eventually correcting for the beam angle as well) | ||
struct ZVertexSoA { | ||
static constexpr uint32_t MAXTRACKS = 32 * 1024; | ||
static constexpr uint32_t MAXVTX = 1024; | ||
|
||
int16_t idv[MAXTRACKS]; // vertex index for each associated (original) track (-1 == not associate) | ||
float zv[MAXVTX]; // output z-posistion of found vertices | ||
float wv[MAXVTX]; // output weight (1/error^2) on the above | ||
float chi2[MAXVTX]; // vertices chi2 | ||
float ptv2[MAXVTX]; // vertices pt^2 | ||
int32_t ndof[MAXTRACKS]; // vertices number of dof (reused as workspace for the number of nearest neighbours FIXME) | ||
uint16_t sortInd[MAXVTX]; // sorted index (by pt2) ascending | ||
uint32_t nvFinal; // the number of vertices | ||
|
||
__host__ __device__ void init() { nvFinal = 0; } | ||
}; | ||
|
||
#endif // CUDADataFormats_Vertex_ZVertexSoA_h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#ifndef CUDADataFormats_Vertex_src_classes_h | ||
#define CUDADataFormats_Vertex_src_classes_h | ||
|
||
#include "CUDADataFormats/Vertex/interface/ZVertexHeterogeneous.h" | ||
#include "CUDADataFormats/Common/interface/Product.h" | ||
#include "DataFormats/Common/interface/Wrapper.h" | ||
|
||
#endif // CUDADataFormats_Vertex_src_classes_h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<lcgdict> | ||
<class name="cms::cuda::Product<ZVertexHeterogeneous>" persistent="false"/> | ||
<class name="edm::Wrapper<ZVertexCUDAProduct>" persistent="false"/> | ||
<class name="ZVertexHeterogeneous" persistent="false"/> | ||
<class name="edm::Wrapper<ZVertexHeterogeneous>" persistent="false"/> | ||
</lcgdict> |
7 changes: 7 additions & 0 deletions
7
DQM/TrackingMonitorClient/python/pixelVertexResolutionClient_cfi.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import FWCore.ParameterSet.Config as cms | ||
|
||
from DQM.TrackingMonitorClient.primaryVertexResolutionClient_cfi import primaryVertexResolutionClient as _primaryVertexResolutionClient | ||
|
||
pixelVertexResolutionClient = _primaryVertexResolutionClient.clone( | ||
subDirs = ["OfflinePixelPV/Resolution/*"] | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import FWCore.ParameterSet.Config as cms | ||
|
||
from DQMOffline.RecoB.PrimaryVertexMonitor_cff import pvMonitor as _pvMonitor | ||
pixelPVMonitor = _pvMonitor.clone( | ||
TopFolderName = "OfflinePixelPV", | ||
vertexLabel = "pixelVertices", | ||
ndof = cms.int32( 1 ) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
86 changes: 86 additions & 0 deletions
86
RecoPixelVertexing/PixelTrackFitting/plugins/PixelTrackDumpCUDA.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
#include <cuda_runtime.h> | ||
|
||
#include "CUDADataFormats/Common/interface/Product.h" | ||
#include "CUDADataFormats/Track/interface/PixelTrackHeterogeneous.h" | ||
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHit2DHeterogeneous.h" | ||
#include "CUDADataFormats/Vertex/interface/ZVertexHeterogeneous.h" | ||
#include "DataFormats/Common/interface/Handle.h" | ||
#include "FWCore/Framework/interface/ConsumesCollector.h" | ||
#include "FWCore/Framework/interface/ESHandle.h" | ||
#include "FWCore/Framework/interface/Event.h" | ||
#include "FWCore/Framework/interface/EventSetup.h" | ||
#include "FWCore/Framework/interface/MakerMacros.h" | ||
#include "FWCore/Framework/interface/global/EDAnalyzer.h" | ||
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" | ||
#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" | ||
#include "FWCore/PluginManager/interface/ModuleDef.h" | ||
#include "FWCore/Utilities/interface/EDGetToken.h" | ||
#include "FWCore/Utilities/interface/InputTag.h" | ||
#include "FWCore/Utilities/interface/RunningAverage.h" | ||
#include "HeterogeneousCore/CUDACore/interface/ScopedContext.h" | ||
#include "RecoTracker/TkMSParametrization/interface/PixelRecoUtilities.h" | ||
|
||
class PixelTrackDumpCUDA : public edm::global::EDAnalyzer<> { | ||
public: | ||
explicit PixelTrackDumpCUDA(const edm::ParameterSet& iConfig); | ||
~PixelTrackDumpCUDA() override = default; | ||
|
||
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); | ||
|
||
private: | ||
void analyze(edm::StreamID streamID, edm::Event const& iEvent, const edm::EventSetup& iSetup) const override; | ||
const bool m_onGPU; | ||
edm::EDGetTokenT<cms::cuda::Product<PixelTrackHeterogeneous>> tokenGPUTrack_; | ||
edm::EDGetTokenT<cms::cuda::Product<ZVertexHeterogeneous>> tokenGPUVertex_; | ||
edm::EDGetTokenT<PixelTrackHeterogeneous> tokenSoATrack_; | ||
edm::EDGetTokenT<ZVertexHeterogeneous> tokenSoAVertex_; | ||
}; | ||
|
||
PixelTrackDumpCUDA::PixelTrackDumpCUDA(const edm::ParameterSet& iConfig) | ||
: m_onGPU(iConfig.getParameter<bool>("onGPU")) { | ||
if (m_onGPU) { | ||
tokenGPUTrack_ = | ||
consumes<cms::cuda::Product<PixelTrackHeterogeneous>>(iConfig.getParameter<edm::InputTag>("pixelTrackSrc")); | ||
tokenGPUVertex_ = | ||
consumes<cms::cuda::Product<ZVertexHeterogeneous>>(iConfig.getParameter<edm::InputTag>("pixelVertexSrc")); | ||
} else { | ||
tokenSoATrack_ = consumes<PixelTrackHeterogeneous>(iConfig.getParameter<edm::InputTag>("pixelTrackSrc")); | ||
tokenSoAVertex_ = consumes<ZVertexHeterogeneous>(iConfig.getParameter<edm::InputTag>("pixelVertexSrc")); | ||
} | ||
} | ||
|
||
void PixelTrackDumpCUDA::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { | ||
edm::ParameterSetDescription desc; | ||
|
||
desc.add<bool>("onGPU", true); | ||
desc.add<edm::InputTag>("pixelTrackSrc", edm::InputTag("caHitNtupletCUDA")); | ||
desc.add<edm::InputTag>("pixelVertexSrc", edm::InputTag("pixelVertexCUDA")); | ||
descriptions.add("pixelTrackDumpCUDA", desc); | ||
} | ||
|
||
void PixelTrackDumpCUDA::analyze(edm::StreamID streamID, | ||
edm::Event const& iEvent, | ||
const edm::EventSetup& iSetup) const { | ||
if (m_onGPU) { | ||
auto const& hTracks = iEvent.get(tokenGPUTrack_); | ||
cms::cuda::ScopedContextProduce ctx{hTracks}; | ||
|
||
auto const& tracks = ctx.get(hTracks); | ||
auto const* tsoa = tracks.get(); | ||
assert(tsoa); | ||
|
||
auto const& vertices = ctx.get(iEvent.get(tokenGPUVertex_)); | ||
auto const* vsoa = vertices.get(); | ||
assert(vsoa); | ||
|
||
} else { | ||
auto const* tsoa = iEvent.get(tokenSoATrack_).get(); | ||
assert(tsoa); | ||
|
||
auto const* vsoa = iEvent.get(tokenSoAVertex_).get(); | ||
assert(vsoa); | ||
} | ||
} | ||
|
||
DEFINE_FWK_MODULE(PixelTrackDumpCUDA); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.