CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
TTDTC Class Reference

Class to store hardware like structured TTStub Collection used by Track Trigger emulators. More...

#include <TTDTC.h>

Public Types

typedef std::bitset< TTBV::SBV
 
typedef std::pair< TTStubRef, BVFrame
 
typedef std::vector< FrameStream
 
typedef std::vector< StreamStreams
 

Public Member Functions

int nGaps () const
 
int nStubs () const
 
void setStream (int dtcRegion, int dtcBoard, int dtcChannel, const Stream &stream)
 
int size () const
 
const Streamstream (int tfpRegion, int tfpChannel) const
 
const std::vector< int > & tfpChannels () const
 
const std::vector< int > & tfpRegions () const
 
 TTDTC ()
 
 TTDTC (int numRegions, int numOverlappingRegions, int numDTCsPerRegion)
 
 ~TTDTC ()
 

Private Member Functions

int index (int dtcRegion, int dtcBoard, int dtcChannel) const
 
int index (int tfpRegion, int tfpChannel) const
 

Private Attributes

std::vector< int > channels_
 
int numDTCsPerRegion_
 
int numDTCsPerTFP_
 
int numOverlappingRegions_
 
int numRegions_
 
std::vector< int > regions_
 
Streams streams_
 

Detailed Description

Class to store hardware like structured TTStub Collection used by Track Trigger emulators.

Author
Thomas Schuh
Date
2020, Jan

Definition at line 17 of file TTDTC.h.

Member Typedef Documentation

typedef std::bitset<TTBV::S> TTDTC::BV

Definition at line 20 of file TTDTC.h.

typedef std::pair<TTStubRef, BV> TTDTC::Frame

Definition at line 22 of file TTDTC.h.

typedef std::vector<Frame> TTDTC::Stream

Definition at line 24 of file TTDTC.h.

typedef std::vector<Stream> TTDTC::Streams

Definition at line 26 of file TTDTC.h.

Constructor & Destructor Documentation

TTDTC::TTDTC ( )
inline

Definition at line 28 of file TTDTC.h.

28 {}
TTDTC::TTDTC ( int  numRegions,
int  numOverlappingRegions,
int  numDTCsPerRegion 
)

Definition at line 9 of file TTDTC.cc.

References channels_, and regions_.

10  : numRegions_(numRegions),
11  numOverlappingRegions_(numOverlappingRegions),
12  numDTCsPerRegion_(numDTCsPerRegion),
13  numDTCsPerTFP_(numOverlappingRegions * numDTCsPerRegion),
17  iota(regions_.begin(), regions_.end(), 0);
18  iota(channels_.begin(), channels_.end(), 0);
19 }
std::vector< int > regions_
Definition: TTDTC.h:63
std::vector< int > channels_
Definition: TTDTC.h:65
int numOverlappingRegions_
Definition: TTDTC.h:57
Streams streams_
Definition: TTDTC.h:67
int numDTCsPerRegion_
Definition: TTDTC.h:59
int numRegions_
Definition: TTDTC.h:55
int numDTCsPerTFP_
Definition: TTDTC.h:61
TTDTC::~TTDTC ( )
inline

Definition at line 30 of file TTDTC.h.

30 {}

Member Function Documentation

int TTDTC::index ( int  dtcRegion,
int  dtcBoard,
int  dtcChannel 
) const
private

Definition at line 90 of file TTDTC.cc.

References numDTCsPerRegion_, and numOverlappingRegions_.

Referenced by BeautifulSoup.PageElement::_invert(), index(), setStream(), and stream().

90  {
91  return (dtcRegion * numDTCsPerRegion_ + dtcBoard) * numOverlappingRegions_ + dtcChannel;
92 }
int numOverlappingRegions_
Definition: TTDTC.h:57
int numDTCsPerRegion_
Definition: TTDTC.h:59
int TTDTC::index ( int  tfpRegion,
int  tfpChannel 
) const
private

Definition at line 95 of file TTDTC.cc.

References index(), numDTCsPerRegion_, numOverlappingRegions_, and numRegions_.

Referenced by BeautifulSoup.PageElement::_invert().

95  {
96  const int dtcChannel = numOverlappingRegions_ - (tfpChannel / numDTCsPerRegion_) - 1;
97  const int dtcBoard = tfpChannel % numDTCsPerRegion_;
98  const int dtcRegion = tfpRegion - dtcChannel >= 0 ? tfpRegion - dtcChannel : tfpRegion - dtcChannel + numRegions_;
99  return index(dtcRegion, dtcBoard, dtcChannel);
100 }
int index(int dtcRegion, int dtcBoard, int dtcChannel) const
Definition: TTDTC.cc:90
int numOverlappingRegions_
Definition: TTDTC.h:57
int numDTCsPerRegion_
Definition: TTDTC.h:59
int numRegions_
Definition: TTDTC.h:55
int TTDTC::nGaps ( ) const

Definition at line 81 of file TTDTC.cc.

References dqmiodumpmetadata::n, stream(), and streams_.

81  {
82  auto gaps = [](int& sum, const Frame& frame) { return sum += frame.first.isNull(); };
83  int n(0);
84  for (const Stream& stream : streams_)
85  n += accumulate(stream.begin(), stream.end(), 0, gaps);
86  return n;
87 }
const Stream & stream(int tfpRegion, int tfpChannel) const
Definition: TTDTC.cc:47
std::vector< Frame > Stream
Definition: TTDTC.h:24
Streams streams_
Definition: TTDTC.h:67
std::pair< TTStubRef, BV > Frame
Definition: TTDTC.h:22
int TTDTC::nStubs ( ) const

Definition at line 72 of file TTDTC.cc.

References dqmiodumpmetadata::n, stream(), and streams_.

72  {
73  auto stubs = [](int& sum, const Frame& frame) { return sum += frame.first.isNonnull(); };
74  int n(0);
75  for (const Stream& stream : streams_)
76  n += accumulate(stream.begin(), stream.end(), 0, stubs);
77  return n;
78 }
const Stream & stream(int tfpRegion, int tfpChannel) const
Definition: TTDTC.cc:47
std::vector< Frame > Stream
Definition: TTDTC.h:24
Streams streams_
Definition: TTDTC.h:67
std::pair< TTStubRef, BV > Frame
Definition: TTDTC.h:22
void TTDTC::setStream ( int  dtcRegion,
int  dtcBoard,
int  dtcChannel,
const Stream stream 
)

Definition at line 23 of file TTDTC.cc.

References cms::Exception::addContext(), cppFunctionSkipper::exception, index(), numDTCsPerRegion_, numOverlappingRegions_, numRegions_, stream(), and streams_.

Referenced by trackerDTC::DTC::produce().

23  {
24  // check arguments
25  const bool oorRegion = dtcRegion >= numRegions_ || dtcRegion < 0;
26  const bool oorBoard = dtcBoard >= numDTCsPerRegion_ || dtcBoard < 0;
27  const bool oorChannel = dtcChannel >= numOverlappingRegions_ || dtcChannel < 0;
28  if (oorRegion || oorBoard || oorChannel) {
29  cms::Exception exception("out_of_range");
30  exception.addContext("TTDTC::setStream");
31  if (oorRegion)
32  exception << "Requested Detector Region "
33  << "(" << dtcRegion << ") is out of range 0 to " << numRegions_ - 1 << ".";
34  if (oorBoard)
35  exception << "Requested DTC Board "
36  << "(" << dtcBoard << ") is out of range 0 to " << numDTCsPerRegion_ - 1 << ".";
37  if (oorChannel)
38  exception << "Requested DTC Channel "
39  << "(" << dtcChannel << ") is out of range 0 to " << numOverlappingRegions_ - 1 << ".";
40  throw exception;
41  }
42  streams_[index(dtcRegion, dtcBoard, dtcChannel)] = stream;
43 }
const Stream & stream(int tfpRegion, int tfpChannel) const
Definition: TTDTC.cc:47
int index(int dtcRegion, int dtcBoard, int dtcChannel) const
Definition: TTDTC.cc:90
int numOverlappingRegions_
Definition: TTDTC.h:57
Streams streams_
Definition: TTDTC.h:67
int numDTCsPerRegion_
Definition: TTDTC.h:59
int numRegions_
Definition: TTDTC.h:55
int TTDTC::size ( void  ) const

Definition at line 66 of file TTDTC.cc.

References python.cmstools::all(), stream(), and streams_.

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

66  {
67  auto all = [](int& sum, const Stream& stream) { return sum += stream.size(); };
68  return accumulate(streams_.begin(), streams_.end(), 0, all);
69 }
const Stream & stream(int tfpRegion, int tfpChannel) const
Definition: TTDTC.cc:47
std::vector< Frame > Stream
Definition: TTDTC.h:24
Streams streams_
Definition: TTDTC.h:67
def all
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
const TTDTC::Stream & TTDTC::stream ( int  tfpRegion,
int  tfpChannel 
) const

Definition at line 47 of file TTDTC.cc.

References cms::Exception::addContext(), cppFunctionSkipper::exception, index(), numDTCsPerTFP_, numRegions_, and streams_.

Referenced by nGaps(), nStubs(), setStream(), and size().

47  {
48  // check arguments
49  const bool oorRegion = tfpRegion >= numRegions_ || tfpRegion < 0;
50  const bool oorChannel = tfpChannel >= numDTCsPerTFP_ || tfpChannel < 0;
51  if (oorRegion || oorChannel) {
52  cms::Exception exception("out_of_range");
53  exception.addContext("TTDTC::stream");
54  if (oorRegion)
55  exception << "Requested Processing Region "
56  << "(" << tfpRegion << ") is out of range 0 to " << numRegions_ - 1 << ".";
57  if (oorChannel)
58  exception << "Requested TFP Channel "
59  << "(" << tfpChannel << ") is out of range 0 to " << numDTCsPerTFP_ - 1 << ".";
60  throw exception;
61  }
62  return streams_.at(index(tfpRegion, tfpChannel));
63 }
int index(int dtcRegion, int dtcBoard, int dtcChannel) const
Definition: TTDTC.cc:90
Streams streams_
Definition: TTDTC.h:67
int numRegions_
Definition: TTDTC.h:55
int numDTCsPerTFP_
Definition: TTDTC.h:61
const std::vector<int>& TTDTC::tfpChannels ( ) const
inline

Definition at line 35 of file TTDTC.h.

References channels_.

35 { return channels_; }
std::vector< int > channels_
Definition: TTDTC.h:65
const std::vector<int>& TTDTC::tfpRegions ( ) const
inline

Definition at line 33 of file TTDTC.h.

References regions_.

33 { return regions_; }
std::vector< int > regions_
Definition: TTDTC.h:63

Member Data Documentation

std::vector<int> TTDTC::channels_
private

Definition at line 65 of file TTDTC.h.

Referenced by tfpChannels(), and TTDTC().

int TTDTC::numDTCsPerRegion_
private

Definition at line 59 of file TTDTC.h.

Referenced by index(), and setStream().

int TTDTC::numDTCsPerTFP_
private

Definition at line 61 of file TTDTC.h.

Referenced by stream().

int TTDTC::numOverlappingRegions_
private

Definition at line 57 of file TTDTC.h.

Referenced by index(), and setStream().

int TTDTC::numRegions_
private

Definition at line 55 of file TTDTC.h.

Referenced by index(), setStream(), and stream().

std::vector<int> TTDTC::regions_
private

Definition at line 63 of file TTDTC.h.

Referenced by tfpRegions(), and TTDTC().

Streams TTDTC::streams_
private

Definition at line 67 of file TTDTC.h.

Referenced by nGaps(), nStubs(), setStream(), size(), and stream().