ATLAS Offline Software
GeneratorAlgorithmsTest_eljob.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #
3 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
4 #
5 # @author Tadej Novak
6 
7 
8 # Read the submission directory as a command line argument. You can
9 # extend the list of arguments with your private ones later on.
10 import optparse
11 parser = optparse.OptionParser()
12 parser.add_option( '-d', '--data-type', dest = 'data_type',
13  action = 'store', type = 'string', default = 'mc',
14  help = 'Type of data to run over. Valid options are mc, afii' )
15 parser.add_option( '-s', '--submission-dir', dest = 'submission_dir',
16  action = 'store', type = 'string', default = 'submitDir',
17  help = 'Submission directory for EventLoop' )
18 parser.add_option( '-u', '--unit-test', dest='unit_test',
19  action = 'store_true', default = False,
20  help = 'Run the job in "unit test mode"' )
21 ( options, args ) = parser.parse_args()
22 
23 # Set up (Py)ROOT.
24 import ROOT
25 ROOT.xAOD.Init().ignore()
26 
27 # ideally we'd run over all of them, but we don't have a mechanism to
28 # configure per-sample right now
29 
30 dataType = options.data_type
31 
32 inputfile = {"mc": 'ASG_TEST_FILE_MC',
33  "afii": 'ASG_TEST_FILE_MC_AFII'}
34 
35 if dataType not in ["mc", "afii"] :
36  raise ValueError ("invalid data type: " + dataType)
37 
38 # Set up the sample handler object. See comments from the C++ macro
39 # for the details about these lines.
40 import os
41 sh = ROOT.SH.SampleHandler()
42 sh.setMetaString( 'nc_tree', 'CollectionTree' )
43 sample = ROOT.SH.SampleLocal (dataType)
44 sample.add (os.getenv (inputfile[dataType]))
45 sh.add (sample)
46 sh.printContent()
47 
48 # Create an EventLoop job.
49 job = ROOT.EL.Job()
50 job.sampleHandler( sh )
51 job.options().setDouble( ROOT.EL.Job.optMaxEvents, 500 )
52 
53 from AsgAnalysisAlgorithms.AsgAnalysisAlgorithmsTest import makeGeneratorAlgorithmsSequence
54 algSeq = makeGeneratorAlgorithmsSequence (dataType)
55 print( algSeq ) # For debugging
56 algSeq.addSelfToJob( job )
57 
58 # Set up an output file for the job:
59 job.outputAdd( ROOT.EL.OutputStream( 'ANALYSIS' ) )
60 
61 # Find the right output directory:
62 submitDir = options.submission_dir
63 if options.unit_test:
64  import os
65  import tempfile
66  submitDir = tempfile.mkdtemp( prefix = 'genTest_', dir = os.getcwd() )
67  os.rmdir( submitDir )
68  pass
69 
70 # Run the job using the direct driver.
71 driver = ROOT.EL.DirectDriver()
72 driver.submit( job, submitDir )
DiTauMassTools::ignore
void ignore(T &&)
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:54
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28