Skip to content

Commit

Permalink
Merge pull request #40565 from fwyzard/simplify_pixel_typedefs
Browse files Browse the repository at this point in the history
Simplify pixel typedefs
  • Loading branch information
cmsbuild committed Jan 22, 2023
2 parents 52ce9dc + fb0fceb commit 980f958
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 65 deletions.
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

0 comments on commit 980f958

Please sign in to comment.