CMS 3D CMS Logo

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

#include <PhiMemoryImage.h>

Public Types

typedef
PhiMemoryImage::value_type
value_ptr
 
typedef unsigned long int value_type
 

Public Member Functions

void BitShift (int nBits)
 
void CopyFromBuffer (PhiMemoryImage::value_ptr rhs, int offset)
 functions/// More...
 
bool GetBit (int station, int bitNumber) const
 
PhiMemoryImage::value_typeoperator[] (int index)
 
 PhiMemoryImage ()
 constructors/// More...
 
 PhiMemoryImage (PhiMemoryImage::value_ptr buffer, int offset)
 
 PhiMemoryImage (int z, int o, int tw, int th, int fo, int fi, int si, int se)
 
void Print ()
 
void printbuff ()
 
void SetBit (int station, int bitNumber, bool value=true)
 
void SetBuff (int chunk, int value)
 

Static Public Attributes

static const int STATIONS = 4
 
static const int TOTAL_UNITS = UNITS * STATIONS
 
static const int UNITS = 2
 

Private Attributes

PhiMemoryImage::value_type _buffer [PhiMemoryImage::TOTAL_UNITS]
 
int _keyStationOffset
 

Detailed Description

Definition at line 4 of file PhiMemoryImage.h.

Member Typedef Documentation

Definition at line 9 of file PhiMemoryImage.h.

typedef unsigned long int PhiMemoryImage::value_type

Definition at line 8 of file PhiMemoryImage.h.

Constructor & Destructor Documentation

PhiMemoryImage::PhiMemoryImage ( )

constructors///

Definition at line 4 of file PhiMemoryImage.cc.

References _buffer, i, and TOTAL_UNITS.

5  for (int i = 0; i < PhiMemoryImage::TOTAL_UNITS; i++) _buffer[i] = 0;
6 }
int i
Definition: DBlmapReader.cc:9
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
static const int TOTAL_UNITS
PhiMemoryImage::PhiMemoryImage ( PhiMemoryImage::value_ptr  buffer,
int  offset 
)

Definition at line 8 of file PhiMemoryImage.cc.

References CopyFromBuffer().

9 
10  CopyFromBuffer( buffer, offset );
11 
12 }
void CopyFromBuffer(PhiMemoryImage::value_ptr rhs, int offset)
functions///
PhiMemoryImage::PhiMemoryImage ( int  z,
int  o,
int  tw,
int  th,
int  fo,
int  fi,
int  si,
int  se 
)
inline

Definition at line 20 of file PhiMemoryImage.h.

References _buffer, connectstrParser::o, and z.

20  {
21  _buffer[0] = z;_buffer[1] = o;_buffer[2] = tw;_buffer[3] = th;_buffer[4] = fo;_buffer[5] = fi;_buffer[6] = si;_buffer[7] = se;
22  }
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]

Member Function Documentation

void PhiMemoryImage::BitShift ( int  nBits)

Definition at line 105 of file PhiMemoryImage.cc.

References _buffer, i, and STATIONS.

Referenced by DetectPatterns().

105  {
106 
107  if (nBits == 0) return;
108 
109  bool negShift = (nBits < 0);
110 
111  if (negShift) nBits = -nBits;
112 
113  PhiMemoryImage::value_type transferBits;
114  int value_size = sizeof(transferBits)*8;
115 
116  for (int i = 0; i < PhiMemoryImage::STATIONS; i++){
117 
118  if (negShift){
119 
120  transferBits = (0x1 << nBits) - 1;
121  transferBits &= _buffer[2*i+1];
122 
123  _buffer[2*i+1] >>= nBits;
124  _buffer[2*i] >>= nBits;
125 
126  transferBits <<= (value_size - nBits);
127 
128  _buffer[2*i] |= transferBits;
129 
130  } else {
131 
132  transferBits = (0x1 << nBits) - 1;
133  transferBits <<= (value_size - nBits);
134 
135  transferBits &= _buffer[2*i];
136  transferBits >>= (value_size - nBits);
137 
138  _buffer[2*i] <<= nBits;
139  _buffer[2*i+1] <<= nBits;
140 
141  _buffer[2*i+1] |= transferBits;
142  }
143  }
144 
145 }
int i
Definition: DBlmapReader.cc:9
static const int STATIONS
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
unsigned long int value_type
Definition: PhiMemoryImage.h:8
void PhiMemoryImage::CopyFromBuffer ( PhiMemoryImage::value_ptr  rhs,
int  offset 
)

functions///

Definition at line 14 of file PhiMemoryImage.cc.

References _buffer, _keyStationOffset, i, hltrates_dqm_sourceclient-live_cfg::offset, and TOTAL_UNITS.

Referenced by PhiMemoryImage().

14  {
15 
17 
18  for (int i = 0; i < PhiMemoryImage::TOTAL_UNITS; i++){
19  _buffer[i] = rhs[i];
20 
21  }
22 
23 }
int i
Definition: DBlmapReader.cc:9
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
static const int TOTAL_UNITS
bool PhiMemoryImage::GetBit ( int  station,
int  bitNumber 
) const

Definition at line 75 of file PhiMemoryImage.cc.

References _buffer, findQualityFiles::size, tmp, and TOTAL_UNITS.

Referenced by Print().

75  {
76 
78  int size = sizeof (PhiMemoryImage::value_type) * 8;
79 
80  if (bitNumber > (size * PhiMemoryImage::TOTAL_UNITS)){
81  // complain in some way .. to be implemented..
82  return false;
83  }
84 
85  bitNumber -= 1;
86  station -=1;
87 
88  int chunkNumber = station*2 + ((bitNumber-1) / size);
89  int bitOffset = bitNumber % size;
90  if(bitNumber == 64){chunkNumber += 1;}
91 
92  tmp <<= bitOffset;
93 
94  // std::cout << "chunkNumber: " << chunkNumber << "bitOffset:"
95  // << bitOffset << "tmp: " << tmp << std::endl;
96  //std::cout<<"buffer["<<chunkNumber<<"] = "<<_buffer[chunkNumber]<<std::endl;
97  // std::cout<<"buffer["<<chunkNumber + 1<<"] = "<<_buffer[chunkNumber+1]<<std::endl;
98 
99  return ((_buffer[chunkNumber] & tmp) != 0);
100 
101 }
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
unsigned long int value_type
Definition: PhiMemoryImage.h:8
static const int TOTAL_UNITS
tuple size
Write out results.
PhiMemoryImage::value_type& PhiMemoryImage::operator[] ( int  index)
inline

Definition at line 40 of file PhiMemoryImage.h.

References _buffer, and cmsHarvester::index.

41  {return _buffer[index];}
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
void PhiMemoryImage::Print ( void  )

Definition at line 147 of file PhiMemoryImage.cc.

References gather_cfg::cout, GetBit(), i, j, findQualityFiles::size, STATIONS, and UNITS.

147  {
148 
150 
151  for (int i = 1; i <= PhiMemoryImage::STATIONS; i++){
152 
153  // std::cout << _buffer[(i-1)*2] << " " << _buffer [(i-1)*2+1] << std::endl;
154 
155  for (int j = size; j > 0; j--){
156 
157  if ((j%(sizeof(PhiMemoryImage::value_type)*8)) == 0)
158  std::cout << std::endl;
159 
160 
161  if ((j%8)==0) std::cout << " ";
162  if(GetBit(i,j)) std::cout << "1";
163  else std::cout << "0";
164 
165  }
166  std::cout << std::endl;
167  }
168 
169 }
int i
Definition: DBlmapReader.cc:9
static const int STATIONS
int j
Definition: DBlmapReader.cc:9
static const int UNITS
bool GetBit(int station, int bitNumber) const
unsigned long int value_type
Definition: PhiMemoryImage.h:8
tuple cout
Definition: gather_cfg.py:145
tuple size
Write out results.
void PhiMemoryImage::printbuff ( )

Definition at line 171 of file PhiMemoryImage.cc.

References _buffer, gather_cfg::cout, i, and TOTAL_UNITS.

171  {
172 
173  for(int i=0;i<PhiMemoryImage::TOTAL_UNITS;i++){
174  std::cout<<"buffer["<<i<<"] = "<<_buffer[i]<<std::endl;
175  }
176  std::cout<<std::endl;
177 }
int i
Definition: DBlmapReader.cc:9
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
tuple cout
Definition: gather_cfg.py:145
static const int TOTAL_UNITS
void PhiMemoryImage::SetBit ( int  station,
int  bitNumber,
bool  value = true 
)

Definition at line 31 of file PhiMemoryImage.cc.

References _buffer, findQualityFiles::size, tmp, and TOTAL_UNITS.

31  {
32 
33  //std::cout<<"bitnumber = "<<bitNumber<<std::endl;
34  // std::cout<<"station = "<<station<<std::endl;
35 
36  PhiMemoryImage::value_type tmp = 1;//64 bit word
37  int size = sizeof (PhiMemoryImage::value_type) * 8;//64
38 
39  if (bitNumber > size * PhiMemoryImage::TOTAL_UNITS){
40  // complain in some way .. to be implemented..
41  return;
42  }
43 
44  station = station-1;
45  bitNumber = bitNumber-1;
46 
47 
48  // std::cout<<"bitnumber = "<<bitNumber<<std::endl;
49  // std::cout<<"station = "<<station<<std::endl;
50 
51  int chunkNumber = station*2 + (bitNumber-1) / size;
52  int bitOffset = bitNumber % size;
53  if(bitNumber == 64){chunkNumber += 1;}
54 
55 
56  // std::cout<<"chunknumber = "<<chunkNumber<<std::endl;
57  // std::cout<<"bitOffset = "<<bitOffset<<std::endl;
58 
59  //std::cout<<"tmp = "<<tmp<<std::endl;
60  tmp = tmp << bitOffset;//
61  //std::cout<<"tmp = "<<tmp<<std::endl;
62 
63  if (bitValue)
64  _buffer[chunkNumber] |= tmp;
65  else{
66  tmp = ~tmp;
67  _buffer[chunkNumber] &= tmp;
68  }
69 
70  //std::cout<<"buffer["<<chunkNumber<<"] = "<<_buffer[chunkNumber]<<std::endl;
71  //std::cout<<"buffer["<<chunkNumber + 1<<"] = "<<_buffer[chunkNumber+1]<<std::endl;
72 
73 }
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]
unsigned long int value_type
Definition: PhiMemoryImage.h:8
static const int TOTAL_UNITS
tuple size
Write out results.
void PhiMemoryImage::SetBuff ( int  chunk,
int  value 
)
inline

Definition at line 33 of file PhiMemoryImage.h.

References _buffer, and relativeConstraints::value.

33 {_buffer[chunk] = value;}
PhiMemoryImage::value_type _buffer[PhiMemoryImage::TOTAL_UNITS]

Member Data Documentation

PhiMemoryImage::value_type PhiMemoryImage::_buffer[PhiMemoryImage::TOTAL_UNITS]
private
int PhiMemoryImage::_keyStationOffset
private

Definition at line 47 of file PhiMemoryImage.h.

Referenced by CopyFromBuffer().

const int PhiMemoryImage::STATIONS = 4
static

Definition at line 11 of file PhiMemoryImage.h.

Referenced by BitShift(), and Print().

const int PhiMemoryImage::TOTAL_UNITS = UNITS * STATIONS
static

Definition at line 13 of file PhiMemoryImage.h.

Referenced by CopyFromBuffer(), GetBit(), PhiMemoryImage(), printbuff(), and SetBit().

const int PhiMemoryImage::UNITS = 2
static

Definition at line 12 of file PhiMemoryImage.h.

Referenced by Print().