[root] / trunk / tree / tree / src / TLeafObject.cxx Repository:
ViewVC logotype

Log of /trunk/tree/tree/src/TLeafObject.cxx

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 22902 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Mar 31 09:48:42 2008 UTC (6 years, 9 months ago) by rdm
File length: 7808 byte(s)
Diff to previous 20882
move tree, treeplayer and treeviewer under tree meta directory.

Revision 20882 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 19 11:31:26 2007 UTC (7 years, 2 months ago) by rdm
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7808 byte(s)
Diff to previous 19826
Set property svn:eol-style LF on all source and Makefiles. This should avoid
problems with Win32 line endings ending up in the repository. All MS tools
support LF eols fine.

Revision 19826 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:56:11 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7808 byte(s)
Diff to previous 19825
imported svn:keywords Id property

Revision 19825 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:49:10 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7862 byte(s)
Diff to previous 18667
remove :$ from tag line

Revision 18667 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri May 4 17:32:45 2007 UTC (7 years, 8 months ago) by pcanal
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7872 byte(s)
Diff to previous 17731
The value of TBasket:;fBasket was incorrect in some cases when using
the TTreeCloner.  This is solved (and thread safetly is improved) by
removing the gBranch global variable and using alternative mechanism
to set TBakset::fBasket.

Revision 17731 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 6 15:30:25 2007 UTC (7 years, 11 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7851 byte(s)
Diff to previous 17579
In the Streamer functions replace the lines like
         TPad::Class()->ReadBuffer(b, this, v, R__s, R__c);
         TPad::Class()->WriteBuffer(b,this);
by
         b.ReadClassBuffer(TPad::Class(), this, v, R__s, R__c);
         b.WriteClassBuffer(TPad::Class(),this);

Revision 17579 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 30 11:24:32 2007 UTC (7 years, 11 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7845 byte(s)
Diff to previous 15313
-Replace calls to gROOT->GetClass by TClass::GetClass
-Remove unused references to TROOT.h

Revision 15313 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 2 15:33:31 2006 UTC (8 years, 7 months ago) by pcanal
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7858 byte(s)
Diff to previous 13207
Fix IsOnTerminal leaf for TLeafObject

Revision 13207 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 11 22:16:04 2005 UTC (9 years, 2 months ago) by pcanal
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7566 byte(s)
Diff to previous 7880
Update the spacing and documentation to match the coding rule

Revision 7880 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 10 10:52:31 2004 UTC (11 years ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7551 byte(s)
Diff to previous 2597
From Philippe:

This mega patch introduces a new implementation of the STL I/O
which is backward and forward compatible.  In addition this is more
exactly a new implementation or an extension of the container I/O.

We are introducing a new abstract interface:
"TVirtualContainerProxy", which can be implemented to present a
proxy to any collection which the I/O (and TTreeFormula) can use
then transparently.

The TVirtualContainerProxy interface allows to the I/O system to
request some information and to execute some essential function of
the container:
   what kind of object/data does it contain
   does it contain pointers
   how to insert data into the container
   how to retrieve an array of pointer to the elements inside
   how to create a collection object
   how to clear the collection
   how to resize the collection
   how to streamer the collection (if needed)
   how to calculate the sizeof the collection
   how to calculate the number of elements of the collection.

Using those primitives, the I/O and TTreeFormula should be able to
access any collection.   The I/O should also be able to handle the
splitting of collections that can be split (i.e. contains a single
type of object/data).

The current compromise selected between code duplication,
performance of the I/O of TClonesArray and vector of pointers and
the performance of the I/O of other containers, was to have on
function handle all collection as if they were a C-style array of
pointers to data.  This implies for example that the I/O of vector
of object current passes via the construction of temporary array
of pointer.  The cost of this construction is usually ~Qjust~R the
cost of calculating the addresses of the elements and assigning it
to an array element.

Registering a collection proxy will be similar to
     static int dummy = GenerateInitInstance((CollectType*)0x0)-
>AdoptCollectionProxy(new CollectTypeProxy));

Follows a few details on the modifications made to some of the
files and classes.

Bytes.h:
   Work around a problem in the MSVC++ 6.0 optimizer.  This should
not affect other compilers.

String:
   Included the std::string dictionary into G__Base2.cxx, this
insures its presence at all time.
   Added a new file string.cxx holding the streamer for
std::string.

RConfig.h
   Added proper ansi stream configuration for AIX, KCC
   Added template specialization defect for MSVC

TBrowser
   Start adding the ability to browser non TObject classes

TBuffer
   To handle the reading and writing array of objects, added:
     Int_t    CheckByteCount(UInt_t startpos, UInt_t bcnt, const
TClass *clss, const char* classname);
     Int_t    CheckByteCount(UInt_t startpos, UInt_t bcnt, const
char *classname);
     void     ReadFastArray(void  *start , TClass *cl, Int_t n=1,
TMemberStreamer *s=0);
     void     ReadFastArray(void **startp, TClass *cl, Int_t n=1,
Bool_t isPreAlloc=kFALSE, TMemberStreamer *s=0);
     void     WriteFastArray(void  *start,  TClass *cl, Int_t n=1,
TMemberStreamer *s=0);
     Int_t    WriteFastArray(void **startp, TClass *cl, Int_t n=1,
Bool_t isPreAlloc=kFALSE, TMemberStreamer *s=0);

TROOT
   Enhancement to make the access to gROOT not dependent for the
library loading order.  In particular we added:
      ROOT::GetROOT()
   which should be used instead of gROOT.

   Improve support for STL.  In particular, now STL containers do
have a corresponding TClass object


TRealData
   Replace SetStreamer by AdoptStreamer that allow to use not only
a streamer function but also streamer object (allowing streamer
with a state for Foreign classes)

TString:
   Improve streamer performance

TSystem:
   More consistency of the return value of TSystem::CompileMacro

build/unix/makecintdlls.sh
   Stop making the string.dll

config:
   enhance sgicc makefiles

cont:
   fix TBits::operator=
   TClassTable now warns for duplicate only for non stl classes
   TClonesArray fix a typo

gpad:
   Add a new class TInspectObject to enable inspect non TObject
classes
   TRootBrowser : enable inspect non TObject classes

TFormula/TTreeFormula
   To enhance performance switch from using one array fOper which
contained the operation code and its arguments to using 2 arrays
fActions and fActionParams to store respectively the operation and
its parameters.
   A new function Convert is used to convert old version from the
fOper to fActions.  This allows cleaner coding and offer
optimization opportunities.

TTreePlayer
   Start adding support in MakeClass for STL containers.

TRint/TProofServ
   Insure the loading of the string support

Event.cxx
   make sure to avoid memory over-write

stress.cxx
   Add new parameters
      stress <nevent> <style> <subbench> <portion>
   if <subbench> is 1 or higher, print the benchmark results after
each test.  This allows understand
   which test is affect by a performance change.
   portion is a binary field to indicate which test to run.  This
allows to focus on a particular test.

TVirtualCollectionProxy
   Abstract interface used to access any type of containers from
the I/O system and TTreeFormula. See TVectorProxy and
TEmulatedVectorProxy for examples.

TEmulatedVectorProxy
   Implementation of a std::vector proxy to be able to read a
std::vector without any libraries.

TVectorProxy
   Implementation of TVirtualCollectionProxy for a std::vector for
which we have the library.

TStreamerInfo.cxx
   Split in 3 files:  TStreamerInfo.cxx
TStreamerInfoReadBuffer.cxx TStreamerInfoWriteBuffer.cxx

   All the ReadBuffer, ReadBufferClones and the new ReadBufferSTL
(similarly for  WriteBuffer) have been factorized into one
function and 2 short wrappers.  The new main function expect an
array of pointer to the objects (this array is most often of size
one).

   TClonesArray objects pass GetObjectRef(0) to the common
ReadBuffer
   vector<bla*> v pass &(v[0])
   vector<bla> needs to create an intermediary array to hold the
address

   This mechanism is sometimes not optimal (vector<blah>) but
allows extremely flexibly and extension.  Basically, to add
support for a new container type using the StreamerInfo mechanism
(in particular allows splitting), one 'just' need to implement a
TVirtualCollectionProxy, which, in particular, will return an
array of address to the object it contains.  Even std::map can be
handled with this mechanism, since, for I/O purposes, it can be
consider as a container of pairs.

   Add a few optimization, including more caching via a new array
of a new struct (fComp).

   Fixed a problem (re)introduced while implementing the Foreign
class CheckSum.  Doing:
      class Event;
      f = new TFile("Event.root");
   resulted in errors.

TCint
   Add proper support for TClass of STL containers. Fix a memory
leak.
   Add support for load TClass via a typedef.
   Fix a problem with multiple inheritance

TClass
   Fixed a problem (re)introduced while implementing the Foreign
class CheckSum.  Doing:
      class Event;
      f = new TFile("Event.root");
   resulted in errors.
   Add a

TClass/TGenericClassInfo/TDataMember
   Add support for a new interface (TVirtualCollectionProxy)
useable for STL containers or any user defined containers.
   Add support for streamer with are objects (as opposed to free
standing function or methods).  This allows the user a greater
flexibility in writing a streamer.
   Add a few optimizations
   Add CanSplit to answer the question for a whole Class (for
example some collection can not be splitted).

TClassStreamer
   New class to wrap a class wide streamer

ClassStreamerFunc_t
   typedef for a class wide streamer function

TMemberStreamer
   New class to wrap a specific class member streamer

MemberStreamerFunc_t
   typedef for  a specific class member streamer function

RootStreamer
   Macro to specify a free standing streamer object or function
for a class
   For example:
      RootStreamer(string,std_string_streamer);

TStreamerElement:
   A couple of optimization/simplification.
   Add support for the new STL I/O
   Extend the useful

TBranchElement:
   add a connection to the proper TVirtualCollectionProxy
   add support for STL containers (non-split and split mode)

TTree
   Make the function TTree::GetMakeClass NON-virtual for better
efficiency
   Add support for STL containers

TBasket
   Left (in comment) a yet unproved improvement proposed by
Victor.  The preliminary tests were inconclusive performance wise
and it had (seemingly) problem with backward and forward
compatibility.

TBranch
   Performance improvements

metautils
   This is a new package for C++ files shared between rootcint and
meta.
   It contains TClassEdit a class to help determine some property
of a class given its class name (stl, template, etc).

utils
   Introduced a new file RStl.cxx to start separating rootcint in
modules.
   Modified rootcint to support the new STL I/O methods.
   In particular a new class RStl is in charge of doing the
generating of code for STL containers.

Revision 2597 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jul 19 16:42:37 2001 UTC (13 years, 6 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7408 byte(s)
Diff to previous 2439
Fix a problem found by Philippe when reading branches for which the pointer
is virtual. In this case, we had already the logic (via fVirtual) to save the real name
of the class, but this name was not used to call the default constructor.

Revision 2439 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 22 16:10:23 2001 UTC (13 years, 7 months ago) by rdm
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7410 byte(s)
Diff to previous 2131
make code more const char* correct (i.e. "strings" must be const char*) and
declare several functions extern "C". Mods by Dave Morrison.

Revision 2131 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon May 7 12:32:04 2001 UTC (13 years, 8 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7408 byte(s)
Diff to previous 2113
Implement TLeafObject::Notify. This function is called when a new class
library is loaded and a fake class is replaced by the true class.
the member fClass is now correctly updated.

Revision 2113 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed May 2 20:44:34 2001 UTC (13 years, 8 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7161 byte(s)
Diff to previous 2087
Add new code from Philippe to support, eg
 T.Draw("event.GetHistogram()->GetMean()")
 T.Draw("event.fH.fNcells").

The modification in TClass in needed to allow for TClass::GetMethod to properly
return method that allocated more than 1 parent class removed (i.e a  function
in TObject for TTree).
Also, eventhough the result is correct, the modifications is not optimal
for speed
of execution of the GetMethod method.

Revision 2087 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Apr 27 17:29:36 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 7173 byte(s)
Diff to previous 1965
Changes by Philippe to support queries to non-split trees in case the classes
are missing.

Revision 1965 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Apr 11 17:26:44 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6834 byte(s)
Diff to previous 1635
In TLeafObject.cxx, Philippe corrected the streamer to explicitly and properly set
fVirtual for older versions.

Revision 1635 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 20 08:15:10 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6752 byte(s)
Diff to previous 1449
Add protections in TLeafObject::FillBasket and TBranchObject::SetAddress
in case one diabolically insist in cloning a Tree with TBranchObject
for which the class does not exist.

Revision 1449 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 23 14:40:28 2001 UTC (14 years ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6722 byte(s)
Diff to previous 1387
Change TleafObject class id from 2 to 4. The jump to 4 is to support
compatibility with a special FNAL 2.26 version.

Revision 1387 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 16 16:15:13 2001 UTC (14 years ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6673 byte(s)
Diff to previous 1360
Add new member function PrintValue

Revision 1360 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 12 14:30:36 2001 UTC (14 years ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6477 byte(s)
Diff to previous 1126
Add support in TLeafObject for members pointing to an abstract class.

Revision 1126 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 6 07:31:29 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6371 byte(s)
Diff to previous 985
In TLeafObject::GetMethodCall copy input parameter (const char*) to a local
array. Input parameter was illegaly modified(George A. Heintzelman).

Revision 985 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Nov 21 20:51:23 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 6273 byte(s)
Diff to previous 47
Function Streamer now in the implementation file.
Add code for the new automatic schema evolution algorithm

Revision 47 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon May 29 06:19:21 2000 UTC (14 years, 7 months ago) by brun
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 5866 byte(s)
Diff to previous 3
//  29 May
- Add the following note in the TPave, TPaveLabel and TPaveText constructors:
    IMPORTANT NOTE:
    Because TPave objects (and objects deriving from TPave) have their
    master coordinate system in NDC, one cannot use the TBox functions
    SetX1,SetY1,SetX2,SetY2 to change the corner coordinates. One should use
    instead SetX1NDC, SetY1NDC, SetX2NDC, SetY2NDC.

   28 May
- Modify THistPainter::PaintStat and PaintStat2 to use the TLatex character #pm
  instead of +-

//     27 May
- Add new member functions:
    Int_t TVirtualTreePlayer::GetDimension()
    Int_t TTreePlayer::GetDimension()
  GetDimension returns the number of dimensions in the TTree::Draw expression.

- Add new function in TTree;
   void TTree::UnbinnedFit(const char *funcname ,const char *varexp, const char *selection="",Option_t *option=""
                       ,Int_t nentries=1000000000, Int_t firstentry=0);
   This function (origin Stephen Bailey) performs an unbinned fit to the
   variable(s) given in varexp.

- Remove unused data member fDimension from class TTree.

- Introduce support for "Virtuality" in TLeafObject.
  New data member fVirtual added and corresponding IsVirtual/SetVirtual functions.
  By default, fVirtual is kTRUE.
  This change allows new interesting possibilities in split mode. For example
  if a member is TShape *fShape, a real object may be now of any type
  derived from TShape (eg, TTUBE, TBRIK, etc).
  With the previous version, the fShape object had to be of the declared
  type TShape only.
  When writing a TLeafObject, the class name of the object is now written in
  the branch buffer by TLeafObject::FillBasket. When TLeafObject::ReadBasket
  is called, an instance of the real class is built and its Streamer function
  called.
  This change is backward compatible. Old files can still be processed.
  It is possible to set the virtuality for the branch to kFALSE via
  TLeafObject::SetVirtual. Setting the virtuality to kFALSE makes
  writing and reading faster and the file slightly smaller. In this case,
  a TLeafObject must be of the type declared only.

- New minor changes in TGaxis (Damir Buskulic) for date/time format
  in case the start time is not an integer value.

- Modify tutorial psexam.C to set the TPaveText TextFont to 61 instead of 62.
  Font precision 1 bypass the TLatex logic.

- Mods in TLatex to remove the special treatment for characters ' and ".
  Strings like l'#acute{e}toile  are now correctly processed.

- Fix a bug in TGraph::GetFunction. (thanks Damon Spayde). The test
    if (fFunctions)  return 0;  replaced by
    if (!fFunctions) return 0;

Revision 3 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 16 17:00:58 2000 UTC (14 years, 8 months ago) by rdm
Original Path: trunk/tree/src/TLeafObject.cxx
File length: 5435 byte(s)
Copied from: branches/rdm/tree/src/TLeafObject.cxx revision 2
Diff to previous 2
This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.

Revision 2 - (view) (download) (as text) (annotate) - [select for diffs]
Added Tue May 16 17:00:58 2000 UTC (14 years, 8 months ago) by rdm
Original Path: branches/rdm/tree/src/TLeafObject.cxx
File length: 5435 byte(s)
Initial import of ROOT into CVS

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9