CMS 3D CMS Logo

EERecHitGPU.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <string>
3 
11 
13 
18 
23 
25 public:
26  explicit EERecHitGPU(const edm::ParameterSet &ps);
27  ~EERecHitGPU() override;
28  void beginRun(edm::Run const &, edm::EventSetup const &) override;
29 
30  void produce(edm::Event &, const edm::EventSetup &) override;
31 
32 private:
35 
36  std::unique_ptr<HGCeeRecHitCollection> rechits_;
37 
38  //constants
41 
42  std::string assert_error_message_(std::string, const size_t &, const size_t &);
44 
45  //conditions (geometry, topology, ...)
46  std::unique_ptr<hgcal::RecHitTools> tools_;
47 
48  //data processing
51 
55 
57 };
58 
60  : uncalibRecHitCPUToken_{consumes<HGCUncalibratedRecHitCollection>(
61  ps.getParameter<edm::InputTag>("HGCEEUncalibRecHitsTok"))},
62  recHitGPUToken_{produces<cms::cuda::Product<HGCRecHitGPUProduct>>()} {
63  cdata_.keV2DIGI_ = ps.getParameter<double>("HGCEE_keV2DIGI");
64  cdata_.xmin_ = ps.getParameter<double>("minValSiPar"); //float
65  cdata_.xmax_ = ps.getParameter<double>("maxValSiPar"); //float
66  cdata_.aterm_ = ps.getParameter<double>("noiseSiPar"); //float
67  cdata_.cterm_ = ps.getParameter<double>("constSiPar"); //float
68  vdata_.fCPerMIP_ = ps.getParameter<std::vector<double>>("HGCEE_fCPerMIP");
69  vdata_.cce_ = ps.getParameter<edm::ParameterSet>("HGCEE_cce").getParameter<std::vector<double>>("values");
70  vdata_.noise_fC_ = ps.getParameter<edm::ParameterSet>("HGCEE_noise_fC").getParameter<std::vector<double>>("values");
71  vdata_.rcorr_ = ps.getParameter<std::vector<double>>("rcorr");
72  vdata_.weights_ = ps.getParameter<std::vector<double>>("weights");
73  cdata_.uncalib2GeV_ = 1e-6 / cdata_.keV2DIGI_;
74  assert_sizes_constants_(vdata_);
75 
76  kcdata_ = new KernelConstantData<HGCeeUncalibRecHitConstantData>(cdata_, vdata_);
77  convert_constant_data_(kcdata_);
78 
79  tools_ = std::make_unique<hgcal::RecHitTools>();
80 }
81 
83 
84 std::string EERecHitGPU::assert_error_message_(std::string var, const size_t &s1, const size_t &s2) {
85  std::string str1 = "The '";
86  std::string str2 = "' array must be of size ";
87  std::string str3 = " to hold the configuration data, but is of size ";
88  return str1 + var + str2 + std::to_string(s1) + str3 + std::to_string(s2);
89 }
90 
93  edm::LogError("WrongSize") << this->assert_error_message_(
96  edm::LogError("WrongSize") << this->assert_error_message_(
99  edm::LogError("WrongSize") << this->assert_error_message_(
102  edm::LogError("WrongSize") << this->assert_error_message_(
105  edm::LogError("WrongSize") << this->assert_error_message_(
107 }
108 
110 
112  cms::cuda::ScopedContextProduce ctx{event.streamID()};
113 
114  const auto &hits = event.get(uncalibRecHitCPUToken_);
115  const unsigned nhits(hits.size());
116  rechits_ = std::make_unique<HGCRecHitCollection>();
117 
118  if (nhits == 0)
119  edm::LogError("EERecHitGPU") << "WARNING: no input hits!";
120 
121  prod_ = HGCRecHitGPUProduct(nhits, ctx.stream());
122  d_uncalib_ = HGCUncalibRecHitDevice(nhits, ctx.stream());
124 
126  km.run_kernels(kcdata_, ctx.stream());
127 
128  ctx.emplace(event, recHitGPUToken_, std::move(prod_));
129 }
130 
132  for (size_t i = 0; i < kcdata->vdata_.fCPerMIP_.size(); ++i)
133  kcdata->data_.fCPerMIP_[i] = kcdata->vdata_.fCPerMIP_[i];
134  for (size_t i = 0; i < kcdata->vdata_.cce_.size(); ++i)
135  kcdata->data_.cce_[i] = kcdata->vdata_.cce_[i];
136  for (size_t i = 0; i < kcdata->vdata_.noise_fC_.size(); ++i)
137  kcdata->data_.noise_fC_[i] = kcdata->vdata_.noise_fC_[i];
138  for (size_t i = 0; i < kcdata->vdata_.rcorr_.size(); ++i)
139  kcdata->data_.rcorr_[i] = kcdata->vdata_.rcorr_[i];
140  for (size_t i = 0; i < kcdata->vdata_.weights_.size(); ++i)
141  kcdata->data_.weights_[i] = kcdata->vdata_.weights_[i];
142 }
143 
HGCUncalibRecHitHost
Definition: HGCUncalibRecHitHost.h:12
EERecHitGPU::rechits_
std::unique_ptr< HGCeeRecHitCollection > rechits_
Definition: EERecHitGPU.cc:36
EERecHitGPU::prod_
HGCRecHitGPUProduct prod_
Definition: EERecHitGPU.cc:52
mps_fire.i
i
Definition: mps_fire.py:428
MessageLogger.h
MessageLogger.h
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
HGCeeUncalibRecHitConstantData::ee_cce
static constexpr size_t ee_cce
Definition: HGCUncalibRecHitsToRecHitsConstants.h:19
KernelConstantData::vdata_
HGCConstantVectorData vdata_
Definition: KernelManagerHGCalRecHit.h:30
KernelConstantData::data_
T data_
Definition: KernelManagerHGCalRecHit.h:29
HGCeeUncalibRecHitConstantData::weights_
double weights_[ee_weights]
Definition: HGCUncalibRecHitsToRecHitsConstants.h:28
cms::cuda::ScopedContextProduce
Definition: ScopedContext.h:149
edm::Run
Definition: Run.h:45
HGCRecHitGPUProduct.h
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm::EDPutTokenT
Definition: EDPutToken.h:33
RecHitTools.h
HGCeeUncalibRecHitConstantData::cce_
double cce_[ee_cce]
Definition: HGCUncalibRecHitsToRecHitsConstants.h:25
HGCeeUncalibRecHitConstantData
Definition: HGCUncalibRecHitsToRecHitsConstants.h:16
EERecHitGPU::uncalibRecHitCPUToken_
edm::EDGetTokenT< HGCeeUncalibratedRecHitCollection > uncalibRecHitCPUToken_
Definition: EERecHitGPU.cc:33
HGCConstantVectorData
Definition: HGCUncalibRecHitsToRecHitsConstants.h:7
EDProducer.h
edm::SortedCollection
Definition: SortedCollection.h:49
EERecHitGPU::convert_collection_data_to_soa_
void convert_collection_data_to_soa_(const uint32_t &, const HGCeeUncalibratedRecHitCollection &)
vd
std::vector< DeviationSensor2D * > vd
Definition: DeviationsFromFileSensor2D.h:21
HGCRecHitGPUProduct
Definition: HGCRecHitGPUProduct.h:12
HGCeeUncalibRecHitConstantData::ee_noise_fC
static constexpr size_t ee_noise_fC
Definition: HGCUncalibRecHitsToRecHitsConstants.h:20
KernelManagerHGCalRecHit
Definition: KernelManagerHGCalRecHit.h:33
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
trigObjTnPSource_cfi.var
var
Definition: trigObjTnPSource_cfi.py:21
MakerMacros.h
HGCUncalibRecHitHost.h
EERecHitGPU::recHitGPUToken_
edm::EDPutTokenT< cms::cuda::Product< HGCRecHitGPUProduct > > recHitGPUToken_
Definition: EERecHitGPU.cc:34
EERecHitGPU::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: EERecHitGPU.cc:111
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
EERecHitGPU::kcdata_
KernelConstantData< HGCeeUncalibRecHitConstantData > * kcdata_
Definition: EERecHitGPU.cc:56
HGCUncalibRecHitDevice
Definition: HGCUncalibRecHitDevice.h:11
KernelManagerHGCalRecHit.h
EERecHitGPU
Definition: EERecHitGPU.cc:24
HGCConstantVectorData::fCPerMIP_
std::vector< double > fCPerMIP_
Definition: HGCUncalibRecHitsToRecHitsConstants.h:9
EERecHitGPU::beginRun
void beginRun(edm::Run const &, edm::EventSetup const &) override
Definition: EERecHitGPU.cc:109
nhits
Definition: HIMultiTrackSelector.h:42
EDGetToken.h
EERecHitGPU::~EERecHitGPU
~EERecHitGPU() override
Definition: EERecHitGPU.cc:82
HGCRecHitCollections.h
edm::ParameterSet
Definition: ParameterSet.h:47
EDPutToken.h
HGCeeUncalibRecHitConstantData::ee_rcorr
static constexpr size_t ee_rcorr
Definition: HGCUncalibRecHitsToRecHitsConstants.h:21
EERecHitGPU::tools_
std::unique_ptr< hgcal::RecHitTools > tools_
Definition: EERecHitGPU.cc:46
EERecHitGPU::cdata_
HGCeeUncalibRecHitConstantData cdata_
Definition: EERecHitGPU.cc:39
cudaCheck.h
edm::stream::EDProducer
Definition: EDProducer.h:36
edm::EventSetup
Definition: EventSetup.h:58
EERecHitGPU::EERecHitGPU
EERecHitGPU(const edm::ParameterSet &ps)
Definition: EERecHitGPU.cc:59
HGCConstantVectorData::rcorr_
std::vector< double > rcorr_
Definition: HGCUncalibRecHitsToRecHitsConstants.h:12
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
cms::cuda::for
for(int i=first, nt=offsets[nh];i< nt;i+=gridDim.x *blockDim.x)
Definition: HistoContainer.h:15
HGCeeUncalibRecHitConstantData::fCPerMIP_
double fCPerMIP_[ee_fCPerMIP]
Definition: HGCUncalibRecHitsToRecHitsConstants.h:24
HGCeeUncalibRecHitConstantData::rcorr_
double rcorr_[ee_rcorr]
Definition: HGCUncalibRecHitsToRecHitsConstants.h:27
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
InputTag.h
HGCConstantVectorData::cce_
std::vector< double > cce_
Definition: HGCUncalibRecHitsToRecHitsConstants.h:10
HGCRecHitGPUProduct::get
HGCRecHitSoA get()
Definition: HGCRecHitGPUProduct.h:27
KernelManagerHGCalRecHit::run_kernels
void run_kernels(const KernelConstantData< HGCeeUncalibRecHitConstantData > *, const cudaStream_t &)
ContextState.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
HGCUncalibRecHitDevice::get
HGCUncalibRecHitSoA get() const
Definition: HGCUncalibRecHitDevice.h:23
EERecHitGPU::assert_sizes_constants_
void assert_sizes_constants_(const HGCConstantVectorData &)
Definition: EERecHitGPU.cc:91
EERecHitGPU::vdata_
HGCConstantVectorData vdata_
Definition: EERecHitGPU.cc:40
ScopedContext.h
HGCeeUncalibRecHitConstantData::ee_weights
static constexpr size_t ee_weights
Definition: HGCUncalibRecHitsToRecHitsConstants.h:22
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EERecHitGPU::convert_constant_data_
void convert_constant_data_(KernelConstantData< HGCeeUncalibRecHitConstantData > *)
Definition: EERecHitGPU.cc:131
KernelConstantData< HGCeeUncalibRecHitConstantData >
EERecHitGPU::h_uncalib_
HGCUncalibRecHitHost< HGCeeUncalibratedRecHitCollection > h_uncalib_
Definition: EERecHitGPU.cc:54
ParameterSet.h
HGCUncalibRecHitDevice.h
HGCeeUncalibRecHitConstantData::ee_fCPerMIP
static constexpr size_t ee_fCPerMIP
Definition: HGCUncalibRecHitsToRecHitsConstants.h:18
HGCeeUncalibRecHitConstantData::noise_fC_
double noise_fC_[ee_noise_fC]
Definition: HGCUncalibRecHitsToRecHitsConstants.h:26
HGCConstantVectorData::weights_
std::vector< double > weights_
Definition: HGCUncalibRecHitsToRecHitsConstants.h:13
event
Definition: event.py:1
HGCConstantVectorData::noise_fC_
std::vector< double > noise_fC_
Definition: HGCUncalibRecHitsToRecHitsConstants.h:11
edm::Event
Definition: Event.h:73
edm::Log
Definition: MessageLogger.h:70
EERecHitGPU::assert_error_message_
std::string assert_error_message_(std::string, const size_t &, const size_t &)
Definition: EERecHitGPU.cc:84
edm::InputTag
Definition: InputTag.h:15
EERecHitGPU::d_uncalib_
HGCUncalibRecHitDevice d_uncalib_
Definition: EERecHitGPU.cc:53
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37