18 m_CurrentSubvessels =
new std::vector<Vessel::Pointer>();
19 Vessel::Pointer tmpVessel = Vessel::New(initialProperties);
20 m_CurrentSubvessels->push_back(tmpVessel);
25 m_CurrentSubvessels->clear();
26 delete m_CurrentSubvessels;
27 m_CurrentSubvessels =
nullptr;
33 std::vector<Vessel::Pointer> newVessels;
35 for (
unsigned int vesselTreeIndex = 0; vesselTreeIndex < m_CurrentSubvessels->size(); vesselTreeIndex++)
37 Vessel::Pointer currentVessel = m_CurrentSubvessels->at(vesselTreeIndex);
38 if (!currentVessel->IsFinished())
40 currentVessel->ExpandVessel(volume, calculateNewPosition, bendingFactor, rng);
41 if (currentVessel->CanBifurcate())
43 newVessels.push_back(currentVessel->Bifurcate(rng));
48 for (
unsigned int newVesselsIndex = 0; newVesselsIndex < newVessels.size(); newVesselsIndex++)
50 m_CurrentSubvessels->push_back(newVessels.at(newVesselsIndex));
56 for (
unsigned int vesselTreeIndex = 0; vesselTreeIndex < m_CurrentSubvessels->size(); vesselTreeIndex++)
58 if (!m_CurrentSubvessels->at(vesselTreeIndex)->IsFinished())
66 MITK_INFO(verbose) <<
"=== mitk::pa::Vessel Equal ===";
68 if (rightHandSide.IsNull() || leftHandSide.IsNull())
70 MITK_INFO(verbose) <<
"Cannot compare nullpointers";
74 if (leftHandSide->IsFinished() != rightHandSide->IsFinished())
76 MITK_INFO(verbose) <<
"Not same finished state.";
80 if (leftHandSide->GetCurrentSubvessels()->size() != rightHandSide->GetCurrentSubvessels()->size())
82 MITK_INFO(verbose) <<
"Not same number of subvessels in the vesseltree.";
86 for (
unsigned int vesselIdx = 0, numVessels = leftHandSide->GetCurrentSubvessels()->size(); vesselIdx < numVessels; ++vesselIdx)
88 if (!
Equal(leftHandSide->GetCurrentSubvessels()->at(vesselIdx), rightHandSide->GetCurrentSubvessels()->at(vesselIdx),
eps,
verbose))
90 MITK_INFO(verbose) <<
"At least one vessel was not equal or the vessel list were not in order.";
VesselTree(VesselProperties::Pointer initialProperties)
MITKPHOTOACOUSTICSLIB_EXPORT bool Equal(const MonteCarloThreadHandler::Pointer leftHandSide, const MonteCarloThreadHandler::Pointer rightHandSide, double eps, bool verbose)
Equal A function comparing two thread handlers for beeing equal.
MITKCORE_EXPORT const ScalarType eps
bool IsFinished()
IsFinished.
void Step(InSilicoTissueVolume::Pointer volume, Vessel::CalculateNewVesselPositionCallback calculateNewPosition, double bendingFactor, std::mt19937 *rng)
Step Performs a simulation step, in which all subvessels of this VesselTree are expanded.
void(VesselMeanderStrategy::* CalculateNewVesselPositionCallback)(Vector::Pointer, double, std::mt19937 *)