118      gROOT->GetListOfCleanups()->Add(
this);
 
  135   gROOT->GetListOfCleanups()->Remove(
this);
 
  144   if (
dynamic_cast<const TChain*
>(T)) {
 
  148         Error(
"BuildIndex", 
"Creating a TChainIndex unsuccessful - switching to TTreeIndex");
 
  192   if (
tree == 0) 
return 0;
 
  197   for (
Int_t i = 0; i < nb; ++i) {
 
  211   if (strlen(selection)) {
 
  213      if (!select || !select->
GetNdim()) {
 
  223   for (entry=firstentry;entry<firstentry+
nentries;entry++) {
 
  225      if (entryNumber < 0) 
break;
 
  227      if (localEntry < 0) 
break;
 
  235         for(
Int_t current = 0; current<ndata && !keep; current++) {
 
  295                                 const char *macrofilename, 
const char *cutfilename,
 
  298   if (!macrofilename || strlen(macrofilename)==0) 
return 0;
 
  304   if (cutfilename && strlen(cutfilename))
 
  310   TString selname = wrapperPrefix;
 
  315   if (aclicMode.
Length()==0) {
 
  316      Warning(
"DrawScript",
"TTreeProxy does not work in interpreted mode yet. The script will be compiled.");
 
  319   selname.
Append(aclicMode);
 
  321   Info(
"DrawScript",
"%s",
Form(
"Will process tree/chain using %s",selname.
Data()));
 
  345   TString possibleFilename = varexp0;
 
  347   if ( dot_pos != 
kNPOS 
  348       && possibleFilename.
Index(
"Alt$")<0 && possibleFilename.
Index(
"Entries$")<0
 
  349       && possibleFilename.
Index(
"LocalEntries$")<0
 
  350       && possibleFilename.
Index(
"Length$")<0  && possibleFilename.
Index(
"Entry$")<0
 
  351       && possibleFilename.
Index(
"LocalEntry$")<0
 
  352       && possibleFilename.
Index(
"Min$")<0 && possibleFilename.
Index(
"Max$")<0
 
  353       && possibleFilename.
Index(
"MinIf$")<0 && possibleFilename.
Index(
"MaxIf$")<0
 
  354       && possibleFilename.
Index(
"Iteration$")<0 && possibleFilename.
Index(
"Sum$")<0
 
  355       && possibleFilename.
Index(
">")<0 && possibleFilename.
Index(
"<")<0
 
  360               "Drawing using a C++ file currently requires that both the expression and the selection are files\n\t\"%s\" is not a file",
 
  367      possibleFilename = selection;
 
  368      if (possibleFilename.
Index(
"Alt$")<0 && possibleFilename.
Index(
"Entries$")<0
 
  369          && possibleFilename.
Index(
"LocalEntries$")<0
 
  370          && possibleFilename.
Index(
"Length$")<0  && possibleFilename.
Index(
"Entry$")<0
 
  371          && possibleFilename.
Index(
"LocalEntry$")<0
 
  372          && possibleFilename.
Index(
"Min$")<0 && possibleFilename.
Index(
"Max$")<0
 
  373          && possibleFilename.
Index(
"MinIf$")<0 && possibleFilename.
Index(
"MaxIf$")<0
 
  374          && possibleFilename.
Index(
"Iteration$")<0 && possibleFilename.
Index(
"Sum$")<0
 
  375          && possibleFilename.
Index(
">")<0 && possibleFilename.
Index(
"<")<0
 
  379               "Drawing using a C++ file currently requires that both the expression and the selection are files\n\t\"%s\" is not a file",
 
  388   if (evlist && elist){
 
  393   if (cvarexp) cvarexp->
SetTitle(varexp0);
 
  394   if (cselection) cselection->
SetTitle(selection);
 
  411         gROOT->ProcessLineFast(
"new TCanvas();");
 
  448            gPad->DrawFrame(-1.,-1.,1.,1.);
 
  457         Warning(
"DrawSelect", 
"The selected TTree subset is empty.");
 
  462   if (
fDimension == 1 && !(optpara||optcandle)) {
 
  467   } 
else if (
fDimension == 2 && !(optpara||optcandle)) {
 
  486   } 
else if (
fDimension == 3 && !(optpara||optcandle)) {
 
  492      } 
else if (action == 33) {
 
  499         if (opt.
Contains(
"same")) noscat -= 4;
 
  507   } 
else if (
fDimension == 4 && !(optpara||optcandle)) {
 
  514      for (
Int_t col=0;col<ncolors;col++) {
 
  517         if (draw) pm3d->
Draw();
 
  520   } 
else if (
fDimension > 1 && (optpara || optcandle)) {
 
  525         gROOT->ProcessLine(
Form(
"TParallelCoord::SetEntryList((TParallelCoord*)0x%zx,(TEntryList*)0x%zx)",
 
  526                                     (
size_t)para, (size_t)enlist));
 
  530      gROOT->ProcessLineFast(
Form(
"(new TGL5DDataSet((TTree *)0x%zx))->Draw(\"%s\");", (
size_t)
fTree, opt.
Data()));
 
  562   Int_t nch = option ? strlen(option) + 10 : 10;
 
  563   char *opt = 
new char[nch];
 
  564   if (option) strlcpy(opt,option,nch-1);
 
  565   else        strlcpy(opt,
"goff",5);
 
  570   Int_t fitResult = -1;
 
  608      nentries   = lastentry - firstentry + 1;
 
  625   TTHREAD_TLS_DECL(std::string,column);
 
  626   if (colindex<0 ) 
return "";
 
  628   i1 = index[colindex] + 1;
 
  629   n  = index[colindex+1] - i1;
 
  630   column = varexp(i1,
n).
Data();
 
  632   return column.c_str();
 
  646       if (branch->IsA() != TBranchObject::Class()) {
 
  649            const char* ltitle = leaf->
GetTitle();
 
  650            if (mother && mother!=branch) {
 
  651               branchname = mother->
GetName();
 
  652               if (branchname[branchname.
Length()-1]!=
'.') {
 
  655               if (strncmp(branchname.
Data(),ltitle,branchname.
Length())==0) {
 
  661            branchname += ltitle;
 
  666      char *bname = (
char*)branchname.
Data();
 
  667      char *twodim = (
char*)strstr(bname,
"[");
 
  668      if (twodim) *twodim = 0;
 
  670         if (*bname == 
'.') *bname=
'_';
 
  671         if (*bname == 
',') *bname=
'_';
 
  672         if (*bname == 
':') *bname=
'_';
 
  673         if (*bname == 
'<') *bname=
'_';
 
  674         if (*bname == 
'>') *bname=
'_';
 
  728   thead.
Form(
"%s.h", classname);
 
  729   FILE *fp = fopen(thead, 
"w");
 
  731      Error(
"MakeClass",
"cannot open output file %s", thead.
Data());
 
  735   tcimp.
Form(
"%s.C", classname);
 
  736   FILE *fpc = fopen(tcimp, 
"w");
 
  738      Error(
"MakeClass",
"cannot open output file %s", tcimp.
Data());
 
  746      treefile = 
"Memory Directory";
 
  761   fprintf(fp,
"//////////////////////////////////////////////////////////\n");
 
  762   fprintf(fp,
"// This class has been automatically generated on\n");
 
  763   fprintf(fp,
"// %s by ROOT version %s\n",td.
AsString(),
gROOT->GetVersion());
 
  766      fprintf(fp,
"// found on file: %s\n",treefile.
Data());
 
  770   fprintf(fp,
"//////////////////////////////////////////////////////////\n");
 
  772   fprintf(fp,
"#ifndef %s_h\n",classname);
 
  773   fprintf(fp,
"#define %s_h\n",classname);
 
  775   fprintf(fp,
"#include <TROOT.h>\n");
 
  776   fprintf(fp,
"#include <TChain.h>\n");
 
  777   fprintf(fp,
"#include <TFile.h>\n");
 
  778   if (isHbook) fprintf(fp,
"#include <THbookFile.h>\n");
 
  779   if (opt.
Contains(
"selector")) fprintf(fp,
"#include <TSelector.h>\n");
 
  783   fprintf(fp,
"\n// Header file for the classes stored in the TTree if any.\n");
 
  786   for (
l=0;
l<nleaves;
l++) {
 
  792         if (declfile && declfile[0]) {
 
  793            static const char *precstl = 
"prec_stl/";
 
  794            static const unsigned int precstl_len = strlen(precstl);
 
  795            static const char *rootinclude = 
"include/";
 
  796            static const unsigned int rootinclude_len = strlen(rootinclude);
 
  797            if (strncmp(declfile,precstl,precstl_len) == 0) {
 
  798               fprintf(fp,
"#include <%s>\n",declfile+precstl_len);
 
  800            } 
else if (strncmp(declfile,
"/usr/include/",13) == 0) {
 
  801               fprintf(fp,
"#include <%s>\n",declfile+strlen(
"/include/c++/"));
 
  802               listOfHeaders.
Add(
new TNamed(cl->
GetName(),declfile+strlen(
"/include/c++/")));
 
  803            } 
else if (strstr(declfile,
"/include/c++/") != 0) {
 
  804               fprintf(fp,
"#include <%s>\n",declfile+strlen(
"/include/c++/"));
 
  805               listOfHeaders.
Add(
new TNamed(cl->
GetName(),declfile+strlen(
"/include/c++/")));
 
  806            } 
else if (strncmp(declfile,rootinclude,rootinclude_len) == 0) {
 
  807               fprintf(fp,
"#include <%s>\n",declfile+rootinclude_len);
 
  810               fprintf(fp,
"#include \"%s\"\n",declfile);
 
  823   for (
l=0;
l<nleaves;
l++) {
 
  837         for (
l=0;
l<nleaves;
l++) {
 
  850      fprintf(fp,
"class %s : public TSelector {\n",classname);
 
  851      fprintf(fp,
"public :\n");
 
  852      fprintf(fp,
"   TTree          *fChain;   //!pointer to the analyzed TTree or TChain\n");
 
  854      fprintf(fp,
"class %s {\n",classname);
 
  855      fprintf(fp,
"public :\n");
 
  856      fprintf(fp,
"   TTree          *fChain;   //!pointer to the analyzed TTree or TChain\n");
 
  857      fprintf(fp,
"   Int_t           fCurrent; //!current Tree number in a TChain\n");
 
  860   fprintf(fp,
"\n// Fixed size dimensions of array or collections stored in the TTree if any.\n");
 
  862   for (
l=0;
l<nleaves;
l++) {
 
  864      strlcpy(blen,leaf->
GetName(),
sizeof(blen));
 
  867         if (*bname == 
'.') *bname=
'_';
 
  868         if (*bname == 
',') *bname=
'_';
 
  869         if (*bname == 
':') *bname=
'_';
 
  870         if (*bname == 
'<') *bname=
'_';
 
  871         if (*bname == 
'>') *bname=
'_';
 
  875      if (blen[lenb-1] == 
'_') {
 
  878         if (len <= 0) len = 1;
 
  879         fprintf(fp,
"   static constexpr Int_t kMax%s = %d;\n",blen,len);
 
  887   fprintf(fp,
"\n   // Declaration of leaf types\n");
 
  891   const char *headOK  = 
"   ";
 
  892   const char *headcom = 
" //";
 
  894   char branchname[1024];
 
  901   for (
l=0;
l<nleaves;
l++) {
 
  906      len = leaf->
GetLen(); 
if (len<=0) len = 1;
 
  910      strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
  911      strlcpy(aprefix,branch->
GetName(),
sizeof(aprefix));
 
  913      else leafStatus[
l] = 1;
 
  916         strlcat(branchname,
".",
sizeof(branchname));
 
  917         strlcat(branchname,leaf->
GetTitle(),
sizeof(branchname));
 
  920            char *dim =  (
char*)strstr(branchname,
"["); 
if (dim) dim[0] = 0;
 
  923         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
  925      char *twodim = (
char*)strstr(leaf->
GetTitle(),
"][");
 
  928         if (*bname == 
'.') *bname=
'_';
 
  929         if (*bname == 
',') *bname=
'_';
 
  930         if (*bname == 
':') *bname=
'_';
 
  931         if (*bname == 
'<') *bname=
'_';
 
  932         if (*bname == 
'>') *bname=
'_';
 
  935      if (branch->IsA() == TBranchObject::Class()) {
 
  938         if (!leafobj->
GetClass()) {leafStatus[
l] = 1; head = headcom;}
 
  940         if (leafStatus[
l] == 0) mustInit.
Add(leafobj);
 
  946         strlcpy(blen,leafcount->
GetName(),
sizeof(blen));
 
  949            if (*bname == 
'.') *bname=
'_';
 
  950            if (*bname == 
',') *bname=
'_';
 
  951            if (*bname == 
':') *bname=
'_';
 
  952            if (*bname == 
'<') *bname=
'_';
 
  953            if (*bname == 
'>') *bname=
'_';
 
  957         if (blen[lenb-1] == 
'_') {blen[lenb-1] = 0; kmax = 1;}
 
  958         else                     snprintf(blen,
sizeof(blen),
"%d",len);
 
  960      if (branch->IsA() == TBranchElement::Class()) {
 
  967            fprintf(fp,
"   %-15s %s_;\n",
"Int_t", branchname);
 
  971            fprintf(fp,
"   %-15s *%s;\n",bre->
GetClassName(), branchname);
 
  979               fprintf(fp,
"%s%-15s *%s;\n",headcom,bre->
GetClassName(), branchname);
 
  981               fprintf(fp,
"%s%-15s *%s;\n",head,bre->
GetClassName(), branchname);
 
  988            fprintf(fp,
"%s%-15s *%s;\n",head,bre->
GetClassName(), branchname);
 
  989            if (leafStatus[
l] == 0) mustInit.
Add(bre);
 
  994            if (!cle) {leafStatus[
l] = 1; 
continue;}
 
  997            strlcpy(brename,bre->
GetName(),255);
 
  998            char *bren = brename;
 
  999            char *adot = strrchr(bren,
'.');
 
 1000            if (adot) bren = adot+1;
 
 1001            char *brack = strchr(bren,
'[');
 
 1002            if (brack) *brack = 0;
 
 1005               if (elem->IsA() == TStreamerBase::Class()) {leafStatus[
l] = 1; 
continue;}
 
 1008               if (leafcount) fprintf(fp,
"%s%-15s %s[kMax%s];\n",head,elem->
GetTypeName(), branchname,blen);
 
 1009               else           fprintf(fp,
"%s%-15s %s;\n",head,elem->
GetTypeName(), branchname);
 
 1012               fprintf(fp,
"%s%-15s %s;\n",head,bre->
GetClassName(), branchname);
 
 1017      if (strlen(leaf->
GetTypeName()) == 0) {leafStatus[
l] = 1; 
continue;}
 
 1028         const char *stars = 
" ";
 
 1035         char *dimInName = (
char*) strstr(branchname,
"[");
 
 1036         if ( twodim || dimInName ) {
 
 1038               dimensions = dimInName;
 
 1041            if (twodim) dimensions += (
char*)(twodim+1);
 
 1043         const char* leafcountName = leafcount->
GetName();
 
 1047            strlcpy(b2len,l2->
GetName(),
sizeof(b2len));
 
 1050               if (*bname == 
'.') *bname=
'_';
 
 1051               if (*bname == 
',') *bname=
'_';
 
 1052               if (*bname == 
':') *bname=
'_';
 
 1053               if (*bname == 
'<') *bname=
'_';
 
 1054               if (*bname == 
'>') *bname=
'_';
 
 1057            leafcountName = b2len;
 
 1059         if (dimensions.
Length()) {
 
 1060            if (kmax) fprintf(fp,
"   %-14s %s%s[kMax%s]%s;   //[%s]\n",leaf->
GetTypeName(), stars,
 
 1061                              branchname,blen,dimensions.
Data(),leafcountName);
 
 1062            else      fprintf(fp,
"   %-14s %s%s[%d]%s;   //[%s]\n",leaf->
GetTypeName(), stars,
 
 1063                              branchname,len,dimensions.
Data(),leafcountName);
 
 1065            if (kmax) fprintf(fp,
"   %-14s %s%s[kMax%s];   //[%s]\n",leaf->
GetTypeName(), stars, branchname,blen,leafcountName);
 
 1066            else      fprintf(fp,
"   %-14s %s%s[%d];   //[%s]\n",leaf->
GetTypeName(), stars, branchname,len,leafcountName);
 
 1068         if (stars[0]==
'*') {
 
 1070            if (kmax) 
n = 
new TNamed(branchname, 
Form(
"kMax%s",blen));
 
 1075         if (strstr(branchname,
"[")) len = 1;
 
 1076         if (len < 2) fprintf(fp,
"   %-15s %s;\n",leaf->
GetTypeName(), branchname);
 
 1078            if (twodim) fprintf(fp,
"   %-15s %s%s;\n",leaf->
GetTypeName(), branchname,(
char*)strstr(leaf->
GetTitle(),
"["));
 
 1079            else        fprintf(fp,
"   %-15s %s[%d];\n",leaf->
GetTypeName(), branchname,len);
 
 1086   fprintf(fp,
"   // List of branches\n");
 
 1087   for (
l=0;
l<nleaves;
l++) {
 
 1088      if (leafStatus[
l]) 
continue;
 
 1096      fprintf(fp,
"   %s(TTree * /*tree*/ =0) : fChain(0) { }\n",classname) ;
 
 1097      fprintf(fp,
"   virtual ~%s() { }\n",classname);
 
 1098      fprintf(fp,
"   virtual Int_t   Version() const { return 2; }\n");
 
 1099      fprintf(fp,
"   virtual void    Begin(TTree *tree);\n");
 
 1100      fprintf(fp,
"   virtual void    SlaveBegin(TTree *tree);\n");
 
 1101      fprintf(fp,
"   virtual void    Init(TTree *tree);\n");
 
 1102      fprintf(fp,
"   virtual Bool_t  Notify();\n");
 
 1103      fprintf(fp,
"   virtual Bool_t  Process(Long64_t entry);\n");
 
 1104      fprintf(fp,
"   virtual Int_t   GetEntry(Long64_t entry, Int_t getall = 0) { return fChain ? fChain->GetTree()->GetEntry(entry, getall) : 0; }\n");
 
 1105      fprintf(fp,
"   virtual void    SetOption(const char *option) { fOption = option; }\n");
 
 1106      fprintf(fp,
"   virtual void    SetObject(TObject *obj) { fObject = obj; }\n");
 
 1107      fprintf(fp,
"   virtual void    SetInputList(TList *input) { fInput = input; }\n");
 
 1108      fprintf(fp,
"   virtual TList  *GetOutputList() const { return fOutput; }\n");
 
 1109      fprintf(fp,
"   virtual void    SlaveTerminate();\n");
 
 1110      fprintf(fp,
"   virtual void    Terminate();\n\n");
 
 1111      fprintf(fp,
"   ClassDef(%s,0);\n",classname);
 
 1114      fprintf(fp,
"#endif\n");
 
 1118      fprintf(fp,
"   %s(TTree *tree=0);\n",classname);
 
 1119      fprintf(fp,
"   virtual ~%s();\n",classname);
 
 1120      fprintf(fp,
"   virtual Int_t    Cut(Long64_t entry);\n");
 
 1121      fprintf(fp,
"   virtual Int_t    GetEntry(Long64_t entry);\n");
 
 1122      fprintf(fp,
"   virtual Long64_t LoadTree(Long64_t entry);\n");
 
 1123      fprintf(fp,
"   virtual void     Init(TTree *tree);\n");
 
 1124      fprintf(fp,
"   virtual void     Loop();\n");
 
 1125      fprintf(fp,
"   virtual Bool_t   Notify();\n");
 
 1126      fprintf(fp,
"   virtual void     Show(Long64_t entry = -1);\n");
 
 1129      fprintf(fp,
"#endif\n");
 
 1133   fprintf(fp,
"#ifdef %s_cxx\n",classname);
 
 1135      fprintf(fp,
"%s::%s(TTree *tree) : fChain(0) \n",classname,classname);
 
 1137      fprintf(fp,
"// if parameter tree is not specified (or zero), connect the file\n");
 
 1138      fprintf(fp,
"// used to generate this class and read the Tree.\n");
 
 1139      fprintf(fp,
"   if (tree == 0) {\n");
 
 1141         fprintf(fp,
"\n#ifdef SINGLE_TREE\n");
 
 1142         fprintf(fp,
"      // The following code should be used if you want this class to access\n");
 
 1143         fprintf(fp,
"      // a single tree instead of a chain\n");
 
 1146         fprintf(fp,
"      THbookFile *f = (THbookFile*)gROOT->GetListOfBrowsables()->FindObject(\"%s\");\n",
 
 1148         fprintf(fp,
"      if (!f) {\n");
 
 1149         fprintf(fp,
"         f = new THbookFile(\"%s\");\n",treefile.
Data());
 
 1153         fprintf(fp,
"      tree = (TTree*)f->Get(%d);\n\n",hid);
 
 1155         fprintf(fp,
"      TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject(\"%s\");\n",treefile.
Data());
 
 1156         fprintf(fp,
"      if (!f || !f->IsOpen()) {\n");
 
 1157         fprintf(fp,
"         f = new TFile(\"%s\");\n",treefile.
Data());
 
 1161            fprintf(fp,
"      dir->GetObject(\"%s\",tree);\n\n",
fTree->
GetName());
 
 1163            fprintf(fp,
"      f->GetObject(\"%s\",tree);\n\n",
fTree->
GetName());
 
 1167         fprintf(fp,
"#else // SINGLE_TREE\n\n");
 
 1168         fprintf(fp,
"      // The following code should be used if you want this class to access a chain\n");
 
 1169         fprintf(fp,
"      // of trees.\n");
 
 1170         fprintf(fp,
"      TChain * chain = new TChain(\"%s\",\"%s\");\n",
 
 1177               fprintf(fp,
"      chain->Add(\"%s/%s\");\n",element->
GetTitle(),element->
GetName());
 
 1180         fprintf(fp,
"      tree = chain;\n");
 
 1181         fprintf(fp,
"#endif // SINGLE_TREE\n\n");
 
 1184      fprintf(fp,
"   Init(tree);\n");
 
 1191      fprintf(fp,
"%s::~%s()\n",classname,classname);
 
 1193      fprintf(fp,
"   if (!fChain) return;\n");
 
 1197         fprintf(fp,
"   delete fChain->GetCurrentFile();\n");
 
 1204      fprintf(fp,
"Int_t %s::GetEntry(Long64_t entry)\n",classname);
 
 1206      fprintf(fp,
"// Read contents of entry.\n");
 
 1208      fprintf(fp,
"   if (!fChain) return 0;\n");
 
 1209      fprintf(fp,
"   return fChain->GetEntry(entry);\n");
 
 1214      fprintf(fp,
"Long64_t %s::LoadTree(Long64_t entry)\n",classname);
 
 1216      fprintf(fp,
"// Set the environment to read one entry\n");
 
 1217      fprintf(fp,
"   if (!fChain) return -5;\n");
 
 1218      fprintf(fp,
"   Long64_t centry = fChain->LoadTree(entry);\n");
 
 1219      fprintf(fp,
"   if (centry < 0) return centry;\n");
 
 1220      fprintf(fp,
"   if (fChain->GetTreeNumber() != fCurrent) {\n");
 
 1221      fprintf(fp,
"      fCurrent = fChain->GetTreeNumber();\n");
 
 1222      fprintf(fp,
"      Notify();\n");
 
 1224      fprintf(fp,
"   return centry;\n");
 
 1230   fprintf(fp,
"void %s::Init(TTree *tree)\n",classname);
 
 1232   fprintf(fp,
"   // The Init() function is called when the selector needs to initialize\n" 
 1233              "   // a new tree or chain. Typically here the branch addresses and branch\n" 
 1234              "   // pointers of the tree will be set.\n" 
 1235              "   // It is normally not necessary to make changes to the generated\n" 
 1236              "   // code, but the routine can be extended by the user if needed.\n" 
 1237              "   // Init() will be called many times when running on PROOF\n" 
 1238              "   // (once per file to be processed).\n\n");
 
 1239   if (mustInit.
Last()) {
 
 1240      TIter next(&mustInit);
 
 1242      fprintf(fp,
"   // Set object pointer\n");
 
 1243      while( (obj = next()) ) {
 
 1245            strlcpy(branchname,((
TBranch*)obj)->
GetName(),
sizeof(branchname));
 
 1247            strlcpy(branchname,((
TLeaf*)obj)->
GetName(),
sizeof(branchname));
 
 1252            if (*bname == 
'.') *bname=
'_';
 
 1253            if (*bname == 
',') *bname=
'_';
 
 1254            if (*bname == 
':') *bname=
'_';
 
 1255            if (*bname == 
'<') *bname=
'_';
 
 1256            if (*bname == 
'>') *bname=
'_';
 
 1259         fprintf(fp,
"   %s = 0;\n",branchname );
 
 1262   if (mustInitArr.
Last()) {
 
 1263      TIter next(&mustInitArr);
 
 1265      fprintf(fp,
"   // Set array pointer\n");
 
 1266      while( (info = (
TNamed*)next()) ) {
 
 1267         fprintf(fp,
"   for(int i=0; i<%s; ++i) %s[i] = 0;\n",info->
GetTitle(),info->
GetName());
 
 1271   fprintf(fp,
"   // Set branch addresses and branch pointers\n");
 
 1272   fprintf(fp,
"   if (!tree) return;\n");
 
 1273   fprintf(fp,
"   fChain = tree;\n");
 
 1274   if (!opt.
Contains(
"selector")) fprintf(fp,
"   fCurrent = -1;\n");
 
 1275   fprintf(fp,
"   fChain->SetMakeClass(1);\n");
 
 1277   for (
l=0;
l<nleaves;
l++) {
 
 1278      if (leafStatus[
l]) 
continue;
 
 1283      strlcpy(aprefix,branch->
GetName(),
sizeof(aprefix));
 
 1287         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1288         strlcat(branchname,
".",
sizeof(branchname));
 
 1289         strlcat(branchname,leaf->
GetTitle(),
sizeof(branchname));
 
 1292            char *dim =  (
char*)strstr(branchname,
"["); 
if (dim) dim[0] = 0;
 
 1295         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1296         if (branch->IsA() == TBranchElement::Class()) {
 
 1298            if (bre->
GetType() == 3 || bre->
GetType()==4) strlcat(branchname,
"_",
sizeof(branchname));
 
 1302      char *brak = strstr(branchname,
"[");     
if (brak) *brak = 0;
 
 1303      char *twodim = (
char*)strstr(bname,
"["); 
if (twodim) *twodim = 0;
 
 1305         if (*bname == 
'.') *bname=
'_';
 
 1306         if (*bname == 
',') *bname=
'_';
 
 1307         if (*bname == 
':') *bname=
'_';
 
 1308         if (*bname == 
'<') *bname=
'_';
 
 1309         if (*bname == 
'>') *bname=
'_';
 
 1312      const char *maybedisable = 
"";
 
 1314         Error(
"MakeClass",
"The branch named %s (full path name: %s) is hidden by another branch of the same name and its data will not be loaded.",branch->
GetName(),
R__GetBranchPointerName(leaf,
kFALSE).Data());
 
 1315         maybedisable = 
"// ";
 
 1317      if (branch->IsA() == TBranchObject::Class()) {
 
 1322         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1324      if (branch->IsA() == TBranchElement::Class()) {
 
 1328      if (leafcount) len = leafcount->
GetMaximum()+1;
 
 1329      if (len > 1) fprintf(fp,
"%s   fChain->SetBranchAddress(\"%s\", %s, &b_%s);\n",
 
 1331      else         fprintf(fp,
"%s   fChain->SetBranchAddress(\"%s\", &%s, &b_%s);\n",
 
 1336      fprintf(fp,
"   Notify();\n");
 
 1343   fprintf(fp,
"Bool_t %s::Notify()\n",classname);
 
 1345   fprintf(fp,
"   // The Notify() function is called when a new file is opened. This\n" 
 1346              "   // can be either for a new TTree in a TChain or when when a new TTree\n" 
 1347              "   // is started when using PROOF. It is normally not necessary to make changes\n" 
 1348              "   // to the generated code, but the routine can be extended by the\n" 
 1349              "   // user if needed. The return value is currently not used.\n\n");
 
 1350   fprintf(fp,
"   return kTRUE;\n");
 
 1356      fprintf(fp,
"void %s::Show(Long64_t entry)\n",classname);
 
 1358      fprintf(fp,
"// Print contents of entry.\n");
 
 1359      fprintf(fp,
"// If entry is not specified, print current entry\n");
 
 1361      fprintf(fp,
"   if (!fChain) return;\n");
 
 1362      fprintf(fp,
"   fChain->Show(entry);\n");
 
 1367      fprintf(fp,
"Int_t %s::Cut(Long64_t entry)\n",classname);
 
 1369      fprintf(fp,
"// This function may be called from Loop.\n");
 
 1370      fprintf(fp,
"// returns  1 if entry is accepted.\n");
 
 1371      fprintf(fp,
"// returns -1 otherwise.\n");
 
 1373      fprintf(fp,
"   return 1;\n");
 
 1376   fprintf(fp,
"#endif // #ifdef %s_cxx\n",classname);
 
 1381      fprintf(fpc,
"#define %s_cxx\n",classname);
 
 1382      fprintf(fpc,
"#include \"%s\"\n",thead.
Data());
 
 1383      fprintf(fpc,
"#include <TH2.h>\n");
 
 1384      fprintf(fpc,
"#include <TStyle.h>\n");
 
 1385      fprintf(fpc,
"#include <TCanvas.h>\n");
 
 1387      fprintf(fpc,
"void %s::Loop()\n",classname);
 
 1389      fprintf(fpc,
"//   In a ROOT session, you can do:\n");
 
 1390      fprintf(fpc,
"//      root> .L %s.C\n",classname);
 
 1391      fprintf(fpc,
"//      root> %s t\n",classname);
 
 1392      fprintf(fpc,
"//      root> t.GetEntry(12); // Fill t data members with entry number 12\n");
 
 1393      fprintf(fpc,
"//      root> t.Show();       // Show values of entry 12\n");
 
 1394      fprintf(fpc,
"//      root> t.Show(16);     // Read and show values of entry 16\n");
 
 1395      fprintf(fpc,
"//      root> t.Loop();       // Loop on all entries\n");
 
 1396      fprintf(fpc,
"//\n");
 
 1397      fprintf(fpc,
"\n//     This is the loop skeleton where:\n");
 
 1398      fprintf(fpc,
"//    jentry is the global entry number in the chain\n");
 
 1399      fprintf(fpc,
"//    ientry is the entry number in the current Tree\n");
 
 1400      fprintf(fpc,
"//  Note that the argument to GetEntry must be:\n");
 
 1401      fprintf(fpc,
"//    jentry for TChain::GetEntry\n");
 
 1402      fprintf(fpc,
"//    ientry for TTree::GetEntry and TBranch::GetEntry\n");
 
 1403      fprintf(fpc,
"//\n");
 
 1404      fprintf(fpc,
"//       To read only selected branches, Insert statements like:\n");
 
 1405      fprintf(fpc,
"// METHOD1:\n");
 
 1406      fprintf(fpc,
"//    fChain->SetBranchStatus(\"*\",0);  // disable all branches\n");
 
 1407      fprintf(fpc,
"//    fChain->SetBranchStatus(\"branchname\",1);  // activate branchname\n");
 
 1408      fprintf(fpc,
"// METHOD2: replace line\n");
 
 1409      fprintf(fpc,
"//    fChain->GetEntry(jentry);       //read all branches\n");
 
 1410      fprintf(fpc,
"//by  b_branchname->GetEntry(ientry); //read only this branch\n");
 
 1411      fprintf(fpc,
"   if (fChain == 0) return;\n");
 
 1412      fprintf(fpc,
"\n   Long64_t nentries = fChain->GetEntriesFast();\n");
 
 1413      fprintf(fpc,
"\n   Long64_t nbytes = 0, nb = 0;\n");
 
 1414      fprintf(fpc,
"   for (Long64_t jentry=0; jentry<nentries;jentry++) {\n");
 
 1415      fprintf(fpc,
"      Long64_t ientry = LoadTree(jentry);\n");
 
 1416      fprintf(fpc,
"      if (ientry < 0) break;\n");
 
 1417      fprintf(fpc,
"      nb = fChain->GetEntry(jentry);   nbytes += nb;\n");
 
 1418      fprintf(fpc,
"      // if (Cut(ientry) < 0) continue;\n");
 
 1419      fprintf(fpc,
"   }\n");
 
 1424      fprintf(fpc,
"#define %s_cxx\n",classname);
 
 1425      fprintf(fpc,
"// The class definition in %s.h has been generated automatically\n",classname);
 
 1426      fprintf(fpc,
"// by the ROOT utility TTree::MakeSelector(). This class is derived\n");
 
 1427      fprintf(fpc,
"// from the ROOT class TSelector. For more information on the TSelector\n" 
 1428                  "// framework see $ROOTSYS/README/README.SELECTOR or the ROOT User Manual.\n\n");
 
 1429      fprintf(fpc,
"// The following methods are defined in this file:\n");
 
 1430      fprintf(fpc,
"//    Begin():        called every time a loop on the tree starts,\n");
 
 1431      fprintf(fpc,
"//                    a convenient place to create your histograms.\n");
 
 1432      fprintf(fpc,
"//    SlaveBegin():   called after Begin(), when on PROOF called only on the\n" 
 1433                  "//                    slave servers.\n");
 
 1434      fprintf(fpc,
"//    Process():      called for each event, in this function you decide what\n");
 
 1435      fprintf(fpc,
"//                    to read and fill your histograms.\n");
 
 1436      fprintf(fpc,
"//    SlaveTerminate: called at the end of the loop on the tree, when on PROOF\n" 
 1437                  "//                    called only on the slave servers.\n");
 
 1438      fprintf(fpc,
"//    Terminate():    called at the end of the loop on the tree,\n");
 
 1439      fprintf(fpc,
"//                    a convenient place to draw/fit your histograms.\n");
 
 1440      fprintf(fpc,
"//\n");
 
 1441      fprintf(fpc,
"// To use this file, try the following session on your Tree T:\n");
 
 1442      fprintf(fpc,
"//\n");
 
 1443      fprintf(fpc,
"// root> T->Process(\"%s.C\")\n",classname);
 
 1444      fprintf(fpc,
"// root> T->Process(\"%s.C\",\"some options\")\n",classname);
 
 1445      fprintf(fpc,
"// root> T->Process(\"%s.C+\")\n",classname);
 
 1446      fprintf(fpc,
"//\n\n");
 
 1447      fprintf(fpc,
"#include \"%s\"\n",thead.
Data());
 
 1448      fprintf(fpc,
"#include <TH2.h>\n");
 
 1449      fprintf(fpc,
"#include <TStyle.h>\n");
 
 1453      fprintf(fpc,
"void %s::Begin(TTree * /*tree*/)\n",classname);
 
 1455      fprintf(fpc,
"   // The Begin() function is called at the start of the query.\n");
 
 1456      fprintf(fpc,
"   // When running with PROOF Begin() is only called on the client.\n");
 
 1457      fprintf(fpc,
"   // The tree argument is deprecated (on PROOF 0 is passed).\n");
 
 1459      fprintf(fpc,
"   TString option = GetOption();\n");
 
 1464      fprintf(fpc,
"void %s::SlaveBegin(TTree * /*tree*/)\n",classname);
 
 1466      fprintf(fpc,
"   // The SlaveBegin() function is called after the Begin() function.\n");
 
 1467      fprintf(fpc,
"   // When running with PROOF SlaveBegin() is called on each slave server.\n");
 
 1468      fprintf(fpc,
"   // The tree argument is deprecated (on PROOF 0 is passed).\n");
 
 1470      fprintf(fpc,
"   TString option = GetOption();\n");
 
 1475      fprintf(fpc,
"Bool_t %s::Process(Long64_t entry)\n",classname);
 
 1477      fprintf(fpc,
"   // The Process() function is called for each entry in the tree (or possibly\n" 
 1478                  "   // keyed object in the case of PROOF) to be processed. The entry argument\n" 
 1479                  "   // specifies which entry in the currently loaded tree is to be processed.\n" 
 1480                  "   // It can be passed to either %s::GetEntry() or TBranch::GetEntry()\n" 
 1481                  "   // to read either all or the required parts of the data. When processing\n" 
 1482                  "   // keyed objects with PROOF, the object is already loaded and is available\n" 
 1483                  "   // via the fObject pointer.\n" 
 1485                  "   // This function should contain the \"body\" of the analysis. It can contain\n" 
 1486                  "   // simple or elaborate selection criteria, run algorithms on the data\n" 
 1487                  "   // of the event and typically fill histograms.\n" 
 1489                  "   // The processing can be stopped by calling Abort().\n" 
 1491                  "   // Use fStatus to set the return value of TTree::Process().\n" 
 1493                  "   // The return value is currently not used.\n\n", classname);
 
 1495      fprintf(fpc,
"   return kTRUE;\n");
 
 1499      fprintf(fpc,
"void %s::SlaveTerminate()\n",classname);
 
 1501      fprintf(fpc,
"   // The SlaveTerminate() function is called after all entries or objects\n" 
 1502                  "   // have been processed. When running with PROOF SlaveTerminate() is called\n" 
 1503                  "   // on each slave server.");
 
 1509      fprintf(fpc,
"void %s::Terminate()\n",classname);
 
 1511      fprintf(fpc,
"   // The Terminate() function is the last function to be called during\n" 
 1512                  "   // a query. It always runs on the client, it can be used to present\n" 
 1513                  "   // the results graphically or save the results to file.");
 
 1519   delete [] leafStatus;
 
 1557   FILE *fp = fopen(tfile, 
"w");
 
 1559      Error(
"MakeCode",
"cannot open output file %s", tfile.
Data());
 
 1566      treefile = 
"Memory Directory";
 
 1578   fprintf(fp,
"//////////////////////////////////////////////////////////\n");
 
 1579   fprintf(fp,
"//   This file has been automatically generated \n");
 
 1580   fprintf(fp,
"//     (%s by ROOT version%s)\n",td.
AsString(),
gROOT->GetVersion());
 
 1583      fprintf(fp,
"//   found on file: %s\n",treefile.
Data());
 
 1587   fprintf(fp,
"//////////////////////////////////////////////////////////\n");
 
 1593   fprintf(fp,
"//Reset ROOT and connect tree file\n");
 
 1594   fprintf(fp,
"   gROOT->Reset();\n");
 
 1596      fprintf(fp,
"\n#ifdef SINGLE_TREE\n");
 
 1597      fprintf(fp,
"   // The following code should be used if you want this code to access\n");
 
 1598      fprintf(fp,
"   // a single tree instead of a chain\n");
 
 1600   fprintf(fp,
"   TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject(\"%s\");\n",treefile.
Data());
 
 1601   fprintf(fp,
"   if (!f) {\n");
 
 1602   fprintf(fp,
"      f = new TFile(\"%s\");\n",treefile.
Data());
 
 1606      fprintf(fp,
"    dir->GetObject(\"%s\",tree);\n\n",
fTree->
GetName());
 
 1608      fprintf(fp,
"    f->GetObject(\"%s\",tree);\n\n",
fTree->
GetName());
 
 1611      fprintf(fp,
"#else // SINGLE_TREE\n\n");
 
 1612      fprintf(fp,
"   // The following code should be used if you want this code to access a chain\n");
 
 1613      fprintf(fp,
"   // of trees.\n");
 
 1614      fprintf(fp,
"   TChain *%s = new TChain(\"%s\",\"%s\");\n",
 
 1624      fprintf(fp,
"#endif // SINGLE_TREE\n\n");
 
 1628   fprintf(fp,
"//Declaration of leaves types\n");
 
 1633   const char *headOK  = 
"   ";
 
 1634   const char *headcom = 
" //";
 
 1636   char branchname[1024];
 
 1637   for (
l=0;
l<nleaves;
l++) {
 
 1646         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1647         strlcat(branchname,
".",
sizeof(branchname));
 
 1648         strlcat(branchname,leaf->
GetTitle(),
sizeof(branchname));
 
 1651            char *dim =  (
char*)strstr(branchname,
"[");
 
 1652            if (dim) dim[0] = 0;
 
 1655         if (leafcount) strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1656         else           strlcpy(branchname,leaf->
GetTitle(),
sizeof(branchname));
 
 1658      char *twodim = (
char*)strstr(leaf->
GetTitle(),
"][");
 
 1661         if (*bname == 
'.') *bname=
'_';
 
 1662         if (*bname == 
',') *bname=
'_';
 
 1663         if (*bname == 
':') *bname=
'_';
 
 1664         if (*bname == 
'<') *bname=
'_';
 
 1665         if (*bname == 
'>') *bname=
'_';
 
 1668      if (branch->IsA() == TBranchObject::Class()) {
 
 1670         if (leafobj->
GetClass()) head = headOK;
 
 1671         else                     head = headcom;
 
 1679         char *dimInName = (
char*) strstr(branchname,
"[");
 
 1681         if ( twodim || dimInName ) {
 
 1683               dimensions = dimInName;
 
 1686            if (twodim) dimensions += (
char*)(twodim+1);
 
 1688         if (dimensions.
Length()) {
 
 1689            fprintf(fp,
"   %-15s %s[%d]%s;\n",leaf->
GetTypeName(), branchname,len,dimensions.
Data());
 
 1691            fprintf(fp,
"   %-15s %s[%d];\n",leaf->
GetTypeName(), branchname,len);
 
 1694         if (strstr(branchname,
"[")) len = 1;
 
 1695         if (len < 2) fprintf(fp,
"   %-15s %s;\n",leaf->
GetTypeName(), branchname);
 
 1696         else         fprintf(fp,
"   %-15s %s[%d];\n",leaf->
GetTypeName(), branchname,len);
 
 1701   fprintf(fp,
"\n   // Set branch addresses.\n");
 
 1702   for (
l=0;
l<nleaves;
l++) {
 
 1710         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1711         strlcat(branchname,
".",
sizeof(branchname));
 
 1712         strlcat(branchname,leaf->
GetTitle(),
sizeof(branchname));
 
 1715            char *dim =  (
char*)strstr(branchname,
"[");
 
 1716            if (dim) dim[0] = 0;
 
 1719         if (leafcount) strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1720         else           strlcpy(branchname,leaf->
GetTitle(),
sizeof(branchname));
 
 1724         if (*bname == 
'.') *bname=
'_';
 
 1725         if (*bname == 
',') *bname=
'_';
 
 1726         if (*bname == 
':') *bname=
'_';
 
 1727         if (*bname == 
'<') *bname=
'_';
 
 1728         if (*bname == 
'>') *bname=
'_';
 
 1731      char *brak = strstr(branchname,
"[");
 
 1732      if (brak) *brak = 0;
 
 1734      if (branch->IsA() == TBranchObject::Class()) {
 
 1735         strlcpy(branchname,branch->
GetName(),
sizeof(branchname));
 
 1737         if (!leafobj->
GetClass()) head = headcom;
 
 1739      if (leafcount) len = leafcount->
GetMaximum()+1;
 
 1740      if (len > 1 || brak) fprintf(fp,
"%s%s->SetBranchAddress(\"%s\",%s);\n",head,
fTree->
GetName(),branch->
GetName(),branchname);
 
 1741      else                 fprintf(fp,
"%s%s->SetBranchAddress(\"%s\",&%s);\n",head,
fTree->
GetName(),branch->
GetName(),branchname);
 
 1745   fprintf(fp,
"\n//     This is the loop skeleton\n");
 
 1746   fprintf(fp,
"//       To read only selected branches, Insert statements like:\n");
 
 1747   fprintf(fp,
"// %s->SetBranchStatus(\"*\",0);  // disable all branches\n",
fTree->
GetName());
 
 1748   fprintf(fp,
"// %s->SetBranchStatus(\"branchname\",1);  // activate branchname\n",
GetName());
 
 1749   fprintf(fp,
"\n   Long64_t nentries = %s->GetEntries();\n",
fTree->
GetName());
 
 1750   fprintf(fp,
"\n   Long64_t nbytes = 0;\n");
 
 1751   fprintf(fp,
"//   for (Long64_t i=0; i<nentries;i++) {\n");
 
 1752   fprintf(fp,
"//      nbytes += %s->GetEntry(i);\n",
fTree->
GetName());
 
 1753   fprintf(fp,
"//   }\n");
 
 1756   printf(
"Macro: %s generated from Tree: %s\n",tfile.
Data(), 
fTree->
GetName());
 
 1915                             const char *macrofilename, 
const char *cutfilename,
 
 1916                             const char *option, 
Int_t maxUnrolling)
 
 1918   if (macrofilename==0 || strlen(macrofilename)==0 ) {
 
 1920      Error(
"MakeProxy",
"A file name for the user script is required");
 
 2007   std::vector<TString> cnames;
 
 2016   if (nleaves < ncols) ncols = nleaves;
 
 2017   nch = varexp ? strlen(varexp) : 0;
 
 2023   if (strlen(selection)) {
 
 2031   if (varexp && !strcmp(varexp, 
"*")) { ncols = nleaves; allvar = 1; }
 
 2032   if (nch == 0 || allvar) {
 
 2033      for (i=0;i<ncols;i++) {
 
 2034         cnames.push_back( ((
TLeaf*)leaves->
At(i))->GetName() );
 
 2044   for (i=0;i<ncols;i++) {
 
 2066   for (entry=firstentry;entry<firstentry+
nentries;entry++) {
 
 2068      if (entryNumber < 0) 
break;
 
 2070      if (localEntry < 0) 
break;
 
 2080      for(
int inst=0;inst<ndata;inst++) {
 
 2088         if (inst==0) loaded = 
kTRUE;
 
 2092            for (i=0;i<ncols;i++) {
 
 2098         for (i=0;i<ncols;i++) {
 
 2195   if (!selector) 
return -1;
 
 2271      if (!
gROOT->IsBatch() && interval)
 
 2275      Long64_t entry, entryNumber, localEntry;
 
 2289      for (entry=firstentry;entry<firstentry+
nentries;entry++) {
 
 2291         if (entryNumber < 0) 
break;
 
 2293         if (
gROOT->IsInterrupted()) 
break;
 
 2295         if (localEntry < 0) 
break;
 
 2300            selector->
Process(localEntry);        
 
 2437   UInt_t colDefaultSize = 9;
 
 2439   std::vector<TString> colFormats;
 
 2440   std::vector<Int_t> colSizes;
 
 2443      int start = opt.
Index(
"lenmax=");
 
 2444      int numpos = start + strlen(
"lenmax=");
 
 2447      while( (numpos+numlen<len) && isdigit(opt[numpos+numlen]) ) numlen++;
 
 2448      TString num = opt(numpos,numlen);
 
 2449      opt.
Remove(start,strlen(
"lenmax")+numlen);
 
 2451      lenmax = atoi(num.
Data());
 
 2454      int start = opt.
Index(
"colsize=");
 
 2455      int numpos = start + strlen(
"colsize=");
 
 2458      while( (numpos+numlen<len) && isdigit(opt[numpos+numlen]) ) numlen++;
 
 2459      TString num = opt(numpos,numlen);
 
 2460      opt.
Remove(start,strlen(
"size")+numlen);
 
 2462      colDefaultSize = atoi(num.
Data());
 
 2463      colPrecision = colDefaultSize;
 
 2464      if (colPrecision>18) colPrecision = 18;
 
 2467      int start = opt.
Index(
"precision=");
 
 2468      int numpos = start + strlen(
"precision=");
 
 2471      while( (numpos+numlen<len) && isdigit(opt[numpos+numlen]) ) numlen++;
 
 2472      TString num = opt(numpos,numlen);
 
 2473      opt.
Remove(start,strlen(
"precision")+numlen);
 
 2475      colPrecision = atoi(num.
Data());
 
 2477   TString defFormat = 
Form(
"%d.%d",colDefaultSize,colPrecision);
 
 2479      int start = opt.
Index(
"col=");
 
 2480      int numpos = start + strlen(
"col=");
 
 2483      while( (numpos+numlen<len) &&
 
 2484             (isdigit(opt[numpos+numlen])
 
 2485              || opt[numpos+numlen] == 
'c' 
 2486              || opt[numpos+numlen] == 
'd' 
 2487              || opt[numpos+numlen] == 
'i' 
 2488              || opt[numpos+numlen] == 
'o' 
 2489              || opt[numpos+numlen] == 
'x' 
 2490              || opt[numpos+numlen] == 
'X' 
 2491              || opt[numpos+numlen] == 
'u' 
 2492              || opt[numpos+numlen] == 
'f' 
 2493              || opt[numpos+numlen] == 
'e' 
 2494              || opt[numpos+numlen] == 
'E' 
 2495              || opt[numpos+numlen] == 
'g' 
 2496              || opt[numpos+numlen] == 
'G' 
 2497              || opt[numpos+numlen] == 
'l' 
 2498              || opt[numpos+numlen] == 
'L' 
 2499              || opt[numpos+numlen] == 
'h' 
 2500              || opt[numpos+numlen] == 
's' 
 2501              || opt[numpos+numlen] == 
'#' 
 2502              || opt[numpos+numlen]==
'.' 
 2503              || opt[numpos+numlen]==
':')) numlen++;
 
 2504      TString flist = opt(numpos,numlen);
 
 2505      opt.
Remove(start,strlen(
"col")+numlen);
 
 2508      while(i<flist.
Length() && flist[i]==
':') {
 
 2509         colFormats.push_back(defFormat);
 
 2510         colSizes.push_back(colDefaultSize);
 
 2513      for(; i<flist.
Length(); ++i) {
 
 2514         int next = flist.
Index(
":",i);
 
 2516            colFormats.push_back(defFormat);
 
 2517         } 
else if (next==
kNPOS) {
 
 2518            colFormats.push_back(flist(i,flist.
Length()-i));
 
 2521            colFormats.push_back(flist(i,next-i));
 
 2524         UInt_t siz = atoi(colFormats[colFormats.size()-1].Data());
 
 2525         colSizes.push_back( siz ? siz : colDefaultSize );
 
 2530   std::vector<TString> cnames;
 
 2536   const char *fname = 
nullptr;
 
 2541      if (!fname) fname = 
"";
 
 2542      Int_t lenfile = strlen(fname);
 
 2545         fownname.
Append(
"-scan.dat");
 
 2546         fname = fownname.
Data();
 
 2548      out.open(fname, std::ios::out);
 
 2550         Error(
"Scan",
"Can not open file for redirection");
 
 2555   if (leaves==0) 
return 0;
 
 2557   if (nleaves < ncols) ncols = nleaves;
 
 2558   nch = varexp ? strlen(varexp) : 0;
 
 2564   if (selection && strlen(selection)) {
 
 2566      if (!select) 
return -1;
 
 2567      if (!select->
GetNdim()) { 
delete select; 
return -1; }
 
 2572   if (varexp && !strcmp(varexp, 
"*")) { ncols = nleaves; allvar = 1; }
 
 2573   if (nch == 0 || allvar) {
 
 2576      for (ui=0;ui<ncs;++ui) {
 
 2580         if (cnames[ncols] == lf->
GetName() ) {
 
 2582         } 
else if (cnames[ncols][cnames[ncols].Length()-1]==
'.') {
 
 2595               cnames[ncols].Append(
'.');
 
 2599         if (lf->
GetBranch()->IsA() == TBranch::Class() ||
 
 2601            cnames[ncols].Append(
'.');
 
 2602            cnames[ncols].Append( lf->
GetName() );
 
 2614   for(ui=colFormats.size();ui<ncols;++ui) {
 
 2615      colFormats.push_back(defFormat);
 
 2616      colSizes.push_back(colDefaultSize);
 
 2620   for (ui=0;ui<ncols;ui++) {
 
 2658   onerow = 
"***********";
 
 2659   if (hasArray) onerow += 
"***********";
 
 2661   for (ui=0;ui<ncols;ui++) {
 
 2662      TString starFormat = 
Form(
"*%%%d.%ds",colSizes[ui]+2,colSizes[ui]+2);
 
 2666      out<<onerow.
Data()<<
"*"<<std::endl;
 
 2668      printf(
"%s*\n",onerow.
Data());
 
 2670   if (hasArray) onerow += 
"* Instance ";
 
 2671   for (ui=0;ui<ncols;ui++) {
 
 2672      TString numbFormat = 
Form(
"* %%%d.%ds ",colSizes[ui],colSizes[ui]);
 
 2676      out<<onerow.
Data()<<
"*"<<std::endl;
 
 2678      printf(
"%s*\n",onerow.
Data());
 
 2679   onerow = 
"***********";
 
 2680   if (hasArray) onerow += 
"***********";
 
 2681   for (ui=0;ui<ncols;ui++) {
 
 2682      TString starFormat = 
Form(
"*%%%d.%ds",colSizes[ui]+2,colSizes[ui]+2);
 
 2686      out<<onerow.
Data()<<
"*"<<std::endl;
 
 2688      printf(
"%s*\n",onerow.
Data());
 
 2693   for (entry=firstentry;
 
 2694        entry<(firstentry+
nentries) && !exitloop;
 
 2697      if (entryNumber < 0) 
break;
 
 2699      if (localEntry < 0) 
break;
 
 2720            for (ui=0;ui<ncols;ui++) {
 
 2721               if (ndata < var[ui]->GetNdata() ) {
 
 2725            if (select && select->
GetNdata()==0) ndata = 0;
 
 2730      if (lenmax && ndata>(
int)lenmax) ndata = lenmax;
 
 2732      for(
int inst=0;inst<ndata;inst++) {
 
 2738         if (inst==0) loaded = 
kTRUE;
 
 2742            for (ui=0;ui<ncols;ui++) {
 
 2747         onerow = 
Form(
"* %8lld ",entryNumber);
 
 2749            onerow += 
Form(
"* %8d ",inst);
 
 2751         for (ui=0;ui<ncols;++ui) {
 
 2752            TString numbFormat = 
Form(
"* %%%d.%ds ",colSizes[ui],colSizes[ui]);
 
 2753            if (var[ui]->GetNdim()) onerow += 
Form(numbFormat.
Data(),var[ui]->
PrintValue(0,inst,colFormats[ui].Data()));
 
 2755               TString emptyForm = 
Form(
"* %%%dc ",colSizes[ui]);
 
 2756               onerow += 
Form(emptyForm.
Data(),
' ');
 
 2761            out<<onerow.
Data()<<
"*"<<std::endl;
 
 2763            printf(
"%s*\n",onerow.
Data());
 
 2766               fprintf(stderr,
"Type <CR> to continue or q to quit ==> ");
 
 2770               while (readch != 
'\n' && readch != EOF) readch = getchar();
 
 2771               if (answer == 
'q' || answer == 
'Q') {
 
 2779   onerow = 
"***********";
 
 2780   if (hasArray) onerow += 
"***********";
 
 2781   for (ui=0;ui<ncols;ui++) {
 
 2782      TString starFormat = 
Form(
"*%%%d.%ds",colSizes[ui]+2,colSizes[ui]+2);
 
 2786      out<<onerow.
Data()<<
"*"<<std::endl;
 
 2788      printf(
"%s*\n",onerow.
Data());
 
 2811   std::vector<TString> cnames;
 
 2818   if (nleaves < ncols) ncols = nleaves;
 
 2819   nch = varexp ? strlen(varexp) : 0;
 
 2825   if (strlen(selection)) {
 
 2827      if (!select) 
return 0;
 
 2828      if (!select->
GetNdim()) { 
delete select; 
return 0; }
 
 2834   if (varexp && !strcmp(varexp, 
"*")) { ncols = nleaves; allvar = 1; }
 
 2835   if (nch == 0 || allvar) {
 
 2836      for (i=0;i<ncols;i++) {
 
 2837         cnames.push_back( ((
TLeaf*)leaves->
At(i))->GetName() );
 
 2846   for (i=0;i<ncols;i++) {
 
 2853   for (i = 0; i < ncols; i++) {
 
 2854      res->
AddField(i, var[i]->PrintValue(-1));
 
 2868   const char *aresult;
 
 2870   char *arow = 
new char[ncols*50];
 
 2874   for (entry=firstentry;entry<firstentry+
nentries;entry++) {
 
 2876      if (entryNumber < 0) 
break;
 
 2878      if (localEntry < 0) 
break;
 
 2895      for(
int inst=0;inst<ndata;inst++) {
 
 2902         if (inst==0) loaded = 
kTRUE;
 
 2906            for (i=0;i<ncols;i++) {
 
 2911         for (i=0;i<ncols;i++) {
 
 2913            len = strlen(aresult)+1;
 
 2915               memcpy(arow,aresult,len);
 
 2918               memcpy(arow+fields[i-1],aresult,len);
 
 2919               fields[i] = fields[i-1] + len;
 
 2959   if (
gROOT->IsBatch()) {
 
 2960      Warning(
"StartViewer", 
"The tree viewer cannot run in batch mode");
 
 2966   if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TVirtualTreeViewer"))) {
 
 2967      if (
h->LoadPlugin() == -1)
 
 3047   TF1* fitfunc = (
TF1*)
gROOT->GetFunction(funcname);
 
 3048   if (!fitfunc) { 
Error(
"UnbinnedFit", 
"Unknown function: %s",funcname); 
return 0; }
 
 3051   if (npar <=0) { 
Error(
"UnbinnedFit", 
"Illegal number of parameters = %d",npar); 
return 0; }
 
 3072   if (!fitOption.
Nograph) drawOpt = 
"";
 
 3076      Info(
"UnbinnedFit",
"Ignore option D with more than 4 variables");
 
 3084      Error(
"UnbinnedFit", 
"Cannot fit: no entries selected");
 
 3095   std::vector<double *> vlist(ndim);
 
 3096   for (
int i = 0; i < ndim; ++i)
 
 3122         for (
Int_t bin=1;bin<=nbins;bin++) {
 
R__EXTERN TApplication * gApplication
 
R__EXTERN TVirtualMutex * gROOTMutex
 
char * Form(const char *fmt,...)
 
void Printf(const char *fmt,...)
 
R__EXTERN TStyle * gStyle
 
R__EXTERN TSystem * gSystem
 
static TString R__GetBranchPointerName(TLeaf *leaf, Bool_t replace=kTRUE)
Return the name of the branch pointer needed by MakeClass/MakeSelector.
 
R__EXTERN Foption_t Foption
 
R__EXTERN TVirtualMonitoringWriter * gMonitoringWriter
 
#define R__LOCKGUARD(mutex)
 
Class describing the unbinned data sets (just x coordinates values) of any dimensions.
 
const char * GetFileName()
 
void InitializeGraphics()
Initialize the graphics environment.
 
static void CreateApplication()
Static function used to create a default application environment.
 
static void NeedGraphicsLibs()
Static method.
 
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
 
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
 
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
 
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
 
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
 
A Branch for the case of an object.
 
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any.
 
Bool_t IsBranchFolder() const
 
Int_t GetStreamerType() const
 
TBranchElement * GetBranchCount2() const
 
A TTree is a list of TBranches.
 
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any.
 
TObjArray * GetListOfBranches()
 
TObjArray * GetListOfLeaves()
 
TBranch * GetMother() const
Get our top-level parent branch in the tree.
 
A TChainElement describes a component of a TChain.
 
A chain is a collection of files containing TTree objects.
 
virtual Long64_t LoadTree(Long64_t entry)
Find the tree which contains entry, and set it as the current tree.
 
Long64_t * GetTreeOffset() const
 
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return a pointer to the leaf name in the current tree.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
void AdoptReferenceProxy(TVirtualRefProxy *proxy)
Adopt the Reference proxy pointer to indicate that this class represents a reference.
 
Bool_t HasInterpreterInfo() const
 
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
 
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
 
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
 
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
 
const char * AsString() const
Return the date & time as a string (ctime() format).
 
TDirectory::TContext keeps track and restore the current directory.
 
virtual const char * GetPath() const
Returns the full path of the directory.
 
virtual TFile * GetFile() const
 
A List of entry numbers in a TTree or TChain.
 
virtual void SetTree(const TTree *tree)
If a list for a tree with such name and filename exists, sets it as the current sublist If not,...
 
virtual Long64_t GetN() const
 
A TEventList object is a list of selected events (entries) in a TTree.
 
virtual Int_t GetNpar() const
 
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
 
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
 
static Long64_t GetFileBytesRead()
Static function returning the total number of bytes read from all files.
 
TFileCacheRead * GetCacheRead(const TObject *tree=nullptr) const
Return a pointer to the current read cache.
 
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
 
@ kNoAxis
NOTE: Must always be 0 !!!
 
virtual Int_t GetDimension() const
 
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
 
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
 
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
 
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
 
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
 
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
 
TList * GetListOfFunctions() const
 
virtual void Draw(Option_t *option="")
Draw this histogram with options.
 
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
 
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
 
virtual void LabelsDeflate(Option_t *axis="X")
Reduce the number of bins for the axis passed in the option to the number of bins having a label.
 
A TLeaf for a general object derived from TObject.
 
TClass * GetClass() const
 
const char * GetTypeName() const
Returns name of leaf type.
 
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
 
virtual Int_t GetMaximum() const
 
virtual const char * GetTypeName() const
 
virtual Int_t GetLen() const
Return the number of effective elements of this leaf, for the current entry.
 
virtual TLeaf * GetLeafCount() const
If this leaf stores a variable-sized array or a multi-dimensional array whose last dimension has vari...
 
TBranch * GetBranch() const
 
virtual void Add(TObject *obj)
 
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
 
virtual TObjLink * FirstLink() const
 
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
 
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
 
virtual void Clear(Option_t *option="")
Remove all objects from the list.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
virtual const char * GetTitle() const
Returns title of object.
 
virtual const char * GetName() const
Returns name of object.
 
Int_t GetEntriesFast() const
 
TObject * Last() const
Return the object in the last filled slot. Returns 0 if no entries.
 
Int_t GetEntries() const
Return the number of objects in array (i.e.
 
TObject * UncheckedAt(Int_t i) const
 
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
 
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
 
virtual void AddAt(TObject *obj, Int_t idx)
Add object at position ids.
 
TObject * At(Int_t idx) const
 
Wrapper around a TObject so it can be stored in a TList.
 
TObject * GetObject() const
 
Collectable string class.
 
const char * GetName() const
Returns name of object.
 
Mother of all ROOT objects.
 
virtual Bool_t Notify()
This method must be overridden to handle object notification.
 
virtual const char * GetName() const
Returns name of object.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
 
R__ALWAYS_INLINE Bool_t IsZombie() const
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
 
@ kCanDelete
if object in a list can be deleted
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
Longptr_t ExecPlugin(int nargs, const T &... params)
 
virtual void Draw(Option_t *option="")
Draws 3-D polymarker with its current attributes.
 
Principal Components Analysis (PCA)
 
Bool_t ProcessEvents()
Process events if timer did time out.
 
A container proxy, which allows to access references stored in a TRefArray from TTree::Draw.
 
A specialized TSelector for TTree::Draw.
 
virtual void SetEstimate(Long64_t n)
Set number of entries to estimate variable limits.
 
TTreeFormula * GetVar3() const
See TSelectorDraw::GetVar.
 
virtual Long64_t GetDrawFlag() const
 
TH1 * GetOldHistogram() const
 
virtual UInt_t SplitNames(const TString &varexp, std::vector< TString > &names)
Build Index array for names in varexp.
 
TObject * GetObject() const
 
virtual Bool_t GetCleanElist() const
 
TTreeFormula * GetVar2() const
See TSelectorDraw::GetVar.
 
virtual Int_t GetAction() const
 
TTreeFormula * GetVar1() const
See TSelectorDraw::GetVar.
 
virtual Int_t GetDimension() const
 
virtual Double_t * GetVal(Int_t i) const
Return the last values corresponding to the i-th component of the formula being processed (where the ...
 
virtual Bool_t Notify()
This function is called at the first entry of a new tree in a chain.
 
The class is derived from the ROOT class TSelector.
 
virtual Long64_t GetSelectedRows() const
 
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
 
virtual EAbort GetAbort() const
 
virtual void ProcessFill(Long64_t)
This method is called for all selected entries.
 
virtual void Init(TTree *)
 
virtual int Version() const
 
virtual Bool_t Process(Long64_t)
The Process() function is called for each entry in the tree (or possibly keyed object in the case of ...
 
virtual void SlaveBegin(TTree *)
 
virtual Bool_t ProcessCut(Long64_t)
This method is called before processing entry.
 
virtual void SetOption(const char *option)
 
virtual Long64_t GetStatus() const
 
virtual void SetInputList(TList *input)
 
virtual TList * GetOutputList() const
 
virtual Bool_t Notify()
This method must be overridden to handle object notification.
 
virtual void SlaveTerminate()
 
virtual void ResetAbort()
 
virtual void Begin(TTree *)
 
static TSelector * GetSelector(const char *filename)
The code in filename is loaded (interpreted or compiled, see below), filename must contain a valid cl...
 
const char * GetTypeName() const
 
void ToLower()
Change string to lower-case.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
Ssiz_t Last(char c) const
Find last occurrence of a character c.
 
void ToUpper()
Change string to upper case.
 
TString & Remove(Ssiz_t pos)
 
TString & Append(const char *cs)
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
Bool_t GetCanvasPreferGL() const
 
void SetCanvasPreferGL(Bool_t prefer=kTRUE)
 
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
 
virtual Bool_t IsFileInIncludePath(const char *name, char **fullpath=nullptr)
Return true if 'name' is a file that can be found in the ROOT include path or the current directory.
 
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form:
 
Base class for several text objects.
 
A cache to speed-up the reading of ROOT datasets.
 
virtual void SetEntryRange(Long64_t emin, Long64_t emax)
Set the minimum and maximum entry number to be processed this information helps to optimize the numbe...
 
A Tree Index with majorname and minorname.
 
Implement some of the functionality of the class TTree requiring access to extra libraries (Histogram...
 
virtual void UpdateFormulaLeaves()
this function is called by TChain::LoadTree when a new Tree is loaded.
 
virtual Int_t MakeProxy(const char *classname, const char *macrofilename=0, const char *cutfilename=0, const char *option=0, Int_t maxUnrolling=3)
Generate a skeleton analysis class for this Tree using TBranchProxy.
 
TList * fInput
! input list to the selector
 
void DeleteSelectorFromFile()
Delete any selector created by this object.
 
virtual Long64_t DrawSelect(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)
Draw expression varexp for specified entries that matches the selection.
 
virtual Long64_t GetSelectedRows() const
 
virtual Long64_t GetEntries(const char *selection)
Return the number of entries matching the selection.
 
TSelectorDraw * fSelector
! Pointer to current selector
 
virtual Int_t UnbinnedFit(const char *formula, const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)
Unbinned fit of one or more variable(s) from a Tree.
 
const char * GetNameByIndex(TString &varexp, Int_t *index, Int_t colindex)
Return name corresponding to colindex in varexp.
 
virtual ~TTreePlayer()
Tree destructor.
 
virtual Int_t Fit(const char *formula, const char *varexp, const char *selection, Option_t *option, Option_t *goption, Long64_t nentries, Long64_t firstentry)
Fit a projected item(s) from a Tree.
 
Long64_t fSelectedRows
Number of selected entries.
 
TSelector * fSelectorFromFile
! Pointer to a user defined selector created by this TTreePlayer object
 
const char * fScanFileName
Name of the file where Scan is redirected.
 
TList * fFormulaList
! Pointer to a list of coordinated list TTreeFormula (used by Scan and Query)
 
virtual TTree * CopyTree(const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)
Copy a Tree with selection, make a clone of this Tree header, then copy the selected entries.
 
virtual Int_t MakeCode(const char *filename)
Generate skeleton function for this Tree.
 
TTree * fTree
! Pointer to current Tree
 
virtual Int_t MakeClass(const char *classname, Option_t *option)
Generate skeleton analysis class for this Tree.
 
virtual void SetEstimate(Long64_t n)
Set number of entries to estimate variable limits.
 
virtual Long64_t DrawScript(const char *wrapperPrefix, const char *macrofilename, const char *cutfilename, Option_t *option, Long64_t nentries, Long64_t firstentry)
Draw the result of a C++ script.
 
virtual Long64_t Scan(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)
Loop on Tree and print entries passing selection.
 
TPrincipal * Principal(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)
Interface to the Principal Components Analysis class.
 
TSelector * fSelectorUpdate
! Set to the selector address when it's entry list needs to be updated by the UpdateFormulaLeaves fun...
 
TH1 * fHistogram
! Pointer to histogram used for the projection
 
virtual void StartViewer(Int_t ww, Int_t wh)
Start the TTreeViewer on this TTree.
 
Bool_t fScanRedirect
Switch to redirect TTree::Scan output to a file.
 
virtual TSQLResult * Query(const char *varexp, const char *selection, Option_t *option, Long64_t nentries, Long64_t firstentry)
Loop on Tree and return TSQLResult object containing entries passing selection.
 
virtual Int_t GetDimension() const
 
TClass * fSelectorClass
! Pointer to the actual class of the TSelectorFromFile
 
virtual void SetTree(TTree *t)
 
virtual TVirtualIndex * BuildIndex(const TTree *T, const char *majorname, const char *minorname)
Build the index for the tree (see TTree::BuildIndex)
 
Int_t fDimension
Dimension of the current expression.
 
virtual Long64_t Process(const char *filename, Option_t *option, Long64_t nentries, Long64_t firstentry)
Process this tree executing the TSelector code in the specified filename.
 
TTreePlayer()
Default Tree constructor.
 
virtual Int_t MakeReader(const char *classname, Option_t *option)
Generate skeleton selector class for this tree.
 
virtual void RecursiveRemove(TObject *obj)
cleanup pointers in the player pointing to obj
 
virtual Long64_t GetEntriesToProcess(Long64_t firstentry, Long64_t nentries) const
return the number of entries to be processed this function checks that nentries is not bigger than th...
 
Class defining interface to a TTree query result with the same interface as for SQL databases.
 
void AddRow(TSQLRow *row)
Adopt a row to result set.
 
void AddField(Int_t field, const char *fieldname)
Add field name to result set.
 
Class defining interface to a row of a TTree query result.
 
A TTree represents a columnar dataset.
 
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
 
virtual Int_t GetScanField() const
 
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
 
virtual Long64_t GetEstimate() const
 
virtual TObjArray * GetListOfLeaves()
 
TFile * GetCurrentFile() const
Return pointer to the current file.
 
TDirectory * GetDirectory() const
 
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
 
virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Process this tree executing the TSelector code in the specified filename.
 
virtual Long64_t GetEntries() const
 
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
 
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
 
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
 
Bool_t EnableCache()
Enable the TTreeCache unless explicitly disabled for this TTree by a prior call to SetCacheSize(0).
 
virtual TTree * GetTree() const
 
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
 
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
 
virtual void SetNotify(TObject *obj)
Sets the address of the object to be notified when the tree is loaded.
 
TEventList * GetEventList() const
 
virtual Long64_t GetEntriesFriend() const
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
 
virtual Int_t GetTreeNumber() const
 
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
 
virtual Int_t GetTimerInterval() const
 
virtual void SetScanField(Int_t n=50)
 
virtual Long64_t GetCacheSize() const
 
virtual Long64_t GetMaxEntryLoop() const
 
Abstract Base Class for Fitting.
 
Abstract interface for Tree Index.
 
virtual Bool_t SendProcessingProgress(Double_t, Double_t, Bool_t=kFALSE)
 
virtual Bool_t SendProcessingStatus(const char *, Bool_t=kFALSE)
 
virtual TObjArray * GetElements() const =0
 
TFitResultPtr UnBinFit(ROOT::Fit::UnBinData *data, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption)
fit an unbin data set (from tree or from histogram buffer) using a TF1 pointer and fit options.
 
Short_t Max(Short_t a, Short_t b)
 
Short_t Min(Short_t a, Short_t b)