// RooAbsCollection is an abstract container object that can hold
// multiple RooAbsArg objects. Collections are ordered and can
// contain multiple objects of the same name, (but a derived
// implementation can enforce unique names). The storage of objects in
// implement through class RooLinkedList, a doubly linked list with an
// an optional hash-table lookup mechanism for fast indexing of large
// collections.
// END_HTML
#include "RooFit.h"
#include "Riostream.h"
#include "Riostream.h"
#include <iomanip>
#include <fstream>
#include <vector>
#include <string>
#include "TClass.h"
#include "TStopwatch.h"
#include "TRegexp.h"
#include "RooAbsCollection.h"
#include "RooStreamParser.h"
#include "RooFormula.h"
#include "RooAbsRealLValue.h"
#include "RooAbsCategoryLValue.h"
#include "RooStringVar.h"
#include "RooTrace.h"
#include "RooArgList.h"
#include "RooLinkedListIter.h"
#include "RooCmdConfig.h"
#include "RooRealVar.h"
#include "RooGlobalFunc.h"
#include "RooMsgService.h"
#include <string>
#include <sstream>
using namespace std ;
#if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3)
char* operator+( streampos&, char* );
#endif
ClassImp(RooAbsCollection)
;
RooAbsCollection::RooAbsCollection() :
_list(43),
_ownCont(kFALSE),
_name()
{
RooTrace::create(this) ;
}
RooAbsCollection::RooAbsCollection(const char *name) :
_list(43),
_ownCont(kFALSE),
_name(name)
{
RooTrace::create(this) ;
}
RooAbsCollection::RooAbsCollection(const RooAbsCollection& other, const char *name) :
TObject(other),
RooPrintable(other),
_list(other._list.getHashTableSize()) ,
_ownCont(kFALSE),
_name(name)
{
RooTrace::create(this) ;
if (!name) setName(other.GetName()) ;
TIterator *iterator= other.createIterator();
RooAbsArg *arg = 0;
while((arg= (RooAbsArg*)iterator->Next())) {
add(*arg);
}
delete iterator;
}
RooAbsCollection::~RooAbsCollection()
{
if(_ownCont){
safeDeleteList() ;
}
RooTrace::destroy(this) ;
}
void RooAbsCollection::safeDeleteList()
{
if (getSize()==1) {
_list.Delete() ;
return ;
}
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
Bool_t working = kTRUE ;
while(working) {
working = kFALSE ;
iter->Reset() ;
while((arg=(RooAbsArg*)iter->Next())) {
if (!arg->dependsOn(*this,arg)) {
remove(*arg) ;
delete arg ;
working = kTRUE ;
}
}
if (_list.GetSize()<2) break ;
}
delete iter ;
if (getSize()>1) {
coutW(ObjectHandling) << "RooAbsCollection::safeDeleteList(" << GetName()
<< ") WARNING: unable to delete following elements in client-server order " ;
Print("1") ;
}
_list.Delete() ;
}
RooAbsCollection* RooAbsCollection::snapshot(Bool_t deepCopy) const
{
TString snapName ;
if (TString(GetName()).Length()>0) {
snapName.Append("Snapshot of ") ;
snapName.Append(GetName()) ;
}
RooAbsCollection* output = (RooAbsCollection*) create(snapName.Data()) ;
if (deepCopy || getSize()>100) {
output->setHashTableSize(1000) ;
}
Bool_t error = snapshot(*output,deepCopy) ;
if (error) {
delete output ;
return 0 ;
}
return output ;
}
Bool_t RooAbsCollection::snapshot(RooAbsCollection& output, Bool_t deepCopy) const
{
TIterator *iterator= createIterator();
RooAbsArg *orig = 0;
while((0 != (orig= (RooAbsArg*)iterator->Next()))) {
RooAbsArg *copy= (RooAbsArg*)orig->Clone();
output.add(*copy);
}
delete iterator;
TIterator* vIter = output.createIterator() ;
RooAbsArg* var ;
Bool_t error(kFALSE) ;
if (deepCopy) {
while ((var=(RooAbsArg*)vIter->Next())) {
error |= output.addServerClonesToList(*var) ;
}
}
if (error) {
coutE(ObjectHandling) << "RooAbsCollection::snapshot(): Errors occurred in deep clone process, snapshot not created" << endl ;
output._ownCont = kTRUE ;
return kTRUE ;
}
vIter->Reset() ;
while ((var=(RooAbsArg*)vIter->Next())) {
var->redirectServers(output,deepCopy) ;
}
delete vIter ;
output._ownCont = kTRUE ;
return kFALSE ;
}
Bool_t RooAbsCollection::addServerClonesToList(const RooAbsArg& var)
{
Bool_t ret(kFALSE) ;
TIterator* sIter = var.serverIterator() ;
RooAbsArg* server ;
while ((server=(RooAbsArg*)sIter->Next())) {
RooAbsArg* tmp = find(server->GetName()) ;
if (!tmp) {
RooAbsArg* serverClone = (RooAbsArg*)server->Clone() ;
serverClone->setAttribute("SnapShot_ExtRefClone") ;
_list.Add(serverClone) ;
ret |= addServerClonesToList(*server) ;
} else {
}
}
delete sIter ;
return ret ;
}
RooAbsCollection &RooAbsCollection::operator=(const RooAbsCollection& other)
{
if (&other==this) return *this ;
RooAbsArg *elem, *theirs ;
RooLinkedListIter iter = _list.iterator() ;
while((elem=(RooAbsArg*)iter.Next())) {
theirs= other.find(elem->GetName());
if(!theirs) continue;
theirs->syncCache() ;
elem->copyCache(theirs) ;
elem->setAttribute("Constant",theirs->isConstant()) ;
}
return *this;
}
RooAbsCollection &RooAbsCollection::assignValueOnly(const RooAbsCollection& other)
{
if (&other==this) return *this ;
RooAbsArg *elem, *theirs ;
RooLinkedListIter iter = _list.iterator() ;
while((elem=(RooAbsArg*)iter.Next())) {
theirs= other.find(elem->GetName());
if(!theirs) continue;
theirs->syncCache() ;
elem->copyCache(theirs) ;
}
return *this;
}
RooAbsCollection &RooAbsCollection::assignFast(const RooAbsCollection& other)
{
if (&other==this) return *this ;
RooAbsArg *elem, *theirs ;
RooLinkedListIter iter = _list.iterator() ;
RooLinkedListIter iter2 = other._list.iterator() ;
while((elem=(RooAbsArg*)iter.Next())) {
theirs= (RooAbsArg*)iter2.Next() ;
theirs->syncCache() ;
elem->copyCache(theirs,kTRUE) ;
}
return *this;
}
Bool_t RooAbsCollection::addOwned(RooAbsArg& var, Bool_t silent)
{
if(!_ownCont && (getSize() > 0) && !silent) {
coutE(ObjectHandling) << ClassName() << "::" << GetName() << "::addOwned: can only add to an owned list" << endl;
return kFALSE;
}
_ownCont= kTRUE;
_list.Add((RooAbsArg*)&var);
return kTRUE;
}
RooAbsArg *RooAbsCollection::addClone(const RooAbsArg& var, Bool_t silent)
{
if(!_ownCont && (getSize() > 0) && !silent) {
coutE(ObjectHandling) << ClassName() << "::" << GetName() << "::addClone: can only add to an owned list" << endl;
return 0;
}
_ownCont= kTRUE;
RooAbsArg *clone2= (RooAbsArg*)var.Clone();
if(0 != clone2) _list.Add((RooAbsArg*)clone2);
return clone2;
}
Bool_t RooAbsCollection::add(const RooAbsArg& var, Bool_t silent)
{
if(_ownCont && !silent) {
coutE(ObjectHandling) << ClassName() << "::" << GetName() << "::add: cannot add to an owned list" << endl;
return kFALSE;
}
_list.Add((RooAbsArg*)&var);
return kTRUE;
}
Bool_t RooAbsCollection::add(const RooAbsCollection& list, Bool_t silent)
{
Bool_t result(false) ;
Int_t n= list.getSize() ;
for(Int_t index= 0; index < n; index++) {
result |= add((RooAbsArg&)*list._list.At(index),silent) ;
}
return result;
}
Bool_t RooAbsCollection::addOwned(const RooAbsCollection& list, Bool_t silent)
{
Bool_t result(false) ;
Int_t n= list.getSize() ;
for(Int_t index= 0; index < n; index++) {
result |= addOwned((RooAbsArg&)*list._list.At(index),silent) ;
}
return result;
}
void RooAbsCollection::addClone(const RooAbsCollection& list, Bool_t silent)
{
Int_t n= list.getSize() ;
for(Int_t index= 0; index < n; index++) {
addClone((RooAbsArg&)*list._list.At(index),silent) ;
}
}
Bool_t RooAbsCollection::replace(const RooAbsCollection &other)
{
if(_ownCont) {
coutE(ObjectHandling) << "RooAbsCollection: cannot replace variables in a copied list" << endl;
return kFALSE;
}
TIterator *otherArgs= other.createIterator();
const RooAbsArg *arg = 0;
while((arg= (const RooAbsArg*)otherArgs->Next())) {
RooAbsArg *found= find(arg->GetName());
if(found) replace(*found,*arg);
}
delete otherArgs;
return kTRUE;
}
Bool_t RooAbsCollection::replace(const RooAbsArg& var1, const RooAbsArg& var2)
{
if(_ownCont) {
coutE(ObjectHandling) << "RooAbsCollection: cannot replace variables in a copied list" << endl;
return kFALSE;
}
const char *name= var1.GetName();
Bool_t foundVar1(kFALSE) ;
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
if (arg==&var1) foundVar1=kTRUE ;
}
delete iter ;
if (!foundVar1) {
coutE(ObjectHandling) << "RooAbsCollection: variable \"" << name << "\" is not in the list"
<< " and cannot be replaced" << endl;
return kFALSE;
}
RooAbsArg *other= find(name);
if (dynamic_cast<RooArgSet*>(this)) {
other= find(var2.GetName());
if(other != 0 && other != &var1) {
coutE(ObjectHandling) << "RooAbsCollection: cannot replace \"" << name
<< "\" with already existing \"" << var2.GetName() << "\"" << endl;
return kFALSE;
}
}
_list.Replace(&var1,&var2) ;
return kTRUE;
}
Bool_t RooAbsCollection::remove(const RooAbsArg& var, Bool_t , Bool_t matchByNameOnly)
{
TString name(var.GetName()) ;
Bool_t anyFound(kFALSE) ;
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
if ((&var)==arg) {
_list.Remove(arg) ;
anyFound=kTRUE ;
} else if (matchByNameOnly) {
if (!name.CompareTo(arg->GetName())) {
_list.Remove(arg) ;
anyFound=kTRUE ;
}
}
}
delete iter ;
return anyFound ;
}
Bool_t RooAbsCollection::remove(const RooAbsCollection& list, Bool_t silent, Bool_t matchByNameOnly)
{
Bool_t result(false) ;
Int_t n= list.getSize() ;
for(Int_t index= 0; index < n; index++) {
result |= remove((RooAbsArg&)*list._list.At(index),silent,matchByNameOnly) ;
}
return result;
}
void RooAbsCollection::removeAll()
{
if(_ownCont) {
safeDeleteList() ;
_ownCont= kFALSE;
}
else {
_list.Clear();
}
}
void RooAbsCollection::setAttribAll(const Text_t* name, Bool_t value)
{
TIterator* iter= createIterator() ;
RooAbsArg* arg ;
while ((arg=(RooAbsArg*)iter->Next())) {
arg->setAttribute(name,value) ;
}
delete iter ;
}
RooAbsCollection* RooAbsCollection::selectByAttrib(const char* name, Bool_t value) const
{
TString selName(GetName()) ;
selName.Append("_selection") ;
RooAbsCollection *sel = (RooAbsCollection*) create(selName.Data()) ;
TIterator* iter= createIterator() ;
RooAbsArg* arg ;
while ((arg=(RooAbsArg*)iter->Next())) {
if (arg->getAttribute(name)==value)
sel->add(*arg) ;
}
delete iter ;
return sel ;
}
RooAbsCollection* RooAbsCollection::selectCommon(const RooAbsCollection& refColl) const
{
TString selName(GetName()) ;
selName.Append("_selection") ;
RooAbsCollection *sel = (RooAbsCollection*) create(selName.Data()) ;
TIterator* iter= createIterator() ;
RooAbsArg* arg ;
while ((arg=(RooAbsArg*)iter->Next())) {
if (refColl.find(arg->GetName()))
sel->add(*arg) ;
}
delete iter ;
return sel ;
}
RooAbsCollection* RooAbsCollection::selectByName(const char* nameList, Bool_t verbose) const
{
TString selName(GetName()) ;
selName.Append("_selection") ;
RooAbsCollection *sel = (RooAbsCollection*) create(selName.Data()) ;
TIterator* iter = createIterator() ;
char* buf = new char[strlen(nameList)+1] ;
strcpy(buf,nameList) ;
char* wcExpr = strtok(buf,",") ;
while(wcExpr) {
TRegexp rexp(wcExpr,kTRUE) ;
if (verbose) {
cxcoutD(ObjectHandling) << "RooAbsCollection::selectByName(" << GetName() << ") processing expression '" << wcExpr << "'" << endl ;
}
iter->Reset() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
if (TString(arg->GetName()).Index(rexp)>=0) {
if (verbose) {
cxcoutD(ObjectHandling) << "RooAbsCollection::selectByName(" << GetName() << ") selected element " << arg->GetName() << endl ;
}
sel->add(*arg) ;
}
}
wcExpr = strtok(0,",") ;
}
delete iter ;
delete[] buf ;
return sel ;
}
Bool_t RooAbsCollection::equals(const RooAbsCollection& otherColl) const
{
if (getSize() != otherColl.getSize()) return kFALSE ;
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
if (!otherColl.find(arg->GetName())) {
delete iter ;
return kFALSE ;
}
}
delete iter ;
return kTRUE ;
}
Bool_t RooAbsCollection::overlaps(const RooAbsCollection& otherColl) const
{
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
if (otherColl.find(arg->GetName())) {
delete iter ;
return kTRUE ;
}
}
delete iter ;
return kFALSE ;
}
RooAbsArg *RooAbsCollection::find(const char *name) const
{
return (RooAbsArg*) _list.find(name);
}
string RooAbsCollection::contentsString() const
{
string retVal ;
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
Bool_t isFirst(kTRUE) ;
while((arg=(RooAbsArg*)iter->Next())) {
if (isFirst) {
isFirst=kFALSE ;
} else {
retVal += "," ;
}
retVal += arg->GetName() ;
}
delete iter ;
return retVal ;
}
void RooAbsCollection::printName(ostream& os) const
{
os << GetName() ;
}
void RooAbsCollection::printTitle(ostream& os) const
{
os << GetTitle() ;
}
void RooAbsCollection::printClassName(ostream& os) const
{
os << IsA()->GetName() ;
}
Int_t RooAbsCollection::defaultPrintContents(Option_t* opt) const
{
if (opt && TString(opt)=="I") {
return kValue ;
}
if (opt && TString(opt).Contains("v")) {
return kAddress|kName|kArgs|kClassName|kValue|kTitle|kExtras ;
}
return kName|kClassName|kValue ;
}
void RooAbsCollection::printValue(ostream& os) const
{
Bool_t first2(kTRUE) ;
os << "(" ;
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
if (!first2) {
os << "," ;
} else {
first2 = kFALSE ;
}
os << arg->GetName() ;
}
os << ")" ;
delete iter ;
}
void RooAbsCollection::printMultiline(ostream&os, Int_t contents, Bool_t , TString indent) const
{
if (TString(GetName()).Length()>0 && (contents&kCollectionHeader)) {
os << indent << ClassName() << "::" << GetName() << ":" << (_ownCont?" (Owning contents)":"") << endl;
}
TIterator *iterator= createIterator();
int index= 0;
RooAbsArg *next = 0;
TString deeper(indent);
deeper.Append(" ");
Int_t maxNameLen(1) ;
Int_t nameFieldLengthSaved = RooPrintable::_nameLength ;
if (nameFieldLengthSaved==0) {
while((next=(RooAbsArg*)iterator->Next())) {
Int_t len = strlen(next->GetName()) ;
if (len>maxNameLen) maxNameLen = len ;
}
iterator->Reset() ;
RooPrintable::nameFieldLength(maxNameLen+1) ;
}
while((0 != (next= (RooAbsArg*)iterator->Next()))) {
os << indent << setw(3) << ++index << ") ";
next->printStream(os,contents,kSingleLine,"");
}
delete iterator;
RooPrintable::nameFieldLength(nameFieldLengthSaved) ;
}
void RooAbsCollection::dump() const
{
TIterator* iter = createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
cout << arg << " " << arg->IsA()->GetName() << "::" << arg->GetName() << " (" << arg->GetTitle() << ")" << endl ;
}
delete iter ;
}
void RooAbsCollection::printLatex(const RooCmdArg& arg1, const RooCmdArg& arg2,
const RooCmdArg& arg3, const RooCmdArg& arg4,
const RooCmdArg& arg5, const RooCmdArg& arg6,
const RooCmdArg& arg7, const RooCmdArg& arg8) const
{
RooCmdConfig pc("RooAbsCollection::printLatex()") ;
pc.defineInt("ncol","Columns",0,1) ;
pc.defineString("outputFile","OutputFile",0,"") ;
pc.defineString("format","Format",0,"NEYVU") ;
pc.defineInt("sigDigit","Format",0,1) ;
pc.defineObject("siblings","Sibling",0,0,kTRUE) ;
pc.defineInt("dummy","FormatArgs",0,0) ;
pc.defineMutex("Format","FormatArgs") ;
RooLinkedList cmdList;
cmdList.Add(const_cast<RooCmdArg*>(&arg1)) ; cmdList.Add(const_cast<RooCmdArg*>(&arg2)) ;
cmdList.Add(const_cast<RooCmdArg*>(&arg3)) ; cmdList.Add(const_cast<RooCmdArg*>(&arg4)) ;
cmdList.Add(const_cast<RooCmdArg*>(&arg5)) ; cmdList.Add(const_cast<RooCmdArg*>(&arg6)) ;
cmdList.Add(const_cast<RooCmdArg*>(&arg7)) ; cmdList.Add(const_cast<RooCmdArg*>(&arg8)) ;
pc.process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
if (!pc.ok(kTRUE)) {
return ;
}
const char* outFile = pc.getString("outputFile") ;
if (outFile && strlen(outFile)) {
ofstream ofs(outFile) ;
if (pc.hasProcessed("FormatArgs")) {
RooCmdArg* formatCmd = static_cast<RooCmdArg*>(cmdList.FindObject("FormatArgs")) ;
formatCmd->addArg(RooFit::LatexTableStyle()) ;
printLatex(ofs,pc.getInt("ncol"),0,0,pc.getObjectList("siblings"),formatCmd) ;
} else {
printLatex(ofs,pc.getInt("ncol"),pc.getString("format"),pc.getInt("sigDigit"),pc.getObjectList("siblings")) ;
}
} else {
if (pc.hasProcessed("FormatArgs")) {
RooCmdArg* formatCmd = static_cast<RooCmdArg*>(cmdList.FindObject("FormatArgs")) ;
formatCmd->addArg(RooFit::LatexTableStyle()) ;
printLatex(cout,pc.getInt("ncol"),0,0,pc.getObjectList("siblings"),formatCmd) ;
} else {
printLatex(cout,pc.getInt("ncol"),pc.getString("format"),pc.getInt("sigDigit"),pc.getObjectList("siblings")) ;
}
}
}
void RooAbsCollection::printLatex(ostream& ofs, Int_t ncol, const char* option, Int_t sigDigit, const RooLinkedList& siblingList, const RooCmdArg* formatCmd) const
{
Int_t nrow = (Int_t) (getSize() / ncol + 0.99) ;
Int_t i,j,k ;
TString sibOption ;
RooCmdArg sibFormatCmd ;
if (option) {
sibOption = option ;
sibOption.ReplaceAll("N","") ;
sibOption.ReplaceAll("n","") ;
} else {
sibFormatCmd = *formatCmd ;
TString tmp = formatCmd->_s[0] ;
tmp.ReplaceAll("N","") ;
tmp.ReplaceAll("n","") ;
static char buf[100] ;
strcpy(buf,tmp.Data()) ;
sibFormatCmd._s[0] = buf ;
}
RooLinkedList listList ;
listList.Add((RooAbsArg*)this) ;
TIterator* sIter = siblingList.MakeIterator() ;
RooAbsCollection* col ;
while((col=(RooAbsCollection*)sIter->Next())) {
listList.Add(col) ;
}
delete sIter ;
RooLinkedList listListRRV ;
TIterator* lIter = listList.MakeIterator() ;
RooArgList* prevList = 0 ;
while((col=(RooAbsCollection*)lIter->Next())) {
RooArgList* list = new RooArgList ;
TIterator* iter = col->createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
RooRealVar* rrv = dynamic_cast<RooRealVar*>(arg) ;
if (rrv) {
list->add(*rrv) ;
} else {
coutW(InputArguments) << "RooAbsCollection::printLatex: can only print RooRealVar in LateX, skipping non-RooRealVar object named "
<< arg->GetName() << endl ;
}
if (prevList && TString(rrv->GetName()).CompareTo(prevList->at(list->getSize()-1)->GetName())) {
coutW(InputArguments) << "RooAbsCollection::printLatex: WARNING: naming and/or ordering of sibling list is different" << endl ;
}
}
delete iter ;
listListRRV.Add(list) ;
if (prevList && list->getSize() != prevList->getSize()) {
coutW(InputArguments) << "RooAbsCollection::printLatex: ERROR: sibling list(s) must have same length as self" << endl ;
delete list ;
listListRRV.Delete() ;
return ;
}
prevList = list ;
}
Int_t nlist = listListRRV.GetSize() ;
TString subheader = "l" ;
for (k=0 ; k<nlist ; k++) subheader += "c" ;
TString header = "\\begin{tabular}{" ;
for (j=0 ; j<ncol ; j++) {
if (j>0) header += "|" ;
header += subheader ;
}
header += "}" ;
ofs << header << endl ;
for (i=0 ; i<nrow ; i++) {
for (j=0 ; j<ncol ; j++) {
for (k=0 ; k<nlist ; k++) {
RooRealVar* par = (RooRealVar*) ((RooArgList*)listListRRV.At(k))->at(i+j*nrow) ;
if (par) {
if (option) {
ofs << *par->format(sigDigit,(k==0)?option:sibOption.Data()) ;
} else {
ofs << *par->format((k==0)?*formatCmd:sibFormatCmd) ;
}
}
if (!(j==ncol-1 && k==nlist-1)) {
ofs << " & " ;
}
}
}
ofs << "\\\\" << endl ;
}
ofs << "\\end{tabular}" << endl ;
listListRRV.Delete() ;
}
Bool_t RooAbsCollection::allInRange(const char* rangeSpec) const
{
if (!rangeSpec) return kTRUE ;
vector<string> cutVec ;
if (rangeSpec && strlen(rangeSpec)>0) {
if (strchr(rangeSpec,',')==0) {
cutVec.push_back(rangeSpec) ;
} else {
char* buf = new char[strlen(rangeSpec)+1] ;
strcpy(buf,rangeSpec) ;
const char* oneRange = strtok(buf,",") ;
while(oneRange) {
cutVec.push_back(oneRange) ;
oneRange = strtok(0,",") ;
}
delete[] buf ;
}
}
RooLinkedListIter iter = _list.iterator() ;
Bool_t selectByRange = kTRUE ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter.Next())) {
Bool_t selectThisArg = kFALSE ;
UInt_t icut ;
for (icut=0 ; icut<cutVec.size() ; icut++) {
if (arg->inRange(cutVec[icut].c_str())) {
selectThisArg = kTRUE ;
break ;
}
}
if (!selectThisArg) {
selectByRange = kFALSE ;
break ;
}
}
return selectByRange ;
}
RooAbsCollection.cxx:1000 RooAbsCollection.cxx:1001 RooAbsCollection.cxx:1002 RooAbsCollection.cxx:1003 RooAbsCollection.cxx:1004 RooAbsCollection.cxx:1005 RooAbsCollection.cxx:1006 RooAbsCollection.cxx:1007 RooAbsCollection.cxx:1008 RooAbsCollection.cxx:1009 RooAbsCollection.cxx:1010 RooAbsCollection.cxx:1011 RooAbsCollection.cxx:1012 RooAbsCollection.cxx:1013 RooAbsCollection.cxx:1014 RooAbsCollection.cxx:1015 RooAbsCollection.cxx:1016 RooAbsCollection.cxx:1017 RooAbsCollection.cxx:1018 RooAbsCollection.cxx:1019 RooAbsCollection.cxx:1020 RooAbsCollection.cxx:1021 RooAbsCollection.cxx:1022 RooAbsCollection.cxx:1023 RooAbsCollection.cxx:1024 RooAbsCollection.cxx:1025 RooAbsCollection.cxx:1026 RooAbsCollection.cxx:1027 RooAbsCollection.cxx:1028 RooAbsCollection.cxx:1029 RooAbsCollection.cxx:1030 RooAbsCollection.cxx:1031 RooAbsCollection.cxx:1032 RooAbsCollection.cxx:1033 RooAbsCollection.cxx:1034 RooAbsCollection.cxx:1035 RooAbsCollection.cxx:1036 RooAbsCollection.cxx:1037 RooAbsCollection.cxx:1038 RooAbsCollection.cxx:1039 RooAbsCollection.cxx:1040 RooAbsCollection.cxx:1041 RooAbsCollection.cxx:1042 RooAbsCollection.cxx:1043 RooAbsCollection.cxx:1044 RooAbsCollection.cxx:1045 RooAbsCollection.cxx:1046 RooAbsCollection.cxx:1047 RooAbsCollection.cxx:1048 RooAbsCollection.cxx:1049 RooAbsCollection.cxx:1050 RooAbsCollection.cxx:1051 RooAbsCollection.cxx:1052 RooAbsCollection.cxx:1053 RooAbsCollection.cxx:1054 RooAbsCollection.cxx:1055 RooAbsCollection.cxx:1056 RooAbsCollection.cxx:1057 RooAbsCollection.cxx:1058 RooAbsCollection.cxx:1059 RooAbsCollection.cxx:1060 RooAbsCollection.cxx:1061 RooAbsCollection.cxx:1062 RooAbsCollection.cxx:1063 RooAbsCollection.cxx:1064 RooAbsCollection.cxx:1065 RooAbsCollection.cxx:1066 RooAbsCollection.cxx:1067 RooAbsCollection.cxx:1068 RooAbsCollection.cxx:1069 RooAbsCollection.cxx:1070 RooAbsCollection.cxx:1071 RooAbsCollection.cxx:1072 RooAbsCollection.cxx:1073 RooAbsCollection.cxx:1074 RooAbsCollection.cxx:1075 RooAbsCollection.cxx:1076 RooAbsCollection.cxx:1077 RooAbsCollection.cxx:1078 RooAbsCollection.cxx:1079 RooAbsCollection.cxx:1080 RooAbsCollection.cxx:1081 RooAbsCollection.cxx:1082 RooAbsCollection.cxx:1083 RooAbsCollection.cxx:1084 RooAbsCollection.cxx:1085 RooAbsCollection.cxx:1086 RooAbsCollection.cxx:1087 RooAbsCollection.cxx:1088 RooAbsCollection.cxx:1089 RooAbsCollection.cxx:1090 RooAbsCollection.cxx:1091 RooAbsCollection.cxx:1092 RooAbsCollection.cxx:1093 RooAbsCollection.cxx:1094 RooAbsCollection.cxx:1095 RooAbsCollection.cxx:1096 RooAbsCollection.cxx:1097 RooAbsCollection.cxx:1098 RooAbsCollection.cxx:1099 RooAbsCollection.cxx:1100 RooAbsCollection.cxx:1101 RooAbsCollection.cxx:1102 RooAbsCollection.cxx:1103 RooAbsCollection.cxx:1104 RooAbsCollection.cxx:1105 RooAbsCollection.cxx:1106 RooAbsCollection.cxx:1107 RooAbsCollection.cxx:1108 RooAbsCollection.cxx:1109 RooAbsCollection.cxx:1110 RooAbsCollection.cxx:1111 RooAbsCollection.cxx:1112 RooAbsCollection.cxx:1113 RooAbsCollection.cxx:1114 RooAbsCollection.cxx:1115 RooAbsCollection.cxx:1116 RooAbsCollection.cxx:1117 RooAbsCollection.cxx:1118 RooAbsCollection.cxx:1119 RooAbsCollection.cxx:1120 RooAbsCollection.cxx:1121 RooAbsCollection.cxx:1122 RooAbsCollection.cxx:1123 RooAbsCollection.cxx:1124 RooAbsCollection.cxx:1125 RooAbsCollection.cxx:1126 RooAbsCollection.cxx:1127 RooAbsCollection.cxx:1128 RooAbsCollection.cxx:1129 RooAbsCollection.cxx:1130 RooAbsCollection.cxx:1131 RooAbsCollection.cxx:1132 RooAbsCollection.cxx:1133 RooAbsCollection.cxx:1134 RooAbsCollection.cxx:1135 RooAbsCollection.cxx:1136 RooAbsCollection.cxx:1137 RooAbsCollection.cxx:1138 RooAbsCollection.cxx:1139 RooAbsCollection.cxx:1140 RooAbsCollection.cxx:1141 RooAbsCollection.cxx:1142 RooAbsCollection.cxx:1143 RooAbsCollection.cxx:1144 RooAbsCollection.cxx:1145 RooAbsCollection.cxx:1146 RooAbsCollection.cxx:1147 RooAbsCollection.cxx:1148 RooAbsCollection.cxx:1149 RooAbsCollection.cxx:1150 RooAbsCollection.cxx:1151 RooAbsCollection.cxx:1152 RooAbsCollection.cxx:1153 RooAbsCollection.cxx:1154 RooAbsCollection.cxx:1155 RooAbsCollection.cxx:1156 RooAbsCollection.cxx:1157 RooAbsCollection.cxx:1158 RooAbsCollection.cxx:1159 RooAbsCollection.cxx:1160 RooAbsCollection.cxx:1161 RooAbsCollection.cxx:1162 RooAbsCollection.cxx:1163 RooAbsCollection.cxx:1164 RooAbsCollection.cxx:1165 RooAbsCollection.cxx:1166 RooAbsCollection.cxx:1167 RooAbsCollection.cxx:1168 RooAbsCollection.cxx:1169 RooAbsCollection.cxx:1170 RooAbsCollection.cxx:1171 RooAbsCollection.cxx:1172 RooAbsCollection.cxx:1173 RooAbsCollection.cxx:1174 RooAbsCollection.cxx:1175 RooAbsCollection.cxx:1176 RooAbsCollection.cxx:1177 RooAbsCollection.cxx:1178 RooAbsCollection.cxx:1179 RooAbsCollection.cxx:1180 RooAbsCollection.cxx:1181 RooAbsCollection.cxx:1182 RooAbsCollection.cxx:1183 RooAbsCollection.cxx:1184 RooAbsCollection.cxx:1185 RooAbsCollection.cxx:1186 RooAbsCollection.cxx:1187 RooAbsCollection.cxx:1188 RooAbsCollection.cxx:1189 RooAbsCollection.cxx:1190 RooAbsCollection.cxx:1191 RooAbsCollection.cxx:1192 RooAbsCollection.cxx:1193 RooAbsCollection.cxx:1194