/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/DedxCalibAlg/DedxCalibAlg-00-01-15/share/shell/genRecEmupikp.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
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 # calculate how many raw files need to be reconstructed
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 

Generated on Tue Nov 29 23:12:45 2016 for BOSS_7.0.2 by  doxygen 1.4.7