ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
D3PDTools
EventLoop
Root
SubmitManager.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
9
//
10
// includes
11
//
12
13
#include <
EventLoop/SubmitManager.h
>
14
15
#include <
AsgMessaging/StatusCode.h
>
16
#include <
EventLoop/Driver.h
>
17
#include <
EventLoop/Job.h
>
18
#include <
EventLoop/ManagerData.h
>
19
#include <
EventLoop/ManagerOrder.h
>
20
#include <
EventLoop/MessageCheck.h
>
21
#include <
EventLoop/MetricsSvc.h
>
22
#include <
RootCoreUtils/Assert.h
>
23
#include <
SampleHandler/Sample.h
>
24
#include <
SampleHandler/SampleHist.h
>
25
#include <TFile.h>
26
#include <TSystem.h>
27
#include <fstream>
28
29
using namespace
EL::msgEventLoop;
30
31
//
32
// method implementations
33
//
34
35
namespace
EL
36
{
37
namespace
Detail
38
{
39
std::pair<Detail::ManagerOrder,std::string> SubmitManager ::
40
getManagerOrder ()
const
noexcept
41
{
42
return
std::make_pair (
ManagerOrder::OPERATION
,
""
);
43
}
44
45
46
47
::StatusCode
SubmitManager ::
48
doManagerStep (
Detail::ManagerData
& data)
const
49
{
50
switch
(data.step)
51
{
52
case
Detail::ManagerStep::initial
:
53
{
54
if
(data.resubmit)
55
data.nextStep =
Detail::ManagerStep::initialResubmit
;
56
else
57
data.nextStep =
Detail::ManagerStep::initialSubmit
;
58
}
59
break
;
60
61
case
Detail::ManagerStep::fillOptions
:
62
{
63
data.options = *data.job->options();
64
data.options.fetchDefaults (*data.driver->options());
65
}
66
break
;
67
68
case
Detail::ManagerStep::addSystemAlgs
:
69
{
70
if
(data.options.castBool (
Job::optDisableMetrics
,
false
))
71
if
(!data.job->algsHas (
MetricsSvc::name
))
72
data.job->algsAdd (
new
MetricsSvc
);
73
}
74
break
;
75
76
case
Detail::ManagerStep::prepareSubmitDir
:
77
{
78
{
79
std::unique_ptr<TFile>
file
(TFile::Open ((data.submitDir +
"/driver.root"
).c_str(),
"RECREATE"
));
80
file
->WriteObject (data.driver,
"driver"
);
81
file
->Close ();
82
}
83
data.job->sampleHandler().save (data.submitDir +
"/input"
);
84
{
85
std::ofstream
file
((data.submitDir +
"/location"
).c_str());
86
file
<< data.submitDir <<
"\n"
;
87
}
88
89
SH::SampleHandler
sh_hist;
90
for
(
SH::SampleHandler::iterator
sample = data.job->sampleHandler().begin(),
91
end = data.job->sampleHandler().end(); sample != end; ++ sample)
92
{
93
const
std::string histfile
94
= data.submitDir +
"/hist-"
+ (*sample)->name() +
".root"
;
95
std::unique_ptr<SH::SampleHist> hist
96
(
new
SH::SampleHist
((*sample)->name(), histfile));
97
hist->meta()->fetch (*(*sample)->meta());
98
sh_hist.
add
(std::move (hist));
99
}
100
sh_hist.
save
(data.submitDir +
"/hist"
);
101
}
102
break
;
103
104
case
Detail::ManagerStep::submitJob
:
105
{
106
ANA_MSG_INFO
(
"submitting job in "
<< data.submitDir);
107
}
108
break
;
109
110
case
Detail::ManagerStep::postSubmit
:
111
{
112
if
(!data.submitted)
113
{
114
ANA_MSG_FATAL
(
"Driver::submit not implemented in class "
<<
typeid
(*data.driver).name());
115
std::abort ();
116
}
117
118
ANA_MSG_DEBUG
(
"make submitted"
);
119
// this particular file can be checked to see if a job has
120
// been submitted successfully.
121
std::ofstream ((data.submitDir +
"/submitted"
).c_str());
122
}
123
break
;
124
125
case
Detail::ManagerStep::finalSubmit
:
126
{
127
data.nextStep =
Detail::ManagerStep::final
;
128
}
129
break
;
130
131
case
Detail::ManagerStep::finalResubmit
:
132
{
133
if
(!data.submitted)
134
{
135
ANA_MSG_FATAL
(
"Driver::resubmit not implemented in class "
<<
typeid
(*data.driver).name());
136
std::abort ();
137
}
138
139
data.nextStep =
Detail::ManagerStep::final
;
140
}
141
break
;
142
143
default
:
144
(void)
true
;
// safe to do nothing
145
}
146
return ::StatusCode::SUCCESS;
147
}
148
}
149
}
Assert.h
ANA_MSG_INFO
#define ANA_MSG_INFO(xmsg)
Macro printing info messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:290
ANA_MSG_DEBUG
#define ANA_MSG_DEBUG(xmsg)
Macro printing debug messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:288
ANA_MSG_FATAL
#define ANA_MSG_FATAL(xmsg)
Macro printing fatal messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:296
StatusCode.h
Driver.h
Job.h
ManagerData.h
ManagerOrder.h
MetricsSvc.h
MessageCheck.h
SampleHist.h
Sample.h
SubmitManager.h
EL::Job::optDisableMetrics
static const std::string optDisableMetrics
description: the option to turn off collection of performance data
Definition
Job.h:409
EL::MetricsSvc
Definition
MetricsSvc.h:19
EL::MetricsSvc::name
static const std::string name
description: the name of the service
Definition
MetricsSvc.h:26
SH::SampleHandler
A class that manages a list of Sample objects.
Definition
SampleHandler.h:53
SH::SampleHandler::save
void save(const std::string &directory) const
save the list of samples to the given directory
SH::SampleHandler::add
void add(const Sample &sample)
add a copy of the sample to the handler
SH::SampleHandler::iterator
boost::transform_iterator< SamplePtrToRawSample, std::vector< std::shared_ptr< Sample > >::const_iterator > iterator
the iterator to use
Definition
SampleHandler.h:457
SH::SampleHist
A sample that represents a single histogram file.
Definition
SampleHist.h:23
const
EL::Detail
Definition
AsgComponentFactories.h:20
EL::Detail::ManagerStep::finalSubmit
@ finalSubmit
the final submit step
Definition
ManagerStep.h:101
EL::Detail::ManagerStep::final
@ final
Definition
ManagerStep.h:136
EL::Detail::ManagerStep::finalResubmit
@ finalResubmit
the final resubmit step
Definition
ManagerStep.h:119
EL::Detail::ManagerStep::submitJob
@ submitJob
do the actual job submission
Definition
ManagerStep.h:92
EL::Detail::ManagerStep::addSystemAlgs
@ addSystemAlgs
add any system algorithms to the job that may need to get added
Definition
ManagerStep.h:71
EL::Detail::ManagerStep::fillOptions
@ fillOptions
in this step we fill the options structure, combining the different locations from which we can pull ...
Definition
ManagerStep.h:56
EL::Detail::ManagerStep::initial
@ initial
this is just the initial step we do, nothing really happens here
Definition
ManagerStep.h:45
EL::Detail::ManagerStep::prepareSubmitDir
@ prepareSubmitDir
prepare files in our submission directory
Definition
ManagerStep.h:74
EL::Detail::ManagerStep::postSubmit
@ postSubmit
do whatever needs to be done after the submission is done
Definition
ManagerStep.h:98
EL::Detail::ManagerStep::initialSubmit
@ initialSubmit
the initial submit step
Definition
ManagerStep.h:48
EL::Detail::ManagerStep::initialResubmit
@ initialResubmit
the initial resubmit step
Definition
ManagerStep.h:104
EL::Detail::ManagerOrder::OPERATION
@ OPERATION
the base-operation performed (e.g. submit, retrieve)
Definition
ManagerOrder.h:35
EL
This module defines the arguments passed from the BATCH driver to the BATCH worker.
Definition
AsgComponentFactories.h:16
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition
PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EL::Detail::ManagerData
an internal data structure for passing data between different manager objects anbd step
Definition
ManagerData.h:46
file
TFile * file
Definition
tile_monitor.h:29
Generated on
for ATLAS Offline Software by
1.17.0