ATLAS Offline Software
computils.cxx
Go to the documentation of this file.
1 
10 // cppcheck-suppress-file stlIfStrFind; cannot use C++20 starts_with in this standalone code
11 
12 #include <stdlib.h>
13 #include <sys/time.h>
14 #include <sys/stat.h>
15 #include <sys/types.h>
16 #include <glob.h>
17 #include <stdint.h>
18 
19 #include <iostream>
20 #include <string>
21 #include <vector>
22 
23 #include "label.h"
24 #include "DrawLabel.h"
25 
26 #include "TFile.h"
27 #include "TKey.h"
28 #include "TTree.h"
29 #include "TList.h"
30 #include "TObject.h"
31 #include "TDirectory.h"
32 #include "TH1D.h"
33 
34 #include "TLegend.h"
35 #include "TColor.h"
36 
37 #include "computils.h"
38 
39 
40 bool LINEF = true;
41 bool LINES = false;
42 
43 
44 bool Plots::s_watermark = true;
45 
46 int colours[6] = { 1, 2, kBlue-4, 6, kCyan-2, kMagenta+2 };
47 int markers[6] = { 20, 24, 25, 26, 25, 22 };
48 double msizes[6] = { 0.85, 1, 1, 1, 1, 1 };
49 
50 
51 
52 double Entries( TH1* h ) {
53  double n = 0;
54  for ( int i=h->GetNbinsX()+1 ; --i ; ) n += h->GetBinContent(i);
55  return n;
56 }
57 
58 
59 double integral( TH1* h ) {
60  double n=0;
61  for ( int i=h->GetNbinsX() ; i>0 ; i-- ) n += h->GetBinContent(i);
62  return n;
63 }
64 
65 
66 
67 void Norm( TH1* h, double scale ) {
68  double n = 0;
69  for ( int i=h->GetNbinsX()+2 ; --i ; ) n += h->GetBinContent(i);
70  if ( n!=0 ) {
71  double in=scale/n;
72  for ( int i=h->GetNbinsX()+2 ; --i ; ) {
73  h->SetBinContent(i, h->GetBinContent(i)*in );
74  h->SetBinError(i, h->GetBinError(i)*in );
75  }
76  }
77 
78 }
79 
80 
81 
83  m_mean(0), m_error(0) {
84 
85  double f = 0;
86  double fx = 0;
87  double fx2 = 0;
88 
89  for ( int i=0 ; i<h->GetNbinsX() ; i++ ) {
90  double w = h->GetBinLowEdge(i+2)-h->GetBinLowEdge(i+1);
91  f += h->GetBinContent(i+1)*w;
92  fx += h->GetBinContent(i+1)*w*h->GetBinCenter(i+1);
93  fx2 += h->GetBinContent(i+1)*w*h->GetBinCenter(i+1)*h->GetBinCenter(i+1);
94  }
95 
96  if ( f!=0 ) {
97  m_mean = fx/f;
98  m_error = std::sqrt( (fx2/f - m_mean*m_mean )/f );
99  }
100 
101 }
102 
103 
104 
105 
106 
107 
108 
109 union floaty_t {
110  floaty_t( float n = 0.0f ) : f(n) {}
111 
114  bool negative() const { return i < 0; }
115 
117  int32_t raw_mantissa() const { return i & ((1 << 23) - 1); }
119  int32_t raw_exponent() const { return (i >> 23) & 0xff; }
120 
121  int32_t i;
122  float f;
123 };
124 
125 
126 bool almost_equal( floaty_t a, floaty_t b, int max_diff ) {
127 
128  // Check for trivial equality to make sure +0==-0
129  if ( a.f == b.f ) return true;
130 
131  // Different signs means they do not match.
132  if ( a.negative() != b.negative() ) return false;
133 
134  // Find the difference in last place units
135  int ulps_diff = std::abs( a.i - b.i );
136  if (ulps_diff <= max_diff) return true;
137 
138  return false;
139 }
140 
141 
142 bool almost_equal( float a, float b, int max_diff ) {
143  return almost_equal( floaty_t(a), floaty_t(b), max_diff );
144 }
145 
146 
149  return almost_equal( a, b, 5 );
150 }
151 
152 
153 void trim_tgraph( TH1* h, TGraphAsymmErrors* t ) {
154 
155  double ylo = h->GetMinimum();
156 
157  int ih=1;
158 
159  for ( int i=0 ; i<t->GetN() && ih<=h->GetNbinsX() ; i++, ih++ ) {
160 
161  double yt = 0;
162  double xt = 0;
163  double ye = 0;
164 
165  t->GetPoint( i, xt, yt );
166  ye = t->GetErrorYlow( i );
167 
168  double yh = h->GetBinContent(ih);
169  double xh = h->GetBinCenter(ih);
170 
171  while( !almost_equal( xh, xt, 5 ) && ih<=h->GetNbinsX() ) {
172  ih++;
173  yh = h->GetBinContent(ih);
174  xh = h->GetBinCenter(ih);
175  }
176 
177  if ( !almost_equal( yh, yt, 5 ) ) throw data_mismatch(std::string("for histogram ")+h->GetName());
178 
179  if ( (yt-ye) < ylo ) {
180  h->SetBinContent(ih, ylo-100 );
181  t->SetPoint( i, xt, ylo-100 );
182  }
183 
184  }
185 }
186 
187 
188 void ATLASFORAPP_LABEL( double x, double y, int color, double size )
189 {
190  TLatex* lat = new TLatex(); //lat.SetTextAlign(12); lat.SetTextSize(tsize);
191  lat->SetNDC();
192  lat->SetTextFont(72);
193  lat->SetTextColor(color);
194  lat->SetTextSize(size);
195  lat->DrawLatex(x,y,"ATLAS");
196 
197  TLatex* lat2 = new TLatex(); //lat.SetTextAlign(12); lat.SetTextSize(tsize);
198  lat2->SetNDC();
199  lat2->SetTextFont(52);
200  lat2->SetTextColor(color);
201  lat2->SetTextSize(size); // this 0.13 should really be calculated as a ratio of the width of the canvas
202  lat2->DrawLatex(x+0.13,y,"For Approval");
203 }
204 
205 void myText( Double_t x, Double_t y, Color_t color, const std::string& text, Double_t tsize) {
206 
207  //Double_t tsize=0.05;
208  TLatex lat; lat.SetTextAlign(12); lat.SetTextSize(tsize);
209  lat.SetNDC();
210  lat.SetTextColor(color);
211  lat.DrawLatex(x,y,text.c_str());
212 }
213 
214 
215 std::string stime() {
216  time_t t;
217  time(&t);
218  return label("%s", ctime(&t) );
219 }
220 
221 
223 bool contains( const std::string& s, const std::string& p) {
224  return (s.find(p)!=std::string::npos);
225 }
226 
227 
228 bool contains( const std::string& s, char p) noexcept {
229  return (s.find(p)!=std::string::npos);
230 }
231 
232 
234 bool fcontains( const std::string& s, const std::string& p) {
235  return (s.find(p)==0);
236 }
237 
238 
239 double plotable( TH1* h ) { // , double xlo, double xhi ) {
240  double n = 0;
241 
242  double xlo = h->GetBinLowEdge(1);
243  double xhi = h->GetBinLowEdge(h->GetNbinsX()+1);
244 
245  // if ( xlo!=-999 ) _xlo = xlo;
246  // if ( xhi!=-999 ) _xhi = xhi;
247 
248  for ( int i=h->GetNbinsX()+1 ; --i ; ) {
249  if ( h->GetBinCenter(i)>xlo && h->GetBinCenter(i)<xhi ) n += h->GetBinContent(i);
250  }
251  return n;
252 }
253 
254 
255 
256 bool exists( const std::string& filename ) {
257  struct stat sb;
258  if ( stat( filename.c_str(), &sb)==0 ) return true; // && S_ISREG(sb.st_mode ))
259  else return false;
260 }
261 
262 
263 
264 std::string globbed( const std::string& s ) {
267 
268  glob_t glob_result;
269  glob( s.c_str(), GLOB_TILDE, 0, &glob_result );
270 
271  std::vector<std::string> ret;
272  for( unsigned i=0 ; i<glob_result.gl_pathc ; i++ ){
273  ret.push_back( std::string(glob_result.gl_pathv[i]) );
274  }
275  globfree(&glob_result);
276 
277 
278  if ( ret.empty() ) {
279  std::cerr << "no matching file: " << s << std::endl;
280  return "";
281  }
282 
283  if ( ret.size()>1 ) {
284  for ( unsigned i=0 ; i<ret.size() ; i++ ) {
285  std::cout << "matched " << ret[i] << std::endl;
286  }
287  }
288 
289  return ret[0];
290 }
291 
292 
293 
294 
295 
296 bool empty( TH1* h ) {
297  for ( int i=h->GetNbinsX() ; i>0 ; i-- ) if ( h->GetBinContent(i)!=0 ) return false;
298  return true;
299 }
300 
301 
302 std::string tail( std::string s, const std::string& pattern ) {
303  size_t pos = s.find(pattern);
304  while ( pos != std::string::npos ) {
305  s.erase( 0, pos+1 );
306  pos = s.find(pattern);
307  }
308  return s;
309 }
310 
311 
312 std::string head( std::string s, const std::string& pattern ) {
313  size_t pos = s.find_last_of(pattern);
314  if ( pos != std::string::npos ) {
315  s.erase( pos, s.size() );
316  }
317  return s;
318 }
319 
320 
321 void contents( std::vector<std::string>& keys, TDirectory* td,
322  const std::string& directory, const std::string& pattern, const std::string& path ) {
323  std::vector<std::string> patterns;
324  patterns.push_back(pattern);
325  contents( keys, td, directory, patterns, path );
326 }
327 
328 
329 
330 
331 void contents( std::vector<std::string>& keys, TDirectory* td,
332  const std::string& directory, const std::vector<std::string>& patterns, const std::string& path ) {
333 
334  bool print = false;
335 
336  TList* tl = td->GetListOfKeys();
337 
338  for ( int i=tl->GetSize() ; i-- ; ) {
339 
340  TKey* tobj = (TKey*)tl->At(i);
341 
342  if ( tobj==0 ) continue;
343 
344  if ( std::string(tobj->GetClassName()).find("TDirectory")!=std::string::npos ) {
345 
346  TDirectory* tnd = (TDirectory*)tobj->ReadObj();
347 
349  std::string dname = tnd->GetName();
350 
351  std::string newpath = path+dname+"/";
352  contents( keys, tnd, directory, patterns, newpath );
353 
354  }
355  else {
358  if ( directory == "" || contains( path, directory ) ) {
359 
360 
361  bool matched = true;
362  for ( size_t i=patterns.size() ; i-- ; ) {
363  const std::string& pattern = patterns[i];
364  if ( contains(std::string(tobj->GetName()), pattern ) ) matched &=true;
365  else matched = false;
366  }
367  if ( matched ) {
368  if ( print ) std::cout << "will process " << td->GetName() << " \t:: " << tobj->GetName() << "\tpatterns: " << patterns.size() << std::endl;
369  print = false;
370  keys.push_back( path+tobj->GetName() );
371  }
372  }
373  }
374  }
375 }
376 
377 
378 
379 
380 
381 double realmax( TH1* h, bool include_error, double lo, double hi ) {
382  double rm = 0;
383  if ( h->GetNbinsX()==0 ) return 0;
384 
385  bool first = true;
386  for ( int i=1 ; i<=h->GetNbinsX() ; i++ ) {
387 
388  if ( lo!=hi ) {
389  double c = h->GetBinCenter(i);
390  if ( lo>c || hi<c ) continue;
391  }
392 
393  double re = h->GetBinContent(i);
394  if ( include_error ) re += h->GetBinError(i);
395  if ( re!=0 ) {
396  if ( first || rm<re ) {
397  rm = re;
398  first = false;
399  }
400  }
401  }
402 
403  return rm;
404 }
405 
406 
407 // double realmin( TH1* h, bool include_error, double lo, double hi ) {
408 double realmin( TH1* h, bool , double lo, double hi ) {
409 
410  if ( h->GetNbinsX()==0 ) return 0;
411 
412  double rm = 0;
413 
414  bool first = true;
415  for ( int i=1 ; i<=h->GetNbinsX() ; i++ ) {
416 
417  if ( lo!=hi ) {
418  double c = h->GetBinCenter(i);
419  if ( lo>c || hi<c ) continue;
420  }
421 
422  double re = h->GetBinContent(i);
423 
424  if ( re!=0 ) {
425  // if ( include_error ) re -= h->GetBinError(i);
426  if ( first || rm>re ) rm = re;
427  first = false;
428  }
429  }
430 
431  return rm;
432 }
433 
434 
435 double hmean( TH1* h ) {
436  double N = integral(h);
437  double n=0;
438  for ( int i=h->GetNbinsX() ; i>0 ; i-- ) {
439  n += h->GetBinContent(i);
440  if ( 2*n>N ) return h->GetBinCenter(i);
441  }
442  return 0;
443 }
444 
445 
446 
447 
448 std::vector<int> findxrange(TH1* h, bool symmetric ) {
449 
450  int ilo = 1;
451  int ihi = h->GetNbinsX();
452 
453  h->GetXaxis()->SetRange( ilo, ihi );
454 
455  std::vector<int> limits(2,0);
456  limits[0] = ilo;
457  limits[1] = ihi;
458 
459  if ( empty(h) ) return limits;
460 
461 #if 1
462 
464  for ( ; ilo<=ihi ; ilo++ ) if ( h->GetBinContent(ilo)!=0 ) break;
465  for ( ; ihi>=ilo ; ihi-- ) if ( h->GetBinContent(ihi)!=0 ) break;
466 
467 #else
468 
470 
472 
473  double icont = 1/content;
474 
475  double flo = 0;
476  double fhi = 0;
477  for ( ; ilo<=ihi ; ilo++ ) {
478  flo += h->GetBinContent(ilo);
479  if ( (flo*icont)>0.0005 ) break;
480  }
481 
482  for ( ; ihi>=ilo ; ihi-- ) {
483  fhi += h->GetBinContent(ihi);
484  if ( (fhi*icont)>0.0005 ) break;
485  }
486 
487 #endif
488 
489  int delta_lo = ilo-1;
490  int delta_hi = h->GetNbinsX()-ihi;
491 
492  if ( symmetric ) {
493  if ( delta_hi<delta_lo ) {
494  limits[0] = 1+delta_hi;
495  limits[1] = ihi;
496  }
497  else {
498  limits[0] = 1+delta_lo;
499  limits[1] = h->GetNbinsX()-delta_lo;
500  }
501  }
502  else {
503 
504  if ( ilo>1 ) ilo--;
505  if ( ihi<h->GetNbinsX() ) ihi++;
506 
507  limits[0] = ilo;
508  limits[1] = ihi;
509  }
510 
511  return limits;
512 
513 }
514 
515 
516 
517 void xrange(TH1* h, bool symmetric ) {
518  std::vector<int> limits = findxrange( h, symmetric );
519  h->GetXaxis()->SetRange( limits[0], limits[1] );
520 }
521 
522 
523 
524 
525 std::vector<double> findxrangeuser(TH1* h, bool symmetric ) {
526 
527  std::vector<int> limits = findxrange( h, symmetric );
528 
529  std::vector<double> dlimits(2,0);
530 
531  double dx = h->GetBinLowEdge(limits[1]+1)-h->GetBinLowEdge(limits[1]);
532 
533  dlimits[0] = h->GetBinLowEdge(limits[0]);
534  dlimits[1] = h->GetBinLowEdge(limits[1]+1)-dx*1e-11;
535 
536  return dlimits;
537 }
538 
539 
540 void xrangeuser(TH1* h, bool symmetric ) {
541  std::vector<double> limits = findxrangeuser( h, symmetric );
542  h->GetXaxis()->SetRangeUser( limits[0], limits[1] );
543 }
544 
545 
546 
547 std::string findcell( std::string name, const std::string& regex, const std::string& splitex ) {
548 
549  size_t posex = name.find( regex );
550 
551  if ( posex==std::string::npos ) return "";
552 
553  size_t pos = name.find_last_of( splitex );
554 
555  std::string duff = name;
556 
557  while ( pos!=std::string::npos && pos>posex+regex.size() ) {
558  name.resize(pos); //pos must be <=string length
559  pos = name.find_last_of( splitex );
560  }
561 
562  pos = name.find( regex );
563 
564  name = name.substr( pos, name.size() );
565 
566  pos = name.find( splitex );
567 
568  if ( pos!=std::string::npos ) return name.substr( 0, pos );
569 
570  return name;
571 }
572 
573 
574 
575 std::string findrun( TFile* f ) {
576 
577  TDirectory* here = gDirectory;
578 
579  f->cd();
580 
581  std::cout << "gDirectory::GetName() " << gDirectory->GetName() << std::endl;
582 
583  // gDirectory->pwd();
584 
585  // gDirectory->ls();
586 
587  TList* tl = gDirectory->GetListOfKeys();
588 
590 
591  for ( int i=0 ; i<tl->GetSize() ; i++ ) {
592 
593  TKey* tobj = (TKey*)tl->At(i);
594 
595  if ( tobj==0 ) continue;
596 
597  if ( std::string(tobj->GetClassName()).find("TDirectory")!=std::string::npos ) {
598 
599  TDirectory* tnd = (TDirectory*)tobj->ReadObj();
600 
601  std::string name = tnd->GetName();
602 
603  if ( name.find( "run_" )==0 ) {
604  here->cd();
605  return name;
606  }
607  }
608  }
609 
610  here->cd();
611 
612  return "";
613 }
614 
615 
616 
617 
619 
620 void copyReleaseInfo( TFile* finput, TFile* foutdir ) {
621 
622  std::vector<std::string> release_data;
623 
624  if ( finput && foutdir ) {
625 
626  TTree* tree = (TTree*)finput->Get("dataTree");
627  TTree* clone = tree->CloneTree();
628 
629  foutdir->cd();
630  clone->Write("", TObject::kOverwrite);
631 
632  delete clone;
633 
634  }
635 
636 }
mergePhysValFiles.pattern
pattern
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:25
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
xrange
void xrange(TH1 *h, bool symmetric)
Definition: computils.cxx:517
fcontains
bool fcontains(const std::string &s, const std::string &p)
contains a string at the beginning of the string
Definition: computils.cxx:234
color
Definition: jFexInputByteStreamTool.cxx:25
Norm
void Norm(TH1 *h, double scale)
Definition: computils.cxx:67
yt
#define yt
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
findrun
std::string findrun(TFile *f)
Definition: computils.cxx:575
Entries
double Entries(TH1 *h)
Definition: computils.cxx:52
integral
double integral(TH1 *h)
Definition: computils.cxx:59
realmax
double realmax(TH1 *h, bool include_error, double lo, double hi)
Definition: computils.cxx:381
floaty_t::raw_mantissa
int32_t raw_mantissa() const
float has 23 bit mentissa
Definition: computils.cxx:117
floaty_t::negative
bool negative() const
portable extraction of components sign
Definition: computils.cxx:114
tail
std::string tail(std::string s, const std::string &pattern)
tail of a string
Definition: computils.cxx:302
patterns
std::vector< std::string > patterns
Definition: listroot.cxx:187
tree
TChain * tree
Definition: tile_monitor.h:30
floaty_t::f
float f
Definition: computils.cxx:122
realmin
double realmin(TH1 *h, bool, double lo, double hi)
Definition: computils.cxx:408
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.h:44
stime
std::string stime()
return the current data and time
Definition: computils.cxx:215
data_mismatch
Definition: computils.h:100
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
x
#define x
empty
bool empty(TH1 *h)
Definition: computils.cxx:296
xrangeuser
void xrangeuser(TH1 *h, bool symmetric)
Definition: computils.cxx:540
ATLASFORAPP_LABEL
void ATLASFORAPP_LABEL(double x, double y, int color, double size)
Definition: computils.cxx:188
hmean
double hmean(TH1 *h)
Definition: computils.cxx:435
python.Utilities.clone
clone
Definition: Utilities.py:134
colours
int colours[6]
Definition: computils.cxx:46
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
LINEF
bool LINEF
Definition: computils.cxx:40
grepfile.content
string content
Definition: grepfile.py:56
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
xt
#define xt
contains
bool contains(const std::string &s, const std::string &p)
contains a string
Definition: computils.cxx:223
myText
void myText(Double_t x, Double_t y, Color_t color, const std::string &text, Double_t tsize)
Definition: computils.cxx:205
WritePulseShapeToCool.xhi
xhi
Definition: WritePulseShapeToCool.py:152
DeMoScan.directory
string directory
Definition: DeMoScan.py:78
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:727
floaty_t::floaty_t
floaty_t(float n=0.0f)
Definition: computils.cxx:110
true_mean::true_mean
true_mean(TH1F *h)
Definition: computils.cxx:82
markers
int markers[6]
Definition: computils.cxx:47
add-xsec-uncert-quadrature-N.label
label
Definition: add-xsec-uncert-quadrature-N.py:104
hist_file_dump.f
f
Definition: hist_file_dump.py:140
WritePulseShapeToCool.xlo
xlo
Definition: WritePulseShapeToCool.py:133
contents
void contents(std::vector< std::string > &keys, TDirectory *td, const std::string &directory, const std::string &pattern, const std::string &path)
Definition: computils.cxx:321
WritePulseShapeToCool.ylo
ylo
Definition: WritePulseShapeToCool.py:134
beamspotman.stat
stat
Definition: beamspotman.py:262
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
head
std::string head(std::string s, const std::string &pattern)
head of a string
Definition: computils.cxx:312
findxrangeuser
std::vector< double > findxrangeuser(TH1 *h, bool symmetric)
Definition: computils.cxx:525
keylayer_zslicemap.sb
sb
Definition: keylayer_zslicemap.py:192
globbed
std::string globbed(const std::string &s)
match a file name
Definition: computils.cxx:264
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
label.h
true_mean::m_mean
double m_mean
Definition: computils.h:141
findxrange
std::vector< int > findxrange(TH1 *h, bool symmetric)
automatically set the xrange on a histogram
Definition: computils.cxx:448
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
python.ElectronD3PDObject.matched
matched
Definition: ElectronD3PDObject.py:138
true_mean::m_error
double m_error
Definition: computils.h:142
copyReleaseInfo
void copyReleaseInfo(TFile *finput, TFile *foutdir)
copy the release info TTree
Definition: computils.cxx:620
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
PlotCalibFromCool.lat
lat
Definition: PlotCalibFromCool.py:867
trim_tgraph
void trim_tgraph(TH1 *h, TGraphAsymmErrors *t)
Definition: computils.cxx:153
findcell
std::string findcell(std::string name, const std::string &regex, const std::string &splitex)
Definition: computils.cxx:547
floaty_t::i
int32_t i
Definition: computils.cxx:121
a
TList * a
Definition: liststreamerinfos.cxx:10
plotable
double plotable(TH1 *h)
Definition: computils.cxx:239
y
#define y
h
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
DeMoScan.first
bool first
Definition: DeMoScan.py:534
re
const boost::regex re(r_e)
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:23
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
operator==
bool operator==(floaty_t a, floaty_t b)
Definition: computils.cxx:147
makeTransCanvas.text
text
Definition: makeTransCanvas.py:11
dq_defect_create_virtual_defects.dname
dname
Definition: dq_defect_create_virtual_defects.py:71
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
DrawLabel.h
dqt_zlumi_alleff_HIST.tl
tl
Definition: dqt_zlumi_alleff_HIST.py:73
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
atlasStyleMacro.tsize
float tsize
Definition: atlasStyleMacro.py:37
LINES
bool LINES
Definition: computils.cxx:41
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:198
almost_equal
bool almost_equal(floaty_t a, floaty_t b, int max_diff)
Definition: computils.cxx:126
computils.h
python.compressB64.c
def c
Definition: compressB64.py:93
floaty_t
Definition: computils.cxx:109
Plots::s_watermark
static bool s_watermark
Definition: computils.h:1249
msizes
double msizes[6]
Definition: computils.cxx:48
floaty_t::raw_exponent
int32_t raw_exponent() const
and an 8 bit exponent
Definition: computils.cxx:119
exists
bool exists(const std::string &filename)
does a file exist
Definition: computils.cxx:256