forked from UCATLAS/xAODAnaHelpers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
IParticleHistsAlgo.cxx
100 lines (79 loc) · 2.96 KB
/
IParticleHistsAlgo.cxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <EventLoop/Job.h>
#include <EventLoop/StatusCode.h>
#include <EventLoop/Worker.h>
#include <xAODBase/IParticleContainer.h>
#include <xAODEventInfo/EventInfo.h>
#include <AthContainers/ConstDataVector.h>
#include <xAODAnaHelpers/IParticleHistsAlgo.h>
#include <xAODAnaHelpers/HelperFunctions.h>
#include <xAODAnaHelpers/HelperClasses.h>
#include <xAODAnaHelpers/tools/ReturnCheck.h>
// this is needed to distribute the algorithm to the workers
ClassImp(IParticleHistsAlgo)
IParticleHistsAlgo :: IParticleHistsAlgo (std::string className) :
Algorithm(className)
{
m_inContainerName = "";
// which plots will be turned on
m_detailStr = "";
// name of algo input container comes from - only if
m_inputAlgo = "";
m_debug = false;
}
EL::StatusCode IParticleHistsAlgo :: setupJob (EL::Job& job)
{
job.useXAOD();
xAOD::Init("IParticleHistsAlgo").ignore();
return EL::StatusCode::SUCCESS;
}
EL::StatusCode IParticleHistsAlgo :: histInitialize ()
{
Info("histInitialize()", "%s", m_name.c_str() );
RETURN_CHECK("xAH::Algorithm::algInitialize()", xAH::Algorithm::algInitialize(), "");
return EL::StatusCode::SUCCESS;
}
EL::StatusCode IParticleHistsAlgo::AddHists( std::string name ) {
std::string fullname(m_name);
fullname += name; // add systematic
IParticleHists* particleHists = new IParticleHists( fullname, m_detailStr, m_histPrefix, m_histTitle ); // add systematic
particleHists->m_debug = m_debug;
RETURN_CHECK((m_name+"::AddHists").c_str(), particleHists->initialize(), "");
particleHists->record( wk() );
m_plots[name] = particleHists;
return EL::StatusCode::SUCCESS;
}
EL::StatusCode IParticleHistsAlgo :: fileExecute () { return EL::StatusCode::SUCCESS; }
EL::StatusCode IParticleHistsAlgo :: changeInput (bool /*firstFile*/) { return EL::StatusCode::SUCCESS; }
EL::StatusCode IParticleHistsAlgo :: initialize ()
{
if(m_debug) Info("initialize()", m_name.c_str());
// in case anything was missing or blank...
if( m_inContainerName.empty() || m_detailStr.empty() ){
Error("initialize()", "One or more required configuration values are empty");
return EL::StatusCode::FAILURE;
}
// only running 1 collection
if(m_inputAlgo.empty()) { AddHists( "" ); }
m_event = wk()->xaodEvent();
m_store = wk()->xaodStore();
return EL::StatusCode::SUCCESS;
}
EL::StatusCode IParticleHistsAlgo :: execute ()
{
return execute<IParticleHists, xAOD::IParticleContainer>();
}
EL::StatusCode IParticleHistsAlgo :: postExecute () { return EL::StatusCode::SUCCESS; }
EL::StatusCode IParticleHistsAlgo :: finalize () {
if(m_debug) Info("finalize()", m_name.c_str());
for( auto plots : m_plots ) {
if(plots.second){
plots.second->finalize();
delete plots.second;
}
}
return EL::StatusCode::SUCCESS;
}
EL::StatusCode IParticleHistsAlgo :: histFinalize () {
RETURN_CHECK("xAH::Algorithm::algFinalize()", xAH::Algorithm::algFinalize(), "");
return EL::StatusCode::SUCCESS;
}