/// <summary> /// method to tally to detector /// </summary> /// <param name="photon">photon data needed to tally</param> public void Tally(Photon photon) { var ir = DetectorBinning.WhichBinExclusive(DetectorBinning.GetRho(photon.DP.Position.X, photon.DP.Position.Y), Rho.Count - 1, Rho.Delta, Rho.Start); if (ir != -1) { double weightFactor = _absorbAction( photon.History.SubRegionInfoList.Select(c => c.NumberOfCollisions).ToList(), photon.History.SubRegionInfoList.Select(p => p.PathLength).ToList(), _perturbedOps); Mean[ir] += photon.DP.Weight * weightFactor; if (TallySecondMoment) { SecondMoment[ir] += photon.DP.Weight * weightFactor * photon.DP.Weight * weightFactor; } TallyCount++; } }