Example #1
0
def createDBlink():
    # Create a database object.
    dblink = aix3adb.aix3adb()
    crab = crabFunctions.CrabController()
    # Authorize to database.
    #~ print( "Connecting to database: 'http://cern.ch/aix3adb'" )
    dblink.authorize(username = crab.checkusername())
    #~ log.info( 'Authorized to database.' )
    return dblink
Example #2
0
def createDBlink(options):


    # Create a database object.
    dblink = aix3adb.aix3adb()

    # Authorize to database.
    log.info( "Connecting to database: 'http://cern.ch/aix3adb'" )
    dblink.authorize(username = options.user)
    log.info( 'Authorized to database.' )
    return dblink
Example #3
0
 def __init__(self, directory_path="../cfg/xs/"):
     # set config file directory
     ## @var directory
     # Working directory of the config manager
     self.directory = os.path.abspath(directory_path)
     ## @var config
     # Config object that is being worked on after reading
     self.config = ConfigParser.SafeConfigParser()
     ## @var aix3adb
     # Aix3adb database object
     self.aix3adb = aix3adb.aix3adb()
Example #4
0
def main():
    args = commandline_parsing()

    # Create a database object.
    dblink = aix3adb.aix3adb()

    if args.datasetfile or args.dataset or args.samplefile:
        print '{:<75} {:<5} {:<5} {:<14} {:<12} {:<5} '.format('sample',
                                                                'id',
                                                                'skimId',
                                                                'xs',
                                                                'filter_eff',
                                                                'kfactor')
    # work on a list of datasetpath or sample names
        if args.datasetfile: infilepath = args.datasetfile
        if args.samplefile: infilepath = args.samplefile
        missing = []
        with open( infilepath, 'r') as infile:
            identifiers = infile.read().split('\n')
            for identifier in identifiers:
                try:
                    if args.datasetfile:
                        skim, sample = dblink.getMCLatestSkimAndSampleByDatasetpath(identifier)
                    if args.samplefile:
                        skim, sample = dblink.getMCLatestSkimAndSampleBySample(identifier)
                    print SkimAndSampleSummary(skim, sample)
                except Aix3adbException:
                    missing.append( identifier )
        if len(missing) > 0:
            print "No aix3adb entry found for the following datasetpath:"
            for p in missing: print p

        if args.dataset:
            #~ print args.dataset
            try:
                skim, sample = dblink.getMCLatestSkimAndSampleByDatasetpath( args.dataset )
                print SkimAndSampleSummary(skim, sample)
            except Aix3adbException:
                print "no sample found for datasetpath: /n %s " % args.dataset

    if args.listFields:
        skim, sample = dblink.getMCSkimAndSampleBySkim( 1601 )
        print "Showing list of all available fields with example output"
        print "Sample:"
        for key in sample.__dict__.keys():
            print '{:<45}  :   {:<30}'.format( key, sample.__dict__[key])

        print "Skim:"
        for key in skim.__dict__.keys():
            print '{:<45}  :   {:<30}'.format( key, skim.__dict__[key])
Example #5
0
def prepare(options, args):

    skimlist = readConfig( options, args )
    if not options.skipcheck:
        checkGridpack( options.localgridtarfile,
                       options.remotegridtarfile,
                       options.localgridpackdirectory,
                       options.gridpackfiles)
    dblink = aix3adb.aix3adb()

    if not options.prepareConfigs == "None":
        prepareConfigs( skimlist, options  )

    #~ for ( skim, sample, arguments ) in skimlist:
    for section in skimlist.keys():
        print "Preparing tasks for section {0}.".format(section)
        print "Found {0} tasks.".format(len( skimlist[ section ] ))
        for ( skim, sample, arguments ) in skimlist[ section ]:
            makeTask( options, skim, sample, section, arguments )
        if options.test:
            break
Example #6
0
def readConfig(options,args):

    dblink = aix3adb.aix3adb()
    config = MyConfigParser()
    config.read(args[0])

    optionNames = ['executable',
                   'outputfiles',
                   'inputfiles',
                   "gridoutputfiles",
                   "localgridpackdirectory",
                   "gridpackfiles",
                   "localgridtarfile",
                   "remotegridtarfile",
                   "cmssw",
                   "maxeventsoption",
                   "skipeventsoption",
                   "eventsperjob",
                   "filesperjob",
                   "datasections"]

    # Add options which are only present in certain cases
    if not options.prepareConfigs == "None":
        optionNames.append( 'configdir' )
    for option in optionNames:
        setattr( options, option, config.get("DEFAULT",option) )
    try:
        options.lumi = int( config.get('DEFAULT', 'lumi') )
    except:pass

    try:
        options.gridoutputfiles = options.gridoutputfiles.split(" ")
    except:
        print "error splitting gridoutputfiles"
    try:
        options.datasections = options.datasections.split(" ")
    except:
        print "error splitting datasections"
    # parse some infos to other types
    try:

        options.eventsperjob = int(options.eventsperjob)
    except:
        try:
            options.filesperjob = int(options.filesperjob)
        except:
            print "Error converting some files / rvents per job to int"
    sectionlist = {}
    for section in config.sections():
        if section in ["DEFAULT"]: continue
        if section != [] and section not in section: continue
        mc = not (section in options.datasections)
        identifiers=config.optionsNoDefault(section)
        sectionlist.update( {section:[]} )
        for identifier in identifiers:
            arguments = shlex.split(config.get(section, identifier))
            try:
                if identifier[0]=="/":
                    #it's a datasetpath
                    if mc:
                        skim, sample = dblink.getMCLatestSkimAndSampleByDatasetpath(identifier)
                    else:
                        skim, sample = dblink.getDataLatestSkimAndSampleByDatasetpath(identifier)
                elif identifier.isdigit():
                    #it's a skim id
                    if mc:
                        skim, sample = dblink.getMCSkimAndSampleBySkim(identifier)
                    else:
                        skim, sample = dblink.getDataSkimAndSampleBySkim(identifier)
                else:
                    #it's a sample name
                    if mc:
                        skim, sample = dblink.getMCLatestSkimAndSampleBySample(identifier)
                    else:
                        skim, sample = dblink.getDataLatestSkimAndSampleBySample(identifier)
            except Aix3adbException:
                print "Can not find sample and skim for identifier %s" % str(identifier)
                sys.exit(1)
            sectionlist[ section ].append( ( skim, sample, arguments) )
    return sectionlist
Example #7
0
def main():
    pp = pprint.PrettyPrinter(indent=4)
    dblink=aix3adb.aix3adb()
    # Ein Datenbank-Objekt erstellen
    skim, sample = dblink.getMCLatestSkimAndSampleByDatasetpath("/DarkMatter_MonoZToLL_A_Mx-50_Mv-50_gDMgQ-1_TuneCUETP8M1_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM")
    print skim.__dict__
    liste = len(dblink.searchDataSkimsAndSamples({"owner":"serdweg",'id':'>80'},dict()))
    print liste
    #dblink=aix3adb.aix3adbAuth(username="******")
    
    #dblink.searchMCSkimsAndSamples
    raise Exception()
    # Insert a sample
    print "Insert a sample"
    sample0 = aix3adb.MCSample()
    sample0.name=id_generator()
    sample1 = dblink.insertMCSample(sample0)
    print sample1.__dict__

    # Insert a skim
    print "Insert a skim"
    skim0 = aix3adb.MCSkim()
    file1={"path":"blub1","nevents":19999}
    file2={"path":"blub2","nevents":1}
    files=[file1,file2]
    skim0.files = files
    skim0.datasetpath=id_generator()
    skim0.sampleid=sample1.id
    skim1 = dblink.insertMCSkim(skim0)
    print skim1.__dict__

    # Request Sample
    print "Request Sample"
    sample2 = dblink.getMCSample(sample1.name)
    print sample2.__dict__

    # Request Skim
    print "Request Skim"
    skim2 = dblink.getMCSkim(skim1.id)
    print skim2.__dict__

    # Edit sample
    print "Edit sample - set energy to 99"
    sample2.energy="99"
    sample3 = dblink.editMCSample(sample2)
    print sample3.__dict__

    # Edit skim
    print "Edit skim - change files and set to finished"
    skim2.isfinished="1"
    file1={"path":"neuerpath","nevents":5}
    file2={"path":"neuerpath2","nevents":5}
    files=[file1,file2]
    skim2.files = files
    skim3 = dblink.editMCSkim(skim2)
    print skim3.__dict__
    
    # Request Sample and skim with skimid and samplename
    print "Request Sample and skim with skimid and samplename"
    skim4, sample4 = dblink.getMCSkimAndSample(skim3.id, sample3.name)
    print skim4.__dict__, sample4.__dict__

    # Request Sample and skim with samplename only
    print "Request Sample and skim with samplename only"
    skim5, sample5 = dblink.getMCSkimAndSample(None, sample3.name)
    print skim5.__dict__, sample5.__dict__

    # Request Sample and skim with skimid only
    print "Request Sample and skim with skimid only"
    skim6, sample6 = dblink.getMCSkimAndSample(skim3.id, None)
    print skim6.__dict__, sample6.__dict__

    # Request Sample and skim with not skimid and samplename not matching
    print "Request Sample and skim with not skimid and samplename not matching"
    skim7, sample7 = dblink.getMCSkimAndSample(skim3.id, "das ist der falsche sample name")
    print skim7.__dict__, sample7.__dict__