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

Simplify pixel typedefs #40565

Merged
merged 2 commits into from Jan 22, 2023
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
45 changes: 17 additions & 28 deletions RecoLocalTracker/SiPixelRecHits/plugins/SiPixelRecHitConverter.cc
Expand Up @@ -5,7 +5,7 @@
* History: Feb 27, 2006 - initial version
* May 30, 2006 - edm::DetSetVector and edm::Ref
* Aug 30, 2007 - edmNew::DetSetVector
* Jan 31, 2008 - change to use Lorentz angle from DB (Lotte Wilke)
* Jan 31, 2008 - change to use Lorentz angle from DB (Lotte Wilke)
* ------------------------------------------------------
*/

Expand Down Expand Up @@ -54,7 +54,6 @@
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/MakerMacros.h"

#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
Expand Down Expand Up @@ -109,18 +108,18 @@ namespace cms {

//--- Execute the position estimator algorithm(s).
void run(edm::Event& e,
edm::Handle<edmNew::DetSetVector<SiPixelCluster>> inputhandle,
edm::Handle<SiPixelClusterCollectionNew> inputhandle,
SiPixelRecHitCollectionNew& output,
TrackerGeometry const& geom);

private:
using HMSstorage = HostProduct<uint32_t[]>;

// TO DO: maybe allow a map of pointers?
/// const PixelClusterParameterEstimator * cpe_; // what we got (for now, one ptr to base class)
PixelCPEBase const* cpe_ = nullptr; // What we got (for now, one ptr to base class)
edm::InputTag const src_;
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>> const tPixelCluster_;
std::string const cpeName_;
edm::EDGetTokenT<SiPixelClusterCollectionNew> const tPixelCluster_;
edm::EDPutTokenT<SiPixelRecHitCollection> const tPut_;
edm::EDPutTokenT<HMSstorage> const tHost_;
edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> const tTrackerGeom_;
Expand All @@ -133,12 +132,12 @@ namespace cms {
//---------------------------------------------------------------------------
SiPixelRecHitConverter::SiPixelRecHitConverter(edm::ParameterSet const& conf)
: src_(conf.getParameter<edm::InputTag>("src")),
tPixelCluster_(consumes<edmNew::DetSetVector<SiPixelCluster>>(src_)),
cpeName_(conf.getParameter<std::string>("CPE")),
tPixelCluster_(consumes<SiPixelClusterCollectionNew>(src_)),
tPut_(produces<SiPixelRecHitCollection>()),
tHost_(produces<HMSstorage>()),
tTrackerGeom_(esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()),
tCPE_(esConsumes<PixelClusterParameterEstimator, TkPixelCPERecord>(
edm::ESInputTag("", conf.getParameter<std::string>("CPE")))) {}
tCPE_(esConsumes<PixelClusterParameterEstimator, TkPixelCPERecord>(edm::ESInputTag("", cpeName_))) {}

// Destructor
SiPixelRecHitConverter::~SiPixelRecHitConverter() {}
Expand All @@ -148,7 +147,7 @@ namespace cms {
//---------------------------------------------------------------------------
void SiPixelRecHitConverter::produce(edm::Event& e, const edm::EventSetup& es) {
// Step A.1: get input data
edm::Handle<edmNew::DetSetVector<SiPixelCluster>> input;
edm::Handle<SiPixelClusterCollectionNew> input;
e.getByToken(tPixelCluster_, input);

// Step A.2: get event setup
Expand All @@ -175,7 +174,7 @@ namespace cms {
//! New interface reading DetSetVector by V.Chiochia (May 30th, 2006)
//---------------------------------------------------------------------------
void SiPixelRecHitConverter::run(edm::Event& iEvent,
edm::Handle<edmNew::DetSetVector<SiPixelCluster>> inputhandle,
edm::Handle<SiPixelClusterCollectionNew> inputhandle,
SiPixelRecHitCollectionNew& output,
TrackerGeometry const& geom) {
if (!cpe_) {
Expand All @@ -188,7 +187,7 @@ namespace cms {
int numberOfDetUnits = 0;
int numberOfClusters = 0;

const edmNew::DetSetVector<SiPixelCluster>& input = *inputhandle;
const SiPixelClusterCollectionNew& input = *inputhandle;

// allocate a buffer for the indices of the clusters
auto hmsp = std::make_unique<uint32_t[]>(gpuClustering::maxNumModules + 1);
Expand Down Expand Up @@ -238,32 +237,22 @@ namespace cms {
LocalError le(std::get<1>(tuple));
SiPixelRecHitQuality::QualWordType rqw(std::get<2>(tuple));
// Create a persistent edm::Ref to the cluster
edm::Ref<edmNew::DetSetVector<SiPixelCluster>, SiPixelCluster> cluster =
edmNew::makeRefTo(inputhandle, clustIt);
SiPixelClusterRefNew cluster = edmNew::makeRefTo(inputhandle, clustIt);
// Make a RecHit and add it to the DetSet
// old : recHitsOnDetUnit.push_back( new SiPixelRecHit( lp, le, detIdObject, &*clustIt) );
SiPixelRecHit hit(lp, le, rqw, *genericDet, cluster);
//
// Now save it =================
recHitsOnDetUnit.push_back(hit);
// =============================

// std::cout << "SiPixelRecHitConverterVI " << numberOfClusters << ' '<< lp << " " << le << std::endl;
LogDebug("SiPixelRecHitConverter") << "RecHit " << (numberOfClusters - 1) //
<< " with local position " << lp << " and local error " << le;
} // <-- End loop on Clusters

// LogDebug("SiPixelRecHitConverter")
//std::cout << "SiPixelRecHitConverterVI "
// << " Found " << recHitsOnDetUnit.size() << " RecHits on " << detid //;
// << std::endl;
LogDebug("SiPixelRecHitConverter") << "Found " << recHitsOnDetUnit.size() << " RecHits on " << detid;

} // <-- End loop on DetUnits

// LogDebug ("SiPixelRecHitConverter")
// std::cout << "SiPixelRecHitConverterVI "
// << cpeName_ << " converted " << numberOfClusters
// << " SiPixelClusters into SiPixelRecHits, in "
// << numberOfDetUnits << " DetUnits." //;
// << std::endl;
LogDebug("SiPixelRecHitConverter") << cpeName_ << " converted " << numberOfClusters
<< " SiPixelClusters into SiPixelRecHits, in " << numberOfDetUnits
<< " DetUnits.";
}
} // end of namespace cms

Expand Down
12 changes: 6 additions & 6 deletions RecoLocalTracker/SiPixelRecHits/plugins/SiPixelRecHitFromCUDA.cc
Expand Up @@ -33,7 +33,7 @@ class SiPixelRecHitFromCUDAT : public edm::stream::EDProducer<edm::ExternalWork>
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

using HMSstorage = HostProduct<uint32_t[]>;
using HitsOnGPU = TrackingRecHitSoADevice<TrackerTraits>;
using HitsOnDevice = TrackingRecHitSoADevice<TrackerTraits>;

private:
void acquire(edm::Event const& iEvent,
Expand All @@ -42,9 +42,9 @@ class SiPixelRecHitFromCUDAT : public edm::stream::EDProducer<edm::ExternalWork>
void produce(edm::Event& iEvent, edm::EventSetup const& iSetup) override;

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> geomToken_;
const edm::EDGetTokenT<cms::cuda::Product<HitsOnGPU>> hitsToken_; // CUDA hits
const edm::EDGetTokenT<SiPixelClusterCollectionNew> clusterToken_; // legacy clusters
const edm::EDPutTokenT<SiPixelRecHitCollection> rechitsPutToken_; // legacy rechits
const edm::EDGetTokenT<cms::cuda::Product<HitsOnDevice>> hitsToken_; // CUDA hits
const edm::EDGetTokenT<SiPixelClusterCollectionNew> clusterToken_; // legacy clusters
const edm::EDPutTokenT<SiPixelRecHitCollection> rechitsPutToken_; // legacy rechits
const edm::EDPutTokenT<HMSstorage> hostPutToken_;

uint32_t nHits_;
Expand All @@ -55,7 +55,7 @@ class SiPixelRecHitFromCUDAT : public edm::stream::EDProducer<edm::ExternalWork>
template <typename TrackerTraits>
SiPixelRecHitFromCUDAT<TrackerTraits>::SiPixelRecHitFromCUDAT(const edm::ParameterSet& iConfig)
: geomToken_(esConsumes()),
hitsToken_(consumes<cms::cuda::Product<HitsOnGPU>>(iConfig.getParameter<edm::InputTag>("pixelRecHitSrc"))),
hitsToken_(consumes<cms::cuda::Product<HitsOnDevice>>(iConfig.getParameter<edm::InputTag>("pixelRecHitSrc"))),
clusterToken_(consumes<SiPixelClusterCollectionNew>(iConfig.getParameter<edm::InputTag>("src"))),
rechitsPutToken_(produces<SiPixelRecHitCollection>()),
hostPutToken_(produces<HMSstorage>()) {}
Expand All @@ -73,7 +73,7 @@ template <typename TrackerTraits>
void SiPixelRecHitFromCUDAT<TrackerTraits>::acquire(edm::Event const& iEvent,
edm::EventSetup const& iSetup,
edm::WaitingTaskWithArenaHolder waitingTaskHolder) {
cms::cuda::Product<HitsOnGPU> const& inputDataWrapped = iEvent.get(hitsToken_);
cms::cuda::Product<HitsOnDevice> const& inputDataWrapped = iEvent.get(hitsToken_);

cms::cuda::ScopedContextAcquire ctx{inputDataWrapped, std::move(waitingTaskHolder)};

Expand Down
18 changes: 8 additions & 10 deletions RecoPixelVertexing/PixelTriplets/plugins/CAHitNtupletCUDA.cc
@@ -1,35 +1,33 @@
#include <cuda_runtime.h>

#include "CUDADataFormats/Common/interface/Product.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.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/EDProducer.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/Utilities/interface/InputTag.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 "MagneticField/Records/interface/IdealMagneticFieldRecord.h"

#include "RecoTracker/TkMSParametrization/interface/PixelRecoUtilities.h"

#include "CAHitNtupletGeneratorOnGPU.h"

#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"

template <typename TrackerTraits>
class CAHitNtupletCUDAT : public edm::global::EDProducer<> {
using HitsConstView = TrackingRecHitSoAConstView<TrackerTraits>;
using HitsOnGPU = TrackingRecHitSoADevice<TrackerTraits>; //TODO move to OnDevice
using HitsOnCPU = TrackingRecHitSoAHost<TrackerTraits>; //TODO move to OnHost
using HitsOnDevice = TrackingRecHitSoADevice<TrackerTraits>;
using HitsOnHost = TrackingRecHitSoAHost<TrackerTraits>;

using TrackSoAHost = TrackSoAHeterogeneousHost<TrackerTraits>;
using TrackSoADevice = TrackSoAHeterogeneousDevice<TrackerTraits>;
Expand All @@ -51,9 +49,9 @@ class CAHitNtupletCUDAT : public edm::global::EDProducer<> {
bool onGPU_;

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> tokenField_;
edm::EDGetTokenT<cms::cuda::Product<HitsOnGPU>> tokenHitGPU_;
edm::EDGetTokenT<cms::cuda::Product<HitsOnDevice>> tokenHitGPU_;
edm::EDPutTokenT<cms::cuda::Product<TrackSoADevice>> tokenTrackGPU_;
edm::EDGetTokenT<HitsOnCPU> tokenHitCPU_;
edm::EDGetTokenT<HitsOnHost> tokenHitCPU_;
edm::EDPutTokenT<TrackSoAHost> tokenTrackCPU_;

GPUAlgo gpuAlgo_;
Expand Down
Expand Up @@ -10,6 +10,10 @@
#include <functional>
#include <vector>

#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.h"
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoADevice.h"
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoAHost.h"
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/Framework/interface/Event.h"
Expand All @@ -21,12 +25,6 @@
#include "HeterogeneousCore/CUDAServices/interface/CUDAService.h"
#include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"

#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"

#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoAHost.h"
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoADevice.h"

#include "CAHitNtupletGeneratorOnGPU.h"

namespace {
Expand Down Expand Up @@ -281,7 +279,7 @@ void CAHitNtupletGeneratorOnGPU<TrackerTraits>::endJob() {

template <typename TrackerTraits>
TrackSoAHeterogeneousDevice<TrackerTraits> CAHitNtupletGeneratorOnGPU<TrackerTraits>::makeTuplesAsync(
HitsOnGPU const& hits_d, float bfield, cudaStream_t stream) const {
HitsOnDevice const& hits_d, float bfield, cudaStream_t stream) const {
using HelixFitOnGPU = HelixFitOnGPU<TrackerTraits>;
using TrackSoA = TrackSoAHeterogeneousDevice<TrackerTraits>;
using GPUKernels = CAHitNtupletGeneratorKernelsGPU<TrackerTraits>;
Expand Down Expand Up @@ -314,7 +312,7 @@ TrackSoAHeterogeneousDevice<TrackerTraits> CAHitNtupletGeneratorOnGPU<TrackerTra
}

template <typename TrackerTraits>
TrackSoAHeterogeneousHost<TrackerTraits> CAHitNtupletGeneratorOnGPU<TrackerTraits>::makeTuples(HitsOnCPU const& hits_h,
TrackSoAHeterogeneousHost<TrackerTraits> CAHitNtupletGeneratorOnGPU<TrackerTraits>::makeTuples(HitsOnHost const& hits_h,
float bfield) const {
using HelixFitOnGPU = HelixFitOnGPU<TrackerTraits>;
using TrackSoA = TrackSoAHeterogeneousHost<TrackerTraits>;
Expand Down
Expand Up @@ -2,24 +2,20 @@
#define RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorOnGPU_h

#include <cuda_runtime.h>
// #include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHit2DHeterogeneous.h"
// #include "CUDADataFormats/Track/interface/PixelTrackHeterogeneous.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"

#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitsUtilities.h"
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoAHost.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"
#include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.h"
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoADevice.h"

#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoAHost.h"
#include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitsUtilities.h"
#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "HeterogeneousCore/CUDAUtilities/interface/SimpleVector.h"

#include "CAHitNtupletGeneratorKernels.h"
#include "HelixFitOnGPU.h"

#include "GPUCACell.h"
#include "HelixFitOnGPU.h"

namespace edm {
class Event;
Expand All @@ -32,8 +28,8 @@ class CAHitNtupletGeneratorOnGPU {
public:
using HitsView = TrackingRecHitSoAView<TrackerTraits>;
using HitsConstView = TrackingRecHitSoAConstView<TrackerTraits>;
using HitsOnGPU = TrackingRecHitSoADevice<TrackerTraits>; //TODO move to OnDevice
using HitsOnCPU = TrackingRecHitSoAHost<TrackerTraits>; //TODO move to OnHost
using HitsOnDevice = TrackingRecHitSoADevice<TrackerTraits>;
using HitsOnHost = TrackingRecHitSoAHost<TrackerTraits>;
using hindex_type = typename TrackingRecHitSoA<TrackerTraits>::hindex_type;

using HitToTuple = caStructures::HitToTupleT<TrackerTraits>;
Expand Down Expand Up @@ -66,9 +62,9 @@ class CAHitNtupletGeneratorOnGPU {
void beginJob();
void endJob();

TrackSoADevice makeTuplesAsync(HitsOnGPU const& hits_d, float bfield, cudaStream_t stream) const;
TrackSoADevice makeTuplesAsync(HitsOnDevice const& hits_d, float bfield, cudaStream_t stream) const;

TrackSoAHost makeTuples(HitsOnCPU const& hits_d, float bfield) const;
TrackSoAHost makeTuples(HitsOnHost const& hits_d, float bfield) const;

private:
void buildDoublets(const HitsConstView& hh, cudaStream_t stream) const;
Expand Down