CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
EcalRecHitProducerGPU.cc
Go to the documentation of this file.
31 
33 
34 class EcalRecHitProducerGPU : public edm::stream::EDProducer<edm::ExternalWork> {
35 public:
36  explicit EcalRecHitProducerGPU(edm::ParameterSet const& ps);
37  ~EcalRecHitProducerGPU() override;
39 
40 private:
42  void produce(edm::Event&, edm::EventSetup const&) override;
43 
44 private:
45  // data
46  uint32_t neb_, nee_; // extremely important, in particular neb_
47 
48  // gpu input
52 
53  // event data
55 
57 
58  // gpu output
61 
62  // configuration parameters
64 
65  // conditions handles
69 
75 
76  // Associate reco flagbit (outer vector) to many db status flags (inner vector)
77  std::vector<int>
78  expanded_v_DB_reco_flags_; // Transform a map in a vector // FIXME AM: int or uint32 to be checked
79  std::vector<uint32_t> expanded_Sizes_v_DB_reco_flags_; // Saving the size for each piece
80  std::vector<uint32_t> expanded_flagbit_v_DB_reco_flags_; // And the "key" for each key
81 
82  uint32_t flagmask_; // do not propagate channels with these flags on
83 };
84 
87 
88  desc.add<edm::InputTag>("uncalibrecHitsInLabelEB",
89  edm::InputTag("ecalUncalibRecHitProducerGPU", "EcalUncalibRecHitsEB"));
90  desc.add<edm::InputTag>("uncalibrecHitsInLabelEE",
91  edm::InputTag("ecalUncalibRecHitProducerGPU", "EcalUncalibRecHitsEE"));
92 
93  desc.add<std::string>("recHitsLabelEB", "EcalRecHitsGPUEB");
94  desc.add<std::string>("recHitsLabelEE", "EcalRecHitsGPUEE");
95 
96  desc.add<bool>("killDeadChannels", true);
97 
98  desc.add<double>("EBLaserMIN", 0.01);
99  desc.add<double>("EELaserMIN", 0.01);
100  desc.add<double>("EBLaserMAX", 30.0);
101  desc.add<double>("EELaserMAX", 30.0);
102 
103  desc.add<uint32_t>("maxNumberHitsEB", 61200);
104  desc.add<uint32_t>("maxNumberHitsEE", 14648);
105 }
106 
108  //---- input
109  uncalibRecHitsInEBToken_ = consumes<InputProduct>(ps.getParameter<edm::InputTag>("uncalibrecHitsInLabelEB"));
110  uncalibRecHitsInEEToken_ = consumes<InputProduct>(ps.getParameter<edm::InputTag>("uncalibrecHitsInLabelEE"));
111 
112  //---- output
113  recHitsTokenEB_ = produces<OutputProduct>(ps.getParameter<std::string>("recHitsLabelEB"));
114  recHitsTokenEE_ = produces<OutputProduct>(ps.getParameter<std::string>("recHitsLabelEE"));
115 
116  bool killDeadChannels = ps.getParameter<bool>("killDeadChannels");
118 
119  configParameters_.EBLaserMIN = ps.getParameter<double>("EBLaserMIN");
120  configParameters_.EELaserMIN = ps.getParameter<double>("EELaserMIN");
121  configParameters_.EBLaserMAX = ps.getParameter<double>("EBLaserMAX");
122  configParameters_.EELaserMAX = ps.getParameter<double>("EELaserMAX");
123 
124  // max number of digis to allocate for
125  configParameters_.maxNumberHitsEB = ps.getParameter<uint32_t>("maxNumberHitsEB");
126  configParameters_.maxNumberHitsEE = ps.getParameter<uint32_t>("maxNumberHitsEE");
127 
128  flagmask_ = 0;
131  flagmask_ |= 0x1 << EcalRecHit::kDead;
132  flagmask_ |= 0x1 << EcalRecHit::kKilled;
135 
137 
138  // for recovery and killing
139 
140  configParameters_.recoverEBIsolatedChannels = ps.getParameter<bool>("recoverEBIsolatedChannels");
141  configParameters_.recoverEEIsolatedChannels = ps.getParameter<bool>("recoverEEIsolatedChannels");
142  configParameters_.recoverEBVFE = ps.getParameter<bool>("recoverEBVFE");
143  configParameters_.recoverEEVFE = ps.getParameter<bool>("recoverEEVFE");
144  configParameters_.recoverEBFE = ps.getParameter<bool>("recoverEBFE");
145  configParameters_.recoverEEFE = ps.getParameter<bool>("recoverEEFE");
146 }
147 
149 
151  edm::EventSetup const& setup,
153  // cuda products
154  auto const& ebUncalibRecHitsProduct = event.get(uncalibRecHitsInEBToken_);
155  auto const& eeUncalibRecHitsProduct = event.get(uncalibRecHitsInEEToken_);
156  // raii
157  cms::cuda::ScopedContextAcquire ctx{ebUncalibRecHitsProduct, std::move(holder), cudaState_};
158  // get actual object
159  auto const& ebUncalibRecHits = ctx.get(ebUncalibRecHitsProduct);
160  auto const& eeUncalibRecHits = ctx.get(eeUncalibRecHitsProduct);
161 
162  ecal::rechit::EventInputDataGPU inputDataGPU{ebUncalibRecHits, eeUncalibRecHits};
163 
164  neb_ = ebUncalibRecHits.size;
165  nee_ = eeUncalibRecHits.size;
166 
167  // stop here if there are no uncalibRecHits
168  if (neb_ + nee_ == 0)
169  return;
170 
172  edm::LogError("EcalRecHitProducerGPU")
173  << "max number of channels exceeded. See options 'maxNumberHitsEB and maxNumberHitsEE' ";
174  }
175 
176  int nchannelsEB = ebUncalibRecHits.size; // --> offsetForInput, first EB and then EE
177 
178  // conditions
179  // - laser correction
180  // - IC
181  // - adt2gev
182 
183  //
187 
193 
194  auto const& ADCToGeVConstantProduct = ADCToGeVConstantHandle_->getProduct(ctx.stream());
195  auto const& IntercalibConstantsProduct = IntercalibConstantsHandle_->getProduct(ctx.stream());
196  auto const& ChannelStatusProduct = ChannelStatusHandle_->getProduct(ctx.stream());
197 
198  auto const& LaserAPDPNRatiosProduct = LaserAPDPNRatiosHandle_->getProduct(ctx.stream());
199  auto const& LaserAPDPNRatiosRefProduct = LaserAPDPNRatiosRefHandle_->getProduct(ctx.stream());
200  auto const& LaserAlphasProduct = LaserAlphasHandle_->getProduct(ctx.stream());
201  auto const& LinearCorrectionsProduct = LinearCorrectionsHandle_->getProduct(ctx.stream());
202  auto const& recHitParametersProduct = recHitParametersHandle_->getProduct(ctx.stream());
203 
204  // set config ptrs : this is done to avoid changing things downstream
205  configParameters_.ChannelStatusToBeExcluded = recHitParametersProduct.channelStatusToBeExcluded.get();
207  configParameters_.expanded_v_DB_reco_flags = recHitParametersProduct.expanded_v_DB_reco_flags.get();
208  configParameters_.expanded_Sizes_v_DB_reco_flags = recHitParametersProduct.expanded_Sizes_v_DB_reco_flags.get();
209  configParameters_.expanded_flagbit_v_DB_reco_flags = recHitParametersProduct.expanded_flagbit_v_DB_reco_flags.get();
211 
212  // bundle up conditions
213  ecal::rechit::ConditionsProducts conditions{ADCToGeVConstantProduct,
214  IntercalibConstantsProduct,
215  ChannelStatusProduct,
216  LaserAPDPNRatiosProduct,
217  LaserAPDPNRatiosRefProduct,
218  LaserAlphasProduct,
219  LinearCorrectionsProduct,
221 
222  // dev mem
224 
225  //
226  // schedule algorithms
227  //
228 
229  edm::TimeValue_t event_time = event.time().value();
230 
232  inputDataGPU, eventOutputDataGPU_, conditions, configParameters_, nchannelsEB, event_time, ctx.stream());
233 
234  cudaCheck(cudaGetLastError());
235 }
236 
239 
242 
243  // put into the event
246 }
247 
ecal::rechit::ConfigurationParameters::recoverEBFE
bool recoverEBFE
Definition: DeclsForKernels.h:262
EcalRecHit::kNeighboursRecovered
Definition: EcalRecHit.h:29
EcalLaserAPDPNRatiosGPU.h
EcalRecHit::kTPSaturated
Definition: EcalRecHit.h:33
EcalRecHitProducerGPU::flagmask_
uint32_t flagmask_
Definition: EcalRecHitProducerGPU.cc:82
EcalRecHitProducerGPU::EcalRecHitProducerGPU
EcalRecHitProducerGPU(edm::ParameterSet const &ps)
Definition: EcalRecHitProducerGPU.cc:107
EcalLaserAPDPNRatiosRcd
Definition: EcalLaserAPDPNRatiosRcd.h:24
EcalLinearCorrectionsGPU.h
ecal::rechit::ConfigurationParameters::recoverEEIsolatedChannels
bool recoverEEIsolatedChannels
Definition: DeclsForKernels.h:259
EcalLaserAlphasGPU::getProduct
Product const & getProduct(cudaStream_t) const
Definition: EcalLaserAlphasGPU.cc:13
EcalRecHitProducerGPU::expanded_Sizes_v_DB_reco_flags_
std::vector< uint32_t > expanded_Sizes_v_DB_reco_flags_
Definition: EcalRecHitProducerGPU.cc:79
cms::cuda::ScopedContextProduce
Definition: ScopedContext.h:149
ecal::rechit::ConfigurationParameters::killDeadChannels
bool killDeadChannels
Definition: DeclsForKernels.h:256
EcalRecHit::kL1SpikeFlag
Definition: EcalRecHit.h:34
EcalIntercalibConstantsGPU.h
EcalRecHitProducerGPU::IntercalibConstantsHandle_
edm::ESHandle< EcalIntercalibConstantsGPU > IntercalibConstantsHandle_
Definition: EcalRecHitProducerGPU.cc:67
edm::EDGetTokenT
Definition: EDGetToken.h:33
EcalLaserAPDPNRatiosRefGPU.h
edm::EDPutTokenT
Definition: EDPutToken.h:33
EcalRecHitProducerGPU::LaserAlphasHandle_
edm::ESHandle< EcalLaserAlphasGPU > LaserAlphasHandle_
Definition: EcalRecHitProducerGPU.cc:72
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
EcalLinearCorrectionsRcd.h
EcalLaserAPDPNRatiosRefRcd.h
EcalRecHitProducerGPU::recHitsTokenEB_
edm::EDPutTokenT< OutputProduct > recHitsTokenEB_
Definition: EcalRecHitProducerGPU.cc:60
EcalRecHitProducerGPU::uncalibRecHitsInEBToken_
edm::EDGetTokenT< InputProduct > uncalibRecHitsInEBToken_
Definition: EcalRecHitProducerGPU.cc:50
EDProducer.h
EcalRecHitParametersGPU::getProduct
const Product & getProduct(cudaStream_t) const
Definition: EcalRecHitParametersGPU.cc:36
EcalLaserAlphasRcd.h
EcalIntercalibConstantsGPU::getProduct
Product const & getProduct(cudaStream_t) const
Definition: EcalIntercalibConstantsGPU.cc:13
EcalRecHitProducerGPU::configParameters_
ecal::rechit::ConfigurationParameters configParameters_
Definition: EcalRecHitProducerGPU.cc:63
EcalIntercalibConstantsGPU::getOffset
uint32_t getOffset() const
Definition: EcalIntercalibConstantsGPU.h:31
EcalRecHit::kTowerRecovered
Definition: EcalRecHit.h:30
EcalRechitADCToGeVConstantGPU::getProduct
Product const & getProduct(cudaStream_t) const
Definition: EcalRechitADCToGeVConstantGPU.cc:13
EcalLaserAPDPNRatiosRefRcd
Definition: EcalLaserAPDPNRatiosRefRcd.h:24
EcalRecHitProducerGPU::uncalibRecHitsInEEToken_
edm::EDGetTokenT< InputProduct > uncalibRecHitsInEEToken_
Definition: EcalRecHitProducerGPU.cc:51
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
ecal::rechit::ConfigurationParameters::EBLaserMAX
float EBLaserMAX
Definition: DeclsForKernels.h:267
EcalRechitADCToGeVConstantGPU.h
edm::WaitingTaskWithArenaHolder
Definition: WaitingTaskWithArenaHolder.h:34
MakerMacros.h
ecal::rechit::ConfigurationParameters::maxNumberHitsEE
uint32_t maxNumberHitsEE
Definition: DeclsForKernels.h:277
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
EcalRecHitProducerGPU::neb_
uint32_t neb_
Definition: EcalRecHitProducerGPU.cc:46
Service.h
EcalRecHitProducerGPU::LaserAPDPNRatiosHandle_
edm::ESHandle< EcalLaserAPDPNRatiosGPU > LaserAPDPNRatiosHandle_
Definition: EcalRecHitProducerGPU.cc:70
ecal::rechit::ConfigurationParameters::expanded_Sizes_v_DB_reco_flags
const uint32_t * expanded_Sizes_v_DB_reco_flags
Definition: DeclsForKernels.h:271
edm::ESHandle< EcalRechitADCToGeVConstantGPU >
ecal::rechit::ConfigurationParameters::expanded_v_DB_reco_flagsSize
uint32_t expanded_v_DB_reco_flagsSize
Definition: DeclsForKernels.h:273
EcalRecHit.h
StringToEnumValue.h
ecal::rechit::ConfigurationParameters::recoverEEFE
bool recoverEEFE
Definition: DeclsForKernels.h:263
JobConfigurationGPURecord
Definition: JobConfigurationGPURecord.h:6
ecal::rechit::ConfigurationParameters::maxNumberHitsEB
uint32_t maxNumberHitsEB
Definition: DeclsForKernels.h:276
EcalRecHitParametersGPU::getValues
std::tuple< intvec, intvec, uint32vec, uint32vec > getValues() const
Definition: EcalRecHitParametersGPU.h:33
EcalLaserAPDPNRatiosRcd.h
EcalRecHit.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
ecal::rechit::create_ecal_rehit
void create_ecal_rehit(EventInputDataGPU const &eventInputGPU, EventOutputDataGPU &eventOutputGPU, ConditionsProducts const &conditions, ConfigurationParameters const &configParameters, uint32_t const nChannelsBarrel, edm::TimeValue_t const event_time, cudaStream_t cudaStream)
EcalRecHitProducerGPU::recHitsTokenEE_
edm::EDPutTokenT< OutputProduct > recHitsTokenEE_
Definition: EcalRecHitProducerGPU.cc:60
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalRecHitProducerGPU::eventOutputDataGPU_
ecal::rechit::EventOutputDataGPU eventOutputDataGPU_
Definition: EcalRecHitProducerGPU.cc:54
EcalUncalibratedRecHit.h
EcalRecHitProducerGPU::nee_
uint32_t nee_
Definition: EcalRecHitProducerGPU.cc:46
JobConfigurationGPURecord.h
EcalLinearCorrectionsGPU::getProduct
const Product & getProduct(cudaStream_t) const
Definition: EcalLinearCorrectionsGPU.cc:37
cms::cuda::ContextState
Definition: ContextState.h:15
ecal::rechit::ConfigurationParameters::recoverEBIsolatedChannels
bool recoverEBIsolatedChannels
Definition: DeclsForKernels.h:258
edm::ParameterSet
Definition: ParameterSet.h:47
ecal::rechit::EventOutputDataGPU
Definition: DeclsForKernels.h:280
EcalRecHitProducerGPU::LinearCorrectionsHandle_
edm::ESHandle< EcalLinearCorrectionsGPU > LinearCorrectionsHandle_
Definition: EcalRecHitProducerGPU.cc:73
EcalRecHitProducerGPU::expanded_flagbit_v_DB_reco_flags_
std::vector< uint32_t > expanded_flagbit_v_DB_reco_flags_
Definition: EcalRecHitProducerGPU.cc:80
Event.h
EcalChannelStatusRcd
Definition: EcalChannelStatusRcd.h:5
ecal::rechit::EventOutputDataGPU::allocate
void allocate(ConfigurationParameters const &configParameters, cudaStream_t cudaStream)
Definition: DeclsForKernels.h:283
ecal::rechit::ConfigurationParameters
Definition: DeclsForKernels.h:251
EcalRecHitProducerGPU::LaserAPDPNRatiosRefHandle_
edm::ESHandle< EcalLaserAPDPNRatiosRefGPU > LaserAPDPNRatiosRefHandle_
Definition: EcalRecHitProducerGPU.cc:71
EcalADCToGeVConstantRcd.h
EcalRecHitProducerGPU::cudaState_
cms::cuda::ContextState cudaState_
Definition: EcalRecHitProducerGPU.cc:56
EcalLaserAlphasRcd
Definition: EcalLaserAlphasRcd.h:24
EcalLinearCorrectionsRcd
Definition: EcalLinearCorrectionsRcd.h:5
cudaCheck.h
EcalRechitChannelStatusGPU::getProduct
Product const & getProduct(cudaStream_t) const
Definition: EcalRechitChannelStatusGPU.cc:21
EcalRecHitProducerGPU::~EcalRecHitProducerGPU
~EcalRecHitProducerGPU() override
Definition: EcalRecHitProducerGPU.cc:148
edm::stream::EDProducer
Definition: EDProducer.h:38
edm::EventSetup
Definition: EventSetup.h:58
ecal::rechit::ConfigurationParameters::recoverEEVFE
bool recoverEEVFE
Definition: DeclsForKernels.h:261
ecal::rechit::ConfigurationParameters::recoverEBVFE
bool recoverEBVFE
Definition: DeclsForKernels.h:260
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
EcalRecHit::kDead
Definition: EcalRecHit.h:31
EcalRecHitParametersGPU.h
ecal::rechit::ConfigurationParameters::ChannelStatusToBeExcludedSize
uint32_t ChannelStatusToBeExcludedSize
Definition: DeclsForKernels.h:254
get
#define get
EcalRecHitProducerGPU::produce
void produce(edm::Event &, edm::EventSetup const &) override
Definition: EcalRecHitProducerGPU.cc:237
ecal::rechit::ConditionsProducts
Definition: DeclsForKernels.h:309
EcalLaserAPDPNRatiosRefGPU::getProduct
Product const & getProduct(cudaStream_t) const
Definition: EcalLaserAPDPNRatiosRefGPU.cc:13
HLT_FULL_cff.killDeadChannels
killDeadChannels
Definition: HLT_FULL_cff.py:8253
EcalRecHitProducerGPU::expanded_v_DB_reco_flags_
std::vector< int > expanded_v_DB_reco_flags_
Definition: EcalRecHitProducerGPU.cc:78
CUDAService.h
EcalRechitChannelStatusGPU.h
EcalRecHitProducerGPU
Definition: EcalRecHitProducerGPU.cc:34
cms::cuda::ScopedContextAcquire
Definition: ScopedContext.h:101
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
submitPVValidationJobs.conditions
list conditions
Definition: submitPVValidationJobs.py:674
eostools.move
def move(src, dest)
Definition: eostools.py:511
cudaCheck
#define cudaCheck(ARG,...)
Definition: cudaCheck.h:62
EcalRecHitProducerGPU::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &)
Definition: EcalRecHitProducerGPU.cc:85
cms::cuda::Product
Definition: Product.h:34
ScopedContext.h
ecal::rechit::ConfigurationParameters::flagmask
uint32_t flagmask
Definition: DeclsForKernels.h:275
EcalRecHitProducerGPU::ChannelStatusHandle_
edm::ESHandle< EcalRechitChannelStatusGPU > ChannelStatusHandle_
Definition: EcalRecHitProducerGPU.cc:68
EcalLaserAlphasGPU.h
ecal::rechit::ConfigurationParameters::expanded_v_DB_reco_flags
const int * expanded_v_DB_reco_flags
Definition: DeclsForKernels.h:270
EventSetup.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
ecal::rechit::ConfigurationParameters::ChannelStatusToBeExcluded
const int * ChannelStatusToBeExcluded
Definition: DeclsForKernels.h:253
ecal::rechit::ConfigurationParameters::EELaserMAX
float EELaserMAX
Definition: DeclsForKernels.h:268
ecal::rechit::EventInputDataGPU
Definition: DeclsForKernels.h:303
ecal::rechit::EventOutputDataGPU::recHitsEB
RecHit<::calo::common::DevStoragePolicy > recHitsEB
Definition: DeclsForKernels.h:281
ecal::rechit::ConfigurationParameters::EELaserMIN
float EELaserMIN
Definition: DeclsForKernels.h:266
ParameterSet.h
EcalLaserAPDPNRatiosGPU::getProduct
const Product & getProduct(cudaStream_t) const
Definition: EcalLaserAPDPNRatiosGPU.cc:39
EcalRecHit::kKilled
Definition: EcalRecHit.h:32
event
Definition: event.py:1
ecal::rechit::ConfigurationParameters::expanded_flagbit_v_DB_reco_flags
const uint32_t * expanded_flagbit_v_DB_reco_flags
Definition: DeclsForKernels.h:272
edm::Event
Definition: Event.h:73
ecal::rechit::ConfigurationParameters::EBLaserMIN
float EBLaserMIN
Definition: DeclsForKernels.h:265
ecal::rechit::EventOutputDataGPU::recHitsEE
RecHit<::calo::common::DevStoragePolicy > recHitsEE
Definition: DeclsForKernels.h:281
EcalIntercalibConstantsRcd
Definition: EcalIntercalibConstantsRcd.h:5
EcalIntercalibConstantsRcd.h
EcalRecHitProducerGPU::ADCToGeVConstantHandle_
edm::ESHandle< EcalRechitADCToGeVConstantGPU > ADCToGeVConstantHandle_
Definition: EcalRecHitProducerGPU.cc:66
EcalRecHitProducerGPU::recHitParametersHandle_
edm::ESHandle< EcalRecHitParametersGPU > recHitParametersHandle_
Definition: EcalRecHitProducerGPU.cc:74
EcalADCToGeVConstantRcd
Definition: EcalADCToGeVConstantRcd.h:5
edm::InputTag
Definition: InputTag.h:15
EcalChannelStatusRcd.h
edm::TimeValue_t
unsigned long long TimeValue_t
Definition: Timestamp.h:28
EcalRecHitBuilderKernels.h
RecoTypes.h
EcalRecHitProducerGPU::acquire
void acquire(edm::Event const &, edm::EventSetup const &, edm::WaitingTaskWithArenaHolder) override
Definition: EcalRecHitProducerGPU.cc:150