16logging.basicConfig(format=
'%(asctime)s %(levelname)s %(message)s', datefmt=
'%H:%M:%S')
17log = logging.getLogger(
"myXsecLogger")
18log.setLevel(logging.INFO)
29mainFolder = os.getcwd()
30xsecFolder = mainFolder+
"/XsecFiles/"
31SimpleFunctions.MakeFolder(xsecFolder)
34allProcesses = DefineTags.ReturnSampleCategory()
37allFolders_mc15 = glob.glob(mainFolder+
"/AllSampleInfo_mc15_13TeV/DSID*/*")
38allFolders_mc15 = sorted(allFolders_mc15)
40allFolders_mc16 = glob.glob(mainFolder+
"/AllSampleInfo_mc16_13TeV/DSID*/*")
41allFolders_mc16 = sorted(allFolders_mc16)
43allFolders = allFolders_mc15 + allFolders_mc16
51for entry
in allFolders:
53 DSID = (entry.split(
"XXX/"))[1]
54 if DSID
in processed_DSIDs:
56 processed_DSIDs.append(DSID)
58 statusFiles_list = glob.glob(entry+
"/Status*.txt")
60 if len(statusFiles_list) == 0:
65 for iStatus
in statusFiles_list:
67 AllInfo = StatusFiles.StatusFileReader(iStatus)
68 totalEvents = AllInfo.totalEvents
70 log.debug(
"Reading nevents for %s", AllInfo.dataset)
73 log.error(
"Total Number of Events: %s - Sample %s", str(totalEvents), str(iStatus))
76 totalEvents = float(AllInfo.totalEvents)
77 if totalEvents > nEvents:
81 AllInfo = StatusFiles.StatusFileReader(inputFile)
83 SortingTag = AllInfo.SortingTag
87 log.error(
"Xsec is NAN (%s) for DSID %s", str(xsec), DSID)
90 xsec = float(xsec)*1000.
91 filterEff = AllInfo.filterEff
93 log.error(
"filterEff is NAN (%s) for DSID %s", str(filterEff), DSID)
95 kFactor = AllInfo.kFactor
97 log.error(
"kFactor is NAN (%s) for DSID %s", str(kFactor), DSID)
99 dataset = AllInfo.dataset
100 higherOrderXsec = AllInfo.higherOrderXsec
101 higherOrderXsecSample = str(float(xsec)*float(kFactor)*float(filterEff))
110 if os.path.isfile(mainFolder+
"/AllSampleInfo_mc15_13TeV/SummaryInfo/ListAOD_mc15_13TeV..txt"):
111 arrayAOD_mc15 = SimpleFunctions.GetArraysFromTxtWithString(mainFolder+
"/AllSampleInfo_mc15_13TeV/SummaryInfo/ListAOD_mc15_13TeV..txt", DSID)
112 for iAOD
in arrayAOD_mc15:
113 if "r7725" in iAOD[0]
or "r7772" in iAOD[0]
or "a818" in iAOD[0]
or "a821" in iAOD[0]:
114 nEv_mc15 = nEv_mc15 + float(iAOD[1])
116 if os.path.isfile(mainFolder+
"/AllSampleInfo_mc16_13TeV/SummaryInfo/ListAOD_mc16_13TeV..txt"):
117 arrayAOD_mc16 = SimpleFunctions.GetArraysFromTxtWithString(mainFolder+
"/AllSampleInfo_mc16_13TeV/SummaryInfo/ListAOD_mc16_13TeV..txt", DSID)
118 for iAOD
in arrayAOD_mc16:
119 if "r9294" in iAOD[0]
or "r9315" in iAOD[0]:
120 nEv_mc16a = nEv_mc16a + float(iAOD[1])
121 if "r9778" in iAOD[0]
or "r10009" in iAOD[0]:
122 nEv_mc16c = nEv_mc16c + float(iAOD[1])
123 if "r10210" in iAOD[0]:
124 nEv_mc16d = nEv_mc16d + float(iAOD[1])
125 if "r999999999999" in iAOD[0]:
126 nEv_mc16e = nEv_mc16e + float(iAOD[1])
129 datasetSplit = dataset.split(
".evgen")
130 datasetLabel = dataset
132 entry = [
"",
"",
"",
"",
"",
"",
"",
"",
"",
""]
134 if float(higherOrderXsecSample) > 0.:
136 SampleLumi = round(float(nEv_mc16a)/(float(higherOrderXsecSample))/1000.0, 2)
138 SampleLumi = round(float(nEv_mc15)/(float(higherOrderXsecSample))/1000.0, 2)
142 tableEntry = [DSID, datasetLabel, str(float(xsec)), str(float(filterEff)), higherOrderXsec, str(float(kFactor)), SortingTag, str(SampleLumi), str(nEv_mc15), str(nEv_mc16a), str(nEv_mc16c), str(nEv_mc16d), str(nEv_mc16e), higherOrderXsecSample]
144 allXsec.append(tableEntry)
146for Process
in allProcesses:
147 OutputFile = xsecFolder+
"/list_Xsec_"+Process+
".txt"
148 f = open(OutputFile,
"w")
149 f.write(
"| DSID | Sample | Events (mc15) | Events (mc16a) | Events (mc16c) | Events (mc16d) | Events (mc16e) | Sample Lumi (mc15/16a only) [fb-1] | Cross section [pb] | FiltEff | Total higher order xsec [pb] | K-factor | Higher order xsec sample [pb] | \n")
151 for entry
in allXsec:
153 if Process == entry[6]:
155 finalXsec = str(float(entry[2])*float(entry[3])*float(entry[5]))
157 f.write(
"| "+entry[0]+
" | "+entry[1]+
" | "+entry[8]+
" | "+entry[9]+
" | "+entry[10]+
" | "+entry[11]+
" | "+entry[12]+
" | "+ entry[7] +
" | "+entry[2]+
" | " +str(round(float(entry[3]), 6))+
" | " +entry[4]+
" | "+str(round(float(entry[5]), 4))+
" | " +str(round(float(entry[13]), 9))+
" | \n")
161 OutputFile = xsecFolder+
"/list_Xsec_"+Process+
"_Download.txt"
163 f = open(OutputFile,
"w")
164 f.write(
"# DSID \t Sample \t Xsec \t FiltEff \t Total higher order xsec \t K-factor \t Higher order xsec sample \n")
166 for entry
in allXsec:
167 if Process == entry[6]:
169 finalXsec = str(float(entry[2])*float(entry[3])*float(entry[5]))
171 if len(entry[4]) != 1:
172 f.write(entry[0]+
" \t "+entry[1]+
" \t "+entry[2] +
" \t " +entry[3]+
" \t " +entry[4]+
" \t "+entry[5]+
" \t " +entry[9]+
" \n")
174 if "Undef" in entry[9]:
175 f.write(entry[0]+
" \t "+entry[1]+
" \t "+entry[2] +
" \t " +entry[3]+
" \t " +entry[4]+
" \t Undef. \t " +finalXsec+
" \n")
177 f.write(entry[0]+
" \t "+entry[1]+
" \t "+entry[2] +
" \t " +entry[3]+
" \t " +entry[4]+
" \t Undef. \t " +entry[9]+
" \n")
180OutputFile = xsecFolder+
"/list_Xsec_TopDataPrep.txt"
181f = open(OutputFile,
"w")
182f.write(
"# DSID \t \t AMIXsec * FiltEff \t K-factor \n")