ATLAS Offline Software
Loading...
Searching...
No Matches
makeARTScripts.py
Go to the documentation of this file.
1import os
2
3makeDataDAODs=True
4makeMCDAODs=True
5makeTruthDAODs=True
6makeTrains=True
7makePHYStoPHYSLITE=True
8
9formatList = ["PHYSVAL","PHYS","PHYSLITE",
10 "LLP1","LLJ1","HIGG1D1","HIGG1D2", "HIGG9D1",
11 "JETM1","JETM2","JETM3","JETM4","JETM5","JETM7","JETM12","JETM42",
12 "IDTR2",
13 "EGAM1","EGAM2","EGAM3","EGAM4","EGAM5","EGAM7","EGAM8","EGAM9","EGAM10",
14 "FTAG1","FTAG1LITE","FTAG2","FTAG3","FTAGPU","FTAGXBB","FTAGSSV","FTAGTRIG",
15 "HID1",
16 "BPHY1","BPHY2","BPHY3","BPHY4","BPHY5","BPHY6","BPHY10","BPHY12","BPHY14","BPHY15","BPHY16","BPHY18","BPHY21","BPHY22",
17 "BPHY23","BPHY24","BPHY28",
18 "STDM6","STDM7","STDM13","STDM16","STDM17",
19 "SUSY20", "TLA2",
20 "TRIG8","TRIG9","TRIG10",
21 "MUON1", "MUON5",
22 "TCAL1",
23 "TOPQ7"
24]
25
26truthFormatList = ["TRUTH0", "TRUTH1", "TRUTH3"]
27
28trainList = [
29 ["EGAM1","EGAM2","EGAM3","EGAM4","EGAM5","EGAM7","EGAM8","EGAM9","EGAM10","JETM1","JETM3","JETM4","FTAG1","FTAG2","FTAG3","IDTR2","TRIG8","TRIG9","LLP1","STDM7","STDM13","HIGG1D1","MUON1"]
30]
31
32
33# Files
34com_dir = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CampaignInputs/"
35data23File = com_dir+"data23/AOD/data23_13p6TeV.00453713.physics_Main.recon.AOD.f1357/2012events.data23_13p6TeV.00453713.physics_Main.recon.AOD.f1357._lb1416._0006.1"
36data23CosFile = com_dir+"data23_cos/AOD/data23_cos.00459152.physics_CosmicMuons.merge.AOD.f1383_m2195/data23_cos.00459152.physics_CosmicMuons.merge.AOD.f1383_m2195._lb0124-lb0126._0001.1"
37data24File = com_dir+"data24/AOD/data24_13p6TeV.00486658.physics_Main.recon.AOD.f1522_m2262_r16385_r16377/AOD.43718985._000221.pool.root.1"
38
39data25Input = "user.martindl.data25_13p6TeV.00498515.physics_Main.merge.AOD.r17521_p7232"
40data25File = "root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-art/large-input/CampaignInputs/data25/AOD/data25_13p6TeV.00498515.physics_Main.merge.AOD.r17521_p7232/AOD.49752827._000024.pool.root.1"
41
42mc23dInput = "user.martindl.mc23_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.AOD.e8514_s4159_r15530"
43mc23dFile = "root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-art/large-input/CampaignInputs/mc23/AOD/mc23_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.AOD.e8514_s4159_r15530/AOD.38803011._001713.pool.root.1"
44mc23eInput = "user.martindl.mc23_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.AOD.e8514_s4369_r16083"
45mc23eFile = "root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-art/large-input/CampaignInputs/mc23/AOD/mc23_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.AOD.e8514_s4369_r16083/AOD.41608496._001231.pool.root.1"
46mc23gInput = "user.martindl.mc23_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.AOD.e8514_s4618_r17610"
47mc23gFile = "root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-art/large-input/CampaignInputs/mc23/AOD/mc23_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.AOD.e8514_s4618_r17610/AOD.50092877._002250.pool.root.1"
48
49mc21_14TeV_JETM42_Input = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/AOD/ATLAS-P2-RUN4-04-00-00/RUN4.AOD.JETM42.pool.root"
50
51
52import os
53mc20PHYSFile = os.getenv('ASG_TEST_FILE_MC')
54mc23PHYSFile = os.getenv('ASG_TEST_FILE_RUN3_MC')
55data18PHYSFile = os.getenv('ASG_TEST_FILE_DATA')
56data23PHYSFile = os.getenv('ASG_TEST_FILE_RUN3_DATA')
57
58def generateText(formatName,label,inputFile,isTruth,nEvents,inputExpression="",artInput=""):
59 add_str = ""
60 outputFileName = "test_"+label+formatName+add_str+".sh"
61 outputFile = open(outputFileName,"w")
62 outputFile.write("#!/bin/sh"+"\n")
63 outputFile.write("\n")
64 outputFile.write("# art-include: main/Athena"+"\n")
65 outputFile.write("# art-description: DAOD building "+formatName+" "+label+"\n")
66 outputFile.write("# art-type: grid"+"\n")
67 outputFile.write("# art-memory: 4096"+"\n")
68 if artInput:
69 outputFile.write("# art-input: "+artInput+"\n")
70 outputFile.write("# art-input-nfiles: 1 \n")
71 outputFile.write("# art-output: *.pool.root"+"\n")
72 outputFile.write("# art-output: checkFile*.txt"+"\n")
73 outputFile.write("# art-output: checkxAOD*.txt"+"\n")
74 outputFile.write("# art-output: checkIndexRefs*.txt"+"\n")
75 outputFile.write("\n")
76
77 if artInput:
78 outputFile.write("if [[ -z ${ArtInFile} ]]; then\n")
79 outputFile.write(" ArtInFile=\""+inputFile+"\"\n")
80 outputFile.write("fi\n")
81 outputFile.write("\n")
82 elif inputExpression:
83 inputVariable = "EVNT_File" if isTruth else "AOD_File"
84 outputFile.write(
85 inputVariable+"=$(python -c \"from AthenaConfiguration.TestDefaults import defaultTestFiles; print("
86 + inputExpression + ")\")\n"
87 )
88 outputFile.write("\n")
89
90 outputFile.write("set -e"+"\n")
91 outputFile.write("\n")
92
93 outputFile.write("Derivation_tf.py \\\n")
94 if isTruth:
95 if inputExpression:
96 outputFile.write("--inputEVNTFile ${EVNT_File} \\\n")
97 else:
98 outputFile.write("--inputEVNTFile "+inputFile+" \\\n")
99 else:
100 if artInput:
101 outputFile.write("--inputAODFile ${ArtInFile} \\\n")
102 elif inputExpression:
103 outputFile.write("--inputAODFile ${AOD_File} \\\n")
104 else:
105 outputFile.write("--inputAODFile "+inputFile+" \\\n")
106 outputFile.write("--outputDAODFile art.pool.root \\\n")
107 outputFile.write("--formats "+formatName+" \\\n")
108 outputFile.write("--maxEvents "+nEvents+" \\\n")
109
110 outputFile.write("\n")
111 outputFile.write("echo \"art-result: $? reco\""+"\n")
112 outputFile.write("\n")
113 outputFile.write("checkFile.py DAOD_"+formatName+".art.pool.root > checkFile_"+formatName+".txt"+"\n")
114 outputFile.write("\n")
115 outputFile.write("echo \"art-result: $? checkfile\""+'\n')
116 outputFile.write("\n")
117 outputFile.write("checkxAOD.py DAOD_"+formatName+".art.pool.root > checkxAOD_"+formatName+".txt"+"\n")
118 outputFile.write("\n")
119 outputFile.write("echo \"art-result: $? checkxAOD\""+'\n')
120 outputFile.write("\n")
121 outputFile.write("checkIndexRefs.py DAOD_"+formatName+".art.pool.root > checkIndexRefs_"+formatName+".txt 2>&1"+"\n")
122 outputFile.write("\n")
123 outputFile.write("echo \"art-result: $? checkIndexRefs\""+'\n')
124 outputFile.close()
125 os.system("chmod +x "+outputFileName)
126
127def generateTrains(formatList,label,inputFile,nEvents,inputExpression=""):
128 add_str = ""
129 outputFileName = "test_"+label+"_".join(formatList)+add_str+".sh"
130 outputFile = open(outputFileName,"w")
131 outputFile.write("#!/bin/sh"+"\n")
132 outputFile.write("\n")
133 outputFile.write("# art-include: main/Athena"+"\n")
134 outputFile.write("# art-description: DAOD building "+" ".join(formatList)+" "+label+"\n")
135 outputFile.write("# art-type: grid"+"\n")
136 outputFile.write("# art-output: *.pool.root"+"\n")
137 outputFile.write("# art-output: checkFile*.txt"+"\n")
138 outputFile.write("# art-output: checkxAOD*.txt"+"\n")
139 outputFile.write("# art-output: checkIndexRefs*.txt"+"\n")
140 outputFile.write("\n")
141
142 outputFile.write("set -e"+"\n")
143 outputFile.write("\n")
144
145 outputFile.write("formats=\"")
146 outputFile.write(" ".join(formatList))
147 outputFile.write("\"\n")
148 outputFile.write("\n")
149
150 if inputExpression:
151 outputFile.write(
152 'AOD_File=$(python -c "from AthenaConfiguration.TestDefaults import defaultTestFiles; print('
153 + inputExpression + ')")\n' )
154 outputFile.write("\n")
155
156 outputFile.write("Derivation_tf.py \\\n")
157 if inputExpression:
158 outputFile.write("--inputAODFile ${AOD_File} \\\n")
159 else:
160 outputFile.write("--inputAODFile "+inputFile+" \\\n")
161 outputFile.write("--outputDAODFile art.pool.root \\\n")
162 outputFile.write("--formats $formats \\\n")
163 outputFile.write("--maxEvents "+nEvents+" \\\n")
164 outputFile.write("\n")
165
166 outputFile.write("echo \"art-result: $? reco\""+"\n")
167 outputFile.write("\n")
168 outputFile.write("function checkFormat()\n")
169 outputFile.write("{\n")
170 outputFile.write(" format=$1\n")
171 outputFile.write(" checkFile.py DAOD_${format}.art.pool.root > checkFile_${format}.txt\n")
172 outputFile.write(" echo \"art-result: $? checkfile $format\"\n")
173 outputFile.write(" checkxAOD.py DAOD_${format}.art.pool.root > checkxAOD_${format}.txt\n")
174 outputFile.write(" echo \"art-result: $? checkxAOD $format\"\n")
175 outputFile.write(" checkIndexRefs.py DAOD_${format}.art.pool.root > checkIndexRefs_${format}.txt 2>&1\n")
176 outputFile.write(" echo \"art-result: $? checkIndexRefs $format\"\n")
177 outputFile.write("}\n")
178 outputFile.write("\n")
179 outputFile.write("for f in $formats; do\n")
180 outputFile.write(" checkFormat $f;\n")
181 outputFile.write("done\n")
182 outputFile.close()
183 os.system("chmod +x "+outputFileName)
184
185def generatePHYStoPHYSLITE(label,inputFile,nEvents):
186 add_str = "PHYStoPHYSLITE"
187 outputFileName = "test_"+label+"_"+add_str+".sh"
188 outputFile = open(outputFileName,"w")
189 outputFile.write("#!/bin/sh"+"\n")
190 outputFile.write("\n")
191 outputFile.write("# art-include: main/Athena"+"\n")
192 outputFile.write("# art-description: DAOD building PHYStoPHYSLITE "+label+"\n")
193 outputFile.write("# art-type: grid"+"\n")
194 outputFile.write("# art-output: *.pool.root"+"\n")
195 outputFile.write("# art-output: checkFile*.txt"+"\n")
196 outputFile.write("# art-output: checkxAOD*.txt"+"\n")
197 outputFile.write("# art-output: checkIndexRefs*.txt"+"\n")
198 outputFile.write("\n")
199 outputFile.write("set -e"+"\n")
200 outputFile.write("\n")
201 outputFile.write("Derivation_tf.py \\\n")
202 outputFile.write("--inputDAOD_PHYSFile "+inputFile+" \\\n")
203 outputFile.write("--outputD2AODFile art.pool.root \\\n")
204 outputFile.write("--formats PHYSLITE \\\n")
205 outputFile.write("--maxEvents "+nEvents+" \\\n")
206 outputFile.write("\n")
207 outputFile.write("echo \"art-result: $? reco\""+"\n")
208 outputFile.write("\n")
209 outputFile.write("checkFile.py D2AOD_PHYSLITE.art.pool.root > checkFile_PHYSLITE.txt"+"\n")
210 outputFile.write("\n")
211 outputFile.write("echo \"art-result: $? checkfile\""+'\n')
212 outputFile.write("\n")
213 outputFile.write("checkxAOD.py D2AOD_PHYSLITE.art.pool.root > checkxAOD_PHYSLITE.txt"+"\n")
214 outputFile.write("\n")
215 outputFile.write("echo \"art-result: $? checkxAOD\""+'\n')
216 outputFile.write("\n")
217 outputFile.write("checkIndexRefs.py D2AOD_PHYSLITE.art.pool.root > checkIndexRefs_PHYSLITE.txt 2>&1"+"\n")
218 outputFile.write("\n")
219 outputFile.write("echo \"art-result: $? checkIndexRefs\""+'\n')
220 outputFile.close()
221 os.system("chmod +x "+outputFileName)
222
223if (makeDataDAODs or makeMCDAODs):
224 for formatName in formatList:
225 # Special cases
226 if formatName == "JETM7":
227 # JETM7 requires per-vertex jet reconstruction, therefore running only over 100 events
228 if makeDataDAODs:
229 generateText(formatName,"data18",None,False,"100",
230 "defaultTestFiles.AOD_RUN2_DATA[0]")
231 generateText(formatName,"data24",data24File,False,"100")
232 if makeMCDAODs:
233 generateText(formatName,"mc20",None,False,"100",
234 "defaultTestFiles.AOD_RUN2_MC[0]")
235 generateText(formatName,"mc23",None,False,"100",
236 "defaultTestFiles.AOD_RUN3_MC[0]")
237 generateText(formatName,"mc21_14TeV_",None,False,"100",
238 "defaultTestFiles.AOD_RUN4_MC[0]")
239 continue
240 if formatName == "JETM42":
241 # JETM42 currently only used for upgrade studies
242 if makeMCDAODs:
243 generateText(formatName,"mc21_14TeV_",mc21_14TeV_JETM42_Input,False,"-1")
244 continue
245
246 # End special cases
247 if makeDataDAODs and not formatName in ["TOPQ7", "FTAG1", "FTAG1LITE", "HID1"]:
248 generateText(formatName,"data18",None,False,"-1",
249 "defaultTestFiles.AOD_RUN2_DATA[0]")
250 generateText(formatName,"data22",None,False,"-1",
251 "defaultTestFiles.AOD_RUN3_DATA[0]")
252 generateText(formatName,"data23",data23File,False,"-1")
253 generateText(formatName,"data24",data24File,False,"-1")
254 if formatName in ["PHYS", "PHYSLITE"]:
255 generateText(formatName,"data25",data25File,False,"1000",
256 artInput=data25Input)
257
258 if makeMCDAODs:
259 generateText(formatName,"mc20",None,False,"-1",
260 "defaultTestFiles.AOD_RUN2_MC[0]")
261 if formatName in ["PHYS", "PHYSLITE"]:
262 generateText(formatName,"mc23a",None,False,"-1",
263 "defaultTestFiles.AOD_RUN3_MC[0]")
264 generateText(formatName,"mc23d",mc23dFile,False,"1000",
265 artInput=mc23dInput)
266 generateText(formatName,"mc23e",mc23eFile,False,"1000",
267 artInput=mc23eInput)
268 generateText(formatName,"mc23g",mc23gFile,False,"1000",
269 artInput=mc23gInput)
270 else:
271 generateText(formatName,"mc23",None,False,"-1",
272 "defaultTestFiles.AOD_RUN3_MC[0]")
273 generateText(formatName,"mc21_14TeV_",None,False,"-1",
274 "defaultTestFiles.AOD_RUN4_MC[0]")
275
276 generateText("NCB1","data23cos",data23CosFile,False,"-1")
277
278if makeTruthDAODs:
279 for formatName in truthFormatList:
280 generateText(formatName,"mc23",None,True,"1000",
281 "defaultTestFiles.EVNT[0]")
282
283if makeTrains:
284 for train in trainList:
285 if makeDataDAODs:
286 generateTrains([f for f in train if f != "TRIG8"],
287 "data18",None,"-1",
288 "defaultTestFiles.AOD_RUN2_DATA[0]")
289 generateTrains(train,"data22",None,"-1",
290 "defaultTestFiles.AOD_RUN3_DATA[0]")
291 if makeMCDAODs:
292 generateTrains(train,"mc20",None,"-1",
293 "defaultTestFiles.AOD_RUN2_MC[0]")
294 generateTrains(train,"mc23",None,"-1",
295 "defaultTestFiles.AOD_RUN3_MC[0]")
296 generateTrains(train,"mc21_14TeV_",None,"-1",
297 "defaultTestFiles.AOD_RUN4_MC[0]")
298
299if makePHYStoPHYSLITE:
300 if makeDataDAODs:
301 generatePHYStoPHYSLITE("data18",data18PHYSFile,"-1")
302 generatePHYStoPHYSLITE("data23",data23PHYSFile,"-1")
303 if makeMCDAODs:
304 generatePHYStoPHYSLITE("mc20",mc20PHYSFile,"-1")
305 generatePHYStoPHYSLITE("mc23a",mc23PHYSFile,"-1")
generatePHYStoPHYSLITE(label, inputFile, nEvents)
generateText(formatName, label, inputFile, isTruth, nEvents, inputExpression="", artInput="")
generateTrains(formatList, label, inputFile, nEvents, inputExpression="")