#include "G4CustomFemaleBuilder.h"
#include "G4VBodyFactory.h"
#include "G4VoxelBreastFactory.h"

G4CustomFemaleBuilder::G4CustomFemaleBuilder() {}

G4CustomFemaleBuilder::~G4CustomFemaleBuilder()

{
    delete body;
}

void G4CustomFemaleBuilder::BuildUterus(const G4String& colourName, G4bool solidVis, G4bool sensitivity)

{
    if (trunkVolume == 0)
        G4Exception("G4CustomFemaleBuilder::BuildUterus()", "human_phantom0001", FatalException,
                    "The trunk volume is missing !!!!!");

    body->CreateOrgan("Uterus", trunkVolume, colourName, solidVis, sensitivity);
}

void G4CustomFemaleBuilder::BuildLeftOvary(const G4String& colourName, G4bool solidVis, G4bool sensitivity)

{
    if (trunkVolume == 0)
        G4Exception("G4CustomFemaleBuilder::BuildLeftOvary()", "human_phantom0002", FatalException,
                    "The trunk volume is missing !!!!!");

    body->CreateOrgan("LeftOvary", trunkVolume, colourName, solidVis, sensitivity);
}

void G4CustomFemaleBuilder::BuildRightOvary(const G4String& colourName, G4bool solidVis, G4bool sensitivity)

{
    if (trunkVolume == 0)
        G4Exception("G4CustomFemaleBuilder::BuildRightOvary()", "human_phantom0003", FatalException,
                    "The trunk volume is missing !!!!!");

    body->CreateOrgan("RightOvary", trunkVolume, colourName, solidVis, sensitivity);
}

void G4CustomFemaleBuilder::BuildVoxelLeftBreast(const G4String& colourName, G4bool solidVis, G4bool sensitivity) {
    G4cout << "BuildVoxelLeftBreast" << G4endl;
    if (motherVolume == 0)
        G4Exception("G4CustomFemaleBuilder::BuildVoxelLeftBreast()", "human_phantom0004", FatalException,
                    "The world volume is missing !!!!!");

    G4VBodyFactory* customBody = new G4VoxelBreastFactory();
    customBody->CreateOrgan("LeftBreast", motherVolume, colourName, solidVis, sensitivity);
    delete customBody;
}

void G4CustomFemaleBuilder::BuildVoxelRightBreast(const G4String& colourName, G4bool solidVis, G4bool sensitivity) {
    if (motherVolume == 0)
        G4Exception("G4CustomFemaleBuilder::BuildVoxelRightBreast()", "human_phantom0005", FatalException,
                    "The world volume is missing !!!!!");

    G4VBodyFactory* customBody = new G4VoxelBreastFactory();
    customBody->CreateOrgan("RightBreast", motherVolume, colourName, solidVis, sensitivity);
    delete customBody;
}
