Logo ROOT   6.10/09
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 
23 RooFracRemainder calculates the remainder fraction of a sum of RooAbsReal
24 fraction, i.e (1 - sum_i a_i). This class is used by RooSimWSTool to
25 as specialization of the remainder fraction term of a parameter with
26 a 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 
43 using namespace std;
44 
46 ;
47 
48 
49 ////////////////////////////////////////////////////////////////////////////////
50 /// Default constructor
51 
53 {
54  _setIter1 = _set1.createIterator() ;
55 }
56 
57 
58 
59 ////////////////////////////////////////////////////////////////////////////////
60 /// Constructor with given set of input fractions. All arguments in sumSet must be of type RooAbsReal.
61 
62 RooFracRemainder::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 
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
TIterator * createIterator(Bool_t dir=kIterForward) const
static long int sum(long int i)
Definition: Factory.cxx:2162
#define coutE(a)
Definition: RooMsgService.h:34
static void softAbort()
virtual void Reset()=0
Double_t getVal(const RooArgSet *set=0) const
Definition: RooAbsReal.h:64
TIterator * _setIter1
STL namespace.
Iterator abstract base class.
Definition: TIterator.h:30
Double_t evaluate() const
Iterator over set of input fractions.
RooFracRemainder()
Default constructor.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Reimplementation of standard RooArgList::add()
const RooArgSet * nset() const
Definition: RooAbsProxy.h:46
virtual ~RooFracRemainder()
Destructor.
#define ClassImp(name)
Definition: Rtypes.h:336
double Double_t
Definition: RtypesCore.h:55
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
RooListProxy _set1
virtual TObject * Next()=0
RooFracRemainder calculates the remainder fraction of a sum of RooAbsReal fraction, i.e (1 - sum_i a_i).
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:66