CMS 3D CMS Logo

Functions | Variables
dqmiodatasetharvest Namespace Reference

Functions

def dasquery (dataset)
 
def harvestfile (fname)
 
def tosqlite (x)
 

Variables

 args
 
 ctr
 
 db
 
 default
 
 description
 
 dumpmes
 
 end
 
 files
 
 help
 
 inf
 
 insertinto
 
 int
 
 interesting_mes
 
 interesting_types
 
 makeindex
 
 maketable
 
 nan
 
 parser
 
 pool
 
 processes
 
 ROOTPREFIX
 
 sqlite2tree
 
 treenames
 
 type
 

Function Documentation

def dqmiodatasetharvest.dasquery (   dataset)

Definition at line 126 of file dqmiodatasetharvest.py.

References edm.print().

126 def dasquery(dataset):
127  if not dataset.endswith("DQMIO"):
128  raise Exception("This tool probably cannot read the dataset you specified. The name should end with DQMIO.")
129  dasquery = ["dasgoclient", "-query=file dataset=%s" % dataset]
130  print("Querying das ... %s" % dasquery)
131  files = subprocess.check_output(dasquery)
132  files = files.splitlines()
133  print("Got %d files." % len(files))
134  return files
135 
136 
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def dqmiodatasetharvest.harvestfile (   fname)

Definition at line 179 of file dqmiodatasetharvest.py.

References SiStripPI.max, min(), FastTimerService_cff.range, str, and tosqlite().

179 def harvestfile(fname):
180  f = ROOT.TFile.Open(ROOTPREFIX + fname)
181  idxtree = getattr(f, "Indices")
182  #idxtree.GetEntry._threaded = True # now the blocking call should release the GIL...
183 
184  # we have no good way to find out which lumis where processed in a job.
185  # so we watch the per-lumi indices and assume that all mentioned lumis
186  # are covered in the end-of-job MEs. This might fail if there are no
187  # per-lumi MEs.
188  knownlumis = set()
189  mes_to_store = []
190 
191  for i in range(idxtree.GetEntries()):
192  idxtree.GetEntry(i)
193  run, lumi, metype = idxtree.Run, idxtree.Lumi, idxtree.Type
194  if lumi != 0:
195  knownlumis.add(lumi)
196 
197  if not treenames[metype] in interesting_types:
198  continue
199 
200 
201  endrun = run # assume no multi-run files for now
202  if lumi == 0: # per-job ME
203  endlumi = max(knownlumis)
204  lumi = min(knownlumis)
205  else:
206  endlumi = lumi
207 
208  # inclusive range -- for 0 entries, row is left out
209  firstidx, lastidx = idxtree.FirstIndex, idxtree.LastIndex
210  metree = getattr(f, treenames[metype])
211  metree.SetBranchStatus("*",0)
212  metree.SetBranchStatus("FullName",1)
213 
214  for x in range(firstidx, lastidx+1):
215  metree.GetEntry(x)
216  mename = str(metree.FullName)
217  if mename in interesting_mes:
218  metree.GetEntry(x, 1)
219  value = metree.Value
220 
221  mes_to_store.append((
222  mename,
223  run, lumi, endrun, endlumi,
224  metype,
225  tosqlite(value),
226  ))
227 
228  return mes_to_store
229 
T min(T a, T b)
Definition: MathUtil.h:58
#define str(s)
def dqmiodatasetharvest.tosqlite (   x)

Definition at line 103 of file dqmiodatasetharvest.py.

References edmScanValgrind.buffer.

Referenced by harvestfile().

103 def tosqlite(x):
104  if isinstance(x, ROOT.string):
105  try:
106  return unicode(x.data())
107  except:
108  return buffer(x.data())
109  if isinstance(x, int):
110  return x
111  if isinstance(x, float):
112  return x
113  if isinstance(x, long):
114  return x
115  else:
116  try:
117  rootobj = unicode(ROOT.TBufferJSON.ConvertToJSON(x))
118  # turns out ROOT does not generate valid JSON for NaN/inf
119  clean = nan.sub('\\g<1>0\\g<2>', inf.sub('\\g<1>1e38\\g<2>', rootobj))
120  obj = json.loads(clean)
121  jsonobj = json.dumps(obj, allow_nan=False)
122  return jsonobj
123  except Exception as e:
124  return json.dumps({"root2sqlite_error": e.__repr__(), "root2sqlite_object": x.__repr__()})
125 

Variable Documentation

dqmiodatasetharvest.args

Definition at line 21 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.ctr
dqmiodatasetharvest.db
dqmiodatasetharvest.default

Definition at line 18 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.description

Definition at line 15 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.dumpmes

Definition at line 171 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.end

Definition at line 240 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.files

Definition at line 230 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.help

Definition at line 17 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.inf
dqmiodatasetharvest.insertinto

Definition at line 162 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.int

Definition at line 19 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.interesting_mes

Definition at line 29 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.interesting_types

Definition at line 25 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.makeindex

Definition at line 159 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.maketable

Definition at line 152 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.nan
dqmiodatasetharvest.parser

Definition at line 15 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.pool
dqmiodatasetharvest.processes
dqmiodatasetharvest.ROOTPREFIX

Definition at line 12 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.sqlite2tree

Definition at line 243 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.treenames

Definition at line 137 of file dqmiodatasetharvest.py.

dqmiodatasetharvest.type

Definition at line 19 of file dqmiodatasetharvest.py.