Logo ROOT   6.18/05
Reference Guide
RooFracRemainder.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 RooFracRemainder.cxx
19\class RooFracRemainder
20\ingroup Roofitcore
21
22
23RooFracRemainder calculates the remainder fraction of a sum of RooAbsReal
24fraction, i.e (1 - sum_i a_i). This class is used by RooSimWSTool to
25as specialization of the remainder fraction term of a parameter with
26a constrained split
27**/
28
29
30#include "RooFit.h"
31
32#include "Riostream.h"
33#include "Riostream.h"
34#include <math.h>
35
36#include "RooFracRemainder.h"
37#include "RooAbsReal.h"
38#include "RooAbsPdf.h"
39#include "RooErrorHandler.h"
40#include "RooArgSet.h"
41#include "RooMsgService.h"
42
43using namespace std;
44
46;
47
48
49////////////////////////////////////////////////////////////////////////////////
50/// Default constructor
51
53{
55}
56
57
58
59////////////////////////////////////////////////////////////////////////////////
60/// Constructor with given set of input fractions. All arguments in sumSet must be of type RooAbsReal.
61
62RooFracRemainder::RooFracRemainder(const char* name, const char* title, const RooArgSet& sumSet) :
63 RooAbsReal(name, title),
64 _set1("set1","First set of components",this)
65{
67
68 TIterator* inputIter = sumSet.createIterator() ;
69 RooAbsArg* comp ;
70 while((comp = (RooAbsArg*)inputIter->Next())) {
71 if (!dynamic_cast<RooAbsReal*>(comp)) {
72 coutE(InputArguments) << "RooFracRemainder::ctor(" << GetName() << ") ERROR: component " << comp->GetName()
73 << " is not of type RooAbsReal" << endl ;
75 }
76 _set1.add(*comp) ;
77 }
78
79 delete inputIter ;
80}
81
82
83
84
85////////////////////////////////////////////////////////////////////////////////
86/// Copy constructor
87
89 RooAbsReal(other, name),
90 _set1("set1",this,other._set1)
91{
93
94 // Member _ownedList is intentionally not copy-constructed -- ownership is not transferred
95}
96
97
98
99////////////////////////////////////////////////////////////////////////////////
100/// Destructor
101
103{
104 if (_setIter1) delete _setIter1 ;
105}
106
107
108
109////////////////////////////////////////////////////////////////////////////////
110/// Calculate value
111
113{
114 Double_t sum(1);
115 RooAbsReal* comp ;
116 const RooArgSet* nset = _set1.nset() ;
117
118 _setIter1->Reset() ;
119
120 while((comp=(RooAbsReal*)_setIter1->Next())) {
121 sum -= comp->getVal(nset) ;
122 }
123
124 return sum ;
125}
126
#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
TIterator * createIterator(Bool_t dir=kIterForward) const R__SUGGEST_ALTERNATIVE("begin()
TIterator-style iteration over contained elements.
const RooArgSet * nset() const
Definition: RooAbsProxy.h:46
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
Definition: RooAbsReal.h:81
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
static void softAbort()
RooFracRemainder calculates the remainder fraction of a sum of RooAbsReal fraction,...
RooListProxy _set1
virtual ~RooFracRemainder()
Destructor.
Double_t evaluate() const
Iterator over set of input fractions.
TIterator * _setIter1
RooFracRemainder()
Default constructor.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Reimplementation of standard RooArgList::add()
Iterator abstract base class.
Definition: TIterator.h:30
virtual void Reset()=0
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