CMS 3D CMS Logo

EcalCPUUncalibRecHitProducer.cc
Go to the documentation of this file.
1 #include <iostream>
2 
3 // framework
5 
12 
13 // algorithm specific
14 
16 
18 
19 class EcalCPUUncalibRecHitProducer : public edm::stream::EDProducer<edm::ExternalWork> {
20 public:
24 
25 private:
27  void produce(edm::Event&, edm::EventSetup const&) override;
28 
29 private:
34 
37 };
38 
41 
42  desc.add<edm::InputTag>("recHitsInLabelEB", edm::InputTag{"ecalUncalibRecHitProducerGPU", "EcalUncalibRecHitsEB"});
43  desc.add<edm::InputTag>("recHitsInLabelEE", edm::InputTag{"ecalUncalibRecHitProducerGPU", "EcalUncalibRecHitsEE"});
44  desc.add<std::string>("recHitsOutLabelEB", "EcalUncalibRecHitsEB");
45  desc.add<std::string>("recHitsOutLabelEE", "EcalUncalibRecHitsEE");
46  desc.add<bool>("containsTimingInformation", false);
47 
48  confDesc.add("ecalCPUUncalibRecHitProducer", desc);
49 }
50 
52  : recHitsInEBToken_{consumes<InputProduct>(ps.getParameter<edm::InputTag>("recHitsInLabelEB"))},
53  recHitsInEEToken_{consumes<InputProduct>(ps.getParameter<edm::InputTag>("recHitsInLabelEE"))},
54  recHitsOutEBToken_{produces<OutputProduct>(ps.getParameter<std::string>("recHitsOutLabelEB"))},
55  recHitsOutEEToken_{produces<OutputProduct>(ps.getParameter<std::string>("recHitsOutLabelEE"))},
56  containsTimingInformation_{ps.getParameter<bool>("containsTimingInformation")} {}
57 
59 
61  edm::EventSetup const& setup,
63  // retrieve data/ctx
64  auto const& ebRecHitsProduct = event.get(recHitsInEBToken_);
65  auto const& eeRecHitsProduct = event.get(recHitsInEEToken_);
66  cms::cuda::ScopedContextAcquire ctx{ebRecHitsProduct, std::move(taskHolder)};
67  auto const& ebRecHits = ctx.get(ebRecHitsProduct);
68  auto const& eeRecHits = ctx.get(eeRecHitsProduct);
69 
70  // resize the output buffers
71  recHitsEB_.resize(ebRecHits.size);
72  recHitsEE_.resize(eeRecHits.size);
73 
74  auto lambdaToTransfer = [&ctx](auto& dest, auto* src) {
75  using vector_type = typename std::remove_reference<decltype(dest)>::type;
76  using type = typename vector_type::value_type;
77  using src_type = typename std::remove_pointer<decltype(src)>::type;
78  static_assert(std::is_same<src_type, type>::value && "dst and src data types do not match");
79  cudaCheck(cudaMemcpyAsync(dest.data(), src, dest.size() * sizeof(type), cudaMemcpyDeviceToHost, ctx.stream()));
80  };
81 
82  // enqeue transfers
83  lambdaToTransfer(recHitsEB_.did, ebRecHits.did.get());
84  lambdaToTransfer(recHitsEE_.did, eeRecHits.did.get());
85 
86  lambdaToTransfer(recHitsEB_.amplitudesAll, ebRecHits.amplitudesAll.get());
87  lambdaToTransfer(recHitsEE_.amplitudesAll, eeRecHits.amplitudesAll.get());
88 
89  lambdaToTransfer(recHitsEB_.amplitude, ebRecHits.amplitude.get());
90  lambdaToTransfer(recHitsEE_.amplitude, eeRecHits.amplitude.get());
91 
92  lambdaToTransfer(recHitsEB_.chi2, ebRecHits.chi2.get());
93  lambdaToTransfer(recHitsEE_.chi2, eeRecHits.chi2.get());
94 
95  lambdaToTransfer(recHitsEB_.pedestal, ebRecHits.pedestal.get());
96  lambdaToTransfer(recHitsEE_.pedestal, eeRecHits.pedestal.get());
97 
98  lambdaToTransfer(recHitsEB_.flags, ebRecHits.flags.get());
99  lambdaToTransfer(recHitsEE_.flags, eeRecHits.flags.get());
100 
102  lambdaToTransfer(recHitsEB_.jitter, ebRecHits.jitter.get());
103  lambdaToTransfer(recHitsEE_.jitter, eeRecHits.jitter.get());
104 
105  lambdaToTransfer(recHitsEB_.jitterError, ebRecHits.jitterError.get());
106  lambdaToTransfer(recHitsEE_.jitterError, eeRecHits.jitterError.get());
107  }
108 }
109 
111  // tmp vectors
112  auto recHitsOutEB = std::make_unique<OutputProduct>(std::move(recHitsEB_));
113  auto recHitsOutEE = std::make_unique<OutputProduct>(std::move(recHitsEE_));
114 
115  // put into event
116  event.put(recHitsOutEBToken_, std::move(recHitsOutEB));
117  event.put(recHitsOutEEToken_, std::move(recHitsOutEE));
118 }
119 
ecal::UncalibratedRecHit::jitter
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type jitter
Definition: EcalUncalibratedRecHit.h:26
EcalCPUUncalibRecHitProducer::recHitsOutEBToken_
edm::EDPutTokenT< OutputProduct > recHitsOutEBToken_
Definition: EcalCPUUncalibRecHitProducer.cc:33
EcalCPUUncalibRecHitProducer::produce
void produce(edm::Event &, edm::EventSetup const &) override
Definition: EcalCPUUncalibRecHitProducer.cc:110
ecal::UncalibratedRecHit::jitterError
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type jitterError
Definition: EcalUncalibratedRecHit.h:27
ecal::UncalibratedRecHit::amplitudesAll
StoragePolicy::template StorageSelector< reco::ComputationScalarType >::type amplitudesAll
Definition: EcalUncalibratedRecHit.h:22
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm::EDPutTokenT
Definition: EDPutToken.h:33
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
EDProducer.h
EcalCPUUncalibRecHitProducer::~EcalCPUUncalibRecHitProducer
~EcalCPUUncalibRecHitProducer() override
Definition: EcalCPUUncalibRecHitProducer.cc:58
EcalCPUUncalibRecHitProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &)
Definition: EcalCPUUncalibRecHitProducer.cc:39
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
ecal::UncalibratedRecHit::did
StoragePolicy::template StorageSelector< uint32_t >::type did
Definition: EcalUncalibratedRecHit.h:28
edm::WaitingTaskWithArenaHolder
Definition: WaitingTaskWithArenaHolder.h:34
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
EcalCPUUncalibRecHitProducer::EcalCPUUncalibRecHitProducer
EcalCPUUncalibRecHitProducer(edm::ParameterSet const &ps)
Definition: EcalCPUUncalibRecHitProducer.cc:51
ecal::UncalibratedRecHit::pedestal
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type pedestal
Definition: EcalUncalibratedRecHit.h:25
EcalCPUUncalibRecHitProducer::recHitsOutEEToken_
edm::EDPutTokenT< OutputProduct > recHitsOutEEToken_
Definition: EcalCPUUncalibRecHitProducer.cc:33
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalUncalibratedRecHit.h
EcalCPUUncalibRecHitProducer::containsTimingInformation_
bool containsTimingInformation_
Definition: EcalCPUUncalibRecHitProducer.cc:36
ecal::UncalibratedRecHit::resize
std::enable_if< std::is_same< U, ::calo::common::tags::Vec >::value, void >::type resize(size_t size)
Definition: EcalUncalibratedRecHit.h:32
ecal::UncalibratedRecHit::amplitude
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type amplitude
Definition: EcalUncalibratedRecHit.h:23
EcalCPUUncalibRecHitProducer::recHitsEE_
OutputProduct recHitsEE_
Definition: EcalCPUUncalibRecHitProducer.cc:35
edm::ParameterSet
Definition: ParameterSet.h:47
TrackRefitter_38T_cff.src
src
Definition: TrackRefitter_38T_cff.py:24
Event.h
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:40
EcalCPUUncalibRecHitProducer
Definition: EcalCPUUncalibRecHitProducer.cc:19
FEDRawDataCollection.h
cudaCheck.h
edm::stream::EDProducer
Definition: EDProducer.h:38
EcalCPUUncalibRecHitProducer::recHitsEB_
OutputProduct recHitsEB_
Definition: EcalCPUUncalibRecHitProducer.cc:35
edm::EventSetup
Definition: EventSetup.h:58
reco::JetExtendedAssociation::value_type
Container::value_type value_type
Definition: JetExtendedAssociation.h:30
cms::cuda::ScopedContextAcquire
Definition: ScopedContext.h:101
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
cudaCheck
#define cudaCheck(ARG,...)
Definition: cudaCheck.h:62
ecal::UncalibratedRecHit< calo::common::VecStoragePolicy< calo::common::CUDAHostAllocatorAlias > >
relativeConstraints.value
value
Definition: relativeConstraints.py:53
cms::cuda::Product
Definition: Product.h:34
EcalCPUUncalibRecHitProducer::acquire
void acquire(edm::Event const &, edm::EventSetup const &, edm::WaitingTaskWithArenaHolder) override
Definition: EcalCPUUncalibRecHitProducer.cc:60
ScopedContext.h
EventSetup.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
ecal::UncalibratedRecHit::chi2
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type chi2
Definition: EcalUncalibratedRecHit.h:24
ParameterSet.h
ecal::UncalibratedRecHit::flags
StoragePolicy::template StorageSelector< uint32_t >::type flags
Definition: EcalUncalibratedRecHit.h:29
EcalCPUUncalibRecHitProducer::recHitsInEBToken_
edm::EDGetTokenT< InputProduct > recHitsInEBToken_
Definition: EcalCPUUncalibRecHitProducer.cc:31
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
edm::InputTag
Definition: InputTag.h:15
mps_fire.dest
dest
Definition: mps_fire.py:179
EcalCPUUncalibRecHitProducer::recHitsInEEToken_
edm::EDGetTokenT< InputProduct > recHitsInEEToken_
Definition: EcalCPUUncalibRecHitProducer.cc:31