93 _plotCoefNormSet(
"!plotCoefNormSet",
"plotCoefNormSet",this,
kFALSE,
kFALSE),
94 _plotCoefNormRange(0),
96 _indexCat(
"indexCat",
"Index category",this,inIndexCat),
116 _plotCoefNormSet(
"!plotCoefNormSet",
"plotCoefNormSet",this,
kFALSE,
kFALSE),
117 _plotCoefNormRange(0),
118 _partIntMgr(this,10),
119 _indexCat(
"indexCat",
"Index category",this,inIndexCat),
122 if (inPdfList.
size() != inIndexCat.
size()) {
124 <<
" ERROR: Number PDF list entries must match number of index category states, no PDFs added" << endl ;
128 map<string,RooAbsPdf*> pdfMap ;
129 auto indexCatIt = inIndexCat.
begin();
130 for (
unsigned int i=0; i < inPdfList.
size(); ++i) {
131 auto pdf =
static_cast<RooAbsPdf*
>(&inPdfList[i]);
132 const auto& nameIdx = (*indexCatIt++);
133 pdfMap[nameIdx.first] = pdf;
145 _plotCoefNormSet(
"!plotCoefNormSet",
"plotCoefNormSet",this,
kFALSE,
kFALSE),
146 _plotCoefNormRange(0),
147 _partIntMgr(this,10),
148 _indexCat(
"indexCat",
"Index category",this,inIndexCat),
172 for (map<string,RooAbsPdf*>::iterator iter=pdfMap.begin() ; iter!=pdfMap.end() ; ++iter) {
181 bool failure =
false;
182 for (map<string,RooAbsPdf*>::iterator iter=pdfMap.begin() ; iter!=pdfMap.end() ; ++iter) {
183 failure |=
addPdf(*iter->second,iter->first.c_str()) ;
187 throw std::invalid_argument(std::string(
"At least one of the PDFs of the RooSimultaneous ")
194 coutI(
InputArguments) <<
"RooSimultaneous::initialize(" <<
GetName() <<
") INFO: one or more input component of simultaneous p.d.f.s are"
195 <<
" simultaneous p.d.f.s themselves, rewriting composite expressions as one-level simultaneous p.d.f. in terms of"
196 <<
" final constituents and extended index category" << endl ;
200 map<string,RooSimultaneousAux::CompInfo> compMap ;
201 for (map<string,RooAbsPdf*>::iterator iter=pdfMap.begin() ; iter!=pdfMap.end() ; ++iter) {
202 RooSimultaneousAux::CompInfo ci ;
203 ci.pdf = iter->second ;
206 ci.simPdf = simComp ;
207 ci.subIndex = &simComp->
indexCat() ;
209 allAuxCats.
add(*(ci.subIndexComps),
kTRUE) ;
213 ci.subIndexComps = 0 ;
215 compMap[iter->first] = ci ;
220 allCats.
add(allAuxCats) ;
223 bool failure =
false;
226 for (map<string,RooSimultaneousAux::CompInfo>::iterator citer = compMap.begin() ; citer != compMap.end() ; ++citer) {
229 if (citer->second.subIndexComps) {
230 repliCats.
remove(*citer->second.subIndexComps) ;
231 delete citer->second.subIndexComps ;
233 inIndexCat.
setLabel(citer->first.c_str()) ;
235 if (!citer->second.simPdf) {
241 for (
const auto& nameIdx : repliSuperCat) {
243 repliSuperCat.
setLabel(nameIdx.first) ;
246 failure |=
addPdf(*citer->second.pdf,superLabel.c_str()) ;
248 <<
") assigning pdf " << citer->second.pdf->GetName() <<
" to super label " << superLabel << endl ;
258 for (
const auto&
type : *citer->second.subIndex) {
261 RooAbsPdf* compPdf = citer->second.simPdf->getPdf(
type.first.c_str());
263 failure |=
addPdf(*compPdf,superLabel.c_str()) ;
265 <<
") assigning pdf " << compPdf->
GetName() <<
"(member of " << citer->second.pdf->GetName()
266 <<
") to super label " << superLabel << endl ;
269 <<
type.second <<
" for component RooSimultaneous p.d.f " << citer->second.pdf->GetName()
270 <<
"which is associated with master index label " << citer->first << endl ;
281 for (
const auto& stype : *citer->second.subIndex) {
284 for (
const auto& nameIdx : repliSuperCat) {
285 repliSuperCat.
setLabel(nameIdx.first) ;
287 RooAbsPdf* compPdf = citer->second.simPdf->getPdf(stype.first.c_str());
289 failure |=
addPdf(*compPdf,superLabel.c_str()) ;
291 <<
") assigning pdf " << compPdf->
GetName() <<
"(member of " << citer->second.pdf->GetName()
292 <<
") to super label " << superLabel << endl ;
295 << stype.second <<
" for component RooSimultaneous p.d.f " << citer->second.pdf->GetName()
296 <<
"which is associated with master index label " << citer->first << endl ;
305 throw std::invalid_argument(std::string(
"Failed to initialise RooSimultaneous ") +
GetName());
321 _plotCoefNormSet(
"!plotCoefNormSet",this,other._plotCoefNormSet),
322 _plotCoefNormRange(other._plotCoefNormRange),
323 _partIntMgr(other._partIntMgr,this),
324 _indexCat(
"indexCat",this,other._indexCat),
325 _numPdf(other._numPdf)
354 return proxy ? ((
RooAbsPdf*)proxy->absArg()) : 0 ;
385 << catLabel <<
"' has already an associated PDF." << endl ;
393 <<
") ERROR: you cannot add a RooSimultaneous component to a RooSimultaneous using addPdf()."
394 <<
" Use the constructor with RooArgList if input p.d.f.s or the map<string,RooAbsPdf&> instead." << endl ;
459 if (proxy==0)
return 0 ;
473 catFrac=nEvtCat/nEvtTot ;
497 sum += ((
RooAbsPdf*)(proxy->absArg()))->expectedEvents(nset) ;
509 if (proxy==0)
return 0 ;
512 return ((
RooAbsPdf*)(proxy->absArg()))->expectedEvents(nset);
524 const RooArgSet* normSet,
const char* rangeName)
const
527 analVars.
add(allVars) ;
593 pc.defineString(
"sliceCatState",
"SliceCat",0,
"",
kTRUE) ;
594 pc.defineDouble(
"scaleFactor",
"Normalization",0,1.0) ;
596 pc.defineObject(
"sliceCatList",
"SliceCat",0,0,
kTRUE) ;
597 pc.defineObject(
"projSet",
"Project",0) ;
598 pc.defineObject(
"sliceSet",
"SliceVars",0) ;
599 pc.defineObject(
"projDataSet",
"ProjData",0) ;
600 pc.defineObject(
"projData",
"ProjData",1) ;
601 pc.defineMutex(
"Project",
"SliceVars") ;
602 pc.allowUndefined() ;
605 pc.process(cmdList) ;
613 std::unique_ptr<RooArgSet> sliceSet( sliceSetTmp ? ((
RooArgSet*) sliceSetTmp->
Clone()) :
nullptr );
615 Double_t scaleFactor =
pc.getDouble(
"scaleFactor") ;
620 const char* sliceCatState =
pc.getString(
"sliceCatState",0,
kTRUE) ;
635 unsigned int tokenIndex = 0;
637 const char* slabel = tokenIndex >= catTokens.size() ? nullptr : catTokens[tokenIndex++].c_str();
643 sliceSet->add(*scat,
kFALSE) ;
651 coutE(
InputArguments) <<
"RooSimultaneous::plotOn(" <<
GetName() <<
") ERROR: must have a projection dataset for index category" << endl ;
661 for (
const auto sliceArg : *sliceSet) {
664 projectedVars.
remove(*arg) ;
667 << sliceArg->GetName() <<
" was not projected anyway" << endl ;
670 }
else if (projSet) {
684 coutE(
Plotting) <<
"RooSimultaneous::plotOn(" <<
GetName() <<
") ERROR: Projection over index category "
685 <<
"requested, but projection data set doesn't contain index category" << endl ;
700 if (projectedVars.
find(server->GetName())) {
702 projIdxServers.
add(*server) ;
711 for (
const auto server : projIdxServers) {
712 if (!projData->
get()->
find(server->GetName())) {
719 <<
") ERROR: Projection dataset doesn't contain complete set of index category dependents" << endl ;
733 std::unique_ptr<RooArgSet> idxCloneSet(
RooArgSet(*_indexCat).snapshot(
true) );
738 std::unique_ptr<RooArgSet> idxCompSliceSet( idxCatClone->getObservables(frame->
getNormVars()) );
744 <<
" represents a slice in the index category (" <<
_indexCat.
arg().
GetName() <<
")" << endl ;
752 for (
const auto arg : *idxCompSliceSet) {
755 if (sliceSet && (slicedComponent = sliceSet->find(*idxComp)) !=
nullptr) {
756 auto theCat =
static_cast<const RooAbsCategory*
>(slicedComponent);
757 idxComp->setIndex(theCat->getCurrentIndex(),
false);
765 cutString.
Append(
Form(
"%s==%d",idxComp->GetName(),idxComp->getCurrentIndex())) ;
772 std::unique_ptr<RooAbsData> projDataTmp(
const_cast<RooAbsData*
>(projData)->reduce(projDataVars,cutString) );
780 if (!cmdList.
find(
"Asymmetry")) {
781 cmdList2.
Add(&tmp1) ;
783 cmdList2.
Add(&tmp2) ;
805 idxCatClone->setLabel(proxy->name()) ;
809 for (
const auto idxSliceCompArg : *idxCompSliceSet) {
810 const auto idxSliceComp =
static_cast<RooAbsCategory*
>(idxSliceCompArg);
822 sumWeight += wTable->getFrac(proxy->name()) ;
825 pdfCompList.
add(proxy->arg()) ;
829 RooAddPdf *plotVar =
new RooAddPdf(plotVarName,
"weighted sum of RS components",pdfCompList,wgtCompList) ;
836 std::unique_ptr<RooAbsData> projDataTmp;
842 if (idxCompSliceSet->getSize()>0) {
844 for (
const auto idxSliceCompArg : *idxCompSliceSet) {
845 const auto idxSliceComp =
static_cast<RooAbsCategory*
>(idxSliceCompArg);
851 cutString.
Append(
Form(
"%s==%d",idxSliceComp->GetName(),idxSliceComp->getCurrentIndex())) ;
861 if (idxCompSliceSet->getSize()>0) {
862 projDataTmp.reset(
const_cast<RooAbsData*
>(projData)->reduce(projDataVars,cutString) );
864 projDataTmp.reset(
const_cast<RooAbsData*
>(projData)->reduce(projDataVars) );
870 projSetTmp.
add(*projSet) ;
875 delete idxCatServers ;
881 <<
" represents a slice in index category components " << *idxCompSliceSet << endl ;
885 if (idxCompProjSet->
getSize()>0) {
887 <<
" averages with data index category components " << *idxCompProjSet << endl ;
889 delete idxCompProjSet ;
902 if (!cmdList.
find(
"Asymmetry")) {
903 cmdList2.
Add(&tmp1) ;
905 cmdList2.
Add(&tmp2) ;
911 cmdList2.
Add(&tmp3) ;
912 frame2 = plotVar->
plotOn(frame,cmdList2) ;
915 frame2 = plotVar->
plotOn(frame,cmdList2) ;
983 if (vars.
find(idxCatName) && prototype==0
984 && (auxProto==0 || auxProto->
getSize()==0)
985 && (autoBinned || (binnedTag && strlen(binnedTag)))) {
1006 const RooArgSet* protoVars = prototype ? prototype->
get() : 0 ;
1008 if (vars.
find(idxCatName) || (protoVars && protoVars->
find(idxCatName))) {
1037 }
else if (!allServers && anyServer) {
1039 coutE(
Plotting) <<
"RooSimultaneous::genContext: ERROR: prototype must include either all "
1040 <<
" components of the RooSimultaneous index category or none " << endl ;
1050 <<
") ERROR: no PDF associated with current state ("
1054 return ((
RooAbsPdf*)proxy->absArg())->genContext(vars,prototype,auxProto,
verbose) ;
1065 Bool_t correctForBinVolume,
1066 Bool_t showProgress)
const
1069 correctForBinVolume, showProgress) == 0)
1100 for (
Int_t i=0 ; i<nEvents ; i++) {
1101 for (
const auto& nameIdx :
indexCat()) {
1111 *globClone = *tmp->
get(0) ;
1117 data->
add(*globClone) ;
RooTemplateProxy< RooAbsReal > RooRealProxy
Compatibility typedef replacing the old RooRealProxy class.
char * Form(const char *fmt,...)
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
RooArgSet * getObservables(const RooArgSet &set, Bool_t valueOnly=kTRUE) const
Return the observables of this pdf given a set of observables.
Bool_t dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0, Bool_t valueOnly=kFALSE) const
Test whether we depend on (ie, are served by) any object in the specified collection.
virtual Bool_t isFundamental() const
Is this object a fundamental type that can be added to a dataset? Fundamental-type subclasses overrid...
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
virtual Bool_t isDerived() const
Does value or shape of this arg depend on any other arg?
const RefCountList_t & servers() const
List of all servers of this object.
Bool_t addOwnedComponents(const RooArgSet &comps)
Take ownership of the contents of 'comps'.
TIterator * serverIterator() const
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
virtual bool setLabel(const char *label, Bool_t printError=kTRUE)=0
Change category state by specifying a state name.
RooAbsCategory is the base class for objects that represent a discrete value with a finite number of ...
virtual value_type getCurrentIndex() const
Return index number of current state.
virtual const char * getCurrentLabel() const
Return label string of current state.
std::map< std::string, value_type >::const_iterator begin() const
Iterator for category state names. Points to pairs of index and name.
std::size_t size() const
Number of states defined.
Bool_t contains(const RooAbsArg &var) const
Check if collection contains an argument with the same name as var.
virtual Bool_t addOwned(RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
virtual TObject * Clone(const char *newname=0) const
Make a clone of an object using the Streamer facility.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
Storage_t::size_type size() const
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
RooAbsArg * find(const char *name) const
Find object with given name in list.
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual const RooArgSet * get() const
virtual Roo1DTable * table(const RooArgSet &catSet, const char *cuts="", const char *opts="") const
Construct table for product of categories in catSet.
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
Bool_t canBeExtended() const
RooDataSet * generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none())
See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,...
Bool_t mustBeExtended() const
RooArgSet * _normSet
Normalization integral (owned by _normMgr)
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none(), const RooCmdArg &arg9=RooCmdArg::none(), const RooCmdArg &arg10=RooCmdArg::none()) const
Helper calling plotOn(RooPlot*, RooLinkedList&) const.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooAbsReal * createIntegral(const RooArgSet &iset, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Create an object that represents the integral of the function over one or more observables listed in ...
Bool_t plotSanityChecks(RooPlot *frame) const
Utility function for plotOn(), perform general sanity check on frame to ensure safe plotting operatio...
virtual void fixAddCoefNormalization(const RooArgSet &addNormSet=RooArgSet(), Bool_t force=kTRUE)
Fix the interpretation of the coefficient of any RooAddPdf component in the expression tree headed by...
void makeProjectionSet(const RooAbsArg *plotVar, const RooArgSet *allVars, RooArgSet &projectedVars, Bool_t silent) const
Utility function for plotOn() that constructs the set of observables to project when plotting ourselv...
RooDataHist * fillDataHist(RooDataHist *hist, const RooArgSet *nset, Double_t scaleFactor, Bool_t correctForBinVolume=kFALSE, Bool_t showProgress=kFALSE) const
Fill a RooDataHist with values sampled from this function at the bin centers.
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
T * getObj(const RooArgSet *nset, Int_t *sterileIndex=0, const TNamed *isetRangeName=0)
T * getObjByIndex(Int_t index) const
Retrieve payload object by slot index.
Int_t setObj(const RooArgSet *nset, T *obj, const TNamed *isetRangeName=0)
RooCategory is an object to represent discrete states.
virtual Bool_t setLabel(const char *label, bool printError=true) override
Set value by specifying the name of the desired state.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
The RooDataHist is a container class to hold N-dimensional binned data.
virtual Double_t weight() const
void set(Double_t weight, Double_t wgtErr=-1)
Set the weight and weight error of the bin enclosing the current (i.e.
virtual Int_t numEntries() const
Return the number of bins.
virtual const RooArgSet * get() const
RooDataSet is a container class to hold unbinned data.
virtual const RooArgSet * get(Int_t index) const override
Return RooArgSet with coordinates of event 'index'.
virtual void add(const RooArgSet &row, Double_t weight=1.0, Double_t weightError=0) override
Add a data point, with its coordinates specified in the 'data' argset, to the data set.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
TIterator * MakeIterator(Bool_t forward=kTRUE) const
Create a TIterator for this list.
void Delete(Option_t *o=0)
Remove all elements in collection and delete all elements NB: Collection does not own elements,...
TObject * find(const char *name) const
Return pointer to object with given name in collection.
virtual void Add(TObject *arg)
static const TNamed * ptr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string.
A RooPlot is a plot frame and a container for graphics objects within that frame.
const RooArgSet * getNormVars() const
RooAbsRealLValue * getPlotVar() const
void remove(const char *name=0, Bool_t deleteToo=kTRUE)
Remove object with given name, or last object added if no name is given.
RooRealVar represents a variable that can be changed from the outside.
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...
virtual void removeAll()
Remove all argument inset using remove(const RooAbsArg&).
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
virtual RooAbsGenContext * genContext(const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t verbose=kFALSE) const
Return specialized generator context for simultaneous p.d.f.s.
virtual Double_t evaluate() const
Return the current value: the value of the PDF associated with the current index category state.
virtual Double_t expectedEvents(const RooArgSet *nset) const
Return the number of expected events: If the index is in nset, then return the sum of the expected ev...
virtual ~RooSimultaneous()
Destructor.
RooObjCacheManager _partIntMgr
virtual RooDataSet * generateSimGlobal(const RooArgSet &whatVars, Int_t nEvents)
Special generator interface for generation of 'global observables' – for RooStats tools.
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Return analytical integration defined by given code.
virtual RooDataHist * fillDataHist(RooDataHist *hist, const RooArgSet *nset, Double_t scaleFactor, Bool_t correctForBinVolume=kFALSE, Bool_t showProgress=kFALSE) const
RooCategoryProxy _indexCat
virtual ExtendMode extendMode() const
WVE NEEDS FIX.
virtual void selectNormalization(const RooArgSet *depSet=0, Bool_t force=kFALSE)
Interface function used by test statistics to freeze choice of observables for interpretation of frac...
Bool_t addPdf(const RooAbsPdf &pdf, const char *catLabel)
Associate given PDF with index category state label 'catLabel'.
friend class RooSimGenContext
void initialize(RooAbsCategoryLValue &inIndexCat, std::map< std::string, RooAbsPdf * > pdfMap)
virtual RooAbsGenContext * autoGenContext(const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t verbose=kFALSE, Bool_t autoBinned=kTRUE, const char *binnedTag="") const
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg(), const RooCmdArg &arg9=RooCmdArg(), const RooCmdArg &arg10=RooCmdArg()) const
Helper calling plotOn(RooPlot*, RooLinkedList&) const.
const TNamed * _plotCoefNormRange
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &numVars, const RooArgSet *normSet, const char *rangeName=0) const
Forward determination of analytical integration capabilities to component p.d.f.s A unique code is as...
RooSetProxy _plotCoefNormSet
const RooAbsCategoryLValue & indexCat() const
virtual void selectNormalizationRange(const char *rangeName=0, Bool_t force=kFALSE)
Interface function used by test statistics to freeze choice of range for interpretation of fraction c...
friend class RooSimSplitGenContext
RooAbsPdf * getPdf(const char *catName) const
Return the p.d.f associated with the given index category name.
The RooSuperCategory can join several RooAbsCategoryLValue objects into a single category.
virtual Bool_t setLabel(const char *label, Bool_t printError=kTRUE) override
Set the value of the super category by specifying the state name.
const char * label() const
Get the label of the current category state. This function only makes sense for category proxies.
bool setArg(T &newRef)
Change object held in proxy into newRef.
const T & arg() const
Return reference to object held in proxy.
Iterator abstract base class.
virtual TObject * Next()=0
virtual void Add(TObject *obj)
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual TIterator * MakeIterator(Bool_t dir=kIterForward) const
Return a list iterator.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual const char * GetName() const
Returns name of object.
Mother of all ROOT objects.
virtual Int_t IndexOf(const TObject *obj) const
Return index of object in collection.
TString & Append(const char *cs)
RooCmdArg ProjWData(const RooAbsData &projData, Bool_t binData=kFALSE)
RooCmdArg DrawOption(const char *opt)
RooCmdArg Project(const RooArgSet &projSet)
RooCmdArg Normalization(Double_t scaleFactor)
std::vector< std::string > tokenise(const std::string &str, const std::string &delims, bool returnEmptyToken=true)
Tokenise the string by splitting at the characters in delims.
static constexpr double pc
static long int sum(long int i)