A couple of bits people might find useful to look at/have handy for the dataflow telephone meeting of Dec 4th. They probably won't make much sense now but hopefully all will be clear when I'm speaking. Roly. Sample detector map text file. # file: emc1.map Section: 0 0 # mapping of detector sections to platform elements Chip: 0 # chip for section 0 Channel: 0-23 # channels belonging to chip 0 of section 0 Section: 1 1 # can split lines if you want Chip: 0 Channel: 0, 1, 2, 3, 4, 5-18, 19-23 # can write horrible looking things if you want Section: 2 2 Chip: 0 Channel: 0-23 Code to print out the detector and platform addresses of all channels // instantiate a browser odfMapBrowser browser(theMap); do { // go down to the leaf nodes browser.bottom(); unsigned int dAdr; unsigned int pAdr; o << "At level " << browser.currentLevel() << endl; while(dAdr=browser.dAdr(), pAdr=browser.pAdr(), browser.next()) { if (pAdr==0) o << "platform address out of range"; else { o << "pAdr="; odfpAdr::instance().print(pAdr); } if (dAdr==0) o << "detector address out of range"; else { o << "dAdr="; odfdAdr::instance().print(dAdr); } o << endl; } // find the next branch of the map if there is one. } while (browser.nextBranch());