CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
SiPixelCalibDigiProducer Class Reference

#include <CalibTracker/SiPixelGainCalibration/src/SiPixelCalibDigiProducer.cc>

Inheritance diagram for SiPixelCalibDigiProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 SiPixelCalibDigiProducer (const edm::ParameterSet &iConfig)
 
 ~SiPixelCalibDigiProducer () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Types

typedef std::pair< uint32_t, std::pair< short, short > > pixelstruct
 

Private Member Functions

virtual bool checkFED (uint32_t detid)
 
virtual bool checkPixel (uint32_t detid, short row, short col)
 
virtual void clear ()
 
virtual void fill (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
virtual void fillPixel (uint32_t detid, short row, short col, short ipoint, short adc)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
virtual void setPattern ()
 
virtual bool store ()
 

Private Attributes

edm::ESGetToken< SiPixelFedCablingMap, SiPixelFedCablingMapRcdcablingMapToken_
 
edm::ESHandle< SiPixelCalibConfigurationcalib_
 
edm::ESGetToken< SiPixelCalibConfiguration, SiPixelCalibConfigurationRcdcalibToken_
 
edm::ParameterSet conf_
 
bool control_pattern_size_
 
std::pair< short, short > currentpair_
 
std::vector< std::pair< short, short > > currentpattern_
 
std::map< uint32_t, uint32_t > detid_to_fedid_
 
std::vector< pixelstructdetPixelMap_
 
std::map< pixelstruct, SiPixelCalibDigiErrorerror_data_
 
int errorType
 
uint32_t iEventCounter_
 
bool ignore_non_pattern_
 
bool includeErrors_
 
std::string instance_
 
std::map< pixelstruct, SiPixelCalibDigiintermediate_data_
 
std::string label_
 
uint32_t number_of_pixels_per_pattern_
 
uint32_t pattern_repeat_
 
edm::InputTag src_
 
edm::ESHandle< SiPixelFedCablingMaptheCablingMap_
 
edm::ESHandle< TrackerGeometrytheGeometry_
 
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > tPixelDigi
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtrackerGeomToken_
 
bool use_realeventnumber_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 55 of file SiPixelCalibDigiProducer.h.

Member Typedef Documentation

◆ pixelstruct

typedef std::pair<uint32_t, std::pair<short, short> > SiPixelCalibDigiProducer::pixelstruct
private

Definition at line 69 of file SiPixelCalibDigiProducer.h.

Constructor & Destructor Documentation

◆ SiPixelCalibDigiProducer()

SiPixelCalibDigiProducer::SiPixelCalibDigiProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 47 of file SiPixelCalibDigiProducer.cc.

48  : src_(iConfig.getParameter<edm::InputTag>("src")),
49  iEventCounter_(0),
50  ignore_non_pattern_(iConfig.getParameter<bool>("ignoreNonPattern")),
51  control_pattern_size_(iConfig.getParameter<bool>("checkPatternEachEvent")),
52  includeErrors_(iConfig.getUntrackedParameter<bool>("includeErrors", false)),
53  errorType(iConfig.getUntrackedParameter<int>("errorTypeNumber", 1)),
54  conf_(iConfig),
56  use_realeventnumber_(iConfig.getParameter<bool>("useRealEventNumber"))
57 
58 {
59  tPixelDigi = consumes<edm::DetSetVector<PixelDigi>>(src_);
60  //register your products
61  produces<edm::DetSetVector<SiPixelCalibDigi>>();
62  if (includeErrors_)
63  produces<edm::DetSetVector<SiPixelCalibDigiError>>();
64 
65  calibToken_ = esConsumes<SiPixelCalibConfiguration, SiPixelCalibConfigurationRcd>();
66  trackerGeomToken_ = esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>();
67  cablingMapToken_ = esConsumes<SiPixelFedCablingMap, SiPixelFedCablingMapRcd>();
68 }

References cablingMapToken_, calibToken_, includeErrors_, src_, tPixelDigi, and trackerGeomToken_.

◆ ~SiPixelCalibDigiProducer()

SiPixelCalibDigiProducer::~SiPixelCalibDigiProducer ( )
override

Definition at line 70 of file SiPixelCalibDigiProducer.cc.

70  {
71  // do anything here that needs to be done at desctruction time
72  // (e.g. close files, deallocate resources etc.)
73 }

Member Function Documentation

◆ checkFED()

bool SiPixelCalibDigiProducer::checkFED ( uint32_t  detid)
privatevirtual

Definition at line 120 of file SiPixelCalibDigiProducer.cc.

120  {
121  // edm::LogInfo("SiPixelCalibProducer") << "in checkFED" << std::endl;
122 
123  if (detid_to_fedid_[detid])
124  return true;
125  for (int fedid = 0; fedid <= 40; ++fedid) {
126  // edm::LogInfo("SiPixelCalibProducer") << " looking at fedid " << fedid << std::endl;
128  if (converter.hasDetUnit(detid)) {
129  detid_to_fedid_[detid] = fedid;
130  edm::LogInfo("SiPixelCalibDigiProducer")
131  << "matched detid " << detid << " to fed " << detid_to_fedid_[detid] << std::endl;
132  return true;
133  }
134  }
135  return false;
136 }

References detid_to_fedid_, PixelSLinkDataInputSource_cfi::fedid, edm::ESHandle< T >::product(), and theCablingMap_.

Referenced by fillPixel().

◆ checkPixel()

bool SiPixelCalibDigiProducer::checkPixel ( uint32_t  detid,
short  row,
short  col 
)
privatevirtual

Definition at line 309 of file SiPixelCalibDigiProducer.cc.

309  {
310  if (!control_pattern_size_ && !store())
311  return true;
312 
313  if (!ignore_non_pattern_)
314  return true;
315 
316  edm::LogInfo("SiPixelCalibDigiProducer") << "Event" << iEventCounter_ << ",now in checkpixel() " << std::endl;
317  if (currentpattern_.empty())
318  setPattern();
319  // uint32_t iroc;
320  uint32_t fedid = detid_to_fedid_[detid];
321 
325 
326  formatter.toCabling(cabling, detector);
327  // cabling should now contain cabling.roc and cabling.dcol and cabling.pxid
328 
329  // however, the coordinates now need to be converted from dcl, pxid to the row,col coordinates used in the calibration info
331  loc.dcol = cabling.dcol;
332  loc.pxid = cabling.pxid;
333  sipixelobjects::LocalPixel locpixel(loc);
334  currentpair_.first = locpixel.rocRow();
335  currentpair_.second = locpixel.rocCol();
336 
337  for (uint32_t i = 0; i < currentpattern_.size(); ++i) {
338  // edm::LogInfo("SiPixelCalibDigiProducer") << "found pair " << currentpair_.first << "," << currentpair_.second << " calib " << currentpattern_[i].first << ","<< currentpattern_[i].second << " input " << row << "," << col << std::endl;
339  if (currentpair_ == currentpattern_[i]) {
340  return true;
341  }
342  }
343  std::ostringstream errorlog;
344  errorlog << "DETID " << detid << ", row, col (offline)=" << row << "," << col
345  << " row, col (ROC) =" << currentpair_.first << "," << currentpair_.second
346  << " found no match in list of patterns: ";
347  for (uint32_t i = 0; i < currentpattern_.size(); ++i) {
348  if (i != 0 && i != currentpattern_.size() - 1)
349  errorlog << " ";
350  errorlog << "(";
351  errorlog << currentpattern_[i].first;
352  errorlog << ",";
353  errorlog << currentpattern_[i].second;
354  errorlog << ")";
355  }
356  edm::LogError("ERROR") << errorlog.str() << std::endl;
357  if (includeErrors_) { // book the error
358 
359  pixelstruct temppixelworker;
360  temppixelworker.first = detid;
361  temppixelworker.second.first = row;
362  temppixelworker.second.second = col;
363  std::map<pixelstruct, SiPixelCalibDigiError>::const_iterator ierr = error_data_.find(temppixelworker);
364  if (ierr == error_data_.end()) {
365  SiPixelCalibDigiError temperr(row, col, 1);
366  error_data_[temppixelworker] = temperr;
367  }
368  }
369 
370  return false;
371 }

References cuy::col, control_pattern_size_, currentpair_, currentpattern_, sipixelobjects::ElectronicIndex::dcol, sipixelobjects::LocalPixel::DcolPxid::dcol, hgcalTestNeighbor_cfi::detector, detid_to_fedid_, error_data_, PixelSLinkDataInputSource_cfi::fedid, mps_fire::i, iEventCounter_, ignore_non_pattern_, includeErrors_, edm::ESHandle< T >::product(), sipixelobjects::ElectronicIndex::pxid, sipixelobjects::LocalPixel::DcolPxid::pxid, sipixelobjects::LocalPixel::rocCol(), sipixelobjects::LocalPixel::rocRow(), setPattern(), store(), and theCablingMap_.

Referenced by fillPixel(), and produce().

◆ clear()

void SiPixelCalibDigiProducer::clear ( void  )
privatevirtual

Definition at line 172 of file SiPixelCalibDigiProducer.cc.

172  {
173  // edm::LogInfo("SiPixelCalibProducer") << "in clear() " << std::endl;
174  // this is where we empty the containers so they can be re-filled
175  // the idea: the detPixelMap_ container shrinks/expands as a function
176  // of the number of pixels looked at at one particular time...
177  // unlike the intermediate_data_ container which only expands when
178  // detPixelMap_ becomes bigger than intermedate_data_
179 
180  // shrink the detPixelMap_
181  uint32_t tempsize = intermediate_data_.size();
182  if (tempsize > number_of_pixels_per_pattern_) {
183  edm::LogError("SiPixelCalibDigiProducer") << "Number of pixels in pattern is now: " << tempsize << ", size is was "
184  << number_of_pixels_per_pattern_ << std::endl;
186  }
187 
189  intermediate_data_.clear();
190 
191  // and erase the error bits
192  error_data_.erase(error_data_.begin(), error_data_.end());
193  error_data_.clear();
194 }

References error_data_, intermediate_data_, and number_of_pixels_per_pattern_.

Referenced by produce(), and BeautifulSoup.Tag::setString().

◆ fill()

void SiPixelCalibDigiProducer::fill ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Definition at line 96 of file SiPixelCalibDigiProducer.cc.

96  {
97  // figure out which calibration point we're on now..
98  short icalibpoint = calib_->vcalIndexForEvent(iEventCounter_);
100  iEvent.getByToken(tPixelDigi, pixelDigis);
101 
102  edm::LogInfo("SiPixelCalibProducer") << "in fill(), calibpoint " << icalibpoint << " ndigis " << pixelDigis->size()
103  << std::endl;
104  // loop over the data and store things
106  for (digiIter = pixelDigis->begin(); digiIter != pixelDigis->end(); ++digiIter) { // ITERATOR OVER DET IDs
107  uint32_t detid = digiIter->id;
108  edm::DetSet<PixelDigi>::const_iterator ipix; // ITERATOR OVER DIGI DATA
109 
110  for (ipix = digiIter->data.begin(); ipix != digiIter->end(); ++ipix) {
111  // fill in the appropriate location of the temporary data container
112  fillPixel(detid, ipix->row(), ipix->column(), icalibpoint, ipix->adc());
113  }
114  }
115 }

References edm::DetSetVector< T >::begin(), calib_, edm::DetSetVector< T >::end(), fillPixel(), iEvent, iEventCounter_, tPixelDigi, and SiPixelCalibConfiguration::vcalIndexForEvent().

Referenced by produce().

◆ fillPixel()

void SiPixelCalibDigiProducer::fillPixel ( uint32_t  detid,
short  row,
short  col,
short  ipoint,
short  adc 
)
privatevirtual

Definition at line 141 of file SiPixelCalibDigiProducer.cc.

141  {
142  // edm::LogInfo("SiPixelCalibProducer") << " in fillpixel()" << std::endl;
143 
144  // edm::LogInfo("SiPixelCalibProducer") << "in fillPixel " << detid << " " << row << " " << col << " " << ipoint << " " << adc << std::endl;
145  if (!checkFED(detid)) {
146  edm::LogError("SiPixelCalibDigiProducer") << " was unable to match detid " << detid << " to a FED!" << std::endl;
147  return;
148  }
149  if (!checkPixel(detid, row, col)) {
150  return;
151  }
152  // now the check if the pixel exists and fill
153  //
154  pixelstruct temppixelworker;
155  temppixelworker.first = detid;
156  temppixelworker.second.first = row;
157  temppixelworker.second.second = col;
158  std::map<pixelstruct, SiPixelCalibDigi>::const_iterator ipix = intermediate_data_.find(temppixelworker);
159 
160  if (ipix == intermediate_data_.end()) {
161  SiPixelCalibDigi tempdigi(calib_->nVCal());
162  tempdigi.setrowcol(row, col);
163  intermediate_data_[temppixelworker] = tempdigi;
164  }
165 
166  intermediate_data_[temppixelworker].fill(ipoint, adc);
167  return;
168 }

References gpuClustering::adc, calib_, checkFED(), checkPixel(), cuy::col, intermediate_data_, plotBeamSpotDB::ipoint, SiPixelCalibConfiguration::nVCal(), and SiPixelCalibDigi::setrowcol().

Referenced by fill().

◆ produce()

void SiPixelCalibDigiProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::EDProducer.

Definition at line 253 of file SiPixelCalibDigiProducer.cc.

253  {
254  // edm::LogInfo("SiPixelCalibDigiProducer") <<"in produce() " << std::endl;
255  using namespace edm;
256  calib_ = iSetup.getHandle(calibToken_);
260  if (use_realeventnumber_) {
261  iEventCounter_ = iEvent.id().event() - 1;
262  } else
263  iEventCounter_++;
264  if (iEventCounter_ % pattern_repeat_ == 1)
265  setPattern();
266 
267  // edm::LogInfo("SiPixelCalibDigiProducer") << "now starting fill..." << std::endl;
268  fill(iEvent, iSetup); // fill method where the actual looping over the digis is done.
269  // edm::LogInfo("SiPixelCalibDigiProducer") << "done filling..." << std::endl;
270  auto pOut = std::make_unique<edm::DetSetVector<SiPixelCalibDigi>>();
271  auto pErr = std::make_unique<edm::DetSetVector<SiPixelCalibDigiError>>();
272 
273  // copy things over into pOut if necessary (this is only once per pattern)
274  if (store()) {
275  // edm::LogInfo("SiPixelCalibDigiProducer") << "in loop" << std::endl;
276  for (std::map<pixelstruct, SiPixelCalibDigi>::const_iterator idet = intermediate_data_.begin();
277  idet != intermediate_data_.end();
278  ++idet) {
279  uint32_t detid = idet->first.first;
280  if (!control_pattern_size_) {
281  if (!checkPixel(idet->first.first, idet->first.second.first, idet->first.second.second))
282  continue;
283  }
284 
285  SiPixelCalibDigi tempdigi = idet->second;
286  edm::DetSet<SiPixelCalibDigi>& detSet = pOut->find_or_insert(detid);
287  detSet.data.push_back(tempdigi);
288  }
289  if (includeErrors_) {
290  for (std::map<pixelstruct, SiPixelCalibDigiError>::const_iterator ierr = error_data_.begin();
291  ierr != error_data_.end();
292  ++ierr) {
293  uint32_t detid = ierr->first.first;
294  SiPixelCalibDigiError temperror = ierr->second;
295  edm::DetSet<SiPixelCalibDigiError>& errSet = pErr->find_or_insert(detid);
296  errSet.data.push_back(temperror);
297  }
298  }
299  edm::LogInfo("INFO") << "now filling event " << iEventCounter_ << " as pixel pattern changes every "
300  << pattern_repeat_ << " events..." << std::endl;
301  clear();
302  }
303  iEvent.put(std::move(pOut));
304  if (includeErrors_)
305  iEvent.put(std::move(pErr));
306 }

References cablingMapToken_, calib_, calibToken_, checkPixel(), clear(), control_pattern_size_, edm::DetSet< T >::data, error_data_, fill(), edm::EventSetup::getHandle(), SiPixelCalibConfiguration::getNTriggers(), iEvent, iEventCounter_, includeErrors_, intermediate_data_, eostools::move(), SiPixelCalibConfiguration::nVCal(), pattern_repeat_, setPattern(), store(), theCablingMap_, theGeometry_, trackerGeomToken_, and use_realeventnumber_.

◆ setPattern()

void SiPixelCalibDigiProducer::setPattern ( )
privatevirtual

Definition at line 199 of file SiPixelCalibDigiProducer.cc.

199  {
200  // edm::LogInfo("SiPixelCalibProducer") << "in setPattern()" << std::endl;
201  uint32_t patternnumber = (iEventCounter_ - 1) / pattern_repeat_;
202  uint32_t rowpatternnumber = patternnumber / calib_->nColumnPatterns();
203  uint32_t colpatternnumber = patternnumber % calib_->nColumnPatterns();
204  edm::LogInfo("SiPixelCalibDigiProducer")
205  << " rowpatternnumbers = " << rowpatternnumber << " " << colpatternnumber << " " << patternnumber << std::endl;
206  // update currentpattern_
207  std::vector<short> calibcols = calib_->getColumnPattern();
208  std::vector<short> calibrows = calib_->getRowPattern();
209  std::vector<short> temprowvals(0);
210  std::vector<short> tempcolvals(0);
211  uint32_t nminuscol = 0;
212  uint32_t nminusrow = 0;
213  uint32_t npatterns = 0;
214  for (uint32_t icol = 0; icol < calibcols.size(); icol++) {
215  if (calibcols[icol] == -1) {
216  nminuscol++;
217  } else if (nminuscol == colpatternnumber) {
218  //edm::LogInfo("SiPixelCalibProducer") << "col " << calibcols[icol] << std::endl;
219  short val = calibcols[icol];
220  tempcolvals.push_back(val);
221  } else if (nminuscol > colpatternnumber)
222  break;
223  }
224  for (uint32_t irow = 0; irow < calibrows.size(); irow++) {
225  // edm::LogInfo("SiPixelCalibProducer") << "row " << irow <<" "<< nminusrow<<" " << calibrows[irow] << std::endl;
226  if (calibrows[irow] == -1)
227  nminusrow++;
228  else if (nminusrow == rowpatternnumber) {
229  short val = calibrows[irow];
230  temprowvals.push_back(val);
231  } else if (nminusrow > rowpatternnumber)
232  break;
233  }
234  //now clean up the currentpattern_;
235  while (currentpattern_.size() > temprowvals.size() * tempcolvals.size()) {
236  currentpattern_.erase(currentpattern_.end());
237  }
238  for (uint32_t irow = 0; irow < temprowvals.size(); irow++) {
239  for (uint32_t icol = 0; icol < tempcolvals.size(); icol++) {
240  std::pair<short, short> pattern(temprowvals[irow], tempcolvals[icol]);
241  npatterns++;
242  if (npatterns > currentpattern_.size())
243  currentpattern_.push_back(pattern);
244  else
245  currentpattern_[npatterns - 1] = pattern;
246  }
247  }
248 }

References calib_, currentpattern_, SiPixelCalibConfiguration::getColumnPattern(), SiPixelCalibConfiguration::getRowPattern(), iEventCounter_, SiPixelCalibConfiguration::nColumnPatterns(), topSingleLeptonDQM_PU_cfi::pattern, pattern_repeat_, and heppy_batch::val.

Referenced by checkPixel(), and produce().

◆ store()

bool SiPixelCalibDigiProducer::store ( )
privatevirtual

Definition at line 82 of file SiPixelCalibDigiProducer.cc.

82  {
83  // std::cout << "in store() " << std::endl;
84  if (iEventCounter_ % pattern_repeat_ == 0) {
85  // std::cout << "now at event " << iEventCounter_ <<" where we save the calibration information into the CMSSW digi";
86  return true;
87  } else if (iEventCounter_ == calib_->expectedTotalEvents())
88  return true;
89  else
90  return false;
91  return true;
92 }

References calib_, SiPixelCalibConfiguration::expectedTotalEvents(), iEventCounter_, and pattern_repeat_.

Referenced by checkPixel(), and produce().

Member Data Documentation

◆ cablingMapToken_

edm::ESGetToken<SiPixelFedCablingMap, SiPixelFedCablingMapRcd> SiPixelCalibDigiProducer::cablingMapToken_
private

Definition at line 91 of file SiPixelCalibDigiProducer.h.

Referenced by produce(), and SiPixelCalibDigiProducer().

◆ calib_

edm::ESHandle<SiPixelCalibConfiguration> SiPixelCalibDigiProducer::calib_
private

Definition at line 85 of file SiPixelCalibDigiProducer.h.

Referenced by fill(), fillPixel(), produce(), setPattern(), and store().

◆ calibToken_

edm::ESGetToken<SiPixelCalibConfiguration, SiPixelCalibConfigurationRcd> SiPixelCalibDigiProducer::calibToken_
private

Definition at line 89 of file SiPixelCalibDigiProducer.h.

Referenced by produce(), and SiPixelCalibDigiProducer().

◆ conf_

edm::ParameterSet SiPixelCalibDigiProducer::conf_
private

Definition at line 79 of file SiPixelCalibDigiProducer.h.

◆ control_pattern_size_

bool SiPixelCalibDigiProducer::control_pattern_size_
private

Definition at line 76 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel(), and produce().

◆ currentpair_

std::pair<short, short> SiPixelCalibDigiProducer::currentpair_
private

Definition at line 103 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel().

◆ currentpattern_

std::vector<std::pair<short, short> > SiPixelCalibDigiProducer::currentpattern_
private

Definition at line 102 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel(), and setPattern().

◆ detid_to_fedid_

std::map<uint32_t, uint32_t> SiPixelCalibDigiProducer::detid_to_fedid_
private

Definition at line 100 of file SiPixelCalibDigiProducer.h.

Referenced by checkFED(), and checkPixel().

◆ detPixelMap_

std::vector<pixelstruct> SiPixelCalibDigiProducer::detPixelMap_
private

Definition at line 98 of file SiPixelCalibDigiProducer.h.

◆ error_data_

std::map<pixelstruct, SiPixelCalibDigiError> SiPixelCalibDigiProducer::error_data_
private

Definition at line 96 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel(), clear(), and produce().

◆ errorType

int SiPixelCalibDigiProducer::errorType
private

Definition at line 78 of file SiPixelCalibDigiProducer.h.

◆ iEventCounter_

uint32_t SiPixelCalibDigiProducer::iEventCounter_
private

Definition at line 73 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel(), fill(), produce(), setPattern(), and store().

◆ ignore_non_pattern_

bool SiPixelCalibDigiProducer::ignore_non_pattern_
private

Definition at line 75 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel().

◆ includeErrors_

bool SiPixelCalibDigiProducer::includeErrors_
private

Definition at line 77 of file SiPixelCalibDigiProducer.h.

Referenced by checkPixel(), produce(), and SiPixelCalibDigiProducer().

◆ instance_

std::string SiPixelCalibDigiProducer::instance_
private

Definition at line 81 of file SiPixelCalibDigiProducer.h.

◆ intermediate_data_

std::map<pixelstruct, SiPixelCalibDigi> SiPixelCalibDigiProducer::intermediate_data_
private

Definition at line 95 of file SiPixelCalibDigiProducer.h.

Referenced by clear(), fillPixel(), and produce().

◆ label_

std::string SiPixelCalibDigiProducer::label_
private

◆ number_of_pixels_per_pattern_

uint32_t SiPixelCalibDigiProducer::number_of_pixels_per_pattern_
private

Definition at line 82 of file SiPixelCalibDigiProducer.h.

Referenced by clear().

◆ pattern_repeat_

uint32_t SiPixelCalibDigiProducer::pattern_repeat_
private

Definition at line 99 of file SiPixelCalibDigiProducer.h.

Referenced by produce(), setPattern(), and store().

◆ src_

edm::InputTag SiPixelCalibDigiProducer::src_
private

Definition at line 71 of file SiPixelCalibDigiProducer.h.

Referenced by SiPixelCalibDigiProducer().

◆ theCablingMap_

edm::ESHandle<SiPixelFedCablingMap> SiPixelCalibDigiProducer::theCablingMap_
private

Definition at line 87 of file SiPixelCalibDigiProducer.h.

Referenced by checkFED(), checkPixel(), and produce().

◆ theGeometry_

edm::ESHandle<TrackerGeometry> SiPixelCalibDigiProducer::theGeometry_
private

Definition at line 86 of file SiPixelCalibDigiProducer.h.

Referenced by produce().

◆ tPixelDigi

edm::EDGetTokenT<edm::DetSetVector<PixelDigi> > SiPixelCalibDigiProducer::tPixelDigi
private

Definition at line 72 of file SiPixelCalibDigiProducer.h.

Referenced by fill(), and SiPixelCalibDigiProducer().

◆ trackerGeomToken_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> SiPixelCalibDigiProducer::trackerGeomToken_
private

Definition at line 90 of file SiPixelCalibDigiProducer.h.

Referenced by produce(), and SiPixelCalibDigiProducer().

◆ use_realeventnumber_

bool SiPixelCalibDigiProducer::use_realeventnumber_
private

Definition at line 83 of file SiPixelCalibDigiProducer.h.

Referenced by produce().

edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SiPixelCalibDigiProducer::detid_to_fedid_
std::map< uint32_t, uint32_t > detid_to_fedid_
Definition: SiPixelCalibDigiProducer.h:100
SiPixelCalibDigiProducer::error_data_
std::map< pixelstruct, SiPixelCalibDigiError > error_data_
Definition: SiPixelCalibDigiProducer.h:96
mps_fire.i
i
Definition: mps_fire.py:428
edm::DetSetVector::end
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
edm::DetSet
Definition: DetSet.h:23
converter
Definition: CandidateProducer.h:25
edm
HLT enums.
Definition: AlignableModifier.h:19
gpuClustering::adc
uint16_t *__restrict__ uint16_t const *__restrict__ adc
Definition: gpuClusterChargeCut.h:20
SiPixelCalibConfiguration::getNTriggers
short getNTriggers() const
Definition: SiPixelCalibConfiguration.h:28
cuy.col
col
Definition: cuy.py:1010
SiPixelCalibDigiProducer::theGeometry_
edm::ESHandle< TrackerGeometry > theGeometry_
Definition: SiPixelCalibDigiProducer.h:86
SiPixelCalibDigiProducer::iEventCounter_
uint32_t iEventCounter_
Definition: SiPixelCalibDigiProducer.h:73
edm::DetSetVector::begin
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
SiPixelCalibDigiProducer::includeErrors_
bool includeErrors_
Definition: SiPixelCalibDigiProducer.h:77
SiPixelCalibConfiguration::nColumnPatterns
uint32_t nColumnPatterns() const
Definition: SiPixelCalibConfiguration.cc:105
sipixelobjects::ElectronicIndex::dcol
int dcol
Definition: ElectronicIndex.h:8
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiPixelCalibDigiProducer::fill
virtual void fill(edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: SiPixelCalibDigiProducer.cc:96
SiPixelCalibDigiProducer::checkFED
virtual bool checkFED(uint32_t detid)
Definition: SiPixelCalibDigiProducer.cc:120
edm::Handle
Definition: AssociativeIterator.h:50
sipixelobjects::LocalPixel
identify pixel inside single ROC
Definition: LocalPixel.h:7
SiPixelCalibDigiProducer::setPattern
virtual void setPattern()
Definition: SiPixelCalibDigiProducer.cc:199
SiPixelCalibDigiProducer::trackerGeomToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeomToken_
Definition: SiPixelCalibDigiProducer.h:90
SiPixelCalibDigiProducer::checkPixel
virtual bool checkPixel(uint32_t detid, short row, short col)
Definition: SiPixelCalibDigiProducer.cc:309
SiPixelCalibConfiguration::expectedTotalEvents
uint32_t expectedTotalEvents() const
Definition: SiPixelCalibConfiguration.cc:56
plotBeamSpotDB.ipoint
ipoint
Definition: plotBeamSpotDB.py:340
sipixelobjects::ElectronicIndex::pxid
int pxid
Definition: ElectronicIndex.h:9
SiPixelCalibDigiProducer::intermediate_data_
std::map< pixelstruct, SiPixelCalibDigi > intermediate_data_
Definition: SiPixelCalibDigiProducer.h:95
sipixelobjects::ElectronicIndex
Definition: ElectronicIndex.h:5
SiPixelCalibConfiguration::vcalIndexForEvent
short vcalIndexForEvent(const uint32_t &eventnumber) const
Definition: SiPixelCalibConfiguration.cc:5
SiPixelCalibDigiProducer::src_
edm::InputTag src_
Definition: SiPixelCalibDigiProducer.h:71
SiPixelCalibDigiProducer::currentpattern_
std::vector< std::pair< short, short > > currentpattern_
Definition: SiPixelCalibDigiProducer.h:102
SiPixelCalibDigiError
Definition: SiPixelCalibDigiError.h:16
sipixelobjects::LocalPixel::DcolPxid::pxid
int pxid
Definition: LocalPixel.h:20
sipixelobjects::LocalPixel::DcolPxid
double collumn and pixel ID in double collumn representation
Definition: LocalPixel.h:19
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
SiPixelCalibDigiProducer::ignore_non_pattern_
bool ignore_non_pattern_
Definition: SiPixelCalibDigiProducer.h:75
SiPixelCalibDigiProducer::calibToken_
edm::ESGetToken< SiPixelCalibConfiguration, SiPixelCalibConfigurationRcd > calibToken_
Definition: SiPixelCalibDigiProducer.h:89
SiPixelCalibConfiguration::nVCal
uint32_t nVCal() const
Definition: SiPixelCalibConfiguration.h:54
SiPixelCalibDigiProducer::errorType
int errorType
Definition: SiPixelCalibDigiProducer.h:78
iEvent
int iEvent
Definition: GenABIO.cc:224
SiPixelCalibDigiProducer::store
virtual bool store()
Definition: SiPixelCalibDigiProducer.cc:82
topSingleLeptonDQM_PU_cfi.pattern
pattern
Definition: topSingleLeptonDQM_PU_cfi.py:39
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
SiPixelCalibDigiProducer::calib_
edm::ESHandle< SiPixelCalibConfiguration > calib_
Definition: SiPixelCalibDigiProducer.h:85
SiPixelCalibDigiProducer::currentpair_
std::pair< short, short > currentpair_
Definition: SiPixelCalibDigiProducer.h:103
SiPixelCalibDigiProducer::conf_
edm::ParameterSet conf_
Definition: SiPixelCalibDigiProducer.h:79
SiPixelCalibDigi::setrowcol
void setrowcol(uint16_t row, uint16_t col)
Definition: SiPixelCalibDigi.cc:32
SiPixelFrameConverter
Definition: SiPixelFrameConverter.h:15
SiPixelCalibDigiProducer::theCablingMap_
edm::ESHandle< SiPixelFedCablingMap > theCablingMap_
Definition: SiPixelCalibDigiProducer.h:87
SiPixelCalibDigiProducer::use_realeventnumber_
bool use_realeventnumber_
Definition: SiPixelCalibDigiProducer.h:83
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
PixelSLinkDataInputSource_cfi.fedid
fedid
Definition: PixelSLinkDataInputSource_cfi.py:6
SiPixelCalibDigiProducer::cablingMapToken_
edm::ESGetToken< SiPixelFedCablingMap, SiPixelFedCablingMapRcd > cablingMapToken_
Definition: SiPixelCalibDigiProducer.h:91
heppy_batch.val
val
Definition: heppy_batch.py:351
eostools.move
def move(src, dest)
Definition: eostools.py:511
SiPixelCalibDigi
Definition: SiPixelCalibDigi.h:9
edm::DetSet::data
collection_type data
Definition: DetSet.h:80
SiPixelCalibConfiguration::getColumnPattern
std::vector< short > getColumnPattern() const
Definition: SiPixelCalibConfiguration.h:34
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
SiPixelCalibDigiProducer::clear
virtual void clear()
Definition: SiPixelCalibDigiProducer.cc:172
SiPixelCalibDigiProducer::pattern_repeat_
uint32_t pattern_repeat_
Definition: SiPixelCalibDigiProducer.h:99
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
SiPixelCalibDigiProducer::pixelstruct
std::pair< uint32_t, std::pair< short, short > > pixelstruct
Definition: SiPixelCalibDigiProducer.h:69
SiPixelCalibDigiProducer::number_of_pixels_per_pattern_
uint32_t number_of_pixels_per_pattern_
Definition: SiPixelCalibDigiProducer.h:82
SiPixelCalibDigiProducer::tPixelDigi
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > tPixelDigi
Definition: SiPixelCalibDigiProducer.h:72
SiPixelCalibDigiProducer::control_pattern_size_
bool control_pattern_size_
Definition: SiPixelCalibDigiProducer.h:76
SiPixelCalibConfiguration::getRowPattern
std::vector< short > getRowPattern() const
Definition: SiPixelCalibConfiguration.h:31
SiPixelCalibDigiProducer::fillPixel
virtual void fillPixel(uint32_t detid, short row, short col, short ipoint, short adc)
Definition: SiPixelCalibDigiProducer.cc:141
edm::InputTag
Definition: InputTag.h:15
sipixelobjects::LocalPixel::DcolPxid::dcol
int dcol
Definition: LocalPixel.h:20
sipixelobjects::DetectorIndex
Definition: DetectorIndex.h:6
edm::DetSet::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSet.h:31