Пример #1
0
def insert(attributes):
    values = []
    keys = []
                  
    dir1 = "/BES3_test/File/"+attributes["resonance"]+"/"+attributes["bossVer"]
    
    #get real eventType and expNum in catalogue in amga
    eventType = getEventType(attributes["eventType"])
    expNum = getExpNum(attributes["expNum"])

    if attributes["streamId"]=="stream0":
        dir=dir1+"/data"
    else:
        dir=dir1+"/mc"

    client=mdclient.MDClient('badger01.ihep.ac.cn',8822,'amga','Amg@Us3r')   
    #client=mdclient.MDClient('besdev01.ihep.ac.cn',8822,'root')   
  
    #get insertion directory in amga
    insertDir = createCatalog(client,dir,eventType,expNum,attributes["streamId"])
    
    #LFN is directory + filename in amga
    entry=insertDir+"/"+attributes["LFN"]
    attributes["LFN"] = entry
    
    for key in attributes.keys():
        keys.append(key)
        values.append(attributes[key])

    try:
        #insert dst file to amga
        client.addEntry(entry,keys,values)
    except mdinterface.CommandException,ex:
        print "Error",ex
Пример #2
0
def compare(attributes, input):
    list = {}
    inamga = {}
    n = 0

    #print "input keys:",input.keys()
    keys = sorted(input.keys())
    #print "keys after being sorted:",keys

    expNum = getExpNum(attributes["expNum"])
    eventType = getEventType(attributes["eventType"])
    dir = "/BES3/File/" + attributes["resonance"] + "/" + attributes["bossVer"]

    if attributes["streamId"] == "stream0":
        dir += "/data" + "/" + eventType + "/" + expNum
    else:
        dir += "/mc" + "/" + eventType + "/" + expNum + "/" + attributes[
            "streamId"]

    entry = dir + "/" + attributes["LFN"]

    client = mdclient.MDClient('badger01.ihep.ac.cn', 8822, 'amga', 'Amg@Us3r')

    client.getattr(entry,
                   ['resonance', 'streamId', 'eventType', 'bossVer', 'expNum'])
    result = client.getEntry()[1]
    inamga["resonance"] = result[0]
    inamga["streamId"] = result[1]
    inamga["eventType"] = result[2]
    inamga["bossVer"] = result[3]
    inamga["expNum"] = result[4]

    for key in keys:
        if input[key] != inamga[key]:
            list[key] = inamga[key]

        n += 1

    if list is not None:
        return list
Пример #3
0
def eventTypeCheck(eventType):
    entries = []
    
    client = mdclient.MDClient('badger01.ihep.ac.cn',8822,'amga','Amg@Us3r')
    #client = mdclient.MDClient('besdev01.ihep.ac.cn',8822,'root')
    client.listEntries('/BES3_test/EventTypeList')

    entry = client.getEntry()[0]
    while entry:
        entries.append(entry)
        entry = client.getEntry()[0]

    for entry in entries:
        #get name of each entry
        client.getattr(entry,['FILE'])
        result = client.getEntry()[1]

        #compare eventType with name of each entry
        if eventType == result[0]:
            return True
        
    return False
Пример #4
0
def insertToExp(items):
    #items is a list,and contains values of 
    #'runFrm','runTo','dateFrm','dateTo','expNum','resonance','roundId'
    
    client=mdclient.MDClient('badger01.ihep.ac.cn',8822,'amga','Amg@Us3r')
    
    keys=['Id','runFrm','runTo','dateFrm','dateTo','expNum','resonance','roundId']
    
    #In items, the types of runFrm and runTo are str
    runfrm=string.atoi(items[0])
    runto=string.atoi(items[1])
    expnum = string.lower(items[4])
    resonance = string.lower(items[5])
    roundid = string.lower(items[6])
    
    id = uuid.uuid1()
    values=[id,runfrm,runto,items[2],items[3],expnum,resonance,roundid]

    #set entry name is resonance+"_"+expnum
    entryName='/BES3/ExpSearch/'+resonance+"_"+expnum
    try:
        client.addEntry(entryName,keys,values)
    except mdinterface.CommandException,ex:
        print "Error",ex
Пример #5
0
        client.addAttr("/BES3/ExpSearch", "dateFrm", "timestamp")
        client.addAttr("/BES3/ExpSearch", "dateTo", "timestamp")
        client.addAttr("/BES3/ExpSearch", "expNum", "varchar(20)")
        client.addAttr("/BES3/ExpSearch", "resonance", "varchar(20)")
        client.addAttr("/BES3/ExpSearch", "roundId", "varchar(20)")
    except mdinterface.CommandException, ex:
        print "Error", ex


def createEventTypeList(client):
    try:
        client.createDir("/BES3/EventTypeList")
    except mdinterface.CommandException, ex:
        print "Error", ex


if __name__ == "__main__":
    client = mdclient.MDClient('badger01.ihep.ac.cn', 8822, 'amga', 'Amg@Us3r')
    resonance = ["jpsi", "psip", "psipp", "psi4040", "con3650", "psippscan"]
    bossVer = ["6.5.5", "6.6.1"]
    type = ["data", "mc"]

    try:
        client.createDir("/BES3")
    except mdinterface.CommandException, ex:
        print "Error", ex

    createFileDir(client, resonance, bossVer, type)
    createExpSearch(client)
    createEventTypeList(client)
Пример #6
0
def getExpRes(runids):
    entries = []
    expRes = {}
    expNumList = []
    resList = []
    
    #print"runids",runids
    client = mdclient.MDClient('badger01.ihep.ac.cn',8822,'amga','Amg@Us3r')
    #client = mdclient.MDClient('besdev01.ihep.ac.cn',8822,'root')
    #get all entries under catalog "/BES3/ExpSearch"
    client.listEntries('/BES3_test/ExpSearch')
   
    entry = client.getEntry()[0]
    while entry:
         entries.append(entry)
         entry = client.getEntry()[0]
         
    if entries is None:
        print "ExpSearch directory is empty, please run createBesDir first"
        return Flase

    for item in entries:
        #for each entry,get its attributes in amga
        client.getattr(item,['Id','runFrm','runTo','expNum','resonance'])
        result = client.getEntry()[1]
        # print item
       # print result
        
        runfrm = string.atoi(result[1])
        runto = string.atoi(result[2])
    
        for runid in runids:
            #check all runid whether between runfrm and runto of each entry 
            #under catalog "/BES3/ExpSearch"
            if runfrm<=runid<=runto:
                #if this runid between runfrm and runto,and expNum isn't in expNumList
                #add this expNum to expNumList
                if result[3] not in expNumList:
                    expNumList.append(result[3])

                #resonance of this id isn't in resonance List,add it to resList
                if result[4] not in resList:
                    resList.append(result[4])
                    
    #only including one resonance
    if len(resList) == 1:
        expRes["resonance"] = resList[0]
    else:
        #has several resonances,may be has something wrong to this file
        print "serveral resonance:",resList
        return False

    #only including one expNum
    if len(expNumList) == 1:
        expRes["expNum"] = expNumList[0]
    else:
        #if including several expNums,combine these expNum into mexpN1pN2p...
        sorted(expNumList)
        str = "m" + expNumList[0]
        for expNum in expNumList[1:]:
            str = str + "p+" + getNum(expNum)
           
        expRes["expNum"] = str

    return expRes