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
 
 DbsUrl
 
 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  if not opt.testbed :
59  self.wmagent = 'cmsweb.cern.ch'
60  self.DbsUrl = "https://"+self.wmagent+"/dbs/prod/global/DBSReader"
61  else :
62  self.wmagent = 'cmsweb-testbed.cern.ch'
63  self.DbsUrl = "https://"+self.wmagent+"/dbs/int/global/DBSReader"
64 
65  if not self.dqmgui:
66  self.dqmgui="https://cmsweb.cern.ch/dqm/relval"
67  #couch stuff
68  self.couch = 'https://'+self.wmagent+'/couchdb'
69 # self.couchDB = 'reqmgr_config_cache'
70  self.couchCache={} # so that we do not upload like crazy, and recyle cfgs
71  self.user = os.getenv('USER')
72  self.group = 'ppd'
73  self.label = 'RelValSet_'+os.getenv('CMSSW_VERSION').replace('-','')+'_v'+str(self.version)
74  self.speciallabel=''
75  if opt.label:
76  self.speciallabel= '_'+opt.label
77 
78 
79  if not os.getenv('WMCORE_ROOT'):
80  print '\n\twmclient is not setup properly. Will not be able to upload or submit requests.\n'
81  if not self.testMode:
82  print '\n\t QUIT\n'
83  sys.exit(-18)
84  else:
85  print '\n\tFound wmclient\n'
86 
87  self.defaultChain={
88  "RequestType" : "TaskChain", #this is how we handle relvals
89  "SubRequestType" : "RelVal", #this is how we handle relvals, now that TaskChain is also used for central MC production
90  "RequestPriority": 500000,
91  "Requestor": self.user, #Person responsible
92  "Group": self.group, #group for the request
93  "CMSSWVersion": os.getenv('CMSSW_VERSION'), #CMSSW Version (used for all tasks in chain)
94  "Campaign": os.getenv('CMSSW_VERSION'), # only for wmstat purpose
95  "ScramArch": os.getenv('SCRAM_ARCH'), #Scram Arch (used for all tasks in chain)
96  "ProcessingVersion": self.version, #Processing Version (used for all tasks in chain)
97  "GlobalTag": None, #Global Tag (overridden per task)
98  "CouchURL": self.couch, #URL of CouchDB containing Config Cache
99  "ConfigCacheURL": self.couch, #URL of CouchDB containing Config Cache
100  "DbsUrl": self.DbsUrl,
101  #- Will contain all configs for all Tasks
102  #"SiteWhitelist" : ["T2_CH_CERN", "T1_US_FNAL"], #Site whitelist
103  "TaskChain" : None, #Define number of tasks in chain.
104  "nowmTasklist" : [], #a list of tasks as we put them in
105  "unmergedLFNBase" : "/store/unmerged",
106  "mergedLFNBase" : "/store/relval",
107  "dashboardActivity" : "relval",
108  "Multicore" : opt.nThreads,
109  "Memory" : 3000,
110  "SizePerEvent" : 1234,
111  "TimePerEvent" : 0.1
112  }
114  self.defaultHarvest={
115  "EnableHarvesting" : "True",
116  "DQMUploadUrl" : self.dqmgui,
117  "DQMConfigCacheID" : None
118  }
119 
120  self.defaultScratch={
121  "TaskName" : None, #Task Name
122  "ConfigCacheID" : None, #Generator Config id
123  "GlobalTag": None,
124  "SplittingAlgo" : "EventBased", #Splitting Algorithm
125  "EventsPerJob" : None, #Size of jobs in terms of splitting algorithm
126  "RequestNumEvents" : None, #Total number of events to generate
127  "Seeding" : "AutomaticSeeding", #Random seeding method
128  "PrimaryDataset" : None, #Primary Dataset to be created
129  "nowmIO": {},
130  "KeepOutput" : False
131  }
132  self.defaultInput={
133  "TaskName" : "DigiHLT", #Task Name
134  "ConfigCacheID" : None, #Processing Config id
135  "GlobalTag": None,
136  "InputDataset" : None, #Input Dataset to be processed
137  "SplittingAlgo" : "LumiBased", #Splitting Algorithm
138  "LumisPerJob" : 10, #Size of jobs in terms of splitting algorithm
139  "nowmIO": {},
140  "KeepOutput" : False
141  }
142  self.defaultTask={
143  "TaskName" : None, #Task Name
144  "InputTask" : None, #Input Task Name (Task Name field of a previous Task entry)
145  "InputFromOutputModule" : None, #OutputModule name in the input task that will provide files to process
146  "ConfigCacheID" : None, #Processing Config id
147  "GlobalTag": None,
148  "SplittingAlgo" : "LumiBased", #Splitting Algorithm
149  "LumisPerJob" : 10, #Size of jobs in terms of splitting algorithm
150  "nowmIO": {},
151  "KeepOutput" : False
152  }
154  self.chainDicts={}
155 

Member Function Documentation

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

Definition at line 156 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, spr.find(), cmsHarvester.index, MatrixInjector.MatrixInjector.keep, python.multivaluedict.map(), SiPixelLorentzAngle_cfi.read, python.rootplot.root2matplotlib.replace(), MatrixInjector.MatrixInjector.speciallabel, split, and makeHLTPrescaleTable.values.

157  def prepare(self,mReader, directories, mode='init'):
158  try:
159  #from Configuration.PyReleaseValidation.relval_steps import wmsplit
160  wmsplit = {}
161  wmsplit['DIGIHI']=5
162  wmsplit['RECOHI']=5
163  wmsplit['HLTD']=5
164  wmsplit['RECODreHLT']=2
165  wmsplit['DIGIPU']=4
166  wmsplit['DIGIPU1']=4
167  wmsplit['RECOPU1']=1
168  wmsplit['DIGIUP15_PU50']=1
169  wmsplit['RECOUP15_PU50']=1
170  wmsplit['DIGIUP15_PU25']=1
171  wmsplit['RECOUP15_PU25']=1
172  wmsplit['DIGIHIMIX']=5
173  wmsplit['RECOHIMIX']=5
174  wmsplit['RECODSplit']=1
175  wmsplit['SingleMuPt10_UP15_ID']=1
176  wmsplit['DIGIUP15_ID']=1
177  wmsplit['RECOUP15_ID']=1
178  wmsplit['TTbar_13_ID']=1
179  wmsplit['SingleMuPt10FS_ID']=1
180  wmsplit['TTbarFS_ID']=1
181  wmsplit['RECODR2_50nsreHLT']=1
182  wmsplit['RECODR2_25nsreHLT']=1
183  wmsplit['HLTDR2_50ns']=3
184  wmsplit['HLTDR2_25ns']=3
185  wmsplit['Hadronizer']=1
186 
187  #import pprint
188  #pprint.pprint(wmsplit)
189  except:
190  print "Not set up for step splitting"
191  wmsplit={}
192 
193  acqEra=False
194  for (n,dir) in directories.items():
195  chainDict=copy.deepcopy(self.defaultChain)
196  print "inspecting",dir
197  nextHasDSInput=None
198  for (x,s) in mReader.workFlowSteps.items():
199  #x has the format (num, prefix)
200  #s has the format (num, name, commands, stepList)
201  if x[0]==n:
202  #print "found",n,s[3]
203  #chainDict['RequestString']='RV'+chainDict['CMSSWVersion']+s[1].split('+')[0]
204  index=0
205  splitForThisWf=None
206  thisLabel=self.speciallabel
207  #if 'HARVESTGEN' in s[3]:
208  if len( [step for step in s[3] if "HARVESTGEN" in step] )>0:
209  chainDict['TimePerEvent']=0.01
210  thisLabel=thisLabel+"_gen"
211  processStrPrefix=''
212  setPrimaryDs=None
213  for step in s[3]:
214 
215  if 'INPUT' in step or (not isinstance(s[2][index],str)):
216  nextHasDSInput=s[2][index]
217 
218  else:
219 
220  if (index==0):
221  #first step and not input -> gen part
222  chainDict['nowmTasklist'].append(copy.deepcopy(self.defaultScratch))
223  try:
224  chainDict['nowmTasklist'][-1]['nowmIO']=json.loads(open('%s/%s.io'%(dir,step)).read())
225  except:
226  print "Failed to find",'%s/%s.io'%(dir,step),".The workflows were probably not run on cfg not created"
227  return -15
228 
229  chainDict['nowmTasklist'][-1]['PrimaryDataset']='RelVal'+s[1].split('+')[0]
230  if not '--relval' in s[2][index]:
231  print 'Impossible to create task from scratch without splitting information with --relval'
232  return -12
233  else:
234  arg=s[2][index].split()
235  ns=map(int,arg[arg.index('--relval')+1].split(','))
236  chainDict['nowmTasklist'][-1]['RequestNumEvents'] = ns[0]
237  chainDict['nowmTasklist'][-1]['EventsPerJob'] = ns[1]
238  if 'FASTSIM' in s[2][index] or '--fast' in s[2][index]:
239  thisLabel+='_FastSim'
240  if 'lhe' in s[2][index] in s[2][index]:
241  chainDict['nowmTasklist'][-1]['LheInputFiles'] =True
242 
243  elif nextHasDSInput:
244  chainDict['nowmTasklist'].append(copy.deepcopy(self.defaultInput))
245  try:
246  chainDict['nowmTasklist'][-1]['nowmIO']=json.loads(open('%s/%s.io'%(dir,step)).read())
247  except:
248  print "Failed to find",'%s/%s.io'%(dir,step),".The workflows were probably not run on cfg not created"
249  return -15
250  chainDict['nowmTasklist'][-1]['InputDataset']=nextHasDSInput.dataSet
251  splitForThisWf=nextHasDSInput.split
252  chainDict['nowmTasklist'][-1]['LumisPerJob']=splitForThisWf
253  if step in wmsplit:
254  chainDict['nowmTasklist'][-1]['LumisPerJob']=wmsplit[step]
255  # get the run numbers or #events
256  if len(nextHasDSInput.run):
257  chainDict['nowmTasklist'][-1]['RunWhitelist']=nextHasDSInput.run
258  if len(nextHasDSInput.ls):
259  chainDict['nowmTasklist'][-1]['LumiList']=nextHasDSInput.ls
260  #print "what is s",s[2][index]
261  if '--data' in s[2][index] and nextHasDSInput.label:
262  thisLabel+='_RelVal_%s'%nextHasDSInput.label
263  if 'filter' in chainDict['nowmTasklist'][-1]['nowmIO']:
264  print "This has an input DS and a filter sequence: very likely to be the PyQuen sample"
265  processStrPrefix='PU_'
266  setPrimaryDs = 'RelVal'+s[1].split('+')[0]
267  if setPrimaryDs:
268  chainDict['nowmTasklist'][-1]['PrimaryDataset']=setPrimaryDs
269  nextHasDSInput=None
270  else:
271  #not first step and no inputDS
272  chainDict['nowmTasklist'].append(copy.deepcopy(self.defaultTask))
273  try:
274  chainDict['nowmTasklist'][-1]['nowmIO']=json.loads(open('%s/%s.io'%(dir,step)).read())
275  except:
276  print "Failed to find",'%s/%s.io'%(dir,step),".The workflows were probably not run on cfg not created"
277  return -15
278  if splitForThisWf:
279  chainDict['nowmTasklist'][-1]['LumisPerJob']=splitForThisWf
280  if step in wmsplit:
281  chainDict['nowmTasklist'][-1]['LumisPerJob']=wmsplit[step]
282 
283  # change LumisPerJob for Hadronizer steps.
284  if 'Hadronizer' in step:
285  chainDict['nowmTasklist'][-1]['LumisPerJob']=wmsplit['Hadronizer']
286 
287  #print step
288  chainDict['nowmTasklist'][-1]['TaskName']=step
289  if setPrimaryDs:
290  chainDict['nowmTasklist'][-1]['PrimaryDataset']=setPrimaryDs
291  chainDict['nowmTasklist'][-1]['ConfigCacheID']='%s/%s.py'%(dir,step)
292  chainDict['nowmTasklist'][-1]['GlobalTag']=chainDict['nowmTasklist'][-1]['nowmIO']['GT'] # copy to the proper parameter name
293  chainDict['GlobalTag']=chainDict['nowmTasklist'][-1]['nowmIO']['GT'] #set in general to the last one of the chain
294  if 'pileup' in chainDict['nowmTasklist'][-1]['nowmIO']:
295  chainDict['nowmTasklist'][-1]['MCPileup']=chainDict['nowmTasklist'][-1]['nowmIO']['pileup']
296  if '--pileup ' in s[2][index]: # catch --pileup (scenarion) and not --pileup_ (dataset to be mixed) => works also making PRE-MIXed dataset
297  processStrPrefix='PU_' # take care of pu overlay done with GEN-SIM mixing
298  if ( s[2][index].split()[ s[2][index].split().index('--pileup')+1 ] ).find('25ns') > 0 :
299  processStrPrefix='PU25ns_'
300  elif ( s[2][index].split()[ s[2][index].split().index('--pileup')+1 ] ).find('50ns') > 0 :
301  processStrPrefix='PU50ns_'
302  if 'DIGIPREMIX_S2' in s[2][index] : # take care of pu overlay done with DIGI mixing of premixed events
303  if s[2][index].split()[ s[2][index].split().index('--pileup_input')+1 ].find('25ns') > 0 :
304  processStrPrefix='PUpmx25ns_'
305  elif s[2][index].split()[ s[2][index].split().index('--pileup_input')+1 ].find('50ns') > 0 :
306  processStrPrefix='PUpmx50ns_'
307 
308  if acqEra:
309  #chainDict['AcquisitionEra'][step]=(chainDict['CMSSWVersion']+'-PU_'+chainDict['nowmTasklist'][-1]['GlobalTag']).replace('::All','')+thisLabel
310  chainDict['AcquisitionEra'][step]=chainDict['CMSSWVersion']
311  chainDict['ProcessingString'][step]=processStrPrefix+chainDict['nowmTasklist'][-1]['GlobalTag'].replace('::All','')+thisLabel
312  else:
313  #chainDict['nowmTasklist'][-1]['AcquisitionEra']=(chainDict['CMSSWVersion']+'-PU_'+chainDict['nowmTasklist'][-1]['GlobalTag']).replace('::All','')+thisLabel
314  chainDict['nowmTasklist'][-1]['AcquisitionEra']=chainDict['CMSSWVersion']
315  chainDict['nowmTasklist'][-1]['ProcessingString']=processStrPrefix+chainDict['nowmTasklist'][-1]['GlobalTag'].replace('::All','')+thisLabel
316 
317  index+=1
318  #end of loop through steps
319  chainDict['RequestString']='RV'+chainDict['CMSSWVersion']+s[1].split('+')[0]
320  if processStrPrefix or thisLabel:
321  chainDict['RequestString']+='_'+processStrPrefix+thisLabel
322 
323 
324 
325  #wrap up for this one
326  import pprint
327  #print 'wrapping up'
328  #pprint.pprint(chainDict)
329  #loop on the task list
330  for i_second in reversed(range(len(chainDict['nowmTasklist']))):
331  t_second=chainDict['nowmTasklist'][i_second]
332  #print "t_second taskname", t_second['TaskName']
333  if 'primary' in t_second['nowmIO']:
334  #print t_second['nowmIO']['primary']
335  primary=t_second['nowmIO']['primary'][0].replace('file:','')
336  for i_input in reversed(range(0,i_second)):
337  t_input=chainDict['nowmTasklist'][i_input]
338  for (om,o) in t_input['nowmIO'].items():
339  if primary in o:
340  #print "found",primary,"procuced by",om,"of",t_input['TaskName']
341  t_second['InputTask'] = t_input['TaskName']
342  t_second['InputFromOutputModule'] = om
343  #print 't_second',pprint.pformat(t_second)
344  if t_second['TaskName'].startswith('HARVEST'):
345  chainDict.update(copy.deepcopy(self.defaultHarvest))
346  chainDict['DQMConfigCacheID']=t_second['ConfigCacheID']
347  ## the info are not in the task specific dict but in the general dict
348  #t_input.update(copy.deepcopy(self.defaultHarvest))
349  #t_input['DQMConfigCacheID']=t_second['ConfigCacheID']
350  break
351 
352  ## there is in fact only one acquisition era
353  #if len(set(chainDict['AcquisitionEra'].values()))==1:
354  # print "setting only one acq"
355  if acqEra:
356  chainDict['AcquisitionEra'] = chainDict['AcquisitionEra'].values()[0]
357 
358  ## clean things up now
359  itask=0
360  if self.keep:
361  for i in self.keep:
362  if type(i)==int and i < len(chainDict['nowmTasklist']):
363  chainDict['nowmTasklist'][i]['KeepOutput']=True
364  for (i,t) in enumerate(chainDict['nowmTasklist']):
365  if t['TaskName'].startswith('HARVEST'):
366  continue
367  if not self.keep:
368  t['KeepOutput']=True
369  elif t['TaskName'] in self.keep:
370  t['KeepOutput']=True
371  t.pop('nowmIO')
372  itask+=1
373  chainDict['Task%d'%(itask)]=t
374 
375 
376  ##
377 
378 
379  ## provide the number of tasks
380  chainDict['TaskChain']=itask#len(chainDict['nowmTasklist'])
381 
382  chainDict.pop('nowmTasklist')
383  self.chainDicts[n]=chainDict
384 
385 
386  return 0
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
double split
Definition: MVATrainer.cc:139
def MatrixInjector.MatrixInjector.submit (   self)

Definition at line 434 of file MatrixInjector.py.

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

435  def submit(self):
436  try:
437  from modules.wma import makeRequest,approveRequest
438  from wmcontrol import random_sleep
439  print '\n\tFound wmcontrol\n'
440  except:
441  print '\n\tUnable to find wmcontrol modules. Please include it in your python path\n'
442  if not self.testMode:
443  print '\n\t QUIT\n'
444  sys.exit(-17)
445 
446  import pprint
447  for (n,d) in self.chainDicts.items():
448  if self.testMode:
449  print "Only viewing request",n
450  print pprint.pprint(d)
451  else:
452  #submit to wmagent each dict
453  print "For eyes before submitting",n
454  print pprint.pprint(d)
455  print "Submitting",n,"..........."
456  workFlow=makeRequest(self.wmagent,d,encodeDict=True)
457  approveRequest(self.wmagent,workFlow)
458  print "...........",n,"submitted"
459  random_sleep()
460 
461 
462 
def MatrixInjector.MatrixInjector.upload (   self)

Definition at line 414 of file MatrixInjector.py.

References MatrixInjector.MatrixInjector.uploadConf().

415  def upload(self):
416  for (n,d) in self.chainDicts.items():
417  for it in d:
418  if it.startswith("Task") and it!='TaskChain':
419  #upload
420  couchID=self.uploadConf(d[it]['ConfigCacheID'],
421  str(n)+d[it]['TaskName'],
422  d['CouchURL']
423  )
424  print d[it]['ConfigCacheID']," uploaded to couchDB for",str(n),"with ID",couchID
425  d[it]['ConfigCacheID']=couchID
426  if it =='DQMConfigCacheID':
427  couchID=self.uploadConf(d['DQMConfigCacheID'],
428  str(n)+'harvesting',
429  d['CouchURL']
430  )
431  print d['DQMConfigCacheID'],"uploaded to couchDB for",str(n),"with ID",couchID
432  d['DQMConfigCacheID']=couchID
433 
def MatrixInjector.MatrixInjector.uploadConf (   self,
  filePath,
  label,
  where 
)

Definition at line 387 of file MatrixInjector.py.

References MatrixInjector.MatrixInjector.couchCache, TmCcu.count, TmApvPair.count, TmModule.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, TtEvent::HypoClassKeyStringToEnum.label, HcalLutSet.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, conddblib.GlobalTagMap.label, MatrixInjector.MatrixInjector.testMode, EcalTPGParamReaderFromDB.user, popcon::RPCObPVSSmapData.user, popcon::RpcDataT.user, popcon::RpcObGasData.user, popcon::RpcDataV.user, popcon::RpcDataI.user, popcon::RpcDataGasMix.user, popcon::RpcDataFebmap.user, popcon::RpcDataUXC.user, popcon::RpcDataS.user, MatrixInjector.MatrixInjector.user, and conddblib.TimeType.user.

Referenced by MatrixInjector.MatrixInjector.upload().

388  def uploadConf(self,filePath,label,where):
389  labelInCouch=self.label+'_'+label
390  cacheName=filePath.split('/')[-1]
391  if self.testMode:
392  self.count+=1
393  print '\tFake upload of',filePath,'to couch with label',labelInCouch
394  return self.count
395  else:
396  try:
397  from modules.wma import upload_to_couch,DATABASE_NAME
398  except:
399  print '\n\tUnable to find wmcontrol modules. Please include it in your python path\n'
400  print '\n\t QUIT\n'
401  sys.exit(-16)
402 
403  if cacheName in self.couchCache:
404  print "Not re-uploading",filePath,"to",where,"for",label
405  cacheId=self.couchCache[cacheName]
406  else:
407  print "Loading",filePath,"to",where,"for",label
408  ## totally fork the upload to couch to prevent cross loading of process configurations
409  pool = multiprocessing.Pool(1)
410  cacheIds = pool.map( upload_to_couch_oneArg, [(filePath,labelInCouch,self.user,self.group,where)] )
411  cacheId = cacheIds[0]
412  self.couchCache[cacheName]=cacheId
413  return cacheId

Member Data Documentation

MatrixInjector.MatrixInjector.chainDicts

Definition at line 153 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.couch

Definition at line 67 of file MatrixInjector.py.

MatrixInjector.MatrixInjector.couchCache

Definition at line 69 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.DbsUrl

Definition at line 59 of file MatrixInjector.py.

MatrixInjector.MatrixInjector.defaultChain

Definition at line 86 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultHarvest

Definition at line 113 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultInput

Definition at line 131 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultScratch

Definition at line 119 of file MatrixInjector.py.

Referenced by MatrixInjector.MatrixInjector.prepare().

MatrixInjector.MatrixInjector.defaultTask

Definition at line 141 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 71 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 72 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(), core.AutoHandle.AutoHandle.ReallyLoad(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ToolDataAccessor.updateProcess(), MatrixInjector.MatrixInjector.uploadConf(), and Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.usedBy().

MatrixInjector.MatrixInjector.speciallabel

Definition at line 73 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 70 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 python.rootplot.argparse._VersionAction.__call__(), validation.Sample.datasetpattern(), validation.Sample.filename(), 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().