CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ProcessNormalization.h
Go to the documentation of this file.
1 #ifndef HiggsAnalysis_CombinedLimit_ProcessNormalization_h
2 #define HiggsAnalysis_CombinedLimit_ProcessNormalization_h
3 
4 #include <TIterator.h>
5 #include <RooAbsReal.h>
6 #include "RooListProxy.h"
7 
8 //_________________________________________________
9 /*
10 BEGIN_HTML
11 <p>
12 ProcessNormalization is helper class for implementing process normalizations
13 </p>
14 END_HTML
15 */
16 //
17 class ProcessNormalization : public RooAbsReal {
18  public:
20  ProcessNormalization(const char *name, const char *title, double nominal=1) ;
21  ProcessNormalization(const char *name, const char *title, RooAbsReal &nominal) ;
22  ProcessNormalization(const ProcessNormalization &other, const char *newname = 0) ;
24 
25  TObject * clone(const char *newname) const { return new ProcessNormalization(*this, newname); }
26 
27  void setNominalValue(double nominal) { nominalValue_ = nominal; }
28  void addLogNormal(double kappa, RooAbsReal &theta) ;
29  void addAsymmLogNormal(double kappaLo, double kappaHi, RooAbsReal &theta) ;
30  void addOtherFactor(RooAbsReal &factor) ;
31  void dump() const ;
32  protected:
33  Double_t evaluate() const;
34 
35  private:
36  // ---- PERSISTENT ----
37  double nominalValue_;
38  std::vector<double> logKappa_; // Logarithm of symmetric kappas
39  RooListProxy thetaList_; // List of nuisances for symmetric kappas
40  std::vector<std::pair<double,double> > logAsymmKappa_; // Logarithm of asymmetric kappas (low, high)
41  RooListProxy asymmThetaList_; // List of nuisances for asymmetric kappas
42  RooListProxy otherFactorList_; // Other multiplicative terms
43 
44  // get the kappa for the appropriate x
45  Double_t logKappaForX(double x, const std::pair<double,double> &logKappas ) const ;
46 
47  ClassDef(ProcessNormalization,1) // Process normalization interpolator
48 };
49 
50 #endif
void addLogNormal(double kappa, RooAbsReal &theta)
Double_t logKappaForX(double x, const std::pair< double, double > &logKappas) const
Geom::Theta< T > theta() const
std::vector< double > logKappa_
void setNominalValue(double nominal)
Double_t evaluate() const
std::vector< std::pair< double, double > > logAsymmKappa_
void addOtherFactor(RooAbsReal &factor)
void addAsymmLogNormal(double kappaLo, double kappaHi, RooAbsReal &theta)
TObject * clone(const char *newname) const
Definition: DDAxes.h:10