00001
00002
00003 import os
00004 import sys
00005
00006 if(len(sys.argv)<2):
00007 print "Useage: genRecEmupikp.py path [cluster] [dirname] [particletype]"
00008 print "Example: genRecEmupikp.py /besfs/users/anff/radee2/ 50 radee 0"
00009 sys.exit()
00010 if(len(sys.argv)>=2):
00011 rawpath = str(sys.argv[1])
00012 if(len(sys.argv)>=3):
00013 nclu = int(sys.argv[2])
00014 else:
00015 nclu = 50
00016 if(len(sys.argv)>=4):
00017 dirname = str(sys.argv[3])
00018 else:
00019 dirname = rawpath.split("/")[-2]
00020 if(len(sys.argv)>=5):
00021 ptype = str(sys.argv[4])
00022 elif(rawpath.find("bb")>-1 or rawpath.find("radee")>-1):
00023 ptype = 0
00024 elif(rawpath.find("dimu")>-1):
00025 ptype = 1
00026 elif(rawpath.find("tagd")>-1):
00027 ptype = 2
00028 elif(rawpath.find("proton")>-1):
00029 ptype = 4
00030 else:
00031 print "the partcile type is unknown from path"
00032 sys.exit()
00033
00034 range = 1
00035 min = 20683
00036 max = 23462
00037 if(range>0):
00038 print "this script only for run: ", min, " - ", max
00039 print "working on " + dirname
00040 os.system("mkdir " + dirname)
00041 os.chdir(dirname)
00042 fileList = os.walk(rawpath)
00043 count = 0
00044 flag = 1
00045 allcount = 0
00046 allfilenum = 0
00047
00048 for filename in fileList:
00049 for eachfile in filename[2]:
00050 if(eachfile.find(".raw")>-1):
00051 allfilenum += 1
00052 print "Total file: ", allfilenum
00053 fileList = os.walk(rawpath)
00054 rawlist = []
00055 for filename in fileList:
00056 for eachfile in filename[2]:
00057 if(eachfile.find(".raw")>-1):
00058 allcount += 1
00059 rawfile = filename[0] + "/" + eachfile
00060 num = (int)(rawfile[-13:-8])
00061 if( range>0 and (num<min or num>max) ):
00062 print "run ", num, " out of range ", min, " - ", max
00063 else:
00064 rawlist.append(rawfile)
00065 count += 1
00066 if(count==nclu or allcount==allfilenum):
00067 count = 0
00068 jobfilename = "jobOptions_rec_" + dirname + "_" + str(flag) + ".txt"
00069 recfilename = dirname + "_" + str(flag) + ".rec"
00070 dstfilename = dirname + "_" + str(flag) + ".dst"
00071 rootfilename = dirname + "_" + str(flag) + ".root"
00072 flag += 1
00073 os.system("cp $run/jobOptions_rec_data.txt tempfile.txt")
00074 jobfile = open(jobfilename,"w")
00075 tempfile = open("tempfile.txt","r")
00076 for line in tempfile:
00077 if(line.find("Dst2Root")>-1):
00078 line = "#include \"$ROOTIOROOT/share/jobOptions_Rec2Root_data.txt\"\n"
00079 if(line.find("RawDataInputSvc.InputFiles")>-1):
00080 line = "RawDataInputSvc.InputFiles={\n"
00081 jobfile.write(line)
00082 i = 0
00083 listlen = len(rawlist)
00084 while(i<listlen):
00085 i += 1
00086 if(i==listlen):
00087 jobfile.write(" \"" + rawlist.pop() + "\"\n")
00088 else:
00089 jobfile.write(" \"" + rawlist.pop()+"\",\n")
00090 line = "};\n"
00091 if(line.find("ApplicationMgr.EvtMax")>-1):
00092 line = "ApplicationMgr.EvtMax = -1;"
00093 if(line.find("RootCnvSvc.digiRootOutputFile")>-1):
00094 jobfile.write("RootCnvSvc.digiRootOutputFile = \"" + recfilename + "\";\n")
00095 jobfile.write("ApplicationMgr.HistogramPersistency = \"ROOT\";\n")
00096 line = "NTupleSvc.Output = {\"FILE103 DATAFILE =\'" + rootfilename + "\' OPT=\'NEW\' TYP=\'ROOT\'\"};\n"
00097 jobfile.write(line)
00098 if(line.find("MDCDEDXALGROOT")>-1):
00099 jobfile.write("MdcDedxRecon1.NtupleFlag = 2;\n")
00100 jobfile.write("MdcDedxRecon1.ParticleType = " + str(ptype) + ";\n")
00101 jobfile.close()
00102 os.system("rm tempfile.txt")
00103 os.chdir("../")
00104
00105