ROOT   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 *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
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 <math.h>
34
35#include "RooFracRemainder.h"
36#include "RooAbsReal.h"
37#include "RooAbsPdf.h"
38#include "RooErrorHandler.h"
39#include "RooArgSet.h"
40#include "RooMsgService.h"
41
42using namespace std;
43
45
46
47
48////////////////////////////////////////////////////////////////////////////////
49/// Default constructor
50
52{
54}
55
56
57
58////////////////////////////////////////////////////////////////////////////////
59/// Constructor with given set of input fractions. All arguments in sumSet must be of type RooAbsReal.
60
61RooFracRemainder::RooFracRemainder(const char* name, const char* title, const RooArgSet& sumSet) :
62 RooAbsReal(name, title),
63 _set1("set1","First set of components",this)
64{
66
67 TIterator* inputIter = sumSet.createIterator() ;
68 RooAbsArg* comp ;
69 while((comp = (RooAbsArg*)inputIter->Next())) {
70 if (!dynamic_cast<RooAbsReal*>(comp)) {
71 coutE(InputArguments) << "RooFracRemainder::ctor(" << GetName() << ") ERROR: component " << comp->GetName()
72 << " is not of type RooAbsReal" << endl ;
74 }
76 }
77
78 delete inputIter ;
79}
80
81
82
83
84////////////////////////////////////////////////////////////////////////////////
85/// Copy constructor
86
88 RooAbsReal(other, name),
89 _set1("set1",this,other._set1)
90{
92
93 // Member _ownedList is intentionally not copy-constructed -- ownership is not transferred
94}
95
96
97
98////////////////////////////////////////////////////////////////////////////////
99/// Destructor
100
102{
103 if (_setIter1) delete _setIter1 ;
104}
105
106
107
108////////////////////////////////////////////////////////////////////////////////
109/// Calculate value
110
112{
113 Double_t sum(1);
114 RooAbsReal* comp ;
115 const RooArgSet* nset = _set1.nset() ;
116
117 _setIter1->Reset() ;
118
119 while((comp=(RooAbsReal*)_setIter1->Next())) {
120 sum -= comp->getVal(nset) ;
121 }
122
123 return sum ;
124}
125
#define coutE(a)
Definition: RooMsgService.h:33
#define ClassImp(name)
Definition: Rtypes.h:361
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:73
TIterator * createIterator(Bool_t dir=kIterForward) const
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:60
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
Definition: RooAbsReal.h:90
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)