Branching branches

I am new to trees, so please bear with me.
Is there a way to manually add a branch to an existing branch? My data consists of many detectors, each of which have a few hundred channels. I would like my tree to have one branch for each detector, and each detector in turn to have one branch for each of its channels; which in turn have leaves containing the relevant data for each run. I cannot, however, figure out how to add the second layer of branches.



You could simply call topbranch->GetListOfBranches->Add(subbranch), however I do not really recommend it since some of the tools (Draw/MakeClass/MakeProxy) might get confused by this hand organization.

Independently of the tree organization, what C++ class structure did not design to hold your information?