Hi Valery, TTable is a possibility, but far less efficient that the simple solution I posted yesterday with a simple TTree. With a TTable, you have to read all the elements of an entry to sort the table. With a simple TTree, you have the possibility to read only the branches (Board, then Module, etc). In case of a large table, this will make a substantial difference in time. Rene Brun On Sat, 23 Jun 2001, Valeri Fine wrote: > You can do this either with TTree or TTable. > > With TTable approach create the class derived from TTable and apply > TTableSorter as many times as you need to get all your mappings. (I fact > this is the canonical approach that works with ROOT I/O). > http://root.cern.ch/root/htmldoc/TTable.html#TTable:description > I'd like to call your attention the class TTableSorter doesn't change the > table it is applied agaist of. > Neither it copies that table data. > > Since TTable class allocates the continuous memory block internally this > block can be mapped > to some hardware registries and populated by "electronics" directly or by > parallel process via > "real" share memory (Just in case); > > > #include "TTable.h" > > typedef struct detector_t { > int BoardID; /* Board ID */ > int ModuleID; /* Module ID */ > int ChannelID; /* Channel ID */ > int WireNumber; /* Wire number */ > int WireType; /* Wire type */ > }; > class TDetector : public TTable > { > public: > ClassDefTable(TDetector,detector_t) > ClassDef(TDetector,2) //C++ wrapper for <dst_track> StAF table > }; > #endif > > At the moment the TTable object can be stored with "root" I/O, MySQL, > XDF (Corba-like) and ASCII( via SavePrimitive) formats. > > I wonder if you need further exaplanations. Let me know. > Best regrads, Valeri > > ----- Original Message ----- > From: "Jacek M. Holeczek" <holeczek@us.edu.pl> > To: "roottalk" <roottalk@pcroot.cern.ch> > Sent: Friday, June 22, 2001 7:35 PM > Subject: [ROOT] detector mapping in root > > > > Hi, > > Assume one has a set of numbers (describing the wire mapping) in form : > > BoardID ModuleID ChannelID WireNumber WireType > > ... > > 34 12 0 121 4 > > 34 12 1 126 1 > > ... > > 55 15 7 121 4 > > 55 37 288 5878 2 > > ... > > Now I would like to have functions like : > > GetWireID(BoardID,ModuleID,ChannelID) > > GetBoardID(WireNumber,WireType) > > The canonical approach would be to create a "database", feed it with this > > table, and then make queries. But ... I would like to do this without any > > database connection. Just "pure" root. > > I can't seem to have any good idea how to do this (mapping in both > > directions between "electronic" channels and detector wires). > > Any help appreciated. > > Thanks in advance, > > Jacek. > > > > >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:50 MET