forked from UCATLAS/xAODAnaHelpers
/
MuonCalibrator.h
88 lines (66 loc) · 3.13 KB
/
MuonCalibrator.h
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
#ifndef xAODAnaHelpers_MuonCalibrator_H
#define xAODAnaHelpers_MuonCalibrator_H
#include "MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h"
// algorithm wrapper
#include "xAODAnaHelpers/Algorithm.h"
class MuonCalibrator : public xAH::Algorithm
{
// put your configuration variables here as public variables.
// that way they can be set directly from CINT and python.
public:
// configuration variables
std::string m_inContainerName;
std::string m_outContainerName;
std::string m_release;
// sort after calibration
bool m_sort;
// systematics
std::string m_inputAlgoSystNames; // this is the name of the vector of names of the systematically varied containers produced by the
// upstream algo (e.g., the SC containers with calibration systematics)
std::string m_outputAlgoSystNames; // this is the name of the vector of names of the systematically varied containers produced by THIS
// algo (these will be the m_inputAlgoSystNames of the algo downstream)
float m_systVal;
std::string m_systName;
/**
@rst
Force ``MuonCalibrationAndSmearingTool`` to calibrate data.
``MuonSelectorTool`` depends on a specific decoration existing on Muons, namely ``MuonSpectrometerPt``. This is decorated by the ``MuonCalibrationAndSmearingTool``. However, you do not calibrate data by default so this tool would not be run on data.
In the case where you need the tool to be forced to run on data in order to have this decoration on your muons, you need to flip this boolean. See `the Muon Combined Performance Working Group twiki <https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/McpAnalysisFaq#SG_ExcBadAuxVar_from_MuonSelecti>`_ for more information.
.. note:: This should *not* modify the momentum of muons in data (according to the tool as of ``MuonMomentumCorrections-01-00-37``).
@endrst
*/
bool m_forceDataCalib;
private:
int m_numEvent; //!
int m_numObject; //!
bool m_isMC; //!
std::string m_outAuxContainerName;
std::string m_outSCContainerName;
std::string m_outSCAuxContainerName;
std::vector<CP::SystematicSet> m_systList; //!
// tools
CP::MuonCalibrationAndSmearingTool *m_muonCalibrationAndSmearingTool; //!
// variables that don't get filled at submission time should be
// protected from being send from the submission node to the worker
// node (done by the //!)
public:
// Tree *myTree; //!
// TH1 *myHist; //!
// this is a standard constructor
MuonCalibrator (std::string className = "MuonCalibrator");
// these are the functions inherited from Algorithm
virtual EL::StatusCode setupJob (EL::Job& job);
virtual EL::StatusCode fileExecute ();
virtual EL::StatusCode histInitialize ();
virtual EL::StatusCode changeInput (bool firstFile);
virtual EL::StatusCode initialize ();
virtual EL::StatusCode execute ();
virtual EL::StatusCode postExecute ();
virtual EL::StatusCode finalize ();
virtual EL::StatusCode histFinalize ();
/// @cond
// this is needed to distribute the algorithm to the workers
ClassDef(MuonCalibrator, 1);
/// @endcond
};
#endif