NumuSysts.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "CAFAna/Core/ISyst.h"
4 
5 #include "CAFAna/Systs/Systs.h" // AnaLabel_t
6 
7 class TH1D;
8 
9 namespace ana
10 {
11 
12  //----------------------------------------------------------------------
13  /// Normalization component of the numu GEANT systematic, see docdb 13539
14  class NumuGEANTNormSyst: public ISyst
15  {
16  public:
17  NumuGEANTNormSyst() : ISyst("geantNorm", "GEANT Norm") {}
18 
19  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
20  };
21 
23 
24 
25  //----------------------------------------------------------------------
26  /// Energy scale component of the numu GEANT systematic, see docdb 13539
27  class NumuGEANTScaleSyst : public ISyst
28  {
29  public:
30  NumuGEANTScaleSyst() : ISyst("geantScale", "GEANT Scale") {}
31 
32  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
33  };
34 
36 
37 
38  //----------------------------------------------------------------------
39  /// SummedSmallGENIE systematics, from histograms:
41  {
42  public:
44  const std::string &fnameFD);
45 
47 
48  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
49 
50  private:
51  void InitializeHistograms() const;
52 
53  enum{kND, kFD, kNumDets};
54  enum{kSig, kBkg, kNumComponents};
55 
56  std::string fHistoFnames[kNumDets];
57 
58  mutable TH1D* fHists[kNumDets][kNumComponents];
59 
60  };
61 
63 
64  //----------------------------------------------------------------------
65  /// Absolute Neutral Current scale systematic, 100% uncertainty
66  /// see table 2 in DocDB 13641
67  class NumuNCScaleSyst: public ISyst
68  {
69  public:
70  NumuNCScaleSyst() : ISyst("numuNCScale", "Neutral Current Scale") {}
71 
72  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
73  };
74 
75  extern const NumuNCScaleSyst kNumuNCScaleSyst;
76 
77 
78  //----------------------------------------------------------------------
79  /// Absolute Tau CC scale systematic, 100% uncertainty
80  /// see table 2 in DocDB 13641
82  {
83  public:
84  NumuTauContaminationSyst() : ISyst("numuTauContamination", "Tau Contaimination") {}
85 
86  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
87  };
88 
90 
91 
92  //----------------------------------------------------------------------
93  // Normalization systematic, see table 2 in DocDB 13641
94  class NumuNormSyst: public ISyst
95  {
96  public:
97  NumuNormSyst() : ISyst("normNumu", "Absolute Normalization") {}
98 
99  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
100  };
101 
102  extern const NumuNormSyst kNumuNormSyst;
103 
104  //----------------------------------------------------------------------
105 
106  /// Relative (uncorrelated FD to ND) normalization systematic
107  /// see table 2 in DocDB 13641
108  class NumuRelNormSyst: public ISyst
109  {
110  public:
111  NumuRelNormSyst() : ISyst("relNormNumu", "Relative Normalization") {}
112 
113  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
114  };
115 
116  extern const NumuRelNormSyst kNumuRelNormSyst;
117 
118 
119 
120  //----------------------------------------------------------------------
121  /// Absolute energy scale systematic
122  /// see table 2 in DocDB 13641
123 
125  {
126  public:
127  NumuEnergyScaleSyst() : ISyst("eScaleNumu", "Absolute Energy Scale") {}
128 
129  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
130  };
131 
133 
134  //----------------------------------------------------------------------
135 
136  /// Relative energy scale systematic
137  /// see table 2 in DocDB 13641
138 
140  {
141  public:
142  NumuRelEnergyScaleSyst() : ISyst("RelEScale", "Relative Energy Scale") {}
143 
144  void Shift(double sigma, caf::SRProxy* sr, double& weight) const override;
145  };
146 
148 
149  //----------------------------------------------------------------------
150  /// Get a vector of all the numu group systs
151  std::vector<const ISyst*> getAllDirectNumuSysts2017();
152  std::vector<const ISyst*> getAllDirectNumuSysts2018();
153 } // namespace
SummedSmallGENIE systematics, from histograms:
Definition: NumuSysts.h:40
const NumuNCScaleSyst kNumuNCScaleSyst
Definition: NumuSysts.cxx:27
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
const NumuEnergyScaleSyst kNumuEnergyScaleSyst
Definition: NumuSysts.cxx:31
const NumuTauContaminationSyst kNumuTauContaminationSyst
Definition: NumuSysts.cxx:28
const NumuNormSyst kNumuNormSyst
Definition: NumuSysts.cxx:29
const Var weight
Proxy for caf::StandardRecord.
Definition: SRProxy.h:2126
const NumuRelNormSyst kNumuRelNormSyst
Definition: NumuSysts.cxx:30
const NumuGEANTNormSyst kNumuGEANTNormSyst
Definition: NumuSysts.cxx:21
Encapsulate code to systematically shift a caf::SRProxy.
Definition: ISyst.h:14
std::vector< const ISyst * > getAllDirectNumuSysts2018()
Definition: NumuSysts.cxx:114
const NumuGEANTScaleSyst kNumuGEANTScaleSyst
Definition: NumuSysts.cxx:22
caf::StandardRecord * sr
double sigma(TH1F *hist, double percentile)
Energy scale component of the numu GEANT systematic, see docdb 13539.
Definition: NumuSysts.h:27
const NumuRelEnergyScaleSyst kNumukRelEnergyScaleSyst
Definition: NumuSysts.cxx:32
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
Perform the systematic shift.
Definition: NumuSysts.cxx:37
const NumuSummedSmallGENIESyst kNumuSummedSmallGENIESyst(FindCAFAnaDir()+"/data/numu/summed_genie_systs_nd.root", FindCAFAnaDir()+"/data/numu/summed_genie_systs_fd.root")
Definition: NumuSysts.h:62
std::vector< const ISyst * > getAllDirectNumuSysts2017()
Get a vector of all the numu group systs.
Definition: NumuSysts.cxx:169
Normalization component of the numu GEANT systematic, see docdb 13539.
Definition: NumuSysts.h:14
enum BeamMode string