Hi Jake,
For the diffuse photon database the class that is being written is PhotonDataPoint which has the Properties you list above a)-e). For the collision info database the class that is being written is the CollisionInfo which implements a List of SubRegionCollisionInfo, the list describes the SubRegionCollisionInfo for each tissue subregion. SubRegionCollisionInfo consists of a) pathlength (a double) and b) number of collisions (a long). So if you had a tissue defined with air-tissue-air, such as this snippet from an input file:
"TissueInput": {
"Regions": [
{
"TissueRegionType": "Layer",
"ZRange": {
"Start": "-Infinity",
"Stop": 0.0,
"Count": 2
},
"RegionOP": {
"Mua": 0.0,
"G": 1.0,
"Musp": 1E-10,
"Mus": 1E-10,
"N": 1.0
}
},
{
"TissueRegionType": "Layer",
"ZRange": {
"Start": 0.0,
"Stop": 100.0,
"Count": 2
},
"RegionOP": {
"Mua": 0.01,
"G": 0.8,
"Musp": 1.0,
"Mus": 5.000000000000001,
"N": 1.4
}
},
{
"TissueRegionType": "Layer",
"ZRange": {
"Start": 100.0,
"Stop": "Infinity",
"Count": 2
},
"RegionOP": {
"Mua": 0.0,
"G": 1.0,
"Musp": 1E-10,
"Mus": 1E-10,
"N": 1.0
}
}
],
"TissueType": "MultiLayer"
},
Then for each photon exiting the tissue, for each subregion a double (pathlength) then a long (number of collisions) is written.
For this setup the first and third subregion would be writing a 0.0 for pathlength and 0 for number of collisions, and for the second subregion (hopefully) nonzero numbers would be written indicating the total pathlength in the tissue and the total number of collisions in the tissue.
So our code when reading the database is set up in a loop over the number of subregions and reads a double (path length) and then a Int64 (number of collisions).
I hope this helps. Let me know if I have omitted some information you need to set up your own reader.
Best,
Carole