ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAnalysis
TrigInDetAnalysisUser
Analysis
src
dataset.h
Go to the documentation of this file.
1
/* emacs: this is -*- c++ -*- */
10
11
12
#ifndef ANALYSIS_DATASET_H
13
#define ANALYSIS_DATASET_H
14
15
#include <cstdio>
16
#include <cstdlib>
17
18
#include <dirent.h>
19
20
#include <string>
21
#include <iostream>
22
#include <fstream>
23
#include <vector>
24
25
// #include <XrdPosix/XrdPosixXrootd.hh>
26
27
class
dataset
:
public
std::vector<std::string> {
28
29
public
:
30
31
dataset
(
const
std::string& st) :
m_directory
(st) {
32
std::cout <<
"dataset::dataset() reading files from "
<< st << std::endl;
33
34
std::string s = st;
35
36
if
( s.find(
"root://eos"
)!=std::string::npos ) {
38
40
// std::string xcmd = "/afs/cern.ch/project/eos/installation/0.3.84-aquamarine/bin/eos.select ls "+s+"/";
41
size_t pos=s.find(
"//"
);
42
while( pos!=std::string::npos ) {
43
s = s.substr(pos+1,s.length());
44
pos=s.find(
"//"
);
45
}
46
// std::string xcmd = "eos ls "+bases+"/";
47
std::string xcmd =
"eos ls "
+s+
"/"
;
48
std::system( (xcmd+
" > .eosfiles-$$.log"
).c_str() );
49
50
std::string cmd =
"export EOSFILES=$("
+xcmd+
")"
;
51
std::system( cmd.c_str() );
52
53
std::ifstream infile(
".eosfiles-$$.log"
);
54
55
while
( !infile.fail() ) {
56
std::string file;
57
infile >> file;
58
if ( !infile.fail() &&
59
file.find(
".root"
)!=std::string::npos &&
60
file.find(
".part"
)==std::string::npos &&
61
file.find(
".bak"
)==std::string::npos &&
62
file.find(
".skimmed"
)==std::string::npos ) push_back( s+
"/"
+file );
63
}
64
65
// for ( unsigned i=size() ; i-- ; ) std::cout << at(i) << std::endl;
66
68
// std::string files = std::getenv("EOSFILES");
69
// std::cout << "files " << files << std::endl;
70
71
}
72
else
{
73
DIR *dirp;
74
struct
dirent *entry;
75
76
if
( ( dirp = opendir(s.c_str()) ) ) {
77
while
( ( entry = readdir(dirp) ) ) {
78
std::string
file
= entry->d_name;
79
if
(
file
.find(
".root"
)!=std::string::npos ) {
80
push_back( s+
"/"
+
file
);
81
// std::cout << " read file: " << entry->d_name << std::endl;
82
}
83
}
84
closedir(dirp);
85
}
86
std::cout <<
"dataset::dataset() "
<<
size
() <<
" files in dataset"
<< std::endl;
87
}
88
}
89
90
~dataset
() { }
91
92
const
std::string&
directory
()
const
{
return
m_directory
; }
93
94
const
std::vector<std::string>&
datafiles
() {
return
*
this
; }
95
96
private
:
97
98
std::string
m_directory
;
99
100
};
101
102
inline
std::ostream&
operator<<
( std::ostream& s,
const
dataset
& ds ) {
103
return
s << ds.directory() <<
" "
<< ds.size();
104
}
105
106
107
#endif
// ANALYSIS_DATASET_H
108
109
110
111
112
113
114
115
116
117
size
size_t size() const
Number of registered mappings.
dataset
Definition
dataset.h:27
dataset::dataset
dataset(const std::string &st)
Definition
dataset.h:31
dataset::~dataset
~dataset()
Definition
dataset.h:90
dataset::directory
const std::string & directory() const
Definition
dataset.h:92
dataset::datafiles
const std::vector< std::string > & datafiles()
Definition
dataset.h:94
dataset::m_directory
std::string m_directory
Definition
dataset.h:98
operator<<
std::ostream & operator<<(std::ostream &s, const dataset &ds)
Definition
dataset.h:102
file
TFile * file
Definition
tile_monitor.h:29
Generated on
for ATLAS Offline Software by
1.17.0