#include #include #include #include /* Simple class holding a single parameter */ class subDataClass{ public: subDataClass(); void setParam(int); private: int param; ClassDef(subDataClass,1); }; /* Class holding a variable length array of subDataClass The array length is given by nVar */ class mainDataClass{ public: mainDataClass(); mainDataClass(int nVar); ~mainDataClass(); void setParam(int); private: int nVar; subDataClass* data;//[nVar] ClassDef(mainDataClass,1); }; ClassImp(subDataClass); ClassImp(mainDataClass); /* Implementation of subDataClass */ subDataClass::subDataClass(){ param=0; } void subDataClass::setParam(int param_){ param=param_; } /* Implementation of main data class */ mainDataClass::mainDataClass(){ nVar=0; data=NULL; } mainDataClass::mainDataClass(int nVar_){ nVar=nVar_; data = new subDataClass[nVar]; } mainDataClass::~mainDataClass(){ if(data!=NULL){ delete [] data; data=NULL; } } void mainDataClass::setParam(int a){ for (int i=0; iBranch("mainDataClass", &gr); for (int i=0; i<5; i++){ gr->setParam(100); outTree->Fill(); } outTree->Scan("data[1].param"); outTree->Write(); outfile->Close(); }