This project has moved and is read-only. For the latest updates, please go here.


New Momentum Transfer Detector


This feature grew out of the discussion:
Request has been made for a detector that:
1) determines momentum transfer (MT) as a function of rho and layer (non-uniform): 2D array with each element representing mean MT for those photons out rho bin within layer bin.
2) determines 1) with MT bins

Possible naming:
for 1): MomentumTransferOfRhoAndSubregion
for 2): MomentumTransferOfRhoAndSubregionHist

1) normalization of results should normalize wrt rho bin surface area and N, number of photons launched.
2) need for RhoOfRho (reflected photon weight) data obtained by specifying ROfRhoDetectorInput along with MT detector.
3) need ability to specify non-uniform layers.
Closed May 3 at 10:59 PM by hayakawa
This has been implemented.


dcuccia wrote Feb 23, 2012 at 1:20 AM

  • I suggest ReflectedMTOfRhoAndSubregion and ReflectedMTOfRhoAndSubregionHist. This will help with reducing ambiguity in the future between internal and external tallies.
  • Re Note 3): We already have non-uniform tissue layers (i.e. subregions) - this is why, at this point, it needs to be implemented based on the tissue subregion (for now), as opposed to specifying additional bins
  • Just to confirm: everything that we need to tally is accessible from within the reflected Photon instance, right?

hayakawa wrote Mar 14, 2012 at 4:00 AM

I have coded this up and am now adding code to the matlab/post_processing files so that I can view plots of the results. The matlab code gives error "Reference to non-existent field 'SubRegions'" on my coded line:
tempSubRegions = xml.DeletectorInputs(di).anyType.SubRegions;
I look at the xml file and SubRegions is there, but when I pause before this line and use the tab key to see my options, other fields within in the xml are given but not SubRegions.

dcuccia wrote Mar 14, 2012 at 8:21 PM

Let's look at it today at the group meeting. I'm sure we're just referencing it incorrectly.

hayakawa wrote Mar 15, 2012 at 4:36 AM

After seeing my results plotted, I realize my current detector is implemented incorrectly. I currently have the MT detector implement IHistoryDetector, then TallySingle gets called as the HistoryDetectorController goes through all the points in each photon's biography, 2 by 2, and calls all HistoryDetectors including MT detector. But this is wrong because I should only do this if the photon exited out a rho bin and tally to the MT for that rho bin.

I think I need to have the MT detector implement IDetector, then Tally would be called when the photon exits the surface (reflectanceVB), determine which rho bin the photon exited, then go through the history and determine the binned MT for each tissue region. The problem with this design is that this detector would go through the history of each photon and so does not take advantage of the optimization we've worked into HistoryDetectorController. It may be inefficient, but it will work.

Any suggestions for an alternative design? Let me know if I've been unclear in my description of the problem.

dcuccia wrote Mar 15, 2012 at 9:21 AM

You're on the right track now...ReflectedMTXXX means it's a "termination"

The best way to implement this would be to have a field for MT
accumulation, analogous to what we do for pathlength-based termination
tallies. We don't have the flexibility to specify arbitrary new fields in
SubRegionInfo, at least when it comes to serializing databases for

I say implement it as you've suggested, and then we can optimize when we
introduce a little more flexibility in the PhotonDataPoint class.