Hi Toby,
On Tue, 2008-03-25 at 12:13 +0100, Axel Naumann wrote:
> Hi Tobias,
>
> you'll need to re-implement Browse(TBrowser* b). Check e.g. TBranch's version
> which shows a basic example:
> <http://root.cern.ch/root/html/src/TBranch.cxx.html#pV16>
The problem is your int's and double's - they need to be wrapped in an object of a class for which there's a corresponding TClass instance in the ROOT database. Since
Root> TClass* int_class = gROOT->GetClass("int");
Root> TClass* double_class = gROOT->GetClass("double");
both returns null pointers, you can add these members directly - perhaps TBrowser should have the member function
template <typename T> void TBrowser::Add(const char* name, const T& v);
for these kind of things.
Anyway, you need, as mentioned, to wrap your int's and double's e.g.,
class MyClass : public TObject
{
public:
virtual MyClass() {
fArray.Delete();
if (fDoubleWrap) delete fDoubleWrap;
if (fIntWrap) delete fIntWrap;
}
MyClass() : fArray(0), fDoubleWrap(0), fIntWrap(0) {}
Bool_t IsFolder() const { return kTRUE; }
void Browse(TBrowser* b) {
b->Add(&fArray);
if (!fDoubleWrap) fDoubleWrap = new TParameter<double>("fDouble", fDouble);
if (!fIntWrap) fIntWrap = new TParameter<int>("fInt", fInt);
b->Add(fDoubleWrap);
b->Add(fIntWrap);
}
protected:
int fInt;
double fDouble;
TClonesArray fArray;
TParameter<double> fDoubleWrap; //! Transient
TParameter<int> fIntWrap; //! Transient
};
yours,
--
___ | Christian Holm Christensen
|_| | -------------------------------------------------------------
| | Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91
_| DK-2200 Copenhagen N Cell: (+45) 24 61 85 91
_| Denmark Office: (+45) 353 25 447
____| Email: cholm_at_nbi.dk Web: www.nbi.dk/~cholm
| |
Received on Tue Mar 25 2008 - 13:10:28 CET
This archive was generated by hypermail 2.2.0 : Tue Mar 25 2008 - 17:50:01 CET