All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NuMIFluxSysts.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #include <vector>
6 
7 class TH1;
8 
9 namespace ana
10 {
11 
12  class NuMIFluxSyst : public ISyst
13  {
14  public:
15  virtual ~NuMIFluxSyst();
16 
17  void Shift(double sigma, caf::SRSliceProxy* slc, double& weight) const override;
18 
19  protected:
20  friend const NuMIFluxSyst* GetNuMIFluxSyst(const std::string&,
21  const std::string&,
22  const std::string&);
23 
24  NuMIFluxSyst(const std::string& dir,
25  const std::string& prefix,
26  const std::string& name)
27  : ISyst("numi_"+name, "NuMI flux: "+name),
28  fHistName(dir+"/"+prefix+name), fName(name), fScale()
29  {
30  }
31 
32  std::string fHistName, fName;
33 
34  mutable TH1* fScale[2][2][2]; // [fhc/rhc][nue/numu][nu/nubar]
35  };
36 
37  const NuMIFluxSyst* GetNuMIFluxSyst(const std::string& dir,
38  const std::string& prefix,
39  const std::string& name);
40 
41  /// These are envelopes not real systs. TODO make clearer in naming
42  std::vector<const ISyst*> GetNuMIHadronProductionFluxSysts();
43 
44  std::vector<const ISyst*> GetNuMIBeamlineFluxSysts();
45  /// \param Npcs Number of principal components. High-indexed components
46  /// should have negligible effect on the analysis.
47  std::vector<const ISyst*> GetNuMIPCAFluxSysts(unsigned int Npcs = 100);
48  /// \brief Combination of all beamline systs plus \a Npcs hadron production
49  /// components
50  std::vector<const ISyst*> GetAllNuMIFluxSysts(unsigned int Npcs);
51 
52 } // namespace ana
std::vector< const ISyst * > GetNuMIHadronProductionFluxSysts()
These are envelopes not real systs. TODO make clearer in naming.
friend const NuMIFluxSyst * GetNuMIFluxSyst(const std::string &, const std::string &, const std::string &)
process_name opflashCryoW ana
Encapsulate code to systematically shift a caf::StandardRecord.
Definition: ISyst.h:14
caf::Proxy< caf::SRSlice > SRSliceProxy
Definition: EpilogFwd.h:2
const NuMIFluxSyst * GetNuMIFluxSyst(const std::string &dir, const std::string &prefix, const std::string &name)
std::vector< const ISyst * > GetAllNuMIFluxSysts(unsigned int Npcs)
Combination of all beamline systs plus Npcs hadron production components.
std::vector< const ISyst * > GetNuMIPCAFluxSysts(unsigned int Npcs)
tuple dir
Definition: dropbox.py:28
std::string fName
Definition: NuMIFluxSysts.h:32
void Shift(double sigma, caf::SRSliceProxy *slc, double &weight) const override
Perform the systematic shift.
std::vector< const ISyst * > GetNuMIBeamlineFluxSysts()
TH1 * fScale[2][2][2]
Definition: NuMIFluxSysts.h:34
std::string fHistName
Definition: NuMIFluxSysts.h:32
NuMIFluxSyst(const std::string &dir, const std::string &prefix, const std::string &name)
Definition: NuMIFluxSysts.h:24
then echo fcl name
virtual ~NuMIFluxSyst()