ATLAS Offline Software
Functions
Event/EventTPCnv/EventTPCnv/vectorize.h File Reference
#include <string>
#include <vector>
Include dependency graph for Event/EventTPCnv/EventTPCnv/vectorize.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void strToUI (const std::string &m, std::vector< unsigned int > &v)
 
void UITostr (std::string &n, std::vector< unsigned int >::const_iterator &i, bool bugcompat)
 
void bitmapToUI (const std::vector< bool > &m, std::vector< unsigned int > &v)
 
void UITobitmap (std::vector< bool > &n, std::vector< unsigned int >::const_iterator &i, bool bugcompat)
 

Function Documentation

◆ bitmapToUI()

void bitmapToUI ( const std::vector< bool > &  m,
std::vector< unsigned int > &  v 
)

Definition at line 85 of file vectorize.cxx.

85  {
86  unsigned short l = m.size();
87  int rem=16;
88  unsigned int t=0;
89  t|=l<<16;
90  for(int w=0;w<l;w++){
91  rem -=1;
92  t|=m[w]<<rem;
93 
94  if (rem==0) {
95  v.push_back(t);
96  t=0;
97  rem=32;
98  }
99  }
100  if(rem!=32) v.push_back(t);
101 }

◆ strToUI()

void strToUI ( const std::string &  m,
std::vector< unsigned int > &  v 
)

Definition at line 9 of file vectorize.cxx.

9  {
10  unsigned short l = (unsigned short)m.size();
11  v.reserve(v.size() + (unsigned int)((2. + l) / 4. + 0.9));
12  unsigned int t = 0;
13  unsigned int rem = 16;
14  t |= l << 16u;
15 
16  for (unsigned int w = 0; w < l; w++)
17  if (rem){
18  t |= m[w] % 255 << (rem - 8);
19  rem -= 8;
20  }else{
21  v.push_back(t);
22  t = 0;
23  rem = 24;
24  t |= m[w] % 255 << rem;
25  }
26  v.push_back(t);
27 }

◆ UITobitmap()

void UITobitmap ( std::vector< bool > &  n,
std::vector< unsigned int >::const_iterator &  i,
bool  bugcompat 
)

Definition at line 103 of file vectorize.cxx.

106 {
107  n.clear();
108  int l=(*i)>>16;
109  n.reserve(l);
110  int rem = 16;
111  for (int w=0;w<l;w++){
112  rem -=1;
113  n.push_back((*i)>>rem & 0x1);
114 
115  if(rem==0){
116  ++i;
117  rem=32;
118  }
119  }
120  if (rem!=32) ++i;
121 
122  if (bugcompat && l > 32 && (l%32) == 16) {
123  --i;
124  n.resize (l-32);
125  }
126 }

◆ UITostr()

void UITostr ( std::string &  n,
std::vector< unsigned int >::const_iterator &  i,
bool  bugcompat 
)

Definition at line 29 of file vectorize.cxx.

30  {
31  int l = (*i) >> 16;
32 
33  n.clear();
34  n.reserve(l);
35  int rem = 16;
36 
37  for (int w=0;w<l;w++)
38  if(rem){
39  rem-=8;
40  short o = (*i) >> rem & 0xff;
41  n.push_back(o);
42  }else{
43  ++i;
44  rem = 24;
45  short o = (*i) >> rem & 0xff;
46  n.push_back(o);
47  }
48  ++i;
49 
50  // EVIL HACK:
51  // Previous versions of this packing code had a bug, in which for
52  // strings of length 4n+2, the last word didn't get written.
53  // That bug has been fixed, but that causes problems when we
54  // read old data. We now read the proper number of words,
55  // which means that for one of these corrupted strings,
56  // we'll gobble the next word of the next item.
57  // If the next item is a string as well, then the count
58  // will be wrong, likely very large. This will likely cause
59  // us to fall off the end of the input vector, leading to a crash.
60  // The code here tries to work around this. If we read a string
61  // with length 4n+2 and the last four characters are not all
62  // printable (or in \n\t\r) we assume that we've hit this bug
63  // and drop the last word.
64  // In current releases, we set a bit in the version word
65  // to mark that the packing bug has been fixed, so we only
66  // do this test if that flag was clear.
67  // We can't just test that flag without testing the string
68  // as well, because release 15.4.0 had the packing bug
69  // fixed but didn't have the bug fixed flag.
70  if (bugcompat && l > 2 && (l%4) == 2)
71  {
72  bool ok = true;
73  for (int j = 0; ok && j < 4; j++) {
74  char c = n[l-j-1];
75  if (!std::isprint(c) && c != '\n' && c != '\t' && c != '\r')
76  ok = false;
77  }
78  if (!ok) {
79  n.resize(l-4);
80  --i;
81  }
82  }
83 }
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
xAOD::short
short
Definition: Vertex_v1.cxx:165
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
lumiFormat.i
int i
Definition: lumiFormat.py:92
beamspotman.n
n
Definition: beamspotman.py:731
python.PyAthena.v
v
Definition: PyAthena.py:157
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
python.compressB64.c
def c
Definition: compressB64.py:93