@chickrickepachimecho: Probably, as all the info is in there, although I don't know if anyone has researched how to calculate it.
My first attempt would be to simply walk through the tiles of the tree and count the number of trunks, cut down the tree, and compare the number to the number of logs found (obviously the area should either be free of other logs, or the preexisting logs should be marked with e.g. the 'f'orbidden flag to distinguish the new logs from the old ones).
I'd examine blood thorn (very high yield) as well as two and three tile diameter trees (I think highwood is the only one to produce 3 tile one, with some "normal" tree(s) being capable of producing 2 tile diameter trunks).
Also note that the "body" field has an odd description, saying "dimension body_height", while also describing the matrix as "dimension dim_x*dim_y" (the latter isn't shown in the C struct, but it's in the XML source for the C struct). This leads to the suspicion that it's actually a 3 dimensional array (body_height*dim_x*dim_y), which is what would be required to actually contain the info for all of the relevant tiles. However, be prepared for DF crashing if you try to access the structure that way, as it may well refer to unallocated memory if it's only a two dimensional structure. I'd also try to see if the bit combinations aren't nonsensical, as you shouldn't have "blocked" set together with anything else, and "trunk", "branches", and "twigs" probably should be mutually exclusive).
Edit: I've looked at my woodcutter cutting trees and counted the number of trunk segments present before cutting (using the Mk I eyeball) against the number of logs produced, and they've matched so far (surface trees, producing 2-7 logs). I don't have any wide trunk trees.