User Tools

Site Tools


users:ngadiuba:tools:puweightrecipe:puweighth
  #ifndef PUWeight_H
  #define PUWeight_H
 
  #include <string>
  #include <vector>
 
  #include "TH1.h"
  #include "TString.h"
 
  // Compute pile-up weights to match data distribtution
  class PUWeight {
  public:
    enum Scenario { Summer12S10 };
 
    static Scenario toScenario(const std::string& str);
    static std::string toString(const Scenario sc);
 
    // Constructor. Initializes default behaviour to return PU weight of 1
    PUWeight();
 
    // Initialise weights for a given MC pile-up scenario. Can only be
    // called once.
    void initPUWeights(const TString& nameOfDataDistribution, const PUWeight::Scenario sc) {
  	initPUWeights( std::string( nameOfDataDistribution.Data() ), sc );
    }
    void initPUWeights(const std::string& nameOfDataDistribution, const PUWeight::Scenario sc);
 
    // Get weight factor dependent on number of added PU interactions
    // nPU is the 'true' number of interactions as explained in
    // https://twiki.cern.ch/twiki/bin/viewauth/CMS/PileupJSONFileforData#2012_Pileup_JSON_Files
    double getPUWeight(const int nPU) const;
 
 
  private:
    bool isInit_;
    int nPUMax_;
    std::vector<double> puWeigths_;
 
    // Generate weights for given data PU distribution
    std::vector<double> generateWeights(const Scenario sc, const TH1* data_npu_estimated) const;
  };
 
  #endif //PUWeight_H
users/ngadiuba/tools/puweightrecipe/puweighth.txt · Last modified: 2014/04/15 14:34 by ngadiuba