CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Private Attributes | Friends
edm::DataFrameContainer Class Reference

#include <DataFrameContainer.h>

Inheritance diagram for edm::DataFrameContainer:
EcalDigiCollection EcalDigiCollectionPh2 HcalDataFrameContainer< Digi > EBDigiCollection EEDigiCollection ESDigiCollection EBDigiCollectionPh2

Classes

struct  IterHelp
 

Public Types

typedef std::vector< data_type >::const_iterator const_DataIter
 
typedef std::vector< id_type >::const_iterator const_IdIter
 
typedef boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
 
typedef std::pair< const_IdIter, const_DataIterconst_IterPair
 
typedef unsigned short data_type
 
typedef std::vector< data_typeDataContainer
 
typedef std::vector< data_type >::iterator DataIter
 
typedef unsigned int id_type
 
typedef std::vector< id_typeIdContainer
 
typedef std::vector< id_type >::iterator IdIter
 
typedef std::pair< IdIter, DataIterIterPair
 
typedef unsigned int size_type
 

Public Member Functions

DataFrame back ()
 
const_iterator begin () const
 The iterator returned can not safely be used across threads. More...
 
DataContainer const & data () const
 
 DataFrameContainer ()
 
 DataFrameContainer (size_t istride, int isubdet=0, size_t isize=0)
 
bool empty () const
 
const_iterator end () const
 
const_iterator find (id_type i) const
 
data_type const * frame (size_t cell) const
 
id_type id (size_t cell) const
 
IdContainer const & ids () const
 
data_type operator() (size_t cell, size_t frame) const
 
DataFrame operator[] (size_t i)
 
DataFrame operator[] (size_t i) const
 
IterPair pair (size_t i)
 
const_IterPair pair (size_t i) const
 
void pop_back ()
 
void push_back (id_type iid, data_type const *idata)
 
void push_back (id_type iid)
 
void reserve (size_t isize)
 
void resize (size_t isize)
 
void set_back (id_type iid, data_type const *idata)
 
void set_back (id_type iid)
 
void set_back (data_type const *idata)
 
size_type size () const
 
void sort ()
 
size_type stride () const
 
int subdetId () const
 
void swap (DataFrameContainer &rh)
 
void swap (IdContainer &iic, DataContainer &idc)
 

Private Attributes

DataContainer m_data
 
IdContainer m_ids
 
size_type m_stride
 
int m_subdetId
 

Friends

class ::TestDataFrame
 
template<typename DigiCollection >
class ::TestEcalDigi
 

Detailed Description

an optitimized container that linearized a "vector of vector". It corresponds to a set of fixed size array of 16bit words each belonging to a "channel" identified by an 32bit id

FIXME interface to be finalized once use-cases fully identified

although it can be sorted internally it is strongly adviced to fill it already sorted....

NOTE: The iterator used by DataFrameContainer can not safely be used across threads, even if only call const methods

Definition at line 33 of file DataFrameContainer.h.

Member Typedef Documentation

◆ const_DataIter

Definition at line 44 of file DataFrameContainer.h.

◆ const_IdIter

Definition at line 43 of file DataFrameContainer.h.

◆ const_iterator

typedef boost::transform_iterator<IterHelp, boost::counting_iterator<int> > edm::DataFrameContainer::const_iterator

Definition at line 61 of file DataFrameContainer.h.

◆ const_IterPair

Definition at line 45 of file DataFrameContainer.h.

◆ data_type

typedef unsigned short edm::DataFrameContainer::data_type

Definition at line 37 of file DataFrameContainer.h.

◆ DataContainer

Definition at line 39 of file DataFrameContainer.h.

◆ DataIter

typedef std::vector<data_type>::iterator edm::DataFrameContainer::DataIter

Definition at line 41 of file DataFrameContainer.h.

◆ id_type

typedef unsigned int edm::DataFrameContainer::id_type

Definition at line 36 of file DataFrameContainer.h.

◆ IdContainer

Definition at line 38 of file DataFrameContainer.h.

◆ IdIter

typedef std::vector<id_type>::iterator edm::DataFrameContainer::IdIter

Definition at line 40 of file DataFrameContainer.h.

◆ IterPair

Definition at line 42 of file DataFrameContainer.h.

◆ size_type

typedef unsigned int edm::DataFrameContainer::size_type

Definition at line 35 of file DataFrameContainer.h.

Constructor & Destructor Documentation

◆ DataFrameContainer() [1/2]

edm::DataFrameContainer::DataFrameContainer ( )
inline

◆ DataFrameContainer() [2/2]

edm::DataFrameContainer::DataFrameContainer ( size_t  istride,
int  isubdet = 0,
size_t  isize = 0 
)
inlineexplicit

Definition at line 65 of file DataFrameContainer.h.

Member Function Documentation

◆ back()

DataFrame edm::DataFrameContainer::back ( )
inline

Definition at line 116 of file DataFrameContainer.h.

References size().

Referenced by HcalDataFrameContainer< Digi >::backDataFrame(), EcalTBDaqFormatter::interpretRawData(), and EcalTB07DaqFormatter::interpretRawData().

116 { return DataFrame(*this, size() - 1); }

◆ begin()

const_iterator edm::DataFrameContainer::begin ( void  ) const
inline

The iterator returned can not safely be used across threads.

Definition at line 143 of file DataFrameContainer.h.

Referenced by PedestalTask::_process(), LEDTask::_process(), DigiTask::_process(), LaserTask::_process(), edm::DataMixingEMDigiWorker::addEMPileups(), edm::DataMixingEMDigiWorker::addEMSignals(), ESPedestalTask::analyze(), ZDCQIE10Task::analyze(), ESTimingTask::analyze(), FCDTask::analyze(), ECALpedestalPCLworker::analyze(), EcalSimple2007H4TBAnalyzer::analyze(), testChannel::analyze(), EcalPulseShapeGrapher::analyze(), EcnaAnalyzer::analyze(), EcalSelectiveReadoutValidation::analyzeEB(), EcalSelectiveReadoutValidation::analyzeEE(), HFPreReconstructor::fillInfos(), HcalDataFrameFilter::filter(), HLTHcalLaserMisfireFilter::filter(), EcalDisplaysByEvent::makeHistos(), EcalUncalibRecHitPhase2WeightsProducer::produce(), ESRecHitProducer::produce(), ESDigiToRaw::produce(), ESZeroSuppressionProducer::produce(), EcalDigiSelector::produce(), EcalDigiToRaw::produce(), L1TZDCProducer::produce(), HcalDigiSortedTableProducer::produce(), EcalPedOffset::readDACs(), EcalDigiDisplay::readEBDigis(), EcalPedHists::readEBdigis(), EcalDigiDisplay::readEEDigis(), EcalPedHists::readEEdigis(), EcalUncalibRecHitWorkerRunOneDigiBase::run(), EcalUncalibRecHitWorkerMultiFit::run(), ecaldqm::LedTask::runOnDigis(), EcalMipGraphs::selectDigi(), EcalDisplaysByEvent::selectDigi(), EcalSelectiveReadoutValidation::setTtEtSums(), and EcalSelectiveReadoutSuppressor::setTtFlags().

143  {
144  return boost::make_transform_iterator(boost::counting_iterator<int>(0), IterHelp(*this));
145  }

◆ data()

DataContainer const& edm::DataFrameContainer::data ( ) const
inline

Definition at line 165 of file DataFrameContainer.h.

References m_data.

Referenced by HcalDataFrameContainer< Digi >::addDataFrame().

165 { return m_data; }

◆ empty()

bool edm::DataFrameContainer::empty ( ) const
inline

◆ end()

const_iterator edm::DataFrameContainer::end ( void  ) const
inline

Definition at line 146 of file DataFrameContainer.h.

References size().

Referenced by PedestalTask::_process(), LEDTask::_process(), DigiTask::_process(), LaserTask::_process(), edm::DataMixingEMDigiWorker::addEMPileups(), edm::DataMixingEMDigiWorker::addEMSignals(), ESPedestalTask::analyze(), ZDCQIE10Task::analyze(), EcalTBValidation::analyze(), ESTimingTask::analyze(), FCDTask::analyze(), EcalSimpleTBAnalyzer::analyze(), ECALpedestalPCLworker::analyze(), EcalSimple2007H4TBAnalyzer::analyze(), testChannel::analyze(), EcalPulseShapeGrapher::analyze(), EcnaAnalyzer::analyze(), EcalSelectiveReadoutValidation::analyzeEB(), EcalSelectiveReadoutValidation::analyzeEE(), Types.LuminosityBlockRange::cppID(), Types.EventRange::cppID(), HFPreReconstructor::fillInfos(), HcalDataFrameFilter::filter(), HLTHcalLaserMisfireFilter::filter(), HLTEcalPhiSymFilter::filter(), find(), EcalDisplaysByEvent::makeHistos(), EcalUncalibRecHitPhase2WeightsProducer::produce(), ESRecHitProducer::produce(), ESDigiToRaw::produce(), ESZeroSuppressionProducer::produce(), EcalDigiSelector::produce(), HLTRechitsToDigis::produce(), EcalDigiToRaw::produce(), L1TZDCProducer::produce(), HcalDigiSortedTableProducer::produce(), EcalPedOffset::readDACs(), EcalDigiDisplay::readEBDigis(), EcalPedHists::readEBdigis(), EcalDigiDisplay::readEEDigis(), EcalPedHists::readEEdigis(), EcalUncalibRecHitWorkerRunOneDigiBase::run(), EcalUncalibRecHitWorkerMultiFit::run(), ecaldqm::LedTask::runOnDigis(), EcalMipGraphs::selectDigi(), EcalDisplaysByEvent::selectDigi(), EcalSelectiveReadoutValidation::setTtEtSums(), and EcalSelectiveReadoutSuppressor::setTtFlags().

146  {
147  return boost::make_transform_iterator(boost::counting_iterator<int>(size()), IterHelp(*this));
148  }

◆ find()

const_iterator edm::DataFrameContainer::find ( id_type  i) const
inline

slow interface The iterator returned can not safely be used across threads

Definition at line 135 of file DataFrameContainer.h.

References end(), mps_fire::i, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, m_ids, and AlCaHLTBitMon_ParallelJobs::p.

Referenced by JetToDigiDump::analyze(), EcalTBValidation::analyze(), EcalSimpleTBAnalyzer::analyze(), HLTEcalPhiSymFilter::filter(), and HLTRechitsToDigis::produce().

135  {
136  const_IdIter p = std::lower_bound(m_ids.begin(), m_ids.end(), i);
137  return (p == m_ids.end() || (*p) != i)
138  ? end()
139  : boost::make_transform_iterator(boost::counting_iterator<int>(p - m_ids.begin()), IterHelp(*this));
140  }
std::vector< id_type >::const_iterator const_IdIter
const_iterator end() const

◆ frame()

data_type const* edm::DataFrameContainer::frame ( size_t  cell) const
inline

Definition at line 160 of file DataFrameContainer.h.

References m_data, and m_stride.

Referenced by operator()(), and edm::DataFrame::set().

160 { return &m_data[cell * m_stride]; }

◆ id()

id_type edm::DataFrameContainer::id ( size_t  cell) const
inline

Definition at line 162 of file DataFrameContainer.h.

References m_ids.

Referenced by edm::DataFrame::set().

162 { return m_ids[cell]; }

◆ ids()

IdContainer const& edm::DataFrameContainer::ids ( ) const
inline

Definition at line 164 of file DataFrameContainer.h.

References m_ids.

164 { return m_ids; }

◆ operator()()

data_type edm::DataFrameContainer::operator() ( size_t  cell,
size_t  frame 
) const
inline

Definition at line 158 of file DataFrameContainer.h.

References frame(), m_data, and m_stride.

158 { return m_data[cell * m_stride + frame]; }
data_type const * frame(size_t cell) const

◆ operator[]() [1/2]

DataFrame edm::DataFrameContainer::operator[] ( size_t  i)
inline

Definition at line 129 of file DataFrameContainer.h.

References mps_fire::i.

129 { return DataFrame(*this, i); }

◆ operator[]() [2/2]

DataFrame edm::DataFrameContainer::operator[] ( size_t  i) const
inline

Definition at line 131 of file DataFrameContainer.h.

References mps_fire::i.

131 { return DataFrame(*this, i); }

◆ pair() [1/2]

IterPair edm::DataFrameContainer::pair ( size_t  i)
inline

Definition at line 125 of file DataFrameContainer.h.

References mps_fire::i, m_data, m_ids, and m_stride.

125 { return IterPair(m_ids.begin() + i, m_data.begin() + i * m_stride); }
std::pair< IdIter, DataIter > IterPair

◆ pair() [2/2]

const_IterPair edm::DataFrameContainer::pair ( size_t  i) const
inline

Definition at line 127 of file DataFrameContainer.h.

References mps_fire::i, m_data, m_ids, and m_stride.

127 { return const_IterPair(m_ids.begin() + i, m_data.begin() + i * m_stride); }
std::pair< const_IdIter, const_DataIter > const_IterPair

◆ pop_back()

void edm::DataFrameContainer::pop_back ( )
inline

Definition at line 118 of file DataFrameContainer.h.

References m_data, m_ids, and m_stride.

Referenced by EcalTBDaqFormatter::interpretRawData(), and EcalTB07DaqFormatter::interpretRawData().

118  {
119  m_ids.resize(m_ids.size() - 1);
120  m_data.resize(m_data.size() - m_stride);
121  }

◆ push_back() [1/2]

void edm::DataFrameContainer::push_back ( id_type  iid,
data_type const *  idata 
)
inline

Definition at line 93 of file DataFrameContainer.h.

References filterCSVwithJSON::copy, callgraph::cs, m_data, m_ids, and m_stride.

Referenced by EEDigiCollection::push_back(), and ESDigiCollection::push_back().

93  {
94  m_ids.push_back(iid);
95  size_t cs = m_data.size();
96  m_data.resize(m_data.size() + m_stride);
97  std::copy(idata, idata + m_stride, m_data.begin() + cs);
98  }

◆ push_back() [2/2]

void edm::DataFrameContainer::push_back ( id_type  iid)
inline

Definition at line 100 of file DataFrameContainer.h.

References m_data, m_ids, and m_stride.

100  {
101  m_ids.push_back(iid);
102  m_data.resize(m_data.size() + m_stride);
103  }

◆ reserve()

void edm::DataFrameContainer::reserve ( size_t  isize)
inline

◆ resize()

void edm::DataFrameContainer::resize ( size_t  isize)
inline

Definition at line 85 of file DataFrameContainer.h.

References m_data, m_ids, and m_stride.

85  {
86  m_ids.resize(isize);
87  m_data.resize(isize * m_stride);
88  }

◆ set_back() [1/3]

void edm::DataFrameContainer::set_back ( id_type  iid,
data_type const *  idata 
)
inline

Definition at line 105 of file DataFrameContainer.h.

References filterCSVwithJSON::copy, callgraph::cs, m_data, m_ids, and m_stride.

105  {
106  m_ids.back() = iid;
107  size_t cs = m_data.size() - m_stride;
108  std::copy(idata, idata + m_stride, m_data.begin() + cs);
109  }

◆ set_back() [2/3]

void edm::DataFrameContainer::set_back ( id_type  iid)
inline

Definition at line 110 of file DataFrameContainer.h.

References m_ids.

110 { m_ids.back() = iid; }

◆ set_back() [3/3]

void edm::DataFrameContainer::set_back ( data_type const *  idata)
inline

Definition at line 111 of file DataFrameContainer.h.

References filterCSVwithJSON::copy, callgraph::cs, m_data, and m_stride.

111  {
112  size_t cs = m_data.size() - m_stride;
113  std::copy(idata, idata + m_stride, m_data.begin() + cs);
114  }

◆ size()

size_type edm::DataFrameContainer::size ( void  ) const
inline

Definition at line 156 of file DataFrameContainer.h.

References m_ids.

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), QIE10Task::_process(), QIE11Task::_process(), HcalDigisProducerGPU::acquire(), edm::DataMixingEMDigiWorker::addEMPileups(), edm::DataMixingEMDigiWorker::addEMSignals(), EcalPreshowerNoiseDistrib::analyze(), EcalTPInputAnalyzer::analyze(), EcalPreshowerDigisValidation::analyze(), EcalTPGAnalyzer::analyze(), EcalBarrelDigisValidation::analyze(), EcalEndcapDigisValidation::analyze(), EcalDigisValidation::analyze(), HLTGetDigi::analyze(), EcalMixingModuleValidation::analyze(), EcnaAnalyzer::analyze(), CMTRawAnalyzer::analyze(), EcalSelectiveReadoutValidation::analyzeDataVolume(), EcalSelectiveReadoutValidation::analyzeEE(), back(), end(), GlobalDigisProducer::fillECal(), GlobalDigisAnalyzer::fillECal(), HFPreReconstructor::fillInfos(), HLTHcalLaserMisfireFilter::filter(), ESRecHitProducer::produce(), EcalUncalibRecHitProducer::produce(), HcalRealisticZS::produce(), EcalZeroSuppressionProducer::produce(), EcalTBWeightUncalibRecHitProducer::produce(), HcalDigiToRawuHTR::produce(), EcalEBTrigPrimProducer::produce(), EcalTrigPrimProducer::produce(), HBHEPhase1Reconstructor::produce(), EcalDigiDisplay::readEBDigis(), EcalDigiDisplay::readEEDigis(), EcalUncalibRecHitWorkerRunOneDigiBase::run(), EcalEBTrigPrimTestAlgo::run(), EcalUncalibRecHitWorkerMultiFit::run(), EcalSelectiveReadoutSuppressor::run(), and sort().

156 { return m_ids.size(); }

◆ sort()

void edm::DataFrameContainer::sort ( )

Definition at line 19 of file DataFrameContainer.cc.

References filterCSVwithJSON::copy, mps_fire::i, dqmdumpme::indices, dqmiolumiharvest::j, m_data, m_ids, m_stride, alignCSCRings::s, size(), jetUpdater_cfi::sort, and createJobs::tmp.

19  {
20  if (size() < 2)
21  return;
22  std::vector<int> indices(size(), 1);
23  indices[0] = 0;
24  std::partial_sum(indices.begin(), indices.end(), indices.begin());
25  std::sort(indices.begin(), indices.end(), TypeCompare(m_ids));
26  {
27  IdContainer tmp(m_ids.size());
28  std::copy(boost::make_permutation_iterator(m_ids.begin(), indices.begin()),
29  boost::make_permutation_iterator(m_ids.end(), indices.end()),
30  tmp.begin());
31  tmp.swap(m_ids);
32  }
33  {
34  // std::transform(indices.begin(),indices.end(),indices.begin(),
35  // std::bind(std::multiplies<int>(),m_stride,std::placeholders::_1));
36  DataContainer tmp(m_data.size());
37  size_type s = m_stride * sizeof(data_type);
38  for (size_type j = 0, i = 0; i != indices.size(); ++i, j += m_stride)
39  ::memcpy(&tmp[j], &m_data[indices[i] * m_stride], s);
40  tmp.swap(m_data);
41  }
42  }
std::vector< data_type > DataContainer
std::vector< id_type > IdContainer
tmp
align.sh
Definition: createJobs.py:716

◆ stride()

size_type edm::DataFrameContainer::stride ( ) const
inline

Definition at line 152 of file DataFrameContainer.h.

References m_stride.

Referenced by HcalDataFrameContainer< Digi >::samples(), and edm::DataFrame::set().

152 { return m_stride; }

◆ subdetId()

int edm::DataFrameContainer::subdetId ( ) const
inline

Definition at line 150 of file DataFrameContainer.h.

References m_subdetId.

◆ swap() [1/2]

void edm::DataFrameContainer::swap ( DataFrameContainer rh)
inline

Definition at line 68 of file DataFrameContainer.h.

References m_data, m_ids, m_stride, m_subdetId, and edm::swap().

Referenced by edm::swap().

68  {
69  std::swap(m_subdetId, rh.m_subdetId);
70  std::swap(m_stride, rh.m_stride);
71  m_ids.swap(rh.m_ids);
72  m_data.swap(rh.m_data);
73  }
void swap(DataFrameContainer &lhs, DataFrameContainer &rhs)

◆ swap() [2/2]

void edm::DataFrameContainer::swap ( IdContainer iic,
DataContainer idc 
)
inline

Definition at line 75 of file DataFrameContainer.h.

References m_data, and m_ids.

75  {
76  m_ids.swap(iic);
77  m_data.swap(idc);
78  }

Friends And Related Function Documentation

◆ ::TestDataFrame

friend class ::TestDataFrame
friend

Definition at line 169 of file DataFrameContainer.h.

◆ ::TestEcalDigi

template<typename DigiCollection >
friend class ::TestEcalDigi
friend

Definition at line 172 of file DataFrameContainer.h.

Member Data Documentation

◆ m_data

DataContainer edm::DataFrameContainer::m_data
private

◆ m_ids

IdContainer edm::DataFrameContainer::m_ids
private

◆ m_stride

size_type edm::DataFrameContainer::m_stride
private

◆ m_subdetId

int edm::DataFrameContainer::m_subdetId
private

Definition at line 175 of file DataFrameContainer.h.

Referenced by subdetId(), and swap().