CMS 3D CMS Logo

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

#include <mySiStripNoises.h>

Classes

struct  DetRegistry
 
class  StrictWeakOrdering
 

Public Types

typedef
SiStripNoiseVector::const_iterator 
ContainerIterator
 
typedef const std::vector< short > InputVector
 
typedef std::pair
< ContainerIterator,
ContainerIterator
Range
 
typedef std::vector< DetRegistryRegistry
 
typedef Registry::const_iterator RegistryIterator
 
typedef std::vector< unsigned
char > 
SiStripNoiseVector
 

Public Member Functions

uint16_t decode (const uint16_t &strip, const Range &range) const
 
void encode (InputVector &Vi, std::vector< unsigned char > &Vo_CHAR)
 
void getDetIds (std::vector< uint32_t > &DetIds) const
 
float getNoise (const uint16_t &strip, const Range &range) const
 
const Range getRange (const uint32_t &detID) const
 
 mySiStripNoises ()
 
bool put (const uint32_t detID, InputVector &input)
 
void setData (float noise_, std::vector< short > &vped)
 
 ~mySiStripNoises ()
 

Public Attributes

std::vector< DetRegistryindexes
 
std::vector< unsigned char > v_noises
 

Detailed Description

Definition at line 13 of file mySiStripNoises.h.

Member Typedef Documentation

typedef SiStripNoiseVector::const_iterator mySiStripNoises::ContainerIterator

Definition at line 30 of file mySiStripNoises.h.

typedef const std::vector<short> mySiStripNoises::InputVector

Definition at line 34 of file mySiStripNoises.h.

Definition at line 31 of file mySiStripNoises.h.

typedef std::vector<DetRegistry> mySiStripNoises::Registry

Definition at line 32 of file mySiStripNoises.h.

typedef Registry::const_iterator mySiStripNoises::RegistryIterator

Definition at line 33 of file mySiStripNoises.h.

typedef std::vector<unsigned char> mySiStripNoises::SiStripNoiseVector

Definition at line 29 of file mySiStripNoises.h.

Constructor & Destructor Documentation

mySiStripNoises::mySiStripNoises ( )
inline

Definition at line 16 of file mySiStripNoises.h.

16 {}
mySiStripNoises::~mySiStripNoises ( )
inline

Definition at line 17 of file mySiStripNoises.h.

17 {}

Member Function Documentation

uint16_t mySiStripNoises::decode ( const uint16_t &  strip,
const Range range 
) const

Definition at line 67 of file mySiStripNoises.cc.

References data, and relativeConstraints::value.

Referenced by getNoise().

67  {
68  const unsigned char *data = &*(range.second -1); // pointer to the last byte of data
69  static const uint16_t BITS_PER_STRIP = 9;
70 
71  uint32_t lowBit = strip * BITS_PER_STRIP;
72  uint8_t firstByteBit = (lowBit & 7);//module 8
73  uint8_t firstByteNBits = 8 - firstByteBit;
74  uint8_t firstByteMask = 0xffu << firstByteBit;
75  uint8_t secondByteMask = ~(0xffu << (BITS_PER_STRIP - firstByteNBits));
76  uint16_t value = ((uint16_t(*(data-lowBit/8 )) & firstByteMask) >> firstByteBit) | ((uint16_t(*(data-lowBit/8-1)) & secondByteMask) << firstByteNBits);
77  return value;
78 }
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void mySiStripNoises::encode ( InputVector Vi,
std::vector< unsigned char > &  Vo_CHAR 
)

Definition at line 46 of file mySiStripNoises.cc.

References data, and i.

Referenced by put().

46  {
47  static const uint16_t BITS_PER_STRIP = 9;
48  const size_t VoSize = (size_t)((Vi.size() * BITS_PER_STRIP)/8+.999);
49  Vo.resize(VoSize);
50  for(size_t i = 0; i<Vo.size(); ++i)
51  Vo[i] &= 0x00u;
52 
53  for(unsigned int stripIndex =0; stripIndex<Vi.size(); ++stripIndex){
54  unsigned char* data = &Vo[Vo.size()-1];
55  uint32_t lowBit = stripIndex * BITS_PER_STRIP;
56  uint8_t firstByteBit = (lowBit & 0x7);
57  uint8_t firstByteNBits = 8 - firstByteBit;
58  uint8_t firstByteMask = 0xffu << firstByteBit;
59  uint8_t secondByteNbits = (BITS_PER_STRIP - firstByteNBits);
60  uint8_t secondByteMask = ~(0xffu << secondByteNbits);
61 
62  *(data-lowBit/8) = (*(data-lowBit/8) & ~(firstByteMask)) | ((Vi[stripIndex] & 0xffu) <<firstByteBit);
63  *(data-lowBit/8-1) = (*(data-lowBit/8-1) & ~(secondByteMask)) | ((Vi[stripIndex] >> firstByteNBits) & secondByteMask);
64  }
65 }
int i
Definition: DBlmapReader.cc:9
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void mySiStripNoises::getDetIds ( std::vector< uint32_t > &  DetIds) const

Definition at line 29 of file mySiStripNoises.cc.

References begin, end, indexes, and AlCaHLTBitMon_ParallelJobs::p.

29  {
30  // returns vector of DetIds in map
33  for (mySiStripNoises::RegistryIterator p=begin; p != end; ++p) {
34  DetIds.push_back(p->detid);
35  }
36 }
Registry::const_iterator RegistryIterator
#define end
Definition: vmac.h:37
std::vector< DetRegistry > indexes
#define begin
Definition: vmac.h:30
float mySiStripNoises::getNoise ( const uint16_t &  strip,
const Range range 
) const

Definition at line 38 of file mySiStripNoises.cc.

References decode().

38  {
39  return static_cast<float> (decode(strip,range)/10.0);
40 }
uint16_t decode(const uint16_t &strip, const Range &range) const
const mySiStripNoises::Range mySiStripNoises::getRange ( const uint32_t &  detID) const

Definition at line 20 of file mySiStripNoises.cc.

References indexes, AlCaHLTBitMon_ParallelJobs::p, and v_noises.

20  {
21  // get SiStripNoises Range of DetId
22  RegistryIterator p = std::lower_bound(indexes.begin(),indexes.end(),DetId,StrictWeakOrdering());
23  if (p==indexes.end()|| p->detid!=DetId)
24  return mySiStripNoises::Range(v_noises.end(),v_noises.end());
25  else
26  return mySiStripNoises::Range(v_noises.begin()+p->ibegin,v_noises.begin()+p->iend);
27 }
Registry::const_iterator RegistryIterator
std::pair< ContainerIterator, ContainerIterator > Range
std::vector< DetRegistry > indexes
Definition: DetId.h:18
std::vector< unsigned char > v_noises
bool mySiStripNoises::put ( const uint32_t  detID,
InputVector input 
)

Definition at line 3 of file mySiStripNoises.cc.

References mySiStripNoises::DetRegistry::detid, encode(), mySiStripNoises::DetRegistry::ibegin, mySiStripNoises::DetRegistry::iend, indexes, AlCaHLTBitMon_ParallelJobs::p, sd, and v_noises.

3  {
4  // put in SiStripNoises of DetId
5  std::vector<unsigned char> Vo_CHAR;
6  encode(input, Vo_CHAR);
7  Registry::iterator p=std::lower_bound(indexes.begin(),indexes.end(),DetId,mySiStripNoises::StrictWeakOrdering());
8  if (p!=indexes.end() && p->detid==DetId)
9  return false;
10  size_t sd = Vo_CHAR.end() - Vo_CHAR.begin();
11  DetRegistry detregistry;
12  detregistry.detid=DetId;
13  detregistry.ibegin=v_noises.size();
14  detregistry.iend=v_noises.size()+sd;
15  indexes.insert(p,detregistry);
16  v_noises.insert(v_noises.end(),Vo_CHAR.begin(),Vo_CHAR.end());
17  return true;
18 }
static std::string const input
Definition: EdmProvDump.cc:44
std::vector< DetRegistry > indexes
Definition: DetId.h:18
double sd
std::vector< unsigned char > v_noises
void encode(InputVector &Vi, std::vector< unsigned char > &Vo_CHAR)
void mySiStripNoises::setData ( float  noise_,
std::vector< short > &  vped 
)

Definition at line 42 of file mySiStripNoises.cc.

42  {
43  v.push_back((static_cast<int16_t> (noise_*10.0 + 0.5) & 0x01FF)) ;
44 }
static const char noise_[]

Member Data Documentation

std::vector<DetRegistry> mySiStripNoises::indexes

Definition at line 47 of file mySiStripNoises.h.

Referenced by getDetIds(), getRange(), and put().

std::vector<unsigned char> mySiStripNoises::v_noises

Definition at line 46 of file mySiStripNoises.h.

Referenced by getRange(), and put().