ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
MakeHierTags.MakeHierTags Class Reference
Collaboration diagram for MakeHierTags.MakeHierTags:

Public Member Functions

def __init__ (self, dbfile, corrtop, dryrun=False, domagic=True)
 
def get_all_folders (self, corrtop)
 
def run (self, generation=None)
 
def make_tag (self, version, toollist, generation)
 
def make_magic (self, generation)
 
def make_magic_target (self, folder, g, vlist, generation)
 
def copy_tag (self, folder, src, target)
 
def set_tag (self, folder, tag, htag, check=True)
 

Public Attributes

 corrtop
 
 dryrun
 
 domagic
 
 makeleaf
 
 db
 
 folders
 
 funcmap
 
 tags
 

Detailed Description

Definition at line 27 of file MakeHierTags.py.

Constructor & Destructor Documentation

◆ __init__()

def MakeHierTags.MakeHierTags.__init__ (   self,
  dbfile,
  corrtop,
  dryrun = False,
  domagic = True 
)

Definition at line 28 of file MakeHierTags.py.

28  def __init__ (self, dbfile, corrtop, dryrun = False, domagic = True):
29  self.corrtop = corrtop
30  self.dryrun = dryrun
31  self.domagic = domagic
32  cool.DatabaseSvcFactory.databaseService()
33 
34  if dbfile.endswith ('.db'):
35  connstring = "sqlite://;schema=%s;dbname=OFLP200" % dbfile
36  self.makeleaf = True
37  else:
38  connstring = dbfile
39  self.makeleaf = False
40 
41  self.db=AtlCoolLib.indirectOpen(connstring,False,False,True)
42 
43  # List of all folders.
44  self.folders = []
45 
46  # Map from tool creation functions to folders.
47  self.funcmap = {}
48 
49  # Map from (folder, hier-tag) pairs to individual folder tags
50  self.tags = {}
51 
52  self.get_all_folders (corrtop)
53  return
54 
55 

Member Function Documentation

◆ copy_tag()

def MakeHierTags.MakeHierTags.copy_tag (   self,
  folder,
  src,
  target 
)

Definition at line 169 of file MakeHierTags.py.

169  def copy_tag (self, folder, src, target):
170  if self.dryrun:
171  print ('--> Clone in', folder, src, '->', target)
172  return
173 
174  dbf = self.db.getFolder (folder)
175  objs = dbf.browseObjects (cool.ValidityKeyMin,
176  cool.ValidityKeyMax,
177  cool.ChannelSelection.all(),
178  src)
179  objlist=[]
180  while objs.goToNext():
181  objlist+=[objs.currentRef()]
182  if len(objlist) == 0:
183  print ("ERROR: No objects cloning tag %s in folder %s" %
184  (src, folder))
185  for obj in objlist:
186  dbf.storeObject (obj.since(),
187  obj.until(),
188  obj.payload(),
189  obj.channelId(),
190  target,
191  True)
192  dbf.setTagDescription (target, "Copied from " + src)
193  #print ("Cloned", folder, src, target)
194  return
195 
196 

◆ get_all_folders()

def MakeHierTags.MakeHierTags.get_all_folders (   self,
  corrtop 
)

Definition at line 56 of file MakeHierTags.py.

56  def get_all_folders (self, corrtop):
57  ftmp = {}
58  for tooldesc in corrtop.versions['@']:
59  tool = tooldesc[0]('', source=[CALOCORR_COOL, CALOCORR_JO])
60  folder = None
61  try:
62  folder = tool.detStoreKey
63  if len(folder) > 0:
64  ftmp[folder] = 1
65  except AttributeError:
66  pass
67  self.funcmap[tooldesc[0]] = folder
68  self.folders = ftmp.keys()
69  return
70 
71 

◆ make_magic()

def MakeHierTags.MakeHierTags.make_magic (   self,
  generation 
)

Definition at line 127 of file MakeHierTags.py.

127  def make_magic (self, generation):
128  geom_strings = scrape_tags()
129  if self.makeleaf:
130  for g in geom_strings:
131  (globver, tryhier) = self.corrtop.geom_match('MakeHierTags', g)
132  if globver[0] == '@': continue
133  (vlist, version) = self.corrtop.lookup_version (globver, None)
134  for f in self.folders:
135  self.make_magic_target (f, g, vlist, generation)
136  print ("Made magic targets for", g)
137 
138  for f in self.folders:
139  (dum1, dum2, corrclass, basename) = f.split ('/')
140  magictag = 'TagInfo/' + corrclass + "." + generation + basename + \
141  '-/GeoAtlas'
142  toptag = corrclass + "-" + generation[:-1]
143  self.set_tag (f, magictag, toptag, False)
144  print ("Make magic", f)
145  return
146 
147 

◆ make_magic_target()

def MakeHierTags.MakeHierTags.make_magic_target (   self,
  folder,
  g,
  vlist,
  generation 
)

Definition at line 148 of file MakeHierTags.py.

148  def make_magic_target (self, folder, g, vlist, generation):
149  (dum1, dum2, corrclass, basename) = folder.split ('/')
150 
151  for v in vlist:
152  (func, toolversion, order, extra) = split_version_spec (v)
153  if self.funcmap.get(func) == folder:
154  break
155  else:
156  toolversion = 'dummy'
157 
158  src = corrclass + "." + generation + basename
159  if len(toolversion) > 0:
160  src = src + "-" + toolversion
161 
162  target = corrclass + "." + generation + basename + "-" + g
163 
164  self.copy_tag (folder, src, target)
165 
166  return
167 
168 

◆ make_tag()

def MakeHierTags.MakeHierTags.make_tag (   self,
  version,
  toollist,
  generation 
)

Definition at line 87 of file MakeHierTags.py.

87  def make_tag (self, version, toollist, generation):
88  htag = None
89  for toolspec in toollist:
90  toolfunc = toolspec[0]
91  if len(toolspec) >= 2 and isinstance(toolspec[1], str):
92  toolversion = toolspec[1]
93  else:
94  toolversion = ''
95 
96  if toolfunc not in self.funcmap:
97  print ("WARNING: skipping tagging for tool", toolfunc.__name__)
98  continue
99  folder = self.funcmap[toolfunc]
100  if not folder: continue
101  (dum1, dum2, corrclass, basename) = folder.split ('/')
102 
103  htmp = corrclass + '-' + generation + version
104  if htag is None:
105  htag = htmp
106  print (htag)
107  else:
108  assert htag == htmp
109 
110  tag = corrclass + '.' + generation + basename
111  if len(toolversion) > 0:
112  tag = tag + '-' + toolversion
113 
114  self.set_tag (folder, tag, htag)
115 
116  if htag is None:
117  return
118 
119  for folder in self.folders:
120  if (folder, htag) not in self.tags:
121  (dum1, dum2, corrclass, basename) = folder.split ('/')
122  tag = corrclass + '.' + generation + basename + '-dummy'
123  self.set_tag (folder, tag, htag)
124  return
125 
126 

◆ run()

def MakeHierTags.MakeHierTags.run (   self,
  generation = None 
)

Definition at line 72 of file MakeHierTags.py.

72  def run (self, generation=None):
73  if generation is None:
74  generation = self.corrtop.correction_generation_default
75  if generation != '':
76  generation = generation + '-'
77 
78  for (version, toollist) in self.corrtop.versions.items():
79  if version[0] == '@': continue
80  self.make_tag (version, toollist, generation)
81 
82  if self.domagic:
83  self.make_magic (generation)
84  return
85 
86 

◆ set_tag()

def MakeHierTags.MakeHierTags.set_tag (   self,
  folder,
  tag,
  htag,
  check = True 
)

Definition at line 197 of file MakeHierTags.py.

197  def set_tag (self, folder, tag, htag, check = True):
198  if self.dryrun:
199  print ('--> Set htag in', folder, tag, htag)
200  return
201 
202  oldtag = self.tags.get ((folder, htag))
203  if oldtag is None:
204  self.tags[(folder,htag)] = tag
205  if not self.db.existsFolder(folder):
206  print ("ERROR: Folder %s doesn't exist" % folder)
207  sys.exit(1)
208  dbf = self.db.getFolder(folder)
209  if check:
210  if tag not in dbf.listTags():
211  print ("ERROR: Tag %s doesn't exist in folder %s"
212  % (tag,folder))
213  sys.exit(1)
214  try:
215  dbf.findTagRelation(htag) # will throw if htag doesn't exist
216  dbf.deleteTagRelation(htag)
217  except Exception:
218  pass
219  dbf.createTagRelation (htag, tag)
220  #print ('set_tag', folder, tag, htag)
221  else:
222  assert oldtag == tag, (tag, oldtag, folder, htag)
223  return
224 
225 

Member Data Documentation

◆ corrtop

MakeHierTags.MakeHierTags.corrtop

Definition at line 29 of file MakeHierTags.py.

◆ db

MakeHierTags.MakeHierTags.db

Definition at line 41 of file MakeHierTags.py.

◆ domagic

MakeHierTags.MakeHierTags.domagic

Definition at line 31 of file MakeHierTags.py.

◆ dryrun

MakeHierTags.MakeHierTags.dryrun

Definition at line 30 of file MakeHierTags.py.

◆ folders

MakeHierTags.MakeHierTags.folders

Definition at line 44 of file MakeHierTags.py.

◆ funcmap

MakeHierTags.MakeHierTags.funcmap

Definition at line 47 of file MakeHierTags.py.

◆ makeleaf

MakeHierTags.MakeHierTags.makeleaf

Definition at line 36 of file MakeHierTags.py.

◆ tags

MakeHierTags.MakeHierTags.tags

Definition at line 50 of file MakeHierTags.py.


The documentation for this class was generated from the following file:
MakeHierTags.scrape_tags
def scrape_tags()
Definition: MakeHierTags.py:253
run
int run(int argc, char *argv[])
Definition: ttree2hdf5.cxx:28
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127