示例#1
0
   def __init__ (self,channels,combinations,prefix,combList,energyList,PhysModelList,TargetList,batchSplit,masses,unblind,Version,AltModel=['None'],Grid=False):
      self.jobsDic={}
      self.jobsList=[]
      self.prefix=prefix
      self.channels = channels
      self.combinations = combinations
      if self.prefix != '' : self.prefix+='__'
      for iComb in combList:
        if not 'Comb' in batchSplit and len(combList)>1 :
          kComb = 'AllComb'
          for jComb in combList: kComb+='-'+jComb
        else:
          kComb = iComb 
        self.jobsDic[iComb] = {}
        # Model Split ?
        for iModel in PhysModelList:
          if not 'Model' in batchSplit and len(PhysModelList)>1 :    
            kModel = 'AllModel'
            for jModel in PhysModelList: kModel+='-'+jModel
          else:
            kModel = iModel
          self.jobsDic[iComb][iModel] = {}  
          # Mass Split ?     
          massList  = combTools.MassList_Filter(cardtypes,self.channels[Version],self.combinations,physmodels[iModel]['cardtype'],masses,iComb,energyList).get()
          for iMass in massList:
            if not 'Mass' in batchSplit and len(massList)>1 :
              kMass = 'AllMass'
            else: 
              kMass = str(iMass)  
            self.jobsDic[iComb][iModel][iMass] = {}
            # Target Split ?  
            for iTarget in TargetList:
              if unblind or targets[iTarget]['notblind'] : 
                if not 'Target' in batchSplit and len(TargetList)>1 :
                  kTarget = 'AllTarget'
                  for jTarget in TargetList: kTarget+='-'+jTarget
                else:
                  kTarget = iTarget
                # More than one job ?
                self.jobsDic[iComb][iModel][iMass][iTarget] = {}
                if iTarget in targets and 'NJobs' in targets[iTarget]:
                  NJobs = targets[iTarget]['NJobs']
                else:
                  NJobs = 1 
                # Job Multiple parameter ?
                NParam=1
                JobParamName=[]
                JobParamSize=[]
                if iTarget in targets :
                  pTarget=iTarget
                  if 'Toys' in targets[iTarget]: pTarget=targets[iTarget]['Toys']['Target']
                  if 'JobsParam' in targets[pTarget]:
                    for iJobParam in targets[pTarget]['JobsParam']:
                      JobParamName.append(iJobParam)
                      JobParamSize.append(len(targets[pTarget]['JobsParam'][iJobParam])) 
                      NParam*=len(targets[pTarget]['JobsParam'][iJobParam]) 
                    #NJobs=NJobs*NParam
                for iAltModel in AltModel:
                  jJob=0 
                  self.jobsDic[iComb][iModel][iMass][iTarget][iAltModel] = {}
                  for iParam in xrange(1,NParam+1): 
                    # Toys ?
                    ToysList = []
                    if iTarget != 'None' :
                     if 'Toys' in targets[iTarget]:
                      TPF=''
                      if 'JobsParam' in targets[pTarget] :
                        if len(JobParamSize) == 1:
                          iPar=iParam-1
                          TPF=TPF+'_'+JobParamName[0]+str(targets[pTarget]['JobsParam'][JobParamName[0]][iPar]).replace('.','d')
                          print TPF
                      if   len( energyList ) > 1 : iEnergy = 0 
                      elif '7TeV' in energyList : iEnergy = 7
                      elif '8TeV' in energyList : iEnergy = 8
                      ToysList = combTools.getToys(iComb,iTarget,iEnergy,iMass,workspace,Version,cardtypes,physmodels,targets,iAltModel,TPF)
                      NJobs=len(ToysList)
                    for iJob in xrange(1,NJobs+1):        
                      EnergyText = '' 
                      if   len( energyList ) > 1 : EnergyText = ''
                      elif '7TeV' in energyList :  EnergyText = '_7TeV'
                      elif '8TeV' in energyList :  EnergyText = '_8TeV'
                      jJob+=1
                      jName  = self.prefix+kComb+EnergyText+'_'+iAltModel+'__'+kModel+'__'+kMass+'__'+kTarget+'__'+str(jJob)
                      subdir = self.prefix+kComb+EnergyText+'_'+iAltModel+'__'+kModel+'__'+kMass+'__'+kTarget + '/jobs'+str((jJob/250)*250) 
                      print jName
                      if Grid:
                        self.jobsDic[iComb][iModel][iMass][iTarget][iAltModel][jJob] = {}
                        self.jobsDic[iComb][iModel][iMass][iTarget][iAltModel][jJob]['jName']  = subdir+'/'+jName
                        #self.jobsDic[iComb][iModel][iMass][iTarget][iAltModel][jJob]['subdir'] = subdir 
                      else:
                        os.system('mkdir -p '+jobdir+'/'+subdir)
                        self.jobsDic[iComb][iModel][iMass][iTarget][iAltModel][jJob] = subdir+'/'+jName
                        #print self.jobsDic[iComb][iModel][iMass][iTarget][iAltModel][jJob]
                      if not jName in self.jobsList: self.jobsList.append(subdir+'/'+jName)

      #print self.jobsDic
      #print self.jobsList
      #print len(self.jobsList)

      if Grid:
        if not os.path.exists(crabdir) : os.system('mkdir -p '+crabdir)
      else:
        if not os.path.exists(jobdir) : os.system('mkdir -p '+jobdir)
        CMSSW=os.environ["CMSSW_BASE"]
        for jName in self.jobsList:
          #os.system(
          jFile = open(jobdir+'/'+jName+'.sh','w')
          jFile.write('#!/bin/bash\n')
          jFile.write('#$ -N '+jName+'\n')
          jFile.write('#$ -q all.q\n')
          jFile.write('#$ -cwd\n')
          jFile.write('source $VO_CMS_SW_DIR/cmsset_default.sh\n') 
          jFile.write('cd '+CMSSW+'\n')
          jFile.write('eval `scramv1 ru -sh`\n')
          jFile.write('ulimit -c 0\n')
          jFile.close()
          os.system('chmod +x '+jobdir+'/'+jName+'.sh')
示例#2
0
def getAllMass(iModel,combList,Version):
   allList = []
   for iComb in combList:
      massList  = combTools.MassList_Filter(cardtypes,channels[Version],combinations,physmodels[iModel]['cardtype'],[],iComb,energyList).get()
      allList.extend(massList)
   return  sorted(list(set(allList)))
示例#3
0
TargetList    = combTools.TargetList_Filter(targets,options.targets).get()

if options.runBatch or options.runGrid: 
  print 'Call BATV Tools Init'  
  jobs = batchTools.batchJobs(channels,combinations,'results',combList,energyList,PhysModelList,TargetList,options.batchSplit,options.masses,options.unblind,options.Version,options.AltModel,options.runGrid )

if options.runGrid:
  CrabDB = {}

#Run Combine
for iComb in combList:
    print '---------------------- Computing results for combination: '+iComb
    for iModel in PhysModelList:
      print '---------------------------> Model = '+iModel 
      cardDir   = combTools.CardDir_Filter(cardtypes,physmodels[iModel]['cardtype']).get() 
      massList  = combTools.MassList_Filter(cardtypes,channels[options.Version],combinations,physmodels[iModel]['cardtype'],options.masses,iComb,energyList).get()
      if 'targetdir' in cardtypes[physmodels[iModel]['cardtype']]:
        TargetDir=workspace+'/'+options.Version+'/'+cardtypes[physmodels[iModel]['cardtype']]['targetdir']+'/'+iComb
        TargetDirGrid=workspace.split('/')[-2]+'/'+options.Version+'/'+cardtypes[physmodels[iModel]['cardtype']]['targetdir']+'/'+iComb
      else:
        TargetDir=workspace+'/'+options.Version+'/'+cardDir+'/'+iComb
        TargetDirGrid=workspace.split('/')[-2]+'/'+options.Version+'/'+cardDir+'/'+iComb
      print 'Target Dir : '+TargetDir
      print 'Masses List: '+str(massList)
      paramSet   = combTools.ParamSet_Maker(cardtypes,channels[options.Version],physmodels[iModel]['cardtype'],options.masses,'NONE',energyList).get()
      for iSet in range(0,len(paramSet['values'])) :
        iMass = paramSet['values'][iSet][0]
        print '------------------------------> Mass = '+str(iMass) + ' (Set: ' + str(paramSet['values'][iSet]) + ' )'       
        for iAltModel in options.AltModel:
          print '------------------------------> AltModel = '+iAltModel
          for iTarget in TargetList:
示例#4
0
 isValidEnergy = False
 for iEnergy in combinations[iComb]['energies']:
     if (options.energy == 7 or options.energy == 0) and iEnergy == '7TeV':
         isValidEnergy = True
     if (options.energy == 8 or options.energy == 0) and iEnergy == '8TeV':
         isValidEnergy = True
 # Validate Combination Purpose
 isValidPurpose = False
 for purpose in combinations[iComb]['purposes']:
     if options.purpose == purpose:
         isValidPurpose = True
 # Process if valid
 if isValidEnergy and isValidPurpose:
     massList = combTools.MassList_Filter(cardtypes,
                                          channels[options.Version],
                                          combinations, options.purpose,
                                          options.masses, iComb,
                                          energyList).get()
     print '---------------------- Building cards for combination: ' + iComb
     if 'targetdir' in cardtypes[options.purpose]:
         TargetDir = workspace + '/' + options.Version + '/' + cardtypes[
             options.purpose]['targetdir'] + '/' + iComb
     else:
         TargetDir = workspace + '/' + options.Version + '/' + cardDir + '/' + iComb
     print 'Target Dir : ' + TargetDir
     print 'Masses List: ' + str(massList)
     paramSet = combTools.ParamSet_Maker(cardtypes,
                                         channels[options.Version],
                                         options.purpose, options.masses,
                                         'NONE', energyList).get()
     for iSet in range(0, len(paramSet['values'])):