CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes
MatrixInjector.MatrixInjector Class Reference
Inheritance diagram for MatrixInjector.MatrixInjector:

Public Member Functions

def __init__
 
def prepare
 
def submit
 
def upload
 
def uploadConf
 

Public Attributes

 chainDicts
 
 couch
 
 couchCache
 
 count
 
 defaultChain
 
 defaultHarvest
 
 defaultInput
 
 defaultScratch
 
 defaultTask
 
 dqmgui
 
 group
 
 keep
 
 label
 
 speciallabel
 
 testMode
 
 user
 
 version
 
 wmagent
 

Detailed Description

Definition at line 36 of file MatrixInjector.py.

Constructor & Destructor Documentation

def MatrixInjector.MatrixInjector.__init__ (   self,
  opt,
  mode = 'init',
  options = '' 
)

Definition at line 38 of file MatrixInjector.py.

38 
39  def __init__(self,opt,mode='init',options=''):
40  self.count=1040
41 
42  self.dqmgui=None
43  self.wmagent=None
44  for k in options.split(','):
45  if k.startswith('dqm:'):
46  self.dqmgui=k.split(':',1)[-1]
47  elif k.startswith('wma:'):
48  self.wmagent=k.split(':',1)[-1]
49 
50  self.testMode=((mode!='submit') and (mode!='force'))
51  self.version =1
52  self.keep = opt.keep
53 
54  #wagemt stuff
55  if not self.wmagent:
56  self.wmagent=os.getenv('WMAGENT_REQMGR')
57  if not self.wmagent:
58  self.wmagent = 'cmsweb.cern.ch'
59 
60  if not self.dqmgui:
61  self.dqmgui="https://cmsweb.cern.ch/dqm/relval"
62  #couch stuff
63  self.couch = 'https://'+self.wmagent+'/couchdb'
64 # self.couchDB = 'reqmgr_config_cache'
65  self.couchCache={} # so that we do not upload like crazy, and recyle cfgs
66  self.user = os.getenv('USER')
67  self.group = 'ppd'
68  self.label = 'RelValSet_'+os.getenv('CMSSW_VERSION').replace('-','')+'_v'+str(self.version)
69  self.speciallabel=''
70  if opt.label:
71  self.speciallabel= '_'+opt.label
72 
73 
74  if not os.getenv('WMCORE_ROOT'):
75  print '\n\twmclient is not setup properly. Will not be able to upload or submit requests.\n'
76  if not self.testMode:
77  print '\n\t QUIT\n'
78  sys.exit(-18)
79  else:
80  print '\n\tFound wmclient\n'
81 
82  self.defaultChain={
83  "RequestType" : "TaskChain", #this is how we handle relvals
84  "Requestor": self.user, #Person responsible
85  "Group": self.group, #group for the request
86  "CMSSWVersion": os.getenv('CMSSW_VERSION'), #CMSSW Version (used for all tasks in chain)
87  "Campaign": os.getenv('CMSSW_VERSION'), # only for wmstat purpose
88  "ScramArch": os.getenv('SCRAM_ARCH'), #Scram Arch (used for all tasks in chain)
89  "ProcessingVersion": self.version, #Processing Version (used for all tasks in chain)
90  "GlobalTag": None, #Global Tag (overridden per task)
91  "CouchURL": self.couch, #URL of CouchDB containing Config Cache
92  "ConfigCacheURL": self.couch, #URL of CouchDB containing Config Cache
93  "DbsUrl": "http://cmsdbsprod.cern.ch/cms_dbs_prod_global/servlet/DBSServlet",
94  #"CouchDBName": self.couchDB, #Name of Couch Database containing config cache
95  #- Will contain all configs for all Tasks
96  #"SiteWhitelist" : ["T2_CH_CERN", "T1_US_FNAL"], #Site whitelist
97  "TaskChain" : None, #Define number of tasks in chain.
98  "nowmTasklist" : [], #a list of tasks as we put them in
99  "unmergedLFNBase" : "/store/unmerged",
100  "mergedLFNBase" : "/store/relval",
101  "dashboardActivity" : "relval",
102  "Memory" : 2400,
103  "SizePerEvent" : 1234,
104  "TimePerEvent" : 20
105  }
107  self.defaultHarvest={
108  "EnableHarvesting" : "True",
109  "DQMUploadUrl" : self.dqmgui,
110  "DQMConfigCacheID" : None
111  }
112 
113  self.defaultScratch={
114  "TaskName" : None, #Task Name
115  "ConfigCacheID" : None, #Generator Config id
116  "GlobalTag": None,
117  "SplittingAlgo" : "EventBased", #Splitting Algorithm
118  "EventsPerJob" : None, #Size of jobs in terms of splitting algorithm
119  "RequestNumEvents" : None, #Total number of events to generate
120  "Seeding" : "AutomaticSeeding", #Random seeding method
121  "PrimaryDataset" : None, #Primary Dataset to be created
122  "nowmIO": {},
123  "KeepOutput" : False
124  }
125  self.defaultInput={
126  "TaskName" : "DigiHLT", #Task Name
127  "ConfigCacheID" : None, #Processing Config id
128  "GlobalTag": None,
129  "InputDataset" : None, #Input Dataset to be processed
130  "SplittingAlgo" : "LumiBased", #Splitting Algorithm
131  "LumisPerJob" : 10, #Size of jobs in terms of splitting algorithm
132  "nowmIO": {},
133  "KeepOutput" : False
134  }
135  self.defaultTask={
136  "TaskName" : None, #Task Name
137  "InputTask" : None, #Input Task Name (Task Name field of a previous Task entry)
138  "InputFromOutputModule" : None, #OutputModule name in the input task that will provide files to process
139  "ConfigCacheID" : None, #Processing Config id
140  "GlobalTag": None,
141  "SplittingAlgo" : "LumiBased", #Splitting Algorithm
142  "LumisPerJob" : 10, #Size of jobs in terms of splitting algorithm
143  "nowmIO": {},
144  "KeepOutput" : False
145  }
147  self.chainDicts={}
148 
def replace
Definition: linker.py:10

Member Function Documentation

def MatrixInjector.MatrixInjector.prepare (   self,
  mReader,
  directories,
  mode = 'init' 
)

Definition at line 149 of file MatrixInjector.py.

References python.multivaluedict.append(), MatrixInjector.MatrixInjector.chainDicts, MatrixInjector.MatrixInjector.defaultChain, MatrixInjector.MatrixInjector.defaultHarvest, MatrixInjector.MatrixInjector.defaultInput, MatrixInjector.MatrixInjector.defaultScratch, MatrixInjector.MatrixInjector.defaultTask, MatrixInjector.MatrixInjector.keep, Association.map, SiPixelLorentzAngle_cfi.read, linker.replace(), MatrixInjector.MatrixInjector.speciallabel, split, and makeHLTPrescaleTable.values.

150  def prepare(self,mReader, directories, mode='init'):
151  try:
152  #from Configuration.PyReleaseValidation.relval_steps import wmsplit
153  wmsplit = {}
154  wmsplit['DIGIHI']=5
155  wmsplit['RECOHI']=5
156  wmsplit['HLTD']=5
157  wmsplit['RECODreHLT']=2
158  wmsplit['DIGIPU']=4
159  wmsplit['DIGIPU1']=4
160  wmsplit['RECOPU1']=1
161  wmsplit['DIGIHISt3']=5
162  wmsplit['RECOHISt4']=5
163  wmsplit['SingleMuPt10_ID']=1
164  wmsplit['DIGI_ID']=1
165  wmsplit['RECO_ID']=1
166  wmsplit['TTbar_ID']=1
167  wmsplit['SingleMuPt10FS_ID']=1
168  wmsplit['TTbarFS_ID']=1
169 
170  #import pprint
171  #pprint.pprint(wmsplit)
172  except:
173  print "Not set up for step splitting"
174  wmsplit={}
175 
176  acqEra=False
177  for (n,dir) in directories.items():
178  chainDict=copy.deepcopy(self.defaultChain)
179  print "inspecting",dir
180  nextHasDSInput=None
181  for (x,s) in mReader.workFlowSteps.items():
182  #x has the format (num, prefix)
183  #s has the format (num, name, commands, stepList)
184  if x[0]==n:
185  #print "found",n,s[3]
186  #chainDict['RequestString']='RV'+chainDict['CMSSWVersion']+s[1].split('+')[0]
187  index=0
188  splitForThisWf=None
189  thisLabel=self.speciallabel
190  processStrPrefix=''
191  setPrimaryDs=None
192  for step in s[3]:
193 
194  if 'INPUT' in step or (not isinstance(s[2][index],str)):
195  nextHasDSInput=s[2][index]
196 
197  else:
198 
199  if (index==0):
200  #first step and not input -> gen part
201  chainDict['nowmTasklist'].append(copy.deepcopy(self.defaultScratch))
202  try:
203  chainDict['nowmTasklist'][-1]['nowmIO']=json.loads(open('%s/%s.io'%(dir,step)).read())
204  except:
205  print "Failed to find",'%s/%s.io'%(dir,step),".The workflows were probably not run on cfg not created"
206  return -15
207 
208  chainDict['nowmTasklist'][-1]['PrimaryDataset']='RelVal'+s[1].split('+')[0]
209  if not '--relval' in s[2][index]:
210  print 'Impossible to create task from scratch without splitting information with --relval'
211  return -12
212  else:
213  arg=s[2][index].split()
214  ns=map(int,arg[arg.index('--relval')+1].split(','))
215  chainDict['nowmTasklist'][-1]['RequestNumEvents'] = ns[0]
216  chainDict['nowmTasklist'][-1]['EventsPerJob'] = ns[1]
217  if 'FASTSIM' in s[2][index] or '--fast' in s[2][index]:
218  thisLabel+='_FastSim'
219 
220  elif nextHasDSInput:
221  chainDict['nowmTasklist'].append(copy.deepcopy(self.defaultInput))
222  try:
223  chainDict['nowmTasklist'][-1]['nowmIO']=json.loads(open('%s/%s.io'%(dir,step)).read())
224  except:
225  print "Failed to find",'%s/%s.io'%(dir,step),".The workflows were probably not run on cfg not created"
226  return -15
227  chainDict['nowmTasklist'][-1]['InputDataset']=nextHasDSInput.dataSet
228  splitForThisWf=nextHasDSInput.split
229  chainDict['nowmTasklist'][-1]['LumisPerJob']=splitForThisWf
230  if step in wmsplit:
231  chainDict['nowmTasklist'][-1]['LumisPerJob']=wmsplit[step]
232  # get the run numbers or #events
233  if len(nextHasDSInput.run):
234  chainDict['nowmTasklist'][-1]['RunWhitelist']=nextHasDSInput.run
235  #print "what is s",s[2][index]
236  if '--data' in s[2][index] and nextHasDSInput.label:
237  thisLabel+='_RelVal_%s'%nextHasDSInput.label
238  if 'filter' in chainDict['nowmTasklist'][-1]['nowmIO']:
239  print "This has an input DS and a filter sequence: very likely to be the PyQuen sample"
240  processStrPrefix='PU_'
241  setPrimaryDs = 'RelVal'+s[1].split('+')[0]
242  if setPrimaryDs:
243  chainDict['nowmTasklist'][-1]['PrimaryDataset']=setPrimaryDs
244  nextHasDSInput=None
245  else:
246  #not first step and no inputDS
247  chainDict['nowmTasklist'].append(copy.deepcopy(self.defaultTask))
248  try:
249  chainDict['nowmTasklist'][-1]['nowmIO']=json.loads(open('%s/%s.io'%(dir,step)).read())
250  except:
251  print "Failed to find",'%s/%s.io'%(dir,step),".The workflows were probably not run on cfg not created"
252  return -15
253  if splitForThisWf:
254  chainDict['nowmTasklist'][-1]['LumisPerJob']=splitForThisWf
255  if step in wmsplit:
256  chainDict['nowmTasklist'][-1]['LumisPerJob']=wmsplit[step]
257 
258  #print step
259  chainDict['nowmTasklist'][-1]['TaskName']=step
260  if setPrimaryDs:
261  chainDict['nowmTasklist'][-1]['PrimaryDataset']=setPrimaryDs
262  chainDict['nowmTasklist'][-1]['ConfigCacheID']='%s/%s.py'%(dir,step)
263  chainDict['nowmTasklist'][-1]['GlobalTag']=chainDict['nowmTasklist'][-1]['nowmIO']['GT'] # copy to the proper parameter name
264  chainDict['GlobalTag']=chainDict['nowmTasklist'][-1]['nowmIO']['GT'] #set in general to the last one of the chain
265  if 'pileup' in chainDict['nowmTasklist'][-1]['nowmIO']:
266  chainDict['nowmTasklist'][-1]['MCPileup']=chainDict['nowmTasklist'][-1]['nowmIO']['pileup']
267  if '--pileup' in s[2][index]:
268  processStrPrefix='PU_'
269 
270  if acqEra:
271  #chainDict['AcquisitionEra'][step]=(chainDict['CMSSWVersion']+'-PU_'+chainDict['nowmTasklist'][-1]['GlobalTag']).replace('::All','')+thisLabel
272  chainDict['AcquisitionEra'][step]=chainDict['CMSSWVersion']
273  chainDict['ProcessingString'][step]=processStrPrefix+chainDict['nowmTasklist'][-1]['GlobalTag'].replace('::All','')+thisLabel
274  else:
275  #chainDict['nowmTasklist'][-1]['AcquisitionEra']=(chainDict['CMSSWVersion']+'-PU_'+chainDict['nowmTasklist'][-1]['GlobalTag']).replace('::All','')+thisLabel
276  chainDict['nowmTasklist'][-1]['AcquisitionEra']=chainDict['CMSSWVersion']
277  chainDict['nowmTasklist'][-1]['ProcessingString']=processStrPrefix+chainDict['nowmTasklist'][-1]['GlobalTag'].replace('::All','')+thisLabel
278 
279  index+=1
280  #end of loop through steps
281  chainDict['RequestString']='RV'+chainDict['CMSSWVersion']+s[1].split('+')[0]
282  if processStrPrefix or thisLabel:
283  chainDict['RequestString']+='_'+processStrPrefix+thisLabel
284 
285 
286 
287  #wrap up for this one
288  import pprint
289  #print 'wrapping up'
290  #pprint.pprint(chainDict)
291  #loop on the task list
292  for i_second in reversed(range(len(chainDict['nowmTasklist']))):
293  t_second=chainDict['nowmTasklist'][i_second]
294  #print "t_second taskname", t_second['TaskName']
295  if 'primary' in t_second['nowmIO']:
296  #print t_second['nowmIO']['primary']
297  primary=t_second['nowmIO']['primary'][0].replace('file:','')
298  for i_input in reversed(range(0,i_second)):
299  t_input=chainDict['nowmTasklist'][i_input]
300  for (om,o) in t_input['nowmIO'].items():
301  if primary in o:
302  #print "found",primary,"procuced by",om,"of",t_input['TaskName']
303  t_second['InputTask'] = t_input['TaskName']
304  t_second['InputFromOutputModule'] = om
305  #print 't_second',pprint.pformat(t_second)
306  if t_second['TaskName'].startswith('HARVEST'):
307  chainDict.update(copy.deepcopy(self.defaultHarvest))
308  chainDict['DQMConfigCacheID']=t_second['ConfigCacheID']
309  ## the info are not in the task specific dict but in the general dict
310  #t_input.update(copy.deepcopy(self.defaultHarvest))
311  #t_input['DQMConfigCacheID']=t_second['ConfigCacheID']
312  break
313 
314  ## there is in fact only one acquisition era
315  #if len(set(chainDict['AcquisitionEra'].values()))==1:
316  # print "setting only one acq"
317  if acqEra:
318  chainDict['AcquisitionEra'] = chainDict['AcquisitionEra'].values()[0]
319 
320  ## clean things up now
321  itask=0
322  if self.keep:
323  for i in self.keep:
324  if type(i)==int and i < len(chainDict['nowmTasklist']):
325  chainDict['nowmTasklist'][i]['KeepOutput']=True
326  for (i,t) in enumerate(chainDict['nowmTasklist']):
327  if t['TaskName'].startswith('HARVEST'):
328  continue
329  if not self.keep:
330  t['KeepOutput']=True
331  elif t['TaskName'] in self.keep:
332  t['KeepOutput']=True
333  t.pop('nowmIO')
334  itask+=1
335  chainDict['Task%d'%(itask)]=t
336 
337 
338  ##
339 
340 
341  ## provide the number of tasks
342  chainDict['TaskChain']=itask#len(chainDict['nowmTasklist'])
343 
344  chainDict.pop('nowmTasklist')
345  self.chainDicts[n]=chainDict
346 
347 
348  return 0
def replace
Definition: linker.py:10
dictionary map
Definition: Association.py:205
double split
Definition: MVATrainer.cc:139
def MatrixInjector.MatrixInjector.submit (   self)

Definition at line 396 of file MatrixInjector.py.

References MatrixInjector.MatrixInjector.testMode, and MatrixInjector.MatrixInjector.wmagent.

397  def submit(self):
398  try:
399  from modules.wma import makeRequest,approveRequest
400  from wmcontrol import random_sleep
401  print '\n\tFound wmcontrol\n'
402  except:
403  print '\n\tUnable to find wmcontrol modules. Please include it in your python path\n'
404  if not self.testMode:
405  print '\n\t QUIT\n'
406  sys.exit(-17)
407 
408  import pprint
409  for (n,d) in self.chainDicts.items():
410  if self.testMode:
411  print "Only viewing request",n
412  print pprint.pprint(d)
413  else:
414  #submit to wmagent each dict
415  print "For eyes before submitting",n
416  print pprint.pprint(d)
417  print "Submitting",n,"..........."
418  workFlow=makeRequest(self.wmagent,d,encodeDict=True)
419  approveRequest(self.wmagent,workFlow)
420  print "...........",n,"submitted"
421  random_sleep()
422 
423 
424 
def MatrixInjector.MatrixInjector.upload (   self)

Definition at line 376 of file MatrixInjector.py.

References MatrixInjector.MatrixInjector.uploadConf().

377  def upload(self):
378  for (n,d) in self.chainDicts.items():
379  for it in d:
380  if it.startswith("Task") and it!='TaskChain':
381  #upload
382  couchID=self.uploadConf(d[it]['ConfigCacheID'],
383  str(n)+d[it]['TaskName'],
384  d['CouchURL']
385  )
386  print d[it]['ConfigCacheID']," uploaded to couchDB for",str(n),"with ID",couchID
387  d[it]['ConfigCacheID']=couchID
388  if it =='DQMConfigCacheID':
389  couchID=self.uploadConf(d['DQMConfigCacheID'],
390  str(n)+'harvesting',
391  d['CouchURL']
392  )
393  print d['DQMConfigCacheID'],"uploaded to couchDB for",str(n),"with ID",couchID
394  d['DQMConfigCacheID']=couchID
395 
def MatrixInjector.MatrixInjector.uploadConf (   self,
  filePath,
  label,
  where 
)

Definition at line 349 of file MatrixInjector.py.

References MatrixInjector.MatrixInjector.couchCache, TmCcu.count, TmModule.count, TmApvPair.count, TmPsu.count, MatrixInjector.MatrixInjector.count, ValidationMisalignedTracker.count, SiStripDetSummary::Values.count, web_results_display.WebResultsDisplay.count, MD5.count, MatrixInjector.MatrixInjector.group, ElectronLikelihoodCategoryData.label, entry< T >.label, SiPixelFedFillerWordEventNumber.label, HcalLutSet.label, TtEvent::HypoClassKeyStringToEnum.label, DTDQMHarvesting.DTDQMHarvesting.label, DTVDriftMeanTimerCalibration.DTVDriftMeanTimerCalibration.label, DTVDriftSegmentCalibration.DTVDriftSegmentCalibration.label, DTDQMValidation.DTDQMValidation.label, DTAnalysisResiduals.DTAnalysisResiduals.label, L1GtBoardTypeStringToEnum.label, DTResidualCalibration.DTResidualCalibration.label, DTTTrigValid.DTTTrigValid.label, DTTTrigResidualCorr.DTTTrigResidualCorr.label, MatrixInjector.MatrixInjector.label, L1GtPsbQuadStringToEnum.label, ValidationMisalignedTracker.label, L1GtConditionTypeStringToEnum.label, L1GtConditionCategoryStringToEnum.label, PhysicsTools::Calibration::Comparator.label, MatrixInjector.MatrixInjector.testMode, EcalTPGParamReaderFromDB.user, popcon::RpcDataT.user, popcon::RPCObPVSSmapData.user, popcon::RpcDataV.user, popcon::RpcObGasData.user, popcon::RpcDataUXC.user, popcon::RpcDataI.user, popcon::RpcDataS.user, popcon::RpcDataFebmap.user, popcon::RpcDataGasMix.user, and MatrixInjector.MatrixInjector.user.

Referenced by MatrixInjector.MatrixInjector.upload().

350  def uploadConf(self,filePath,label,where):
351  labelInCouch=self.label+'_'+label
352  cacheName=filePath.split('/')[-1]
353  if self.testMode:
354  self.count+=1
355  print '\tFake upload of',filePath,'to couch with label',labelInCouch
356  return self.count
357  else:
358  try:
359  from modules.wma import upload_to_couch,DATABASE_NAME
360  except:
361  print '\n\tUnable to find wmcontrol modules. Please include it in your python path\n'
362  print '\n\t QUIT\n'
363  sys.exit(-16)
364 
365  if cacheName in self.couchCache:
366  print "Not re-uploading",filePath,"to",where,"for",label
367  cacheId=self.couchCache[cacheName]
368  else:
369  print "Loading",filePath,"to",where,"for",label
370  ## totally fork the upload to couch to prevent cross loading of process configurations
371  pool = multiprocessing.Pool(1)
372  cacheIds = pool.map( upload_to_couch_oneArg, [(filePath,labelInCouch,self.user,self.group,where)] )
373  cacheId = cacheIds[0]
374  self.couchCache[cacheName]=cacheId
375  return cacheId

Member Data Documentation

MatrixInjector.MatrixInjector.chainDicts

Definition at line 146 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.couch

Definition at line 62 of file MatrixInjector.py.

MatrixInjector.MatrixInjector.couchCache

Definition at line 64 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.uploadConf().

MatrixInjector.MatrixInjector.count

Definition at line 39 of file MatrixInjector.py.

Referenced by NodeCut.MatchLessSeen.match(), NodeCut.MatchLessHit.match(), and MatrixInjector.MatrixInjector.uploadConf().

MatrixInjector.MatrixInjector.defaultChain

Definition at line 81 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultHarvest

Definition at line 106 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultInput

Definition at line 124 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultScratch

Definition at line 112 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultTask

Definition at line 134 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.dqmgui

Definition at line 41 of file MatrixInjector.py.

MatrixInjector.MatrixInjector.group

Definition at line 66 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.uploadConf().

MatrixInjector.MatrixInjector.keep

Definition at line 51 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.label

Definition at line 67 of file MatrixInjector.py.

Referenced by Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor._sort_list(), python.rootplot.root2matplotlib.Hist.bar(), python.rootplot.root2matplotlib.Hist.barh(), python.rootplot.root2matplotlib.Hist.errorbar(), python.rootplot.root2matplotlib.Hist.errorbarh(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.foundIn(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.fullFilename(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.inputEventContent(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.outputEventContent(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ToolDataAccessor.properties(), Vispa.Plugins.EdmBrowser.EdmDataAccessor.EdmDataAccessor.properties(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.properties(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.readConnections(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ToolDataAccessor.updateProcess(), MatrixInjector.MatrixInjector.uploadConf(), and Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.usedBy().

MatrixInjector.MatrixInjector.speciallabel

Definition at line 68 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.testMode

Definition at line 49 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.submit(), and MatrixInjector.MatrixInjector.uploadConf().

MatrixInjector.MatrixInjector.user

Definition at line 65 of file MatrixInjector.py.

Referenced by cmsPerfSuite.PerfSuite.optionParse(), and MatrixInjector.MatrixInjector.uploadConf().

MatrixInjector.MatrixInjector.version

Definition at line 50 of file MatrixInjector.py.

Referenced by argparse._VersionAction.__call__(), python.rootplot.argparse._VersionAction.__call__(), argparse.ArgumentParser.__init__(), argparse.ArgumentParser.format_version(), and python.rootplot.argparse.ArgumentParser.format_version().

MatrixInjector.MatrixInjector.wmagent

Definition at line 42 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.submit().