CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes
BTagWeightCalculator.BTagWeightCalculator Class Reference

Public Member Functions

def __init__
 
def calcEventWeight
 
def calcJetWeight
 
def getBin
 
def getHistosFromFile
 
def init
 

Public Attributes

 btag
 
 eta_bins_hf
 
 eta_bins_lf
 
 pdfs
 
 pt_bins_hf
 
 pt_bins_lf
 

Detailed Description

Definition at line 4 of file BTagWeightCalculator.py.

Constructor & Destructor Documentation

def BTagWeightCalculator.BTagWeightCalculator.__init__ (   self,
  fn_hf,
  fn_lf 
)

Definition at line 5 of file BTagWeightCalculator.py.

5 
6  def __init__(self, fn_hf, fn_lf) :
7  self.pdfs = {}
8 
9  self.pt_bins_hf = np.array([20, 30, 40, 60, 100, 160, 10000])
10  self.eta_bins_hf = np.array([0, 2.41])
11 
12  self.pt_bins_lf = np.array([20, 30, 40, 60, 10000])
13  self.eta_bins_lf = np.array([0, 0.8, 1.6, 2.41])
14 
15  self.btag = "pfCombinedInclusiveSecondaryVertexV2BJetTags"
16  self.init(fn_hf, fn_lf)

Member Function Documentation

def BTagWeightCalculator.BTagWeightCalculator.calcEventWeight (   self,
  jets,
  kind,
  systematic 
)

Definition at line 108 of file BTagWeightCalculator.py.

References BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().

109  def calcEventWeight(self, jets, kind, systematic):
110  weights = np.array(
111  [self.calcJetWeight(jet, kind, systematic)
112  for jet in jets]
113  )
114 
115  wtot = np.prod(weights)
116  return wtot
def BTagWeightCalculator.BTagWeightCalculator.calcJetWeight (   self,
  jet,
  kind,
  systematic 
)

Definition at line 57 of file BTagWeightCalculator.py.

References funct.abs(), BTagWeightCalculator.BTagWeightCalculator.btag, BTagWeightCalculator.BTagWeightCalculator.eta_bins_hf, BTagWeightCalculator.BTagWeightCalculator.eta_bins_lf, DQMChannel.getBin(), BTagWeightCalculator.BTagWeightCalculator.getBin(), CentralityBins.getBin(), BTagWeightCalculator.BTagWeightCalculator.pdfs, PhysicsTools::Calibration::ProcLikelihood.pdfs, BTagWeightCalculator.BTagWeightCalculator.pt_bins_hf, and BTagWeightCalculator.BTagWeightCalculator.pt_bins_lf.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcEventWeight().

57 
58  def calcJetWeight(self, jet, kind, systematic):
59  pt = jet.pt()
60  aeta = abs(jet.eta())
61  fl = abs(jet.hadronFlavour())
62  csv = jet.btag(self.btag)
63 
64  is_b = (fl == 5)
65  is_c = (fl == 4)
66  is_l = (fl < 4)
67 
68  if is_b and not (systematic in ["JESUp", "JESDown", "LFUp", "LFDown",
69  "Stats1Up", "Stats1Down", "Stats2Up", "Stats2Down",
70  "nominal"]):
71  return 1.0
72  if is_c and not (systematic in ["cErr1Up", "cErr1Down", "cErr2Up", "cErr2Down",
73  "nominal"]):
74  return 1.0
75  if is_l and not (systematic in ["JESUp", "JESDown", "HFUp", "HFDown",
76  "Stats1Up", "Stats1Down", "Stats2Up", "Stats2Down",
77  "nominal"]):
78  return 1.0
79 
80 
81  if is_b or is_c:
82  ptbin = self.getBin(self.pt_bins_hf, pt)
83  etabin = self.getBin(self.eta_bins_hf, aeta)
84  else:
85  ptbin = self.getBin(self.pt_bins_lf, pt)
86  etabin = self.getBin(self.eta_bins_lf, aeta)
87 
88  if ptbin < 0 or etabin < 0:
89  return 1.0
90 
91  k = (ptbin, etabin, kind, systematic)
92  hdict = self.pdfs["lf"]
93  if is_b or is_c:
94  hdict = self.pdfs["hf"]
95  h = hdict.get(k, None)
96  if not h:
97  return 1.0
98 
99  csvbin = 1
100  if csv>=0:
101  csvbin = h.FindBin(csv)
102 
103  if csvbin <= 0 or csvbin > h.GetNbinsX():
104  return 1.0
105 
106  w = h.GetBinContent(csvbin)
107  return w
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
def BTagWeightCalculator.BTagWeightCalculator.getBin (   self,
  bvec,
  val 
)

Definition at line 17 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().

17 
18  def getBin(self, bvec, val):
19  return int(bvec.searchsorted(val) - 1)
def BTagWeightCalculator.BTagWeightCalculator.getHistosFromFile (   self,
  fn 
)

Definition at line 28 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.init().

28 
29  def getHistosFromFile(self, fn):
30  ret = {}
31  tf = ROOT.TFile(fn)
32  if not tf or tf.IsZombie():
33  raise FileError("Could not open file {0}".format(fn))
34  ROOT.gROOT.cd()
35  for k in tf.GetListOfKeys():
36  kn = k.GetName()
37  if not (kn.startswith("csv_ratio") or kn.startswith("c_csv_ratio") ):
38  continue
39  spl = kn.split("_")
40  is_c = 1 if kn.startswith("c_csv_ratio") else 0
41 
42  if spl[2+is_c] == "all":
43  ptbin = -1
44  etabin = -1
45  kind = "all"
46  syst = "nominal"
47  else:
48  ptbin = int(spl[2+is_c][2:])
49  etabin = int(spl[3+is_c][3:])
50  kind = spl[4+is_c]
51  if len(spl)==(6+is_c):
52  syst = spl[5+is_c]
53  else:
54  syst = "nominal"
55  ret[(ptbin, etabin, kind, syst)] = k.ReadObj().Clone()
56  return ret
def BTagWeightCalculator.BTagWeightCalculator.init (   self,
  fn_hf,
  fn_lf 
)

Definition at line 20 of file BTagWeightCalculator.py.

References BTagWeightCalculator.BTagWeightCalculator.getHistosFromFile(), BTagWeightCalculator.BTagWeightCalculator.pdfs, and PhysicsTools::Calibration::ProcLikelihood.pdfs.

20 
21  def init(self, fn_hf, fn_lf) :
22  print "[BTagWeightCalculator]: Initializing from files", fn_hf, fn_lf
23 
24  self.pdfs["hf"] = self.getHistosFromFile(fn_hf)
25  self.pdfs["lf"] = self.getHistosFromFile(fn_lf)
26 
27  return True

Member Data Documentation

BTagWeightCalculator.BTagWeightCalculator.btag

Definition at line 14 of file BTagWeightCalculator.py.

Referenced by Jet.Jet.btagWP(), and BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().

BTagWeightCalculator.BTagWeightCalculator.eta_bins_hf

Definition at line 9 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().

BTagWeightCalculator.BTagWeightCalculator.eta_bins_lf

Definition at line 12 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().

BTagWeightCalculator.BTagWeightCalculator.pdfs

Definition at line 6 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcJetWeight(), QGLikelihoodCalculator.QGLikelihoodCalculator.findEntry(), BTagWeightCalculator.BTagWeightCalculator.init(), and QGLikelihoodCalculator.QGLikelihoodCalculator.init().

BTagWeightCalculator.BTagWeightCalculator.pt_bins_hf

Definition at line 8 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().

BTagWeightCalculator.BTagWeightCalculator.pt_bins_lf

Definition at line 11 of file BTagWeightCalculator.py.

Referenced by BTagWeightCalculator.BTagWeightCalculator.calcJetWeight().