Logo ROOT   6.18/05
Reference Guide
RooConstraintSum.cxx
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * @(#)root/roofitcore:$Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16
17/**
18\file RooConstraintSum.cxx
19\class RooConstraintSum
20\ingroup Roofitcore
21
22RooConstraintSum calculates the sum of the -(log) likelihoods of
23a set of RooAbsPfs that represent constraint functions. This class
24is used to calculate the composite -log(L) of constraints to be
25added the regular -log(L) in RooAbsPdf::fitTo() with Constrain(..)
26arguments
27**/
28
29
30#include "RooFit.h"
31
32#include "Riostream.h"
33#include "Riostream.h"
34#include <math.h>
35
36#include "RooConstraintSum.h"
37#include "RooAbsReal.h"
38#include "RooAbsPdf.h"
39#include "RooErrorHandler.h"
40#include "RooArgSet.h"
41#include "RooNLLVar.h"
42#include "RooChi2Var.h"
43#include "RooMsgService.h"
44
45using namespace std;
46
48;
49
50
51////////////////////////////////////////////////////////////////////////////////
52/// Default constructor
53
55{
57}
58
59
60
61
62////////////////////////////////////////////////////////////////////////////////
63/// Constructor with set of constraint p.d.f.s. All elements in constraintSet must inherit from RooAbsPdf
64
65RooConstraintSum::RooConstraintSum(const char* name, const char* title, const RooArgSet& constraintSet, const RooArgSet& normSet) :
66 RooAbsReal(name, title),
67 _set1("set1","First set of components",this),
68 _paramSet("paramSet","Set of parameters",this)
69{
70
72
73 TIterator* inputIter = constraintSet.createIterator() ;
74 RooAbsArg* comp ;
75 while((comp = (RooAbsArg*)inputIter->Next())) {
76 if (!dynamic_cast<RooAbsPdf*>(comp)) {
77 coutE(InputArguments) << "RooConstraintSum::ctor(" << GetName() << ") ERROR: component " << comp->GetName()
78 << " is not of type RooAbsPdf" << endl ;
80 }
81 _set1.add(*comp) ;
82 }
83
84 _paramSet.add(normSet) ;
85
86 delete inputIter ;
87}
88
89
90
91
92
93////////////////////////////////////////////////////////////////////////////////
94/// Copy constructor
95
97 RooAbsReal(other, name),
98 _set1("set1",this,other._set1),
99 _paramSet("paramSet",this,other._paramSet)
100{
102}
103
104
105
106////////////////////////////////////////////////////////////////////////////////
107/// Destructor
108
110{
111 if (_setIter1) delete _setIter1 ;
112}
113
114
115
116////////////////////////////////////////////////////////////////////////////////
117/// Return sum of -log of constraint p.d.f.s
118
120{
121 Double_t sum(0);
122 RooAbsReal* comp ;
123 RooFIter setIter1 = _set1.fwdIterator() ;
124
125 while((comp=(RooAbsReal*)setIter1.next())) {
126 sum -= ((RooAbsPdf*)comp)->getLogVal(&_paramSet) ;
127 }
128
129 return sum ;
130}
131
#define coutE(a)
Definition: RooMsgService.h:34
double Double_t
Definition: RtypesCore.h:55
#define ClassImp(name)
Definition: Rtypes.h:365
char name[80]
Definition: TGX11.cxx:109
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:70
RooFIter fwdIterator() const R__SUGGEST_ALTERNATIVE("begin()
One-time forward iterator.
TIterator * createIterator(Bool_t dir=kIterForward) const R__SUGGEST_ALTERNATIVE("begin()
TIterator-style iteration over contained elements.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
RooConstraintSum calculates the sum of the -(log) likelihoods of a set of RooAbsPfs that represent co...
RooConstraintSum()
Default constructor.
virtual ~RooConstraintSum()
Destructor.
RooSetProxy _paramSet
TIterator * _setIter1
RooListProxy _set1
Double_t evaluate() const
do not persist
static void softAbort()
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
RooAbsArg * next()
Return next element or nullptr if at end.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Reimplementation of standard RooArgList::add()
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Overloaded RooArgSet::add() method inserts 'var' into set and registers 'var' as server to owner with...
Iterator abstract base class.
Definition: TIterator.h:30
virtual TObject * Next()=0
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
@ InputArguments
Definition: RooGlobalFunc.h:58
static long int sum(long int i)
Definition: Factory.cxx:2258