CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
ModelTools.CountingModelBuilder Class Reference
Inheritance diagram for ModelTools.CountingModelBuilder:
ModelTools.ModelBuilder ModelTools.ModelBuilderBase

Public Member Functions

def __init__
 
def doCombination
 
def doIndividualModels
 
def doObservables
 
- Public Member Functions inherited from ModelTools.ModelBuilder
def __init__
 
def doCombination
 
def doExpectedEvents
 
def doIndividualModels
 
def doModel
 
def doModelConfigs
 
def doNuisances
 
def doObservables
 
def isShapeSystematic
 
def setPhysics
 
- Public Member Functions inherited from ModelTools.ModelBuilderBase
def __init__
 
def doComment
 
def doObj
 
def doSet
 
def doVar
 
def factory_
 

Additional Inherited Members

- Public Attributes inherited from ModelTools.ModelBuilder
 DC
 
 physics
 
- Public Attributes inherited from ModelTools.ModelBuilderBase
 options
 
 out
 

Detailed Description

ModelBuilder to make a counting experiment

Definition at line 288 of file ModelTools.py.

Constructor & Destructor Documentation

def ModelTools.CountingModelBuilder.__init__ (   self,
  datacard,
  options 
)

Definition at line 290 of file ModelTools.py.

291  def __init__(self,datacard,options):
292  ModelBuilder.__init__(self,datacard,options)
293  if datacard.hasShapes:
raise RuntimeError, "You're using a CountingModelBuilder for a model that has shapes"

Member Function Documentation

def ModelTools.CountingModelBuilder.doCombination (   self)

Definition at line 314 of file ModelTools.py.

References ModelTools.ModelBuilderBase.doObj(), join(), and min.

315  def doCombination(self):
316  prefix = "modelObs" if len(self.DC.systs) else "model" # if no systematics, we build directly the model
317  nbins = len(self.DC.bins)
318  if nbins > 50:
319  from math import ceil
320  nblocks = int(ceil(nbins/10.))
321  for i in range(nblocks):
322  self.doObj("%s_s_%d" % (prefix,i), "PROD", ",".join(["pdf_bin%s" % self.DC.bins[j] for j in range(10*i,min(nbins,10*i+10))]))
323  self.doObj("%s_b_%d" % (prefix,i), "PROD", ",".join(["pdf_bin%s_bonly" % self.DC.bins[j] for j in range(10*i,min(nbins,10*i+10))]))
324  self.doObj("%s_s" % prefix, "PROD", ",".join([prefix+"_s_%d" % i for i in range(nblocks)]))
325  self.doObj("%s_b" % prefix, "PROD", ",".join([prefix+"_b_%d" % i for i in range(nblocks)]))
326  else:
327  self.doObj("%s_s" % prefix, "PROD", ",".join(["pdf_bin%s" % b for b in self.DC.bins]))
328  self.doObj("%s_b" % prefix, "PROD", ",".join(["pdf_bin%s_bonly" % b for b in self.DC.bins]))
329  if len(self.DC.systs): # multiply by nuisances if needed
330  self.doObj("model_s", "PROD", "modelObs_s, nuisancePdf")
331  self.doObj("model_b", "PROD", "modelObs_b, nuisancePdf")
332 
#define min(a, b)
Definition: mlp_lapack.h:161
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def ModelTools.CountingModelBuilder.doIndividualModels (   self)

Definition at line 307 of file ModelTools.py.

References ModelTools.ModelBuilderBase.doComment(), ModelTools.ModelBuilderBase.doObj(), join(), and relativeConstraints.keys.

308  def doIndividualModels(self):
309  self.doComment(" --- Expected events in each bin, total (S+B and B) ----")
310  for b in self.DC.bins:
311  self.doObj("n_exp_bin%s_bonly" % b, "sum", ", ".join(["n_exp_bin%s_proc_%s" % (b,p) for p in self.DC.exp[b].keys() if self.DC.isSignal[p] == False]) )
312  self.doObj("n_exp_bin%s" % b, "sum", ", ".join(["n_exp_bin%s_proc_%s" % (b,p) for p in self.DC.exp[b].keys() ]) )
313  self.doObj("pdf_bin%s" % b, "Poisson", "n_obs_bin%s, n_exp_bin%s, 1" % (b,b))
self.doObj("pdf_bin%s_bonly" % b, "Poisson", "n_obs_bin%s, n_exp_bin%s_bonly, 1" % (b,b))
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def ModelTools.CountingModelBuilder.doObservables (   self)

Definition at line 294 of file ModelTools.py.

References ModelTools.ModelBuilderBase.doComment(), ModelTools.ModelBuilderBase.doSet(), ModelTools.ModelBuilderBase.doVar(), and join().

295  def doObservables(self):
296  if len(self.DC.obs):
297  self.doComment(" ----- observables (already set to observed values) -----")
298  for b in self.DC.bins: self.doVar("n_obs_bin%s[%f,0,%d]" % (b,self.DC.obs[b],N_OBS_MAX))
299  else:
300  self.doComment(" ----- observables -----")
301  for b in self.DC.bins: self.doVar("n_obs_bin%s[0,%d]" % (b,N_OBS_MAX))
302  self.doSet("observables", ",".join(["n_obs_bin%s" % b for b in self.DC.bins]))
303  if len(self.DC.obs):
304  if self.options.bin:
305  self.out.data_obs = ROOT.RooDataSet(self.options.dataname,"observed data", self.out.set("observables"))
306  self.out.data_obs.add( self.out.set("observables") )
self.out._import(self.out.data_obs)
static std::string join(char **cmd)
Definition: RemoteFile.cc:18