CMS 3D CMS Logo

EcalUncalibRecHitConvertGPU2CPUFormat.cc
Go to the documentation of this file.
10 
12 public:
16 
17 private:
19  void produce(edm::Event&, edm::EventSetup const&) override;
20 
21 private:
24 
26 };
27 
30 
31  desc.add<edm::InputTag>("recHitsLabelGPUEB", edm::InputTag("ecalUncalibRecHitProducerGPU", "EcalUncalibRecHitsEB"));
32  desc.add<edm::InputTag>("recHitsLabelGPUEE", edm::InputTag("ecalUncalibRecHitProducerGPU", "EcalUncalibRecHitsEE"));
33 
34  desc.add<std::string>("recHitsLabelCPUEB", "EcalUncalibRecHitsEB");
35  desc.add<std::string>("recHitsLabelCPUEE", "EcalUncalibRecHitsEE");
36 
37  confDesc.add("ecalUncalibRecHitConvertGPU2CPUFormat", desc);
38 }
39 
41  : recHitsGPUEB_{consumes<InputProduct>(ps.getParameter<edm::InputTag>("recHitsLabelGPUEB"))},
42  recHitsGPUEE_{consumes<InputProduct>(ps.getParameter<edm::InputTag>("recHitsLabelGPUEE"))},
43  recHitsLabelCPUEB_{ps.getParameter<std::string>("recHitsLabelCPUEB")},
44  recHitsLabelCPUEE_{ps.getParameter<std::string>("recHitsLabelCPUEE")} {
45  produces<EBUncalibratedRecHitCollection>(recHitsLabelCPUEB_);
46  produces<EEUncalibratedRecHitCollection>(recHitsLabelCPUEE_);
47 }
48 
50 
52  edm::Handle<InputProduct> hRecHitsGPUEB, hRecHitsGPUEE;
53  event.getByToken(recHitsGPUEB_, hRecHitsGPUEB);
54  event.getByToken(recHitsGPUEE_, hRecHitsGPUEE);
55 
56  auto recHitsCPUEB = std::make_unique<EBUncalibratedRecHitCollection>();
57  auto recHitsCPUEE = std::make_unique<EEUncalibratedRecHitCollection>();
58  recHitsCPUEB->reserve(hRecHitsGPUEB->amplitude.size());
59  recHitsCPUEE->reserve(hRecHitsGPUEE->amplitude.size());
60 
61  for (uint32_t i = 0; i < hRecHitsGPUEB->amplitude.size(); ++i) {
62  recHitsCPUEB->emplace_back(DetId{hRecHitsGPUEB->did[i]},
63  hRecHitsGPUEB->amplitude[i],
64  hRecHitsGPUEB->pedestal[i],
65  hRecHitsGPUEB->jitter[i],
66  hRecHitsGPUEB->chi2[i],
67  hRecHitsGPUEB->flags[i]);
68  (*recHitsCPUEB)[i].setJitterError(hRecHitsGPUEB->jitterError[i]);
69  auto const offset = i * EcalDataFrame::MAXSAMPLES;
70  for (uint32_t sample = 0; sample < EcalDataFrame::MAXSAMPLES; ++sample)
71  (*recHitsCPUEB)[i].setOutOfTimeAmplitude(sample, hRecHitsGPUEB->amplitudesAll[offset + sample]);
72  }
73 
74  for (uint32_t i = 0; i < hRecHitsGPUEE->amplitude.size(); ++i) {
75  recHitsCPUEE->emplace_back(DetId{hRecHitsGPUEE->did[i]},
76  hRecHitsGPUEE->amplitude[i],
77  hRecHitsGPUEE->pedestal[i],
78  hRecHitsGPUEE->jitter[i],
79  hRecHitsGPUEE->chi2[i],
80  hRecHitsGPUEE->flags[i]);
81  (*recHitsCPUEE)[i].setJitterError(hRecHitsGPUEE->jitterError[i]);
82  auto const offset = i * EcalDataFrame::MAXSAMPLES;
83  for (uint32_t sample = 0; sample < EcalDataFrame::MAXSAMPLES; ++sample)
84  (*recHitsCPUEE)[i].setOutOfTimeAmplitude(sample, hRecHitsGPUEE->amplitudesAll[offset + sample]);
85  }
86 
87  event.put(std::move(recHitsCPUEB), recHitsLabelCPUEB_);
88  event.put(std::move(recHitsCPUEE), recHitsLabelCPUEE_);
89 }
90 
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const edm::EDGetTokenT< InputProduct > recHitsGPUEB_
static void fillDescriptions(edm::ConfigurationDescriptions &)
void produce(edm::Event &, edm::EventSetup const &) override
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type jitterError
Definition: DetId.h:17
StoragePolicy::template StorageSelector< uint32_t >::type flags
StoragePolicy::template StorageSelector< uint32_t >::type did
StoragePolicy::template StorageSelector< reco::ComputationScalarType >::type amplitudesAll
void add(std::string const &label, ParameterSetDescription const &psetDescription)
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type amplitude
const edm::EDGetTokenT< InputProduct > recHitsGPUEE_
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type jitter
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type chi2
static constexpr int MAXSAMPLES
Definition: EcalDataFrame.h:48
def move(src, dest)
Definition: eostools.py:511
Definition: event.py:1
StoragePolicy::template StorageSelector< reco::StorageScalarType >::type pedestal