ATLAS Offline Software
Classes | Functions
cpucost.cxx File Reference
#include <stdlib.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <iostream>
#include <string>
#include <vector>
#include "utils.h"
#include "label.h"
#include "DrawLabel.h"
#include "TCanvas.h"
#include "TFile.h"
#include "TH1D.h"
#include "TLegend.h"
#include "TStyle.h"
#include "TSystem.h"
#include "TKey.h"
#include "TList.h"
#include "TDirectory.h"
#include "computils.h"
#include "AtlasStyle.h"
#include "AtlasLabels.h"

Go to the source code of this file.

Classes

struct  histoinfo
 

Functions

int usage (const std::string &name, int status)
 Prints usage instructions to standard output and returns given status. More...
 
std::ostream & operator<< (std::ostream &s, const histoinfo &h)
 
void binwidth (TH1F *h)
 
int main (int argc, char **argv)
 

Detailed Description

Author
ben sowden
Date
Mon 04 Aug 2014 10:45:00 BST

Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration

Definition in file cpucost.cxx.

Function Documentation

◆ binwidth()

void binwidth ( TH1F h)

Definition at line 81 of file cpucost.cxx.

81  {
82  for ( int i=0 ; i<h->GetNbinsX() ; i++ ) {
83  double w = h->GetBinLowEdge(i+2)-h->GetBinLowEdge(i+1);
84  h->SetBinContent( i+1, h->GetBinContent(i+1)/w );
85  h->SetBinError( i+1, h->GetBinError(i+1)/w );
86  }
87 }

◆ main()

int main ( int  argc,
char **  argv 
)

no longer adjust the legend if no reference times are to be plotted as we now more properly set the legend size automatically depending on the number of entries

skip TH2 and TProfiles for the moment ...

if we cannot find the reference histogram, try replacing all patterns that are requested in the reference hist name

could simply run gPad->SetLogyx( logx ); but that would interfere with the individual plot setting from the config file

Definition at line 90 of file cpucost.cxx.

90  {
91 
92  if (argc < 4) { return usage(argv[0], -1); }
93 
94  std::string output_dir = "";
95  std::string tag = "";
96  std::string key = "";
97 
98  gStyle->SetPadRightMargin(0.05);
99  gStyle->SetPadTopMargin(0.05);
100 
101  gStyle->SetPadLeftMargin(0.14);
102  gStyle->SetPadBottomMargin(0.14);
103  // gStyle->SetTitleXOffset(0.1);
104  // gStyle->SetTitleYOffset(0.1);
105 
106 
107  TFile* ftest = 0;
108  TFile* fref = 0;
109 
110  bool atlasstyle = false;
111  bool atlaslabel = false;
112  bool ylog = true;
113  bool nopng = false;
114 
115  bool autochains = false;
116 
117  std::string autopattern = "";
118 
119  std::vector<std::string> taglabels;
120 
121  std::string directory = "TIMERS";
122  std::vector<std::string> patterns;
123 
124  TDirectory* tdir = gDirectory;
125 
126  bool verbose = false;
127 
128  bool noref = false;
129 
130  std::string frefname = "";
131 
132  double xoffset = 0.17;
133 
134  bool show_directory = true;
135 
136  bool norm_width = true;
137 
138  bool logx = false;
139 
140  bool withlumiblock = false;
141 
142  bool withfractional = false;
143 
144  std::vector<std::string> replace_list;
145 
146  // Parse the arguments
147  std::vector<std::string> algorithms;
148  for(int argnum = 1; argnum < argc; argnum++){
149  std::string arg = argv[argnum];
150 
151  if (arg == "-h" || arg == "--help") {
152  return usage(argv[0], 0);
153  }
154  else if (arg == "-o" || arg == "--outputfolder") {
155  if (++argnum < argc) { output_dir = argv[argnum]; }
156  else { return usage(argv[0], -1); }
157  }
158  else if (arg == "-x" || arg == "--xoffset") {
159  if (++argnum < argc) { xoffset = std::atof(argv[argnum]); }
160  else { return usage(argv[0], -1); }
161  }
162  else if (arg == "-t" || arg == "--tag") {
163  if (++argnum < argc) { tag = std::string("-") + argv[argnum]; }
164  else { return usage(argv[0], -1); }
165  }
166  else if (arg == "-k" || arg == "--key") {
167  if (++argnum < argc) { key = argv[argnum] + std::string("-"); }
168  else { return usage(argv[0], -1); }
169  }
170  else if (arg == "-r" || arg == "--replace") {
171  if (++argnum < argc) replace_list.push_back( argv[argnum] );
172  else { return usage(argv[0], -1); }
173  if (++argnum < argc) replace_list.push_back( argv[argnum] );
174  else { return usage(argv[0], -1); }
175  }
176  else if ( arg == "--logx") {
177  logx = true;
178  }
179  else if (arg == "-np" || arg == "--nopng") {
180  nopng = true;
181  }
182  else if (arg == "-f" || arg == "--frac" ) {
183  withfractional = true;
184  }
185  else if (arg == "-a" || arg == "--auto") {
186  autochains = true;
187  }
188  else if (arg == "--nodir") {
189  show_directory = false;
190  }
191  else if (arg == "-v" || arg == "--verbose") {
192  verbose = true;
193  }
194  else if (arg == "-lb" ) {
195  withlumiblock = true;
196  }
197  else if (arg == "-nr" || arg == "--noref") {
198  noref = true;
199  }
200  else if (arg == "-w" || arg == "--binwidth") {
201  norm_width = true;
202  }
203  else if (arg == "-as" || arg == "--atlasstyle") {
204  atlasstyle = true;
205  }
206  else if (arg == "-al" || arg == "--atlaslabel") {
207  atlaslabel = true;
208  }
209  else if (arg == "-ap" || arg == "--autopattern") {
210  if (++argnum < argc) autopattern = argv[argnum];
211  else return usage(argv[0], -1);
212  }
213  else if (arg == "-d" || arg == "--directory") {
214  if (++argnum < argc) directory = argv[argnum];
215  else return usage(argv[0], -1);
216  }
217  else if (arg == "-p" || arg == "--pattern") {
218  if (++argnum < argc) patterns.push_back(argv[argnum]);
219  else return usage(argv[0], -1);
220  }
221  else {
222  if (ftest == 0) {
223  std::string file = globbed(arg);
224  if (exists(file)) {
225  ftest = new TFile( file.c_str() );
226  }
227  else {
228  std::cerr << "main(): test file " << arg << " does not exist" << std::endl;
229  return -2;
230  }
231  }
232  else if ( frefname=="" ) frefname = arg;
233  else {
234  algorithms.push_back(arg);
235  }
236  }
237  }
238 
239  if ( patterns.empty() ) patterns.push_back( "_TotalTime" );
240 
241 
242  if (ftest == 0 || ( noref==false && frefname=="" ) ) {
243  return usage(argv[0], -4);
244  }
245 
246  if ( fref == 0 && !noref ) {
247  std::string file = globbed(frefname);
248  if (exists(file)) {
249  fref = new TFile( file.c_str() );
250  }
251  else {
252  std::cerr << "main(): ref file " << frefname << " does not exist" << std::endl;
253  return -3;
254  }
255  }
256 
257  if ( atlasstyle ) SetAtlasStyle();
258 
259  gStyle->SetErrorX(0);
260 
261  if ( noref ) fref = ftest;
262 
263  if ( noref ) Plotter::setmeanplotref(!noref);
264 
265  if ( ftest && autochains ) {
266 
267  ftest->cd();
268 
269  std::vector<std::string> dirs;
270 
272 
273  if ( autopattern=="" ) {
274  for ( unsigned j=0 ; j<dirs.size() ; j++ ) {
275  if ( verbose ) std::cout << "\talgorithm " << dirs[j] << std::endl;
276  algorithms.push_back( dirs[j] );
277  }
278  }
279  else {
280  std::cout << "autopattern : " << autopattern << std::endl;
281  for ( unsigned j=0 ; j<dirs.size() ; j++ ) {
282  if ( dirs[j].find(autopattern)!=std::string::npos ) {
283  algorithms.push_back( dirs[j] );
284  std::cout << "adding " << algorithms.back() << std::endl;
285  }
286  }
287  }
288 
289  }
290 
291 
292 
293  // Make output directory
294  if ( output_dir != "" ) {
295  if ( mkdir( output_dir.c_str(), 0777 ) ) {
296  if ( exists(output_dir) ) std::cerr << "main() directory " << output_dir << " aleady exists" << std::endl;
297  else std::cerr << "main() could not create directory " << output_dir << std::endl;
298  }
299  output_dir += "/";
300  }
301 
302 #if 0
303  // Get the timers directories from input files
304  // TDirectoryFile* testtimers = 0;
305  TDirectory* testtimers = 0;
306 
307  if ( directory!="" ) ftest->GetObject( directory.c_str(), testtimers );
308  else testtimers = ftest;
309 
310  if (testtimers == 0 ) {
311  std::cerr << "main(): can not find timers in test file" << std::endl;
312  // return -1;
313  }
314 
315  // TDirectoryFile* reftimers = 0;
316  TDirectory* reftimers = 0;
317 
318  if ( directory!="" ) fref->GetObject( directory.c_str(), reftimers );
319  else reftimers = fref;
320 
321  if (reftimers == 0 ) {
322  std::cerr << "main(): can not find timers in ref file" << std::endl;
323  // return -1;
324  }
325 #endif
326 
327  TFile fcck( "fcck.root", "recreate" );
328 
329 
330  std::vector<histoinfo> histograms;
331  histograms.push_back( histoinfo("_TotalTime", "Total time") );
332 
333  // Provide output to user for progress status
334  // std::cout << "main() processing algorithms : " << algorithms << std::endl;
335 
336  // Loop over histograms
337  // for (unsigned int histogram = 0; histogram < histograms.size(); ++histogram) {
338  for (unsigned int histogram=histograms.size(); histogram-- ; ) {
339 
340 
341 
342  std::cout << "\nhistogram " << histograms.at(histogram) << " : with " << algorithms.size() << " algorithms" << std::endl;
343 
344 
345  std::string xaxis = histograms.at(histogram).dname + " [ms]";
346  std::string yaxis = "Entries";
347 
348 
349  // Loop over input algorithms
350  // for (unsigned int algorithm = 0; algorithm < algorithms.size(); ++algorithm) {
351  for (unsigned int algorithm = algorithms.size(); algorithm-- ; ) {
352 
353  if ( !withlumiblock && algorithms[algorithm].find("LumiBlock")!=std::string::npos ) continue;
354 
355  if ( !withfractional && algorithms[algorithm].find("Fractional")!=std::string::npos ) continue;
356 
357  std::cout << "\nmain() processing algorithm : " << algorithms[algorithm] << std::endl;
358 
359  TCanvas* c1 = new TCanvas( label("canvas-%d",int(histogram)).c_str(), "histogram", 800, 600 );
360  c1->cd();
361 
362  double x1 = xoffset;
363  double x2 = xoffset+0.25;
364  double y1 = 0.75;
365  double y2 = 0.87;
366 
370 
371  Legend legend(x1, x2, y1, y2);
372 
373 
374  std::string histname = algorithms[algorithm]; // + histograms.at(histogram).fname;
375 
376  std::string xaxis_tmp = xaxis;
377  bool fractional = contains( histname, "Fractional" );
378  if ( fractional ) xaxis_tmp = "Fraction of " + histograms.at(histogram).dname;
379 
380 
381  // std::cout << "\t" << histname << "\t" << algorithms.at(algorithm) << " " << histograms.at(histogram).fname << std::endl;
382 
383 
384  // std::cout << "Directory: " << gDirectory->GetName() << std::endl;
385 
386  TH1F* testhist = (TH1F*)ftest->Get(histname.c_str());
387 
388  if (testhist == 0 ) {
389  std::cerr << "main(): can not find hist " << histname << " in test file" << std::endl;
390  continue;
391  }
392 
393  std::cout << "mean time: " << testhist->GetMean() << "\t:: " << testhist->GetName() << std::endl;
394 
395  if ( norm_width ) binwidth( testhist );
396 
398  if ( std::string(testhist->ClassName()).find("TH1")==std::string::npos ) continue;
399 
400  testhist->SetName( tail(algorithms[algorithm],"/").c_str() );
401  testhist->Write();
402 
403  // std::cout << "\n\nfound histname " << histname << std::endl;
404 
405  std::string refhistname = histname;
406 
407 
408  TH1F* refhist = (TH1F*)fref->Get(refhistname.c_str());
409 
410 
413 
414  if ( refhist==0 && replace_list.size()>=2 ) {
415 
416  for ( size_t ir=0 ; ir<replace_list.size()-1 ; ir+=2 ) {
417 
418  size_t pos = refhistname.find(replace_list[ir]);
419  if ( pos != std::string::npos ) {
420 
421  while( pos!=std::string::npos ) {
422  refhistname.replace( pos, replace_list[ir].size(), "XXXX" );
423  pos = refhistname.find(replace_list[ir]);
424  }
425 
426  pos = refhistname.find("XXXX");
427  while( pos!=std::string::npos ) {
428  refhistname.replace( pos, 4, replace_list[ir+1] );
429  pos = refhistname.find("XXXX");
430  }
431  }
432 
433  }
434 
435  refhist = (TH1F*)fref->Get(refhistname.c_str());
436 
437  }
438 
439  if (refhist == 0 ) {
440  std::cerr << "main(): can not find hist " << refhistname << " in ref file" << std::endl;
441  continue;
442  }
443 
444  if ( norm_width ) binwidth( refhist );
445 
446  testhist->GetYaxis()->SetTitle(yaxis.c_str());
447  testhist->GetYaxis()->SetTitleOffset(1.5);
448 
449  refhist->GetYaxis()->SetTitle(yaxis.c_str());
450  refhist->GetYaxis()->SetTitleOffset(1.5);
451 
452  testhist->GetXaxis()->SetTitle(xaxis_tmp.c_str());
453  testhist->GetXaxis()->SetTitleOffset(1.5);
454 
455  refhist->GetXaxis()->SetTitle(xaxis_tmp.c_str());
456  refhist->GetXaxis()->SetTitleOffset(1.5);
457 
458 
459  Plots plots;
460 
461  std::string algname = tail(algorithms[algorithm], "/" );
462  std::string dirname = tail( head(algorithms[algorithm], "/" ), "/" );
463  std::string algpname = algorithms[algorithm];
464  replace( algpname, '/', '_' );
465 
466  if ( algname.find("h_")==0 ) algname.erase(0, 2);
467 
468  // size_t indetpos = algname.find("InDet");
469  // if ( indetpos!=std::string::npos ) algname.erase( indetpos, 5);
470 
471  plots.push_back( Plotter( testhist, refhist, " "+algname ) );
472 
473  std::string plotname = key + algpname + tag;
474 
475  std::string stub = directory;
476 
477  size_t pos = stub.find('/');
478  while ( pos!=std::string::npos ) { stub.erase( pos, 1 ); pos = stub.find('/'); }
479 
480  while ( plotname.find(stub)!=std::string::npos ) {
481  plotname.erase( 0, plotname.find(stub)+stub.size() );
482  }
483 
484  while ( plotname.find('_')==0 ) plotname.erase( 0, 1 );
485 
486  plotname = output_dir + plotname;
487 
488  std::cout << "output dir " << output_dir << "\tkey " << key << "\talgname " << algname << "\ttag " << tag << std::endl;
489 
490  // std::cout << "testhist " << testhist << " " << refhist << std::endl;
491 
492 
493  std::vector<std::string> chains;
494  chains.push_back( algname + tag );
495 
496  bool ylogt = ylog;
497 
498  double Nent = plotable( testhist );
499  double Nent_ref = plotable( refhist );
500 
501  if ( fractional ) ylogt = false;
502 
503  if ( Nent==0 || Nent_ref==0 ) {
504  ylogt = false;
505  std::cerr << "histograms empty: " << testhist->GetName() << std::endl;
506  continue;
507  }
508 
509 
510  testhist->SetTitle("");
511  refhist->SetTitle("");
512 
513 
514  plots.SetLogy(ylogt);
515 
516  if ( logx ) plots.SetLogx(true);
517 
518  double rmin = plots.realmin();
519  double rmax = plots.realmax();
520 
521  if ( rmin == rmax ) rmin = 0;
522 
523  if ( ylogt ) {
524  if ( rmin == 0 ) rmin = rmax*0.0001;
525  double delta = std::log10(rmax)-std::log10(rmin);
526  if ( atlasstyle ) plots.Max( rmax*std::pow(10,delta*0.15*2*(chains.size()+taglabels.size()+1.5)) );
527  else plots.Max( rmax*std::pow(10,delta*0.15*2*(chains.size()+taglabels.size()+1.0)) );
528  plots.Min( rmin*std::pow(10,-delta*0.1) );
529  }
530  else {
531  double delta = rmax-rmin;
532  plots.Max( rmax+delta*0.1*2*chains.size() );
533 
534  double pmin = rmin-delta*0.1;
535  if ( pmin>0 ) plots.Min( pmin );
536  else plots.Min( 0 );
537 
538  }
539 
540  std::vector<double> range = plots.findxrange();
541 
542  double lower = range[0];
543  double upper = range[1];
544 
545  if ( lower<0 ) lower = 0;
546 
547  plots.SetRangeUser( lower, upper );
548 
549  plots.Draw( legend, true );
550 
551  std::string dirtitle = dirname;
552  if ( dirtitle.find("HLT_")==0 && dirtitle.find("__")!=std::string::npos ) dirtitle.erase( dirtitle.find("__"), dirtitle.size() );
553 
554  if ( show_directory ) DrawLabel( x1+0.02, y2+0.02, dirtitle, kBlack, legend.TextSize(), legend.TextFont() );
555 
556  if ( atlasstyle && atlaslabel ) ATLASLabel(0.68, 0.88, "Internal");
557 
561  if ( logx ) gPad->SetLogx(true);
562 
563  plots.back().Print( (plotname+".pdf").c_str() );
564  if ( !nopng ) plots.back().Print( (plotname+".png").c_str() );
565 
566  delete c1;
567 
568  std::cout << "done algorithm " << algorithm << " " << algorithms[algorithm] << std::endl;
569  }
570 
571  std::cout << "done hist " << histogram << " " << histograms.at(histogram).dname << " " << std::endl;
572  }
573 
574  fcck.Write();
575  fcck.Close();
576 
577  tdir->cd();
578 
579 
580 #ifdef USE_SLOW_ROOT_FILE_DELETION
581 
582  std::cout << "deleting ftest" << std::endl;
583 
586 
587 
588  if ( fref!=ftest ) {
589  std::cout << "deleting fref" << std::endl;
590 
591  // delete reftimers;
592  delete fref;
593  }
594 
595  // delete testtimers;
596  delete ftest;
597 
598 #endif
599 
600  std::cout << "done" << std::endl;
601 
602  return 0;
603 }

◆ operator<<()

std::ostream& operator<< ( std::ostream &  s,
const histoinfo h 
)

Definition at line 76 of file cpucost.cxx.

76  {
77  return s << h.fname << " : " << h.dname;
78 }

◆ usage()

int usage ( const std::string &  name,
int  status 
)

Prints usage instructions to standard output and returns given status.

Definition at line 41 of file cpucost.cxx.

41  {
42  std::ostream& s = std::cout;
43  s << "Usage: " << name << " [OPTIONS] expert-monitoring.root reference.root algorithm1 algorithm2 algorithm3 ...\n\n";
44  s << " TIDA \'" << name << "\' extracts timing histograms\n\n";
45  s << "Options: \n";
46  s << " -o, --outputfolder value\t puts output in folder 'value' making it if it doesn't exist, \n\n";
47  s << " -t, --tag value \t appends tag 'value' to the end of output plot names, \n";
48  s << " -k, --key value \t prepends key 'value' to the front of output plot names, \n\n";
49  s << " -a, --auto \t process all histograms that are in the file, \n";
50  s << " -r, --replace patt rep\t replace patt wiht rep in the file name\n";
51  s << " -d, --directory value \t if auto is set, search only in specifed directory, \n";
52  s << " --nodir \t do not print the directory name on the plot,\n";
53  s << " -p, --pattern value \t if auto is set, search for histograms containing this string, \n\n";
54  s << " -f, --frac \t explicitly include the fractional plots\n";
55  s << " -nr, --noref \t do not use the reference file, \n\n";
56  s << " -x, --xoffset value \t offset the key by value \n";
57  s << " --logx \t force logx \n";
58  s << " -w, --binwidth \t normalise by bin width\n";
59  s << " -as, --atlasstyle \t use the ATLAS style \n\n";
60  s << " -al, --atlaslabel \t show the ATLAS label \n\n";
61  s << " -v, --verbose \t verbose output\n\n";
62  s << " -h, --help \t this help\n";
63  s << std::endl;
64  return status;
65 }
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
Plotter
tPlotter< TH1F > Plotter
Definition: computils.h:882
getMenu.algname
algname
Definition: getMenu.py:53
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
SetAtlasStyle
void SetAtlasStyle()
Definition: InnerDetector/InDetCalibAlgs/PixelCalibAlgs/Macro/AtlasStyle.h:17
algorithm
std::string algorithm
Definition: hcg.cxx:82
histoinfo
Definition: cpucost.cxx:69
covarianceTool.histograms
dictionary histograms
Definition: covarianceTool.py:53
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
plot_material.mkdir
def mkdir(path, recursive=True)
Definition: plot_material.py:16
tail
std::string tail(std::string s, const std::string &pattern)
tail of a string
Definition: computils.cxx:300
patterns
std::vector< std::string > patterns
Definition: listroot.cxx:187
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
extractSporadic.c1
c1
Definition: extractSporadic.py:134
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
dirname
std::string dirname(std::string name)
Definition: utils.cxx:200
upper
int upper(int c)
Definition: LArBadChannelParser.cxx:49
LArCellConditions.argv
argv
Definition: LArCellConditions.py:112
binwidth
void binwidth(TH1F *h)
Definition: cpucost.cxx:81
DrawLabel
int DrawLabel(float xstart, float ystart, string label)
Definition: GraphToolKit.h:13
python.App.legend
legend
Definition: App.py:62
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
usage
int usage(const std::string &name, int status)
Prints usage instructions to standard output and returns given status.
Definition: cpucost.cxx:41
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
PixelAthClusterMonAlgCfg.histname
histname
Definition: PixelAthClusterMonAlgCfg.py:106
DeMoScan.directory
string directory
Definition: DeMoScan.py:80
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
lumiFormat.i
int i
Definition: lumiFormat.py:92
Plots
set of generic plots
Definition: computils.h:913
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
plot_av_times.stub
stub
Definition: plot_av_times.py:13
contains
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition: hcg.cxx:111
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
file
TFile * file
Definition: tile_monitor.h:29
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:20
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:319
CxxUtils::atof
double atof(std::string_view str)
Converts a string into a double / float.
Definition: Control/CxxUtils/Root/StringUtils.cxx:91
create_dcsc_inputs_sqlite.arg
list arg
Definition: create_dcsc_inputs_sqlite.py:48
head
std::string head(std::string s, const std::string &pattern)
head of a string
Definition: computils.cxx:310
globbed
std::string globbed(const std::string &s)
match a file name
Definition: computils.cxx:262
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
tPlotter::setmeanplotref
static void setmeanplotref(bool b)
Definition: computils.h:858
dirs
std::map< std::string, int > dirs
list of directories to be explicitly included, together with corresponding depths of subdirectories
Definition: hcg.cxx:99
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
python.copyTCTOutput.chains
chains
Definition: copyTCTOutput.py:81
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
plotable
double plotable(TH1 *h)
Definition: computils.cxx:237
h
TH1F
Definition: rootspy.cxx:320
DeMoStatus.ATLASLabel
def ATLASLabel(x, y, text="")
ATLASLabel copied from atlastyle package, as import does not work for unknown reasons.
Definition: DeMoStatus.py:51
python.TriggerHandler.verbose
verbose
Definition: TriggerHandler.py:297
covarianceTool.plots
plots
Definition: covarianceTool.py:698
merge.status
status
Definition: merge.py:17
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
python.dummyaccess.exists
def exists(filename)
Definition: dummyaccess.py:9
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
histogram
std::string histogram
Definition: chains.cxx:52
Legend
slightly more convenient legend class
Definition: computils.h:333
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37