3 |
|
import DBSAPI.dbsApi |
4 |
|
from DBSAPI.dbsApiException import * |
5 |
|
import common |
6 |
+ |
from crab_util import * |
7 |
|
|
8 |
|
|
9 |
|
# ####################################### |
95 |
|
|
96 |
|
common.logger.debug(3,"Accessing DBS at: "+dbs_url) |
97 |
|
|
98 |
+ |
## check if runs are selected |
99 |
+ |
try: |
100 |
+ |
runselection = parseRange2(self.cfg_params['CMSSW.runselection']) |
101 |
+ |
except: |
102 |
+ |
runselection = [] |
103 |
|
|
104 |
|
## service API |
105 |
|
args = {} |
108 |
|
|
109 |
|
api = DBSAPI.dbsApi.DbsApi(args) |
110 |
|
try: |
111 |
< |
files = api.listDatasetFiles(self.datasetPath) |
111 |
> |
if len(runselection) <= 0 : |
112 |
> |
files = api.listDatasetFiles(self.datasetPath) |
113 |
> |
else : |
114 |
> |
files = api.listFiles(path=self.datasetPath, details=True) |
115 |
|
except DbsBadRequest, msg: |
116 |
|
raise DataDiscoveryError_DBS2(msg) |
117 |
|
except DBSError_DBS2, msg: |
120 |
|
# parse files and fill arrays |
121 |
|
for file in files : |
122 |
|
filename = file['LogicalFileName'] |
123 |
< |
events = file['NumberOfEvents'] |
124 |
< |
fileblock = file['Block']['Name'] |
125 |
< |
|
126 |
< |
# number of events per block |
127 |
< |
if fileblock in self.eventsPerBlock.keys() : |
128 |
< |
self.eventsPerBlock[fileblock] += events |
129 |
< |
else : |
130 |
< |
self.eventsPerBlock[fileblock] = events |
131 |
< |
|
132 |
< |
# number of events per file |
133 |
< |
self.eventsPerFile[filename] = events |
134 |
< |
|
135 |
< |
# number of events per block |
136 |
< |
if fileblock in self.blocksinfo.keys() : |
137 |
< |
self.blocksinfo[fileblock].append(filename) |
138 |
< |
else : |
139 |
< |
self.blocksinfo[fileblock] = [filename] |
123 |
> |
if filename.find('.dat') < 0 : |
124 |
> |
fileblock = file['Block']['Name'] |
125 |
> |
events = file['NumberOfEvents'] |
126 |
> |
continue_flag = 0 |
127 |
> |
if len(runselection) > 0 : |
128 |
> |
runslist = file['RunsList'] |
129 |
> |
for run in runslist : |
130 |
> |
runnumber = run['RunNumber'] |
131 |
> |
for selected_run in runselection : |
132 |
> |
if runnumber == selected_run : |
133 |
> |
continue_flag = 1 |
134 |
> |
else : |
135 |
> |
continue_flag = 1 |
136 |
> |
|
137 |
> |
if continue_flag == 1 : |
138 |
> |
# number of events per block |
139 |
> |
if fileblock in self.eventsPerBlock.keys() : |
140 |
> |
self.eventsPerBlock[fileblock] += events |
141 |
> |
else : |
142 |
> |
self.eventsPerBlock[fileblock] = events |
143 |
> |
|
144 |
> |
# number of events per file |
145 |
> |
self.eventsPerFile[filename] = events |
146 |
> |
|
147 |
> |
# number of events per block |
148 |
> |
if fileblock in self.blocksinfo.keys() : |
149 |
> |
self.blocksinfo[fileblock].append(filename) |
150 |
> |
else : |
151 |
> |
self.blocksinfo[fileblock] = [filename] |
152 |
|
|
153 |
< |
# total number of events |
154 |
< |
self.maxEvents += events |
153 |
> |
# total number of events |
154 |
> |
self.maxEvents += events |
155 |
|
|
156 |
|
for block in self.eventsPerBlock.keys() : |
157 |
|
common.logger.debug(6,"DBSInfo: total nevts %i in block %s "%(self.eventsPerBlock[block],block)) |