content: package edu.stanford.rsl.conrad.phantom.xcat;
  
  
  import java.util.ArrayList;
  import java.util.HashMap;
  
  import edu.stanford.rsl.conrad.geometry.AbstractShape;
  import edu.stanford.rsl.conrad.geometry.motion.timewarp.TimeWarper;
  import edu.stanford.rsl.conrad.geometry.splines.SurfaceBSpline;
  import edu.stanford.rsl.conrad.geometry.splines.TimeVariantSurfaceBSpline;
  import edu.stanford.rsl.conrad.phantom.AnalyticPhantom4D;
  import edu.stanford.rsl.conrad.physics.PhysicalObject;
  import edu.stanford.rsl.conrad.physics.materials.Material;
  import edu.stanford.rsl.conrad.rendering.PrioritizableScene;
  import edu.stanford.rsl.conrad.utils.Configuration;
  import edu.stanford.rsl.conrad.utils.RegKeys;
  
  /**
   * Class to model scenes involving Paul Seagar's XCAT.<BR><BR>
   * <img src="http://dmip1.rad.jhmi.edu/xcat/ncat_ct.jpg" alt = "XCat example">
   * 
   * @author akmaier
   *
   */
  public abstract class XCatScene extends AnalyticPhantom4D {
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = 7268743275585203174L;
  
  	/**
  	 * Select the gender of the phantom.
  	 */
  	protected static boolean maleGender = true;
  
  	/**
  	 * If supine is selected, the patient is laying on this back. If it is set to false, the patient is defined as laying on this front side.
  	 */
  	protected static boolean supine = true;
  
  	/**
  	 * This reads in the position of the XCat files from the registry.
  	 */
  	protected String XCatDirectory = Configuration.getGlobalConfiguration().getRegistryEntry(RegKeys.XCAT_PATH);
  
  	/**
  	 * defines whether the bone marrow is rendered.
  	 */
  	protected static boolean renderMarrow = true;
  
  	/**
  	 * Rendering of the arm marrow. Use this option with care. The arm bone marrow of XCat may belong to arms pointing upwards.
  	 */
  	protected static boolean renderArmMarrow = false;
  
  	/**
  	 * Time warping is used for animation. A time warper is a function that get an input time and return an output time.
  	 */
  	protected TimeWarper warper;
  
  	protected ArrayList<SurfaceBSpline> splines = new ArrayList<SurfaceBSpline>();
  
  	protected ArrayList<TimeVariantSurfaceBSpline> variants = new ArrayList<TimeVariantSurfaceBSpline>();
  
  	
  	/**
  	 * returns the geometric definition of XCat. Only returns the splines that are rendered in the respective scene.
  	 * @return the splines
  	 */
  	public ArrayList<SurfaceBSpline> getSplines() {
  		return splines;
  	}
  	
  	public ArrayList<TimeVariantSurfaceBSpline> getVariants() {
  		return variants;
  	}
  
  	
  	public void createPhysicalObjects(){
  		clear();
  		for (TimeVariantSurfaceBSpline spline: variants){
  			add(this, spline, spline.getTitle());
  		}
  		for (SurfaceBSpline spline: splines){
  			add(this, spline, spline.getTitle());
  		}
  	}
  	
  	/**
  	 * This definition of XCat does tessellate the scene, i.e. render the complete scene in triangles.
  	 * Function is based on several parameters to determine the number of points required to get a
  	 * sufficient tessellation of the respective object.
  	 * 
  	 * @param voxelSizeX the resolution of the object in X direction
  	 * @param voxelSizeY the resolution of the object in Y direction
  	 * @param voxelSizeZ the resolution of the object in Z direction
  	 * @param samplingU sampling factor in the spline internal u direction
  	 * @param samplingV sampling factor in the spline internal v direction
  	 * @param time the time between 0 and 1 to draw the scene. Note that the time is being warped according to the time warper.
  	 * @return a scene at a given time consisting only of triangles.
  	 */
  	public abstract PrioritizableScene tessellateScene(double time); 
  
  	public PrioritizableScene getScene(double time){
  		return tessellateScene(time);
  	}
  
  
  	/**
  	 * Adds a new shape to the scene. The shape is compared against the look-up table of known shapes to determine its material.
  	 * @param phantom the phantom to add the shape
  	 * @param shape the shape
  	 * @param name the name of the shape used for the look up.
  	 */
  	protected void add(PrioritizableScene phantom, AbstractShape shape, String name){
  		if (shape != null){
  			if (getSplineNameMaterialNameLUT().keySet().contains(name)){
  				PhysicalObject obj = new PhysicalObject();
  				obj.setNameString(name);
  				obj.setMaterial(generateFromSplineName(name));
  				obj.setShape(shape);
  				try{
  					//System.out.println(obj.getNameString() + " " + getSplinePriorityLUT().get(name));
  					phantom.add(obj, getSplinePriorityLUT().get(name));
  				} catch (Exception e){
  					System.out.println("ignored '" + name+"'");
  				}
  			} else {
  				System.out.println("ignored '" + name +"'");
  			}
  		}
  	}
  	
  
  
  	/**
  	 * Returns the scene as an collection of Bsplines:
  	 * <pre>
  	 * type
  	 * total size in floats
  	 * # number of splines
  	 * Bsplines
  	 * priorities
  	 * materials
  	 * </pre>
  	 * @return the binary representation
  	 */
  	public abstract float [] getBinaryRepresentation();
  
  
  	/**
  	 * Look up table for the priorites of the different shapes.
  	 * Shapes with a higher priority are drawn over shapes with lower priority.
  	 * @return the prioirity lut
  	 */
  	public static HashMap <String, Integer> getSplinePriorityLUT(){
  		HashMap<String, Integer> map = new HashMap<String, Integer>();
  		map.put("*****BODY******", 0);
  		map.put("**RightArm", 0);
  		map.put("**LeftArm", 0);
  		map.put("**RightLeg", 0);
  		map.put("**LeftLeg", 0);
  		map.put("*****RLUNG******", 8);
  		map.put("*****LLUNG******", 8);
  		map.put("*****LIVER******", 20);
  		map.put("****Gall-Bladder****", 10);
  		map.put("****Left-diaphragm****", 60);
  		map.put("*****KIDNEY1******", 10);
  		map.put("*****KIDNEY2******", 10);
  		map.put("*****STOMACH******", 10);
  		map.put("*****SPLEEN******", 10);
  		map.put("*****STERNUM******", 10);
  		map.put("*****thor_cartilage1****", 20);
  		map.put("*****thor_cartilage2****", 20);
  		map.put("*****thor_cartilage3****", 20);
  		map.put("*****thor_cartilage4****", 20);
  		map.put("*****thor_cartilage5****", 20);
  		map.put("*****thor_cartilage6****", 20);
  		map.put("*****thor_cartilage7****", 20);
  		map.put("*****thor_cartilage8****", 20);
  		map.put("*****thor_cartilage9****", 20);
  		map.put("*****thor_cartilage10****", 20);
  		map.put("*****thor_cartilage11****", 20);
  		map.put("*****thor_cartilage12****", 20);
  		map.put("*****lumbar_cartilage1****", 20);
  		map.put("*****lumbar_cartilage2****", 20);
  		map.put("*****lumbar_cartilage3****", 20);
  		map.put("*****lumbar_cartilage4****", 20);
  		map.put("*****lumbar_cartilage5****", 20);
  		map.put("*****lumbar_cartilage6****", 20);
  		map.put("****cerv_vert1a****", 10);
  		map.put("****cerv_vert1b****", 10);
  		map.put("****cerv_vert1c****", 10);
  		map.put("****cerv_vert1d****", 10);
  		map.put("****cerv_vert1e****", 10);
  		map.put("****cerv_vert1f****", 10);
  		map.put("*****cerv_vert2a****", 10);
  		map.put("*****cerv_vert2b****", 10);
  		map.put("*****cerv_vert2c****", 10);
  		map.put("*****cerv_vert3a****", 10);
  		map.put("*****cerv_vert3b****", 10);
  		map.put("*****cerv_vert3c****", 10);
  		map.put("*****cerv_vert4a****", 10);
  		map.put("*****cerv_vert4b****", 10);
  		map.put("*****cerv_vert4c****", 10);
  		map.put("*****cerv_vert5a****", 10);
  		map.put("*****cerv_vert5b****", 10);
  		map.put("*****cerv_vert5c****", 10);
  		map.put("*****cerv_vert6a****", 10);
  		map.put("*****cerv_vert6b****", 10);
  		map.put("*****cerv_vert6c****", 10);
  		map.put("*****cerv_vert7a****", 10);
  		map.put("*****cerv_vert7b****", 10);
  		map.put("*****cerv_vert7c****", 10);
  		map.put("*****thor_vert1a****", 10);
  		map.put("*****thor_vert1b****", 10);
  		map.put("*****thor_vert2a****", 10);
  		map.put("*****thor_vert2b****", 10);
  		map.put("*****thor_vert3a****", 10);
  		map.put("*****thor_vert3b****", 10);
  		map.put("*****thor_vert4a****", 10);
  		map.put("*****thor_vert4b****", 10);
  		map.put("*****thor_vert5a****", 10);
  		map.put("*****thor_vert5b****", 10);
  		map.put("*****thor_vert6a****", 10);
  		map.put("*****thor_vert6b****", 10);
  		map.put("*****thor_vert7a****", 10);
  		map.put("*****thor_vert7b****", 10);
  		map.put("*****thor_vert8a****", 10);
  		map.put("*****thor_vert8b****", 10);
  		map.put("*****thor_vert9a****", 10);
  		map.put("*****thor_vert9b****", 10);
  		map.put("*****thor_vert10a****", 10);
  		map.put("*****thor_vert10b****", 10);
  		map.put("*****thor_vert11a****", 10);
  		map.put("*****thor_vert11b****", 10);
  		map.put("*****thor_vert12a****", 10);
  		map.put("*****thor_vert12b****", 10);
  		map.put("*****lum_vert1a****", 10);
  		map.put("*****lum_vert1b****", 10);
  		map.put("*****lum_vert2a****", 10);
  		map.put("*****lum_vert2b****", 10);
  		map.put("*****lum_vert3a****", 10);
  		map.put("*****lum_vert3b****", 10);
  		map.put("*****lum_vert4a****", 10);
  		map.put("*****lum_vert4b****", 10);
  		map.put("*****lum_vert5a****", 10);
  		map.put("*****lum_vert5b****", 10);
  		map.put("*****sacrum****", 20);
  		map.put("*****sacrum_cart****", 30);
  		map.put("***RRIB1-Cartilage", 30);
  		map.put("***RRIB2-Cartilage", 30);
  		map.put("***RRIB3-Cartilage", 30);
  		map.put("***RRIB4-Cartilage", 30);
  		map.put("***RRIB5-Cartilage", 30);
  		map.put("***RRIB6-Cartilage", 30);
  		map.put("***RRIB7-Cartilage", 30);
  		map.put("***RRIB8-Cartilage", 30);
  		map.put("***RRIB9-Cartilage", 30);
  		map.put("***Right-Sternum-Cartilage", 30);
  		map.put("***RRIB1", 10);
  		map.put("***RRIB2", 10);
  		map.put("***RRIB3", 10);
  		map.put("***RRIB4", 10);
  		map.put("***RRIB5", 10);
  		map.put("***RRIB6", 10);
  		map.put("***RRIB7", 10);
  		map.put("***RRIB8", 10);
  		map.put("***RRIB9", 10);
  		map.put("***RRIB10", 10);
  		map.put("***RRIB11", 10);
  		map.put("***RRIB12", 10);
  		map.put("***LRIB1-Cartilage", 30);
  		map.put("***LRIB2-Cartilage", 30);
  		map.put("***LRIB3-Cartilage", 30);
  		map.put("***LRIB4-Cartilage", 30);
  		map.put("***LRIB5-Cartilage", 30);
  		map.put("***LRIB6-Cartilage", 30);
  		map.put("***LRIB7-Cartilage", 30);
  		map.put("***LRIB8-Cartilage", 30);
  		map.put("***LRIB9-Cartilage", 30);
  		map.put("***Left-Sternum-Cartilage", 30);
  		map.put("***LRIB1", 10);
  		map.put("***LRIB2", 10);
  		map.put("***LRIB3", 10);
  		map.put("***LRIB4", 10);
  		map.put("***LRIB5", 10);
  		map.put("***LRIB6", 10);
  		map.put("***LRIB7", 10);
  		map.put("***LRIB8", 10);
  		map.put("***LRIB9", 10);
  		map.put("***LRIB10", 10);
  		map.put("***LRIB11", 10);
  		map.put("***LRIB12", 10);
  		map.put("**RightHumerus", 10);
  		map.put("**RightRadius", 10);
  		map.put("**RightUlna", 10);
  		map.put("**RightCapitate", 10);
  		map.put("**RightHamate", 10);
  		map.put("**RightLunate", 10);
  		map.put("**RightMetacarpal", 10);
  		map.put("**RightMetacarpal", 10);
  		map.put("**RightMetacarpal", 10);
  		map.put("**RightMetacarpal", 10);
  		map.put("**RightMetacarpal", 10);
  		map.put("**RightPisiform", 10);
  		map.put("**RightScaphoid", 10);
  		map.put("**RightTrapezium", 10);
  		map.put("**RightTriquetrum", 10);
  		map.put("**RightTrapezoid", 10);
  		map.put("**RightFinger1", 10);
  		map.put("**RightFinger2", 10);
  		map.put("**RightFinger3", 10);
  		map.put("**RightFinger4", 10);
  		map.put("**RightFinger5", 10);
  		map.put("**RightFinger6", 10);
  		map.put("**RightFinger7", 10);
  		map.put("**RightFinger8", 10);
  		map.put("**RightFinger9", 10);
  		map.put("**RightFinger10", 10);
  		map.put("**RightFinger11", 10);
  		map.put("**RightFinger12", 10);
  		map.put("**RightFinger13", 10);
  		map.put("**RightFinger14", 10);
  		map.put("**LeftHumerus", 10);
  		map.put("**LeftRadius", 10);
  		map.put("**LeftUlna", 10);
  		map.put("**LeftCapitate", 10);
  		map.put("**LeftHamate", 10);
  		map.put("**LeftLunate", 10);
  		map.put("**LeftMetacarpal", 10);
  		map.put("**LeftMetacarpal", 10);
  		map.put("**LeftMetacarpal", 10);
  		map.put("**LeftMetacarpal", 10);
  		map.put("**LeftMetacarpal", 10);
  		map.put("**LeftPisiform", 10);
  		map.put("**LeftScaphoid", 10);
  		map.put("**LeftTrapezium", 10);
  		map.put("**LeftTriquetrum", 10);
  		map.put("**LeftTrapezoid", 10);
  		map.put("**LeftFinger1", 10);
  		map.put("**LeftFinger2", 10);
  		map.put("**LeftFinger3", 10);
  		map.put("**LeftFinger4", 10);
  		map.put("**LeftFinger5", 10);
  		map.put("**LeftFinger6", 10);
  		map.put("**LeftFinger7", 10);
  		map.put("**LeftFinger8", 10);
  		map.put("**LeftFinger9", 10);
  		map.put("**LeftFinger10", 10);
  		map.put("**LeftFinger11", 10);
  		map.put("**LeftFinger12", 10);
  		map.put("**LeftFinger13", 10);
  		map.put("**LeftFinger14", 10);
  		map.put("**RightFemur", 10);
  		map.put("**RightTibia", 10);
  		map.put("**RightFibula", 10);
  		map.put("**RightPatella", 10);
  		map.put("**RightTalus", 10);
  		map.put("**RightCalcaneus", 10);
  		map.put("**RightCuboid", 10);
  		map.put("**Right_inter_cuneiform", 10);
  		map.put("**Right_lat_cuneiform", 10);
  		map.put("**Right_med_cuneiform", 10);
  		map.put("**RightTarsal", 10);
  		map.put("**RightTarsal", 10);
  		map.put("**RightTarsal", 10);
  		map.put("**RightTarsal", 10);
  		map.put("**RightTarsal", 10);
  		map.put("**RightNavicular", 10);
  		map.put("RightToe1", 10);
  		map.put("RightToe2", 10);
  		map.put("RightToe3", 10);
  		map.put("RightToe4", 10);
  		map.put("RightToe5", 10);
  		map.put("RightToe6", 10);
  		map.put("RightToe7", 10);
  		map.put("RightToe8", 10);
  		map.put("RightToe9", 10);
  		map.put("RightToe10", 10);
  		map.put("RightToe11", 10);
  		map.put("RightToe12", 10);
  		map.put("RightToe13", 10);
  		map.put("RightToe14", 10);
  		map.put("*LeftFemur", 10);
  		map.put("**LeftTibia", 10);
  		map.put("**LeftFibula", 10);
  		map.put("**LeftPatella", 10);
  		map.put("**LeftTalus", 10);
  		map.put("**LeftCalcaneus", 10);
  		map.put("**LeftCuboid", 10);
  		map.put("**Left_inter_cuneiform", 10);
  		map.put("**Left_lat_cuneiform", 10);
  		map.put("**Left_med_cuneiform", 10);
  		map.put("**LeftTarsal", 10);
  		map.put("**LeftTarsal", 10);
  		map.put("**LeftTarsal", 10);
  		map.put("**LeftTarsal", 10);
  		map.put("**LeftTarsal", 10);
  		map.put("**LeftNavicular", 10);
  		map.put("LeftToe1", 10);
  		map.put("LeftToe2", 10);
  		map.put("LeftToe3", 10);
  		map.put("LeftToe4", 10);
  		map.put("LeftToe5", 10);
  		map.put("LeftToe6", 10);
  		map.put("LeftToe7", 10);
  		map.put("LeftToe8", 10);
  		map.put("LeftToe9", 10);
  		map.put("LeftToe10", 10);
  		map.put("LeftToe11", 10);
  		map.put("LeftToe12", 10);
  		map.put("LeftToe13", 10);
  		map.put("LeftToe14", 10);
  		map.put("***RIGHT_COLLARBONE***", 10);
  		map.put("***RIGHT_SCAPULA***", 10);
  		map.put("****LEFT_COLLARBONE****", 10);
  		map.put("****LEFT_SCAPULA****", 10);
  		map.put("****skull_face1****", 10);
  		map.put("****skull_face2****", 10);
  		map.put("****skull1****", 10);
  		map.put("****skull2****", 10);
  		map.put("****skull3****", 10);
  		map.put("****skull4****", 10);
  		map.put("****skull5****", 10);
  		map.put("****jaw****", 10);
  		map.put("****nasal_passage1****", 20);
  		map.put("****nasal_passage2****", 20);
  		map.put("****brain****", 50);
  		map.put("****cerebellum****", 50);
  		map.put("****brain_stem****", 50);
  		if (!maleGender){
  			if (!supine) {
  				map.put("****RBREAST-Prone*****", 0);
  				map.put("****LBREAST-Prone*****", 0); 
  			} else {
  				map.put("****RBREAST-Supine*****", 0);
  				map.put("****LBREAST-Supine*****", 0);
  			}
  		}
  		map.put("*****RHIP*****", 10);
  		map.put("*****RPELVIS1*****", 10);
  		map.put("*****RPELVIS2*****", 10);
  		map.put("*****RHIPC*****", 10);
  		map.put("*****RPELVIS1C*****", 10);
  		map.put("*****RPELVIS2C*****", 10);
  		map.put("*****LHIP*****", 10);
  		map.put("*****LPELVIS1*****", 10);
  		map.put("*****LPELVIS2*****", 10);
  		map.put("*****LHIPC*****", 10);
  		map.put("*****LPELVIS1C*****", 10);
  		map.put("*****LPELVIS2C*****", 10);
  		map.put("*****R_URETER*****", 10);
  		map.put("*****L_URETER*****", 10);
  		map.put("*****BLADDER*****", 10);
  		map.put("*****R_VAS_DEF*****", 10);
  		map.put("*****L_VAS_DEF*****", 10);
  		if (maleGender) {
  			map.put("*****SEMINAL_VES*****", 20);
  			map.put("*****PROSTATE*****", 20);
  			map.put("*****URETHRA*****", 20);
  			map.put("*****R_TEST*****", 20);
  			map.put("*****L_TEST*****", 20);
  			map.put("*****PENIS*****", 0);
  		} else {
  			map.put("****UTERUS*****", 20);
  			map.put("****RIGHT_OVARY*****", 20);
  			map.put("****RIGHT_OVARY2*****", 20);
  			map.put("****R_FL_TUBE*****", 20);
  			map.put("****LEFT_OVARY*****", 20);
  			map.put("****LEFT_OVARY2*****", 20);
  			map.put("****L_FL_TUBE*****", 20);
  			map.put("****VAGINA1*****", 20);
  			map.put("****VAGINA2*****", 20);
  		}
  		map.put("*****ASC_LARGE_INTEST*****", 20);
  		map.put("*****TRANS_LARGE_INTEST*****", 20);
  		map.put("*****DESC_LARGE_INTEST*****", 20);
  		map.put("*****RECTUM*****", 20);
  		map.put("*****ASC_LARGE_INTEST_AIR*****", 50);
  		map.put("*****TRANS_LARGE_INTEST_AIR*****", 50);
  		map.put("*****DESC_LARGE_INTEST_AIR*****", 50);
  		map.put("*****RECTUM_AIR*****", 50);
  		map.put("****small_intest_0****", 20);
  		map.put("****small_intest_1****", 20);
  		map.put("****small_intest_2****", 20);
  		map.put("****small_intest_3****", 20);
  		map.put("****small_intest_4****", 20);
  		map.put("****small_intest_5****", 20);
  		map.put("****small_intest_6****", 20);
  		map.put("****small_intest_7****", 20);
  		map.put("****small_intest_8****", 20);
  		map.put("****small_intest_9****", 20);
  		map.put("****small_intest_10****", 20);
  		map.put("****small_intest_11****", 20);
  		map.put("****small_intest_12****", 20);
  		map.put("****small_intest_13****", 20);
  		map.put("****small_intest_14****", 20);
  		map.put("****small_intest_15****", 20);
  		map.put("****small_intest_16****", 20);
  		map.put("****small_intest_17****", 20);
  		map.put("****small_intest_18****", 20);
  		map.put("****small_intest_19****", 20);
  		map.put("****small_intest_20****", 20);
  		map.put("****small_intest_21****", 20);
  		map.put("****small_intest_22****", 20);
  		map.put("****small_intest_23****", 20);
  		map.put("****small_intest_24****", 20);
  		map.put("****small_intest_25****", 20);
  		map.put("****small_intest_26****", 20);
  		map.put("****small_intest_27****", 20);
  		map.put("****small_intest_28****", 20);
  		map.put("****small_intest_29****", 20);
  		map.put("****small_intest_30****", 20);
  		map.put("****small_intest_31****", 20);
  		map.put("****small_intest_32****", 20);
  		map.put("****small_intest_33****", 20);
  		map.put("****small_intest_34****", 20);
  		map.put("****small_intest_35****", 20);
  		map.put("****small_intest_36****", 20);
  		map.put("****small_intest_37****", 20);
  		map.put("****small_intest_38****", 20);
  		map.put("****small_intest_39****", 20);
  		map.put("****small_intest_40****", 20);
  		map.put("****small_intest_41****", 20);
  		map.put("****small_intest_42****", 20);
  		map.put("****small_intest_air_0****", 50);
  		map.put("****small_intest_air_1****", 50);
  		map.put("****small_intest_air_2****", 50);
  		map.put("****small_intest_air_3****", 50);
  		map.put("****small_intest_air_4****", 50);
  		map.put("****small_intest_air_5****", 50);
  		map.put("****small_intest_air_6****", 50);
  		map.put("****small_intest_air_7****", 50);
  		map.put("****small_intest_air_8****", 50);
  		map.put("****small_intest_air_9****", 50);
  		map.put("****small_intest_air_10****", 50);
  		map.put("****small_intest_air_11****", 50);
  		map.put("****small_intest_air_12****", 50);
  		map.put("****small_intest_air_13****", 50);
  		map.put("****small_intest_air_14****", 50);
  		map.put("****small_intest_air_15****", 50);
  		map.put("****small_intest_air_16****", 50);
  		map.put("****small_intest_air_17****", 50);
  		map.put("****small_intest_air_18****", 50);
  		map.put("****small_intest_air_19****", 50);
  		map.put("****small_intest_air_20****", 50);
  		map.put("****small_intest_air_21****", 50);
  		map.put("****small_intest_air_22****", 50);
  		map.put("****small_intest_air_23****", 50);
  		map.put("****small_intest_air_24****", 50);
  		map.put("****small_intest_air_25****", 50);
  		map.put("****small_intest_air_26****", 50);
  		map.put("****small_intest_air_27****", 50);
  		map.put("****small_intest_air_28****", 50);
  		map.put("****small_intest_air_29****", 50);
  		map.put("****small_intest_air_30****", 50);
  		map.put("****small_intest_air_31****", 50);
  		map.put("****small_intest_air_32****", 50);
  		map.put("****small_intest_air_33****", 50);
  		map.put("****small_intest_air_34****", 50);
  		map.put("****small_intest_air_35****", 50);
  		map.put("****small_intest_air_36****", 50);
  		map.put("****small_intest_air_37****", 50);
  		map.put("****small_intest_air_38****", 50);
  		map.put("****small_intest_air_39****", 50);
  		map.put("****small_intest_air_40****", 50);
  		map.put("****small_intest_air_41****", 50);
  		map.put("****small_intest_air_42****", 50);
  		map.put("*****AORTA*****", 1050);
  		map.put("*****Artery1*****", 1150);
  		map.put("*****Artery2*****", 1150);
  		map.put("*****Artery3*****", 1150);
  		map.put("*****Artery4*****", 1150);
  		map.put("*****Artery5*****", 1150);
  		map.put("*****Artery6*****", 1150);
  		map.put("*****Artery7*****", 1150);
  		map.put("*****Artery8*****", 1150);
  		map.put("*****Artery9*****", 1150);
  		map.put("*****Artery10*****", 1150);
  		map.put("*****Artery11*****", 1150);
  		map.put("*****Artery12*****", 1150);
  		map.put("*****Artery13*****", 1150);
  		map.put("*****L_KIDNEY_ART1*****", 150);
  		map.put("*****L_KIDNEY_ART2*****", 150);
  		map.put("*****R_KIDNEY_ART1*****", 150);
  		map.put("*****R_KIDNEY_ART2*****", 150);
  		map.put("*****INFERIOR_VENA_CAVA*****", 1040);
  		map.put("*****VEIN*****", 1150);
  		map.put("*****VEIN*****", 1150);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****VEIN*****", 1100);
  		map.put("*****LIVER_VEINS*****", 100);
  		map.put("*****LIVER_VEINS*****", 100);
  		map.put("*****LIVER_VEINS*****", 100);
  		map.put("*****LIVER_VEINS*****", 100);
  		map.put("*****L_KIDNEY_VEIN*****",100);
  		map.put("*****R_KIDNEY_VEIN*****", 100);
  		map.put("*****PREAORTIC_NODE*****", 1100);
  		map.put("*****COMMON_ILLIAC_NODE1*****", 100);
  		map.put("*****COMMON_ILLIAC_NODE2*****", 100);
  		map.put("*****COMMON_ILLIAC_NODE3*****", 100);
  		map.put("*****COMMON_ILLIAC_NODE4*****", 100);
  		map.put("*****RIGHT_EXT_ILLIAC_NODE1*****", 100);
  		map.put("*****RIGHT_EXT_ILLIAC_NODE2*****", 100);
  		map.put("*****RIGHT_EXT_ILLIAC_NODE3*****", 100);
  		map.put("*****RIGHT_EXT_ILLIAC_NODE4*****", 100);
  		map.put("*****RIGHT_EXT_ILLIAC_NODE5*****", 100);
  		map.put("*****RIGHT_HYPOGASTRIC_NODE*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE2*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE3*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE4*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE5*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE6*****", 100);
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE7*****", 100);
  		map.put("*****LEFT_EXT_ILLIAC_NODE1*****", 100);
  		map.put("*****LEFT_EXT_ILLIAC_NODE2*****", 100);
  		map.put("*****LEFT_EXT_ILLIAC_NODE3*****", 100);
  		map.put("*****LEFT_EXT_ILLIAC_NODE4*****", 100);
  		map.put("*****LEFT_EXT_ILLIAC_NODE5*****", 100);
  		map.put("*****LEFT_HYPOGASTRIC_NODE*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", 100);
  		map.put("****Airway-1*********", 70);
  		map.put("*****PULMONARY_ART1*****", 1040);
  		map.put("*****PULMONARY_VEIN1*****", 1040);
  		if (renderMarrow) {
  			map.put("**RRIB1_MARROW**", 80);
  			map.put("**RRIB2_MARROW**", 80);
  			map.put("**RRIB3_MARROW**", 80);
  			map.put("**RRIB4_MARROW**", 80);
  			map.put("**RRIB5_MARROW**", 80);
  			map.put("**RRIB6_MARROW**", 80);
  			map.put("**RRIB7_MARROW**", 80);
  			map.put("**RRIB8_MARROW**", 80);
  			map.put("**RRIB9_MARROW**", 80);
  			map.put("**RRIB10_MARROW**", 80);
  			map.put("**RRIB11_MARROW**", 80);
  			map.put("**RRIB12_MARROW**", 80);
  			map.put("**LRIB1_MARROW**", 80);
  			map.put("**LRIB2_MARROW**", 80);
  			map.put("**LRIB3_MARROW**", 80);
  			map.put("**LRIB4_MARROW**", 80);
  			map.put("**LRIB5_MARROW**", 80);
  			map.put("**LRIB6_MARROW**", 80);
  			map.put("**LRIB7_MARROW**", 80);
  			map.put("**LRIB8_MARROW**", 80);
  			map.put("**LRIB9_MARROW**", 80);
  			map.put("**LRIB10_MARROW**", 80);
  			map.put("**LRIB11_MARROW**", 80);
  			map.put("**LRIB12_MARROW**", 80);
  			map.put("**BACKBONE1_MARROW**", 80);
  			map.put("**BACKBONE2_MARROW**", 80);
  			map.put("**BACKBONE3_MARROW**", 80);
  			map.put("**BACKBONE4_MARROW**", 80);
  			map.put("**BACKBONE5_MARROW**", 80);
  			map.put("**BACKBONE6_MARROW**", 80);
  			map.put("**BACKBONE7_MARROW**", 80);
  			map.put("**BACKBONE8_MARROW**", 80);
  			map.put("**BACKBONE9_MARROW**", 80);
  			map.put("**BACKBONE10_MARROW**", 80);
  			map.put("**BACKBONE11_MARROW**", 80);
  			map.put("**BACKBONE12_MARROW**", 80);
  			map.put("**BACKBONE13_MARROW**", 80);
  			map.put("**BACKBONE14_MARROW**", 80);
  			map.put("**BACKBONE15_MARROW**", 80);
  			map.put("**BACKBONE16_MARROW**", 80);
  			map.put("**BACKBONE17_MARROW**", 80);
  			map.put("**BACKBONE18_MARROW**", 80);
  			map.put("**BACKBONE19_MARROW**", 80);
  			map.put("**BACKBONE20_MARROW**", 80);
  			map.put("**BACKBONE21_MARROW**", 80);
  			map.put("**BACKBONE22_MARROW**", 80);
  			map.put("**BACKBONE23_MARROW**", 80);
  			map.put("**BACKBONE24_MARROW**", 80);
  			map.put("**BACKBONE25_MARROW**", 80);
  			map.put("**BACKBONE26_MARROW**", 80);
  			map.put("**BACKBONE27_MARROW**", 80);
  			map.put("**BACKBONE28_MARROW**", 80);
  			map.put("**BACKBONE29_MARROW**", 80);
  			map.put("**BACKBONE30_MARROW**", 80);
  			map.put("**BACKBONE31_MARROW**", 80);
  			map.put("**BACKBONE32_MARROW**", 80);
  			map.put("**BACKBONE33_MARROW**", 80);
  			map.put("**BACKBONE34_MARROW**", 80);
  			map.put("**BACKBONE35_MARROW**", 80);
  			map.put("**BACKBONE36_MARROW**", 80);
  			map.put("**BACKBONE37_MARROW**", 80);
  			map.put("**BACKBONE38_MARROW**", 80);
  			map.put("**BACKBONE39_MARROW**", 80);
  			map.put("**BACKBONE40_MARROW**", 80);
  			map.put("**BACKBONE41_MARROW**", 80);
  			map.put("**BACKBONE42_MARROW**", 80);
  			map.put("**BACKBONE43_MARROW**", 80);
  			map.put("**BACKBONE44_MARROW**", 80);
  			map.put("**BACKBONE45_MARROW**", 80);
  			map.put("**BACKBONE46_MARROW**", 80);
  			map.put("**BACKBONE47_MARROW**", 80);
  			map.put("**BACKBONE48_MARROW**", 80);
  			map.put("**BACKBONE49_MARROW**", 80);
  			map.put("**BACKBONE50_MARROW**", 80);
  			map.put("**BACKBONE51_MARROW**", 80);
  			map.put("**BACKBONE52_MARROW**", 80);
  			map.put("**BACKBONE53_MARROW**", 80);
  			map.put("**BACKBONE54_MARROW**", 80);
  			map.put("**BACKBONE55_MARROW**", 80);
  			map.put("**BACKBONE56_MARROW**", 80);
  			map.put("**BACKBONE57_MARROW**", 80);
  			map.put("**BACKBONE58_MARROW**", 80);
  			map.put("**STERN_MARROW**", 80);
  			map.put("**RSCAP_MARROW**", 80);
  			map.put("**RCOLLAR_MARROW**", 80);
  			map.put("**LSCAP_MARROW**", 80);
  			map.put("**LCOLLAR_MARROW**", 80);
  			if (renderArmMarrow){
  				map.put("**RHUMERUS_MARROW**", 80);
  				map.put("**R_RADIUS_MARROW**", 80);
  				map.put("**R_ULNA_MARROW**", 80);
  				map.put("**LHUMERUS_MARROW**", 80);
  				map.put("**L_RADIUS_MARROW**", 80);
  				map.put("**L_ULNA_MARROW**", 80);
  				map.put("**R_HAND_MARROW0", 80);
  				map.put("**R_HAND_MARROW1", 80);
  				map.put("**R_HAND_MARROW2", 80);
  				map.put("**R_HAND_MARROW3", 80);
  				map.put("**R_HAND_MARROW4", 80);
  				map.put("**R_HAND_MARROW5", 80);
  				map.put("**R_HAND_MARROW6", 80);
  				map.put("**R_HAND_MARROW7", 80);
  				map.put("**R_HAND_MARROW8", 80);
  				map.put("**R_HAND_MARROW9", 80);
  				map.put("**R_HAND_MARROW10", 80);
  				map.put("**R_HAND_MARROW11", 80);
  				map.put("**R_HAND_MARROW12", 80);
  				map.put("**R_HAND_MARROW13", 80);
  				map.put("**R_HAND_MARROW14", 80);
  				map.put("**R_HAND_MARROW15", 80);
  				map.put("**R_HAND_MARROW16", 80);
  				map.put("**R_HAND_MARROW17", 80);
  				map.put("**R_HAND_MARROW18", 80);
  				map.put("**R_HAND_MARROW19", 80);
  				map.put("**R_HAND_MARROW20", 80);
  				map.put("**R_HAND_MARROW21", 80);
  				map.put("**R_HAND_MARROW22", 80);
  				map.put("**R_HAND_MARROW23", 80);
  				map.put("**R_HAND_MARROW24", 80);
  				map.put("**R_HAND_MARROW25", 80);
  				map.put("**R_HAND_MARROW26", 80);
  				map.put("**L_HAND_MARROW0", 80);
  				map.put("**L_HAND_MARROW1", 80);
  				map.put("**L_HAND_MARROW2", 80);
  				map.put("**L_HAND_MARROW3", 80);
  				map.put("**L_HAND_MARROW4", 80);
  				map.put("**L_HAND_MARROW5", 80);
  				map.put("**L_HAND_MARROW6", 80);
  				map.put("**L_HAND_MARROW7", 80);
  				map.put("**L_HAND_MARROW8", 80);
  				map.put("**L_HAND_MARROW9", 80);
  				map.put("**L_HAND_MARROW10", 80);
  				map.put("**L_HAND_MARROW11", 80);
  				map.put("**L_HAND_MARROW12", 80);
  				map.put("**L_HAND_MARROW13", 80);
  				map.put("**L_HAND_MARROW14", 80);
  				map.put("**L_HAND_MARROW15", 80);
  				map.put("**L_HAND_MARROW16", 80);
  				map.put("**L_HAND_MARROW17", 80);
  				map.put("**L_HAND_MARROW18", 80);
  				map.put("**L_HAND_MARROW19", 80);
  				map.put("**L_HAND_MARROW20", 80);
  				map.put("**L_HAND_MARROW21", 80);
  				map.put("**L_HAND_MARROW22", 80);
  				map.put("**L_HAND_MARROW23", 80);
  				map.put("**L_HAND_MARROW24", 80);
  				map.put("**L_HAND_MARROW25", 80);
  				map.put("**L_HAND_MARROW26", 80);
  			}
  			map.put("**R_FOOT_MARROW0", 80);
  			map.put("**R_FOOT_MARROW1", 80);
  			map.put("**R_FOOT_MARROW2", 80);
  			map.put("**R_FOOT_MARROW3", 80);
  			map.put("**R_FOOT_MARROW4", 80);
  			map.put("**R_FOOT_MARROW5", 80);
  			map.put("**R_FOOT_MARROW6", 80);
  			map.put("**R_FOOT_MARROW7", 80);
  			map.put("**R_FOOT_MARROW8", 80);
  			map.put("**R_FOOT_MARROW9", 80);
  			map.put("**R_FOOT_MARROW10", 80);
  			map.put("**R_FOOT_MARROW11", 80);
  			map.put("**R_FOOT_MARROW12", 80);
  			map.put("**R_FOOT_MARROW13", 80);
  			map.put("**R_FOOT_MARROW14", 80);
  			map.put("**R_FOOT_MARROW15", 80);
  			map.put("**R_FOOT_MARROW16", 80);
  			map.put("**R_FOOT_MARROW17", 80);
  			map.put("**R_FOOT_MARROW18", 80);
  			map.put("**R_FOOT_MARROW19", 80);
  			map.put("**R_FOOT_MARROW20", 80);
  			map.put("**R_FOOT_MARROW21", 80);
  			map.put("**R_FOOT_MARROW22", 80);
  			map.put("**R_FOOT_MARROW23", 80);
  			map.put("**R_FOOT_MARROW24", 80);
  			map.put("**R_FOOT_MARROW25", 80);
  			map.put("**L_FOOT_MARROW0", 80);
  			map.put("**L_FOOT_MARROW1", 80);
  			map.put("**L_FOOT_MARROW2", 80);
  			map.put("**L_FOOT_MARROW3", 80);
  			map.put("**L_FOOT_MARROW4", 80);
  			map.put("**L_FOOT_MARROW5", 80);
  			map.put("**L_FOOT_MARROW6", 80);
  			map.put("**L_FOOT_MARROW7", 80);
  			map.put("**L_FOOT_MARROW8", 80);
  			map.put("**L_FOOT_MARROW9", 80);
  			map.put("**L_FOOT_MARROW10", 80);
  			map.put("**L_FOOT_MARROW11", 80);
  			map.put("**L_FOOT_MARROW12", 80);
  			map.put("**L_FOOT_MARROW13", 80);
  			map.put("**L_FOOT_MARROW14", 80);
  			map.put("**L_FOOT_MARROW15", 80);
  			map.put("**L_FOOT_MARROW16", 80);
  			map.put("**L_FOOT_MARROW17", 80);
  			map.put("**L_FOOT_MARROW18", 80);
  			map.put("**L_FOOT_MARROW19", 80);
  			map.put("**L_FOOT_MARROW20", 80);
  			map.put("**L_FOOT_MARROW21", 80);
  			map.put("**L_FOOT_MARROW22", 80);
  			map.put("**L_FOOT_MARROW23", 80);
  			map.put("**L_FOOT_MARROW24", 80);
  			map.put("**L_FOOT_MARROW25", 80);
  			map.put("**R_FEMUR_MARROW**", 80);
  			map.put("**R_TIBIA_MARROW**", 80);
  			map.put("**R_FIBULA_MARROW**", 80);
  			map.put("**R_PATELLA_MARROW**", 80);
  			map.put("**L_FEMUR_MARROW**", 80);
  			map.put("**L_TIBIA_MARROW**", 80);
  			map.put("**L_FIBULA_MARROW**", 80);
  			map.put("**L_PATELLA_MARROW**", 80);
  		}
  		// heart
  		map.put("****Right-atria-myo*********", 1002);
  		map.put("****Right-ventricle-myo*********", 1002);
  		map.put("****Right-atria-chamber****", 1049);
  		map.put("****Right-ventricle-chamber****", 1055);
  		map.put("****Left-atria-myo**********", 1002);
  		map.put("****Left-ventricle-myo**********", 1001);
  		map.put("****Left-atria-chamber*****", 1006);
  		map.put("****Left-ventricle-chamber1*****", 1100);
  		map.put("****Left-ventricle-chamber2*****", 1101);
  
  		map.put("****Left-ventricle-chamber3*****", 1102);
  
  		map.put("****Left-ventricle-chamber4*****", 1104);
  		
  		map.put("****Heartwall*********", 1000);
  		//the coronaries have a much higher priority than the chambers
  		map.put("/***RCA1***/", 1112);
  		map.put("/***RCA2***/", 1112);
  		map.put("/***LCA1***/", 1112);
  		map.put("/***LCA2***/", 1112);
  		map.put("/***LCA3***/", 1112);
  		map.put("/***LCA4***/", 1112);
  		map.put("/***LCA5***/", 1112);
  		map.put("/***LCA6***/", 1112);
  		map.put("/***LCA7***/", 1112);
  		map.put("/***LCA8***/", 1112);
  		map.put("/***LCA9***/", 1112);
  		map.put("/***LCA10***/", 1112);
  		map.put("Heart Lesion", 1113);
  		map.put("Heart Catheter", 1200);
  		return map;
  	}
  
  	/**
  	 * The lookup table for materials according to the spline names.
  	 * @return the lut
  	 */
  	public static HashMap <String, String> getSplineNameMaterialNameLUT(){
  		HashMap<String, String> map = new HashMap<String, String>();
  		map.put("*****BODY******", "Body (water)");
  		map.put("**RightArm", "Body (water)");
  		map.put("**LeftArm", "Body (water)");
  		map.put("**RightLeg", "Body (water)");
  		map.put("**LeftLeg", "Body (water)");
  		map.put("*****RLUNG******", "Lung");
  		map.put("*****LLUNG******", "Lung");
  		map.put("*****LIVER******", "Liver");
  		map.put("****Gall-Bladder****", "Intestine");
  		map.put("****Left-diaphragm****", "Muscle");
  		map.put("*****KIDNEY1******", "Kidney");
  		map.put("*****KIDNEY2******", "Kidney");
  		map.put("*****STOMACH******", "Intestine");
  		map.put("*****SPLEEN******", "Spleen");
  		map.put("*****STERNUM******", "Rib Bone");
  		map.put("*****thor_cartilage1****", "Cartilage");
  		map.put("*****thor_cartilage2****", "Cartilage");
  		map.put("*****thor_cartilage3****", "Cartilage");
  		map.put("*****thor_cartilage4****", "Cartilage");
  		map.put("*****thor_cartilage5****", "Cartilage");
  		map.put("*****thor_cartilage6****", "Cartilage");
  		map.put("*****thor_cartilage7****", "Cartilage");
  		map.put("*****thor_cartilage8****", "Cartilage");
  		map.put("*****thor_cartilage9****", "Cartilage");
  		map.put("*****thor_cartilage10****", "Cartilage");
  		map.put("*****thor_cartilage11****", "Cartilage");
  		map.put("*****thor_cartilage12****", "Cartilage");
  		map.put("*****lumbar_cartilage1****", "Cartilage");
  		map.put("*****lumbar_cartilage2****", "Cartilage");
  		map.put("*****lumbar_cartilage3****", "Cartilage");
  		map.put("*****lumbar_cartilage4****", "Cartilage");
  		map.put("*****lumbar_cartilage5****", "Cartilage");
  		map.put("*****lumbar_cartilage6****", "Cartilage");
  		map.put("****cerv_vert1a****", "Spine Bone");
  		map.put("****cerv_vert1b****", "Spine Bone");
  		map.put("****cerv_vert1c****", "Spine Bone");
  		map.put("****cerv_vert1d****", "Spine Bone");
  		map.put("****cerv_vert1e****", "Spine Bone");
  		map.put("****cerv_vert1f****", "Spine Bone");
  		map.put("*****cerv_vert2a****", "Spine Bone");
  		map.put("*****cerv_vert2b****", "Spine Bone");
  		map.put("*****cerv_vert2c****", "Spine Bone");
  		map.put("*****cerv_vert3a****", "Spine Bone");
  		map.put("*****cerv_vert3b****", "Spine Bone");
  		map.put("*****cerv_vert3c****", "Spine Bone");
  		map.put("*****cerv_vert4a****", "Spine Bone");
  		map.put("*****cerv_vert4b****", "Spine Bone");
  		map.put("*****cerv_vert4c****", "Spine Bone");
  		map.put("*****cerv_vert5a****", "Spine Bone");
  		map.put("*****cerv_vert5b****", "Spine Bone");
  		map.put("*****cerv_vert5c****", "Spine Bone");
  		map.put("*****cerv_vert6a****", "Spine Bone");
  		map.put("*****cerv_vert6b****", "Spine Bone");
  		map.put("*****cerv_vert6c****", "Spine Bone");
  		map.put("*****cerv_vert7a****", "Spine Bone");
  		map.put("*****cerv_vert7b****", "Spine Bone");
  		map.put("*****cerv_vert7c****", "Spine Bone");
  		map.put("*****thor_vert1a****", "Spine Bone");
  		map.put("*****thor_vert1b****", "Spine Bone");
  		map.put("*****thor_vert2a****", "Spine Bone");
  		map.put("*****thor_vert2b****", "Spine Bone");
  		map.put("*****thor_vert3a****", "Spine Bone");
  		map.put("*****thor_vert3b****", "Spine Bone");
  		map.put("*****thor_vert4a****", "Spine Bone");
  		map.put("*****thor_vert4b****", "Spine Bone");
  		map.put("*****thor_vert5a****", "Spine Bone");
  		map.put("*****thor_vert5b****", "Spine Bone");
  		map.put("*****thor_vert6a****", "Spine Bone");
  		map.put("*****thor_vert6b****", "Spine Bone");
  		map.put("*****thor_vert7a****", "Spine Bone");
  		map.put("*****thor_vert7b****", "Spine Bone");
  		map.put("*****thor_vert8a****", "Spine Bone");
  		map.put("*****thor_vert8b****", "Spine Bone");
  		map.put("*****thor_vert9a****", "Spine Bone");
  		map.put("*****thor_vert9b****", "Spine Bone");
  		map.put("*****thor_vert10a****", "Spine Bone");
  		map.put("*****thor_vert10b****", "Spine Bone");
  		map.put("*****thor_vert11a****", "Spine Bone");
  		map.put("*****thor_vert11b****", "Spine Bone");
  		map.put("*****thor_vert12a****", "Spine Bone");
  		map.put("*****thor_vert12b****", "Spine Bone");
  		map.put("*****lum_vert1a****", "Spine Bone");
  		map.put("*****lum_vert1b****", "Spine Bone");
  		map.put("*****lum_vert2a****", "Spine Bone");
  		map.put("*****lum_vert2b****", "Spine Bone");
  		map.put("*****lum_vert3a****", "Spine Bone");
  		map.put("*****lum_vert3b****", "Spine Bone");
  		map.put("*****lum_vert4a****", "Spine Bone");
  		map.put("*****lum_vert4b****", "Spine Bone");
  		map.put("*****lum_vert5a****", "Spine Bone");
  		map.put("*****lum_vert5b****", "Spine Bone");
  		map.put("*****sacrum****", "Spine Bone");
  		map.put("*****sacrum_cart****", "Cartilage");
  		map.put("***RRIB1-Cartilage", "Cartilage");
  		map.put("***RRIB2-Cartilage", "Cartilage");
  		map.put("***RRIB3-Cartilage", "Cartilage");
  		map.put("***RRIB4-Cartilage", "Cartilage");
  		map.put("***RRIB5-Cartilage", "Cartilage");
  		map.put("***RRIB6-Cartilage", "Cartilage");
  		map.put("***RRIB7-Cartilage", "Cartilage");
  		map.put("***RRIB8-Cartilage", "Cartilage");
  		map.put("***RRIB9-Cartilage", "Cartilage");
  		map.put("***Right-Sternum-Cartilage", "Cartilage");
  		map.put("***RRIB1", "Rib Bone");
  		map.put("***RRIB2", "Rib Bone");
  		map.put("***RRIB3", "Rib Bone");
  		map.put("***RRIB4", "Rib Bone");
  		map.put("***RRIB5", "Rib Bone");
  		map.put("***RRIB6", "Rib Bone");
  		map.put("***RRIB7", "Rib Bone");
  		map.put("***RRIB8", "Rib Bone");
  		map.put("***RRIB9", "Rib Bone");
  		map.put("***RRIB10", "Rib Bone");
  		map.put("***RRIB11", "Rib Bone");
  		map.put("***RRIB12", "Rib Bone");
  		map.put("***LRIB1-Cartilage", "Cartilage");
  		map.put("***LRIB2-Cartilage", "Cartilage");
  		map.put("***LRIB3-Cartilage", "Cartilage");
  		map.put("***LRIB4-Cartilage", "Cartilage");
  		map.put("***LRIB5-Cartilage", "Cartilage");
  		map.put("***LRIB6-Cartilage", "Cartilage");
  		map.put("***LRIB7-Cartilage", "Cartilage");
  		map.put("***LRIB8-Cartilage", "Cartilage");
  		map.put("***LRIB9-Cartilage", "Cartilage");
  		map.put("***Left-Sternum-Cartilage", "Cartilage");
  		map.put("***LRIB1", "Rib Bone");
  		map.put("***LRIB2", "Rib Bone");
  		map.put("***LRIB3", "Rib Bone");
  		map.put("***LRIB4", "Rib Bone");
  		map.put("***LRIB5", "Rib Bone");
  		map.put("***LRIB6", "Rib Bone");
  		map.put("***LRIB7", "Rib Bone");
  		map.put("***LRIB8", "Rib Bone");
  		map.put("***LRIB9", "Rib Bone");
  		map.put("***LRIB10", "Rib Bone");
  		map.put("***LRIB11", "Rib Bone");
  		map.put("***LRIB12", "Rib Bone");
  		// bones right arm
  		map.put("**RightHumerus", "Bone");
  		map.put("**RightRadius", "Bone");
  		map.put("**RightUlna", "Bone");
  		map.put("**RightCapitate", "Bone");
  		map.put("**RightHamate", "Bone");
  		map.put("**RightLunate", "Bone");
  		map.put("**RightMetacarpal", "Bone");
  		map.put("**RightMetacarpal", "Bone");
  		map.put("**RightMetacarpal", "Bone");
  		map.put("**RightMetacarpal", "Bone");
  		map.put("**RightMetacarpal", "Bone");
  		map.put("**RightPisiform", "Bone");
  		map.put("**RightScaphoid", "Bone");
  		map.put("**RightTrapezium", "Bone");
  		map.put("**RightTriquetrum", "Bone");
  		map.put("**RightTrapezoid", "Bone");
  		map.put("**RightFinger1", "Bone");
  		map.put("**RightFinger2", "Bone");
  		map.put("**RightFinger3", "Bone");
  		map.put("**RightFinger4", "Bone");
  		map.put("**RightFinger5", "Bone");
  		map.put("**RightFinger6", "Bone");
  		map.put("**RightFinger7", "Bone");
  		map.put("**RightFinger8", "Bone");
  		map.put("**RightFinger9", "Bone");
  		map.put("**RightFinger10", "Bone");
  		map.put("**RightFinger11", "Bone");
  		map.put("**RightFinger12", "Bone");
  		map.put("**RightFinger13", "Bone");
  		map.put("**RightFinger14", "Bone");
  		// bones left arm
  		map.put("**LeftHumerus", "Bone");
  		map.put("**LeftRadius", "Bone");
  		map.put("**LeftUlna", "Bone");
  		map.put("**LeftCapitate", "Bone");
  		map.put("**LeftHamate", "Bone");
  		map.put("**LeftLunate", "Bone");
  		map.put("**LeftMetacarpal", "Bone");
  		map.put("**LeftMetacarpal", "Bone");
  		map.put("**LeftMetacarpal", "Bone");
  		map.put("**LeftMetacarpal", "Bone");
  		map.put("**LeftMetacarpal", "Bone");
  		map.put("**LeftPisiform", "Bone");
  		map.put("**LeftScaphoid", "Bone");
  		map.put("**LeftTrapezium", "Bone");
  		map.put("**LeftTriquetrum", "Bone");
  		map.put("**LeftTrapezoid", "Bone");
  		map.put("**LeftFinger1", "Bone");
  		map.put("**LeftFinger2", "Bone");
  		map.put("**LeftFinger3", "Bone");
  		map.put("**LeftFinger4", "Bone");
  		map.put("**LeftFinger5", "Bone");
  		map.put("**LeftFinger6", "Bone");
  		map.put("**LeftFinger7", "Bone");
  		map.put("**LeftFinger8", "Bone");
  		map.put("**LeftFinger9", "Bone");
  		map.put("**LeftFinger10", "Bone");
  		map.put("**LeftFinger11", "Bone");
  		map.put("**LeftFinger12", "Bone");
  		map.put("**LeftFinger13", "Bone");
  		map.put("**LeftFinger14", "Bone");
  		map.put("**RightFemur", "Bone");
  		map.put("**RightTibia", "Bone");
  		map.put("**RightFibula", "Bone");
  		map.put("**RightPatella", "Bone");
  		map.put("**RightTalus", "Bone");
  		map.put("**RightCalcaneus", "Bone");
  		map.put("**RightCuboid", "Bone");
  		map.put("**Right_inter_cuneiform", "Bone");
  		map.put("**Right_lat_cuneiform", "Bone");
  		map.put("**Right_med_cuneiform", "Bone");
  		map.put("**RightTarsal", "Bone");
  		map.put("**RightTarsal", "Bone");
  		map.put("**RightTarsal", "Bone");
  		map.put("**RightTarsal", "Bone");
  		map.put("**RightTarsal", "Bone");
  		map.put("**RightNavicular", "Bone");
  		map.put("RightToe1", "Bone");
  		map.put("RightToe2", "Bone");
  		map.put("RightToe3", "Bone");
  		map.put("RightToe4", "Bone");
  		map.put("RightToe5", "Bone");
  		map.put("RightToe6", "Bone");
  		map.put("RightToe7", "Bone");
  		map.put("RightToe8", "Bone");
  		map.put("RightToe9", "Bone");
  		map.put("RightToe10", "Bone");
  		map.put("RightToe11", "Bone");
  		map.put("RightToe12", "Bone");
  		map.put("RightToe13", "Bone");
  		map.put("RightToe14", "Bone");
  		map.put("*LeftFemur", "Bone");
  		map.put("**LeftTibia", "Bone");
  		map.put("**LeftFibula", "Bone");
  		map.put("**LeftPatella", "Bone");
  		map.put("**LeftTalus", "Bone");
  		map.put("**LeftCalcaneus", "Bone");
  		map.put("**LeftCuboid", "Bone");
  		map.put("**Left_inter_cuneiform", "Bone");
  		map.put("**Left_lat_cuneiform", "Bone");
  		map.put("**Left_med_cuneiform", "Bone");
  		map.put("**LeftTarsal", "Bone");
  		map.put("**LeftTarsal", "Bone");
  		map.put("**LeftTarsal", "Bone");
  		map.put("**LeftTarsal", "Bone");
  		map.put("**LeftTarsal", "Bone");
  		map.put("**LeftNavicular", "Bone");
  		map.put("LeftToe1", "Bone");
  		map.put("LeftToe2", "Bone");
  		map.put("LeftToe3", "Bone");
  		map.put("LeftToe4", "Bone");
  		map.put("LeftToe5", "Bone");
  		map.put("LeftToe6", "Bone");
  		map.put("LeftToe7", "Bone");
  		map.put("LeftToe8", "Bone");
  		map.put("LeftToe9", "Bone");
  		map.put("LeftToe10", "Bone");
  		map.put("LeftToe11", "Bone");
  		map.put("LeftToe12", "Bone");
  		map.put("LeftToe13", "Bone");
  		map.put("LeftToe14", "Bone");
  		map.put("***RIGHT_COLLARBONE***", "Bone");
  		map.put("***RIGHT_SCAPULA***", "Bone");
  		map.put("****LEFT_COLLARBONE****", "Bone");
  		map.put("****LEFT_SCAPULA****", "Bone");
  		map.put("****skull_face1****", "Skull Bone");
  		map.put("****skull_face2****", "Skull Bone");
  		map.put("****skull1****", "Skull Bone");
  		map.put("****skull2****", "Skull Bone");
  		map.put("****skull3****", "Skull Bone");
  		map.put("****skull4****", "Skull Bone");
  		map.put("****skull5****", "Skull Bone");
  		map.put("****jaw****", "Skull Bone");
  		map.put("****nasal_passage1****", "Skull Bone");
  		map.put("****nasal_passage2****", "Skull Bone");
  		map.put("****brain****", "Brain");
  		map.put("****cerebellum****", "Brain");
  		map.put("****brain_stem****", "Brain");
  		if (!maleGender){
  			if (!supine) {
  				map.put("****RBREAST-Prone*****", "Body (water)");
  				map.put("****LBREAST-Prone*****", "Body (water)"); 
  			} else {
  				map.put("****RBREAST-Supine*****", "Body (water)");
  				map.put("****LBREAST-Supine*****", "Body (water)");
  			}
  		}
  		map.put("*****RHIP*****", "Bone");
  		map.put("*****RPELVIS1*****", "Bone");
  		map.put("*****RPELVIS2*****", "Bone");
  		map.put("*****RHIPC*****", "Bone");
  		map.put("*****RPELVIS1C*****", "Bone");
  		map.put("*****RPELVIS2C*****", "Bone");
  		map.put("*****LHIP*****", "Bone");
  		map.put("*****LPELVIS1*****", "Bone");
  		map.put("*****LPELVIS2*****", "Bone");
  		map.put("*****LHIPC*****", "Bone");
  		map.put("*****LPELVIS1C*****", "Bone");
  		map.put("*****LPELVIS2C*****", "Bone");
  		map.put("*****R_URETER*****", "Intestine");
  		map.put("*****L_URETER*****", "Intestine");
  		map.put("*****BLADDER*****", "Intestine");
  		map.put("*****R_VAS_DEF*****", "Intestine");
  		map.put("*****L_VAS_DEF*****", "Intestine");
  		if (maleGender) {
  			map.put("*****SEMINAL_VES*****", "Intestine");
  			map.put("*****PROSTATE*****", "Intestine");
  			map.put("*****URETHRA*****", "Intestine");
  			map.put("*****R_TEST*****", "Intestine");
  			map.put("*****L_TEST*****", "Body (water)");
  			map.put("*****PENIS*****", "Body (water)");
  		} else {
  			map.put("****UTERUS*****", "Lymph");
  			map.put("****RIGHT_OVARY*****", "Lymph");
  			map.put("****RIGHT_OVARY2*****", "Lymph");
  			map.put("****R_FL_TUBE*****", "Lymph");
  			map.put("****LEFT_OVARY*****", "Lymph");
  			map.put("****LEFT_OVARY2*****", "Lymph");
  			map.put("****L_FL_TUBE*****", "Lymph");
  			map.put("****VAGINA1*****", "Body (water)");
  			map.put("****VAGINA2*****", "Body (water)");
  		}
  		map.put("*****ASC_LARGE_INTEST*****", "Intestine");
  		map.put("*****TRANS_LARGE_INTEST*****", "Intestine");
  		map.put("*****DESC_LARGE_INTEST*****", "Intestine");
  		map.put("*****RECTUM*****", "Body (water)");
  		map.put("*****ASC_LARGE_INTEST_AIR*****", "Air");
  		map.put("*****TRANS_LARGE_INTEST_AIR*****", "Air");
  		map.put("*****DESC_LARGE_INTEST_AIR*****", "Air");
  		map.put("*****RECTUM_AIR*****", "Air");
  		map.put("****small_intest_0****", "Intestine");
  		map.put("****small_intest_1****", "Intestine");
  		map.put("****small_intest_2****", "Intestine");
  		map.put("****small_intest_3****", "Intestine");
  		map.put("****small_intest_4****", "Intestine");
  		map.put("****small_intest_5****", "Intestine");
  		map.put("****small_intest_6****", "Intestine");
  		map.put("****small_intest_7****", "Intestine");
  		map.put("****small_intest_8****", "Intestine");
  		map.put("****small_intest_9****", "Intestine");
  		map.put("****small_intest_10****", "Intestine");
  		map.put("****small_intest_11****", "Intestine");
  		map.put("****small_intest_12****", "Intestine");
  		map.put("****small_intest_13****", "Intestine");
  		map.put("****small_intest_14****", "Intestine");
  		map.put("****small_intest_15****", "Intestine");
  		map.put("****small_intest_16****", "Intestine");
  		map.put("****small_intest_17****", "Intestine");
  		map.put("****small_intest_18****", "Intestine");
  		map.put("****small_intest_19****", "Intestine");
  		map.put("****small_intest_20****", "Intestine");
  		map.put("****small_intest_21****", "Intestine");
  		map.put("****small_intest_22****", "Intestine");
  		map.put("****small_intest_23****", "Intestine");
  		map.put("****small_intest_24****", "Intestine");
  		map.put("****small_intest_25****", "Intestine");
  		map.put("****small_intest_26****", "Intestine");
  		map.put("****small_intest_27****", "Intestine");
  		map.put("****small_intest_28****", "Intestine");
  		map.put("****small_intest_29****", "Intestine");
  		map.put("****small_intest_30****", "Intestine");
  		map.put("****small_intest_31****", "Intestine");
  		map.put("****small_intest_32****", "Intestine");
  		map.put("****small_intest_33****", "Intestine");
  		map.put("****small_intest_34****", "Intestine");
  		map.put("****small_intest_35****", "Intestine");
  		map.put("****small_intest_36****", "Intestine");
  		map.put("****small_intest_37****", "Intestine");
  		map.put("****small_intest_38****", "Intestine");
  		map.put("****small_intest_39****", "Intestine");
  		map.put("****small_intest_40****", "Intestine");
  		map.put("****small_intest_41****", "Intestine");
  		map.put("****small_intest_42****", "Intestine");
  		map.put("****small_intest_air_0****", "Air");
  		map.put("****small_intest_air_1****", "Air");
  		map.put("****small_intest_air_2****", "Air");
  		map.put("****small_intest_air_3****", "Air");
  		map.put("****small_intest_air_4****", "Air");
  		map.put("****small_intest_air_5****", "Air");
  		map.put("****small_intest_air_6****", "Air");
  		map.put("****small_intest_air_7****", "Air");
  		map.put("****small_intest_air_8****", "Air");
  		map.put("****small_intest_air_9****", "Air");
  		map.put("****small_intest_air_10****", "Air");
  		map.put("****small_intest_air_11****", "Air");
  		map.put("****small_intest_air_12****", "Air");
  		map.put("****small_intest_air_13****", "Air");
  		map.put("****small_intest_air_14****", "Air");
  		map.put("****small_intest_air_15****", "Air");
  		map.put("****small_intest_air_16****", "Air");
  		map.put("****small_intest_air_17****", "Air");
  		map.put("****small_intest_air_18****", "Air");
  		map.put("****small_intest_air_19****", "Air");
  		map.put("****small_intest_air_20****", "Air");
  		map.put("****small_intest_air_21****", "Air");
  		map.put("****small_intest_air_22****", "Air");
  		map.put("****small_intest_air_23****", "Air");
  		map.put("****small_intest_air_24****", "Air");
  		map.put("****small_intest_air_25****", "Air");
  		map.put("****small_intest_air_26****", "Air");
  		map.put("****small_intest_air_27****", "Air");
  		map.put("****small_intest_air_28****", "Air");
  		map.put("****small_intest_air_29****", "Air");
  		map.put("****small_intest_air_30****", "Air");
  		map.put("****small_intest_air_31****", "Air");
  		map.put("****small_intest_air_32****", "Air");
  		map.put("****small_intest_air_33****", "Air");
  		map.put("****small_intest_air_34****", "Air");
  		map.put("****small_intest_air_35****", "Air");
  		map.put("****small_intest_air_36****", "Air");
  		map.put("****small_intest_air_37****", "Air");
  		map.put("****small_intest_air_38****", "Air");
  		map.put("****small_intest_air_39****", "Air");
  		map.put("****small_intest_air_40****", "Air");
  		map.put("****small_intest_air_41****", "Air");
  		map.put("****small_intest_air_42****", "Air");
  		map.put("*****AORTA*****", "Blood (Aorta)");
  		map.put("*****Artery1*****", "Blood Artery");
  		map.put("*****Artery2*****", "Blood Artery");
  		map.put("*****Artery3*****", "Blood Artery");
  		map.put("*****Artery4*****", "Blood Artery");
  		map.put("*****Artery5*****", "Blood Artery");
  		map.put("*****Artery6*****", "Blood Artery");
  		map.put("*****Artery7*****", "Blood Artery");
  		map.put("*****Artery8*****", "Blood Artery");
  		map.put("*****Artery9*****", "Blood Artery");
  		map.put("*****Artery10*****", "Blood Artery");
  		map.put("*****Artery11*****", "Blood Artery");
  		map.put("*****Artery12*****", "Blood Artery");
  		map.put("*****Artery13*****", "Blood Artery");
  		map.put("*****L_KIDNEY_ART1*****", "Blood Kid Artery");
  		map.put("*****L_KIDNEY_ART2*****", "Blood Kid Artery");
  		map.put("*****R_KIDNEY_ART1*****", "Blood Kid Artery");
  		map.put("*****R_KIDNEY_ART2*****", "Blood Kid Artery");
  		map.put("*****INFERIOR_VENA_CAVA*****", "Blood Vena Cava");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****VEIN*****", "Blood Vein");
  		map.put("*****LIVER_VEINS*****", "Blood Liver Vein");
  		map.put("*****LIVER_VEINS*****", "Blood Liver Vein");
  		map.put("*****LIVER_VEINS*****", "Blood Liver Vein");
  		map.put("*****LIVER_VEINS*****", "Blood Liver Vein");
  		map.put("*****L_KIDNEY_VEIN*****","Blood Kidney Vein");
  		map.put("*****R_KIDNEY_VEIN*****", "Blood Kidney Vein");
  		map.put("*****PREAORTIC_NODE*****", "Lymph");
  		map.put("*****COMMON_ILLIAC_NODE1*****", "Lymph");
  		map.put("*****COMMON_ILLIAC_NODE2*****", "Lymph");
  		map.put("*****COMMON_ILLIAC_NODE3*****", "Lymph");
  		map.put("*****COMMON_ILLIAC_NODE4*****", "Lymph");
  		map.put("*****RIGHT_EXT_ILLIAC_NODE1*****", "Lymph");
  		map.put("*****RIGHT_EXT_ILLIAC_NODE2*****", "Lymph");
  		map.put("*****RIGHT_EXT_ILLIAC_NODE3*****", "Lymph");
  		map.put("*****RIGHT_EXT_ILLIAC_NODE4*****", "Lymph");
  		map.put("*****RIGHT_EXT_ILLIAC_NODE5*****", "Lymph");
  		map.put("*****RIGHT_HYPOGASTRIC_NODE*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE2*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE3*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE4*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE5*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE6*****", "Lymph");
  		map.put("*****RIGHT_SUPERF_SUBINGUINAL_NODE7*****", "Lymph");
  		map.put("*****LEFT_EXT_ILLIAC_NODE1*****", "Lymph");
  		map.put("*****LEFT_EXT_ILLIAC_NODE2*****", "Lymph");
  		map.put("*****LEFT_EXT_ILLIAC_NODE3*****", "Lymph");
  		map.put("*****LEFT_EXT_ILLIAC_NODE4*****", "Lymph");
  		map.put("*****LEFT_EXT_ILLIAC_NODE5*****", "Lymph");
  		map.put("*****LEFT_HYPOGASTRIC_NODE*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("*****LEFT_SUPERF_SUBINGUINAL_NODE1*****", "Lymph");
  		map.put("****Airway-1*********", "Air");
  		map.put("*****PULMONARY_ART1*****", "Blood Pul Artery");
  		map.put("*****PULMONARY_VEIN1*****", "Blood Pul Vein");
  		if (renderMarrow) {
  			map.put("**RRIB1_MARROW**", "Bone Marrow");
  			map.put("**RRIB2_MARROW**", "Bone Marrow");
  			map.put("**RRIB3_MARROW**", "Bone Marrow");
  			map.put("**RRIB4_MARROW**", "Bone Marrow");
  			map.put("**RRIB5_MARROW**", "Bone Marrow");
  			map.put("**RRIB6_MARROW**", "Bone Marrow");
  			map.put("**RRIB7_MARROW**", "Bone Marrow");
  			map.put("**RRIB8_MARROW**", "Bone Marrow");
  			map.put("**RRIB9_MARROW**", "Bone Marrow");
  			map.put("**RRIB10_MARROW**", "Bone Marrow");
  			map.put("**RRIB11_MARROW**", "Bone Marrow");
  			map.put("**RRIB12_MARROW**", "Bone Marrow");
  			map.put("**LRIB1_MARROW**", "Bone Marrow");
  			map.put("**LRIB2_MARROW**", "Bone Marrow");
  			map.put("**LRIB3_MARROW**", "Bone Marrow");
  			map.put("**LRIB4_MARROW**", "Bone Marrow");
  			map.put("**LRIB5_MARROW**", "Bone Marrow");
  			map.put("**LRIB6_MARROW**", "Bone Marrow");
  			map.put("**LRIB7_MARROW**", "Bone Marrow");
  			map.put("**LRIB8_MARROW**", "Bone Marrow");
  			map.put("**LRIB9_MARROW**", "Bone Marrow");
  			map.put("**LRIB10_MARROW**", "Bone Marrow");
  			map.put("**LRIB11_MARROW**", "Bone Marrow");
  			map.put("**LRIB12_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE1_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE2_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE3_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE4_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE5_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE6_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE7_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE8_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE9_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE10_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE11_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE12_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE13_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE14_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE15_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE16_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE17_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE18_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE19_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE20_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE21_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE22_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE23_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE24_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE25_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE26_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE27_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE28_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE29_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE30_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE31_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE32_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE33_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE34_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE35_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE36_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE37_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE38_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE39_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE40_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE41_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE42_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE43_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE44_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE45_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE46_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE47_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE48_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE49_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE50_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE51_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE52_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE53_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE54_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE55_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE56_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE57_MARROW**", "Bone Marrow");
  			map.put("**BACKBONE58_MARROW**", "Bone Marrow");
  			map.put("**STERN_MARROW**", "Bone Marrow");
  			map.put("**RSCAP_MARROW**", "Bone Marrow");
  			map.put("**RCOLLAR_MARROW**", "Bone Marrow");
  			map.put("**LSCAP_MARROW**", "Bone Marrow");
  			map.put("**LCOLLAR_MARROW**", "Bone Marrow");
  			if (renderArmMarrow){
  				map.put("**RHUMERUS_MARROW**", "Bone Marrow");
  				map.put("**R_RADIUS_MARROW**", "Bone Marrow");
  				map.put("**R_ULNA_MARROW**", "Bone Marrow");
  				map.put("**LHUMERUS_MARROW**", "Bone Marrow");
  				map.put("**L_RADIUS_MARROW**", "Bone Marrow");
  				map.put("**L_ULNA_MARROW**", "Bone Marrow");
  				map.put("**R_HAND_MARROW0", "Bone Marrow");
  				map.put("**R_HAND_MARROW1", "Bone Marrow");
  				map.put("**R_HAND_MARROW2", "Bone Marrow");
  				map.put("**R_HAND_MARROW3", "Bone Marrow");
  				map.put("**R_HAND_MARROW4", "Bone Marrow");
  				map.put("**R_HAND_MARROW5", "Bone Marrow");
  				map.put("**R_HAND_MARROW6", "Bone Marrow");
  				map.put("**R_HAND_MARROW7", "Bone Marrow");
  				map.put("**R_HAND_MARROW8", "Bone Marrow");
  				map.put("**R_HAND_MARROW9", "Bone Marrow");
  				map.put("**R_HAND_MARROW10", "Bone Marrow");
  				map.put("**R_HAND_MARROW11", "Bone Marrow");
  				map.put("**R_HAND_MARROW12", "Bone Marrow");
  				map.put("**R_HAND_MARROW13", "Bone Marrow");
  				map.put("**R_HAND_MARROW14", "Bone Marrow");
  				map.put("**R_HAND_MARROW15", "Bone Marrow");
  				map.put("**R_HAND_MARROW16", "Bone Marrow");
  				map.put("**R_HAND_MARROW17", "Bone Marrow");
  				map.put("**R_HAND_MARROW18", "Bone Marrow");
  				map.put("**R_HAND_MARROW19", "Bone Marrow");
  				map.put("**R_HAND_MARROW20", "Bone Marrow");
  				map.put("**R_HAND_MARROW21", "Bone Marrow");
  				map.put("**R_HAND_MARROW22", "Bone Marrow");
  				map.put("**R_HAND_MARROW23", "Bone Marrow");
  				map.put("**R_HAND_MARROW24", "Bone Marrow");
  				map.put("**R_HAND_MARROW25", "Bone Marrow");
  				map.put("**R_HAND_MARROW26", "Bone Marrow");
  				map.put("**L_HAND_MARROW0", "Bone Marrow");
  				map.put("**L_HAND_MARROW1", "Bone Marrow");
  				map.put("**L_HAND_MARROW2", "Bone Marrow");
  				map.put("**L_HAND_MARROW3", "Bone Marrow");
  				map.put("**L_HAND_MARROW4", "Bone Marrow");
  				map.put("**L_HAND_MARROW5", "Bone Marrow");
  				map.put("**L_HAND_MARROW6", "Bone Marrow");
  				map.put("**L_HAND_MARROW7", "Bone Marrow");
  				map.put("**L_HAND_MARROW8", "Bone Marrow");
  				map.put("**L_HAND_MARROW9", "Bone Marrow");
  				map.put("**L_HAND_MARROW10", "Bone Marrow");
  				map.put("**L_HAND_MARROW11", "Bone Marrow");
  				map.put("**L_HAND_MARROW12", "Bone Marrow");
  				map.put("**L_HAND_MARROW13", "Bone Marrow");
  				map.put("**L_HAND_MARROW14", "Bone Marrow");
  				map.put("**L_HAND_MARROW15", "Bone Marrow");
  				map.put("**L_HAND_MARROW16", "Bone Marrow");
  				map.put("**L_HAND_MARROW17", "Bone Marrow");
  				map.put("**L_HAND_MARROW18", "Bone Marrow");
  				map.put("**L_HAND_MARROW19", "Bone Marrow");
  				map.put("**L_HAND_MARROW20", "Bone Marrow");
  				map.put("**L_HAND_MARROW21", "Bone Marrow");
  				map.put("**L_HAND_MARROW22", "Bone Marrow");
  				map.put("**L_HAND_MARROW23", "Bone Marrow");
  				map.put("**L_HAND_MARROW24", "Bone Marrow");
  				map.put("**L_HAND_MARROW25", "Bone Marrow");
  				map.put("**L_HAND_MARROW26", "Bone Marrow");
  			}
  			map.put("**R_FOOT_MARROW0", "Bone Marrow");
  			map.put("**R_FOOT_MARROW1", "Bone Marrow");
  			map.put("**R_FOOT_MARROW2", "Bone Marrow");
  			map.put("**R_FOOT_MARROW3", "Bone Marrow");
  			map.put("**R_FOOT_MARROW4", "Bone Marrow");
  			map.put("**R_FOOT_MARROW5", "Bone Marrow");
  			map.put("**R_FOOT_MARROW6", "Bone Marrow");
  			map.put("**R_FOOT_MARROW7", "Bone Marrow");
  			map.put("**R_FOOT_MARROW8", "Bone Marrow");
  			map.put("**R_FOOT_MARROW9", "Bone Marrow");
  			map.put("**R_FOOT_MARROW10", "Bone Marrow");
  			map.put("**R_FOOT_MARROW11", "Bone Marrow");
  			map.put("**R_FOOT_MARROW12", "Bone Marrow");
  			map.put("**R_FOOT_MARROW13", "Bone Marrow");
  			map.put("**R_FOOT_MARROW14", "Bone Marrow");
  			map.put("**R_FOOT_MARROW15", "Bone Marrow");
  			map.put("**R_FOOT_MARROW16", "Bone Marrow");
  			map.put("**R_FOOT_MARROW17", "Bone Marrow");
  			map.put("**R_FOOT_MARROW18", "Bone Marrow");
  			map.put("**R_FOOT_MARROW19", "Bone Marrow");
  			map.put("**R_FOOT_MARROW20", "Bone Marrow");
  			map.put("**R_FOOT_MARROW21", "Bone Marrow");
  			map.put("**R_FOOT_MARROW22", "Bone Marrow");
  			map.put("**R_FOOT_MARROW23", "Bone Marrow");
  			map.put("**R_FOOT_MARROW24", "Bone Marrow");
  			map.put("**R_FOOT_MARROW25", "Bone Marrow");
  			map.put("**L_FOOT_MARROW0", "Bone Marrow");
  			map.put("**L_FOOT_MARROW1", "Bone Marrow");
  			map.put("**L_FOOT_MARROW2", "Bone Marrow");
  			map.put("**L_FOOT_MARROW3", "Bone Marrow");
  			map.put("**L_FOOT_MARROW4", "Bone Marrow");
  			map.put("**L_FOOT_MARROW5", "Bone Marrow");
  			map.put("**L_FOOT_MARROW6", "Bone Marrow");
  			map.put("**L_FOOT_MARROW7", "Bone Marrow");
  			map.put("**L_FOOT_MARROW8", "Bone Marrow");
  			map.put("**L_FOOT_MARROW9", "Bone Marrow");
  			map.put("**L_FOOT_MARROW10", "Bone Marrow");
  			map.put("**L_FOOT_MARROW11", "Bone Marrow");
  			map.put("**L_FOOT_MARROW12", "Bone Marrow");
  			map.put("**L_FOOT_MARROW13", "Bone Marrow");
  			map.put("**L_FOOT_MARROW14", "Bone Marrow");
  			map.put("**L_FOOT_MARROW15", "Bone Marrow");
  			map.put("**L_FOOT_MARROW16", "Bone Marrow");
  			map.put("**L_FOOT_MARROW17", "Bone Marrow");
  			map.put("**L_FOOT_MARROW18", "Bone Marrow");
  			map.put("**L_FOOT_MARROW19", "Bone Marrow");
  			map.put("**L_FOOT_MARROW20", "Bone Marrow");
  			map.put("**L_FOOT_MARROW21", "Bone Marrow");
  			map.put("**L_FOOT_MARROW22", "Bone Marrow");
  			map.put("**L_FOOT_MARROW23", "Bone Marrow");
  			map.put("**L_FOOT_MARROW24", "Bone Marrow");
  			map.put("**L_FOOT_MARROW25", "Bone Marrow");
  			map.put("**R_FEMUR_MARROW**", "Bone Marrow");
  			map.put("**R_TIBIA_MARROW**", "Bone Marrow");
  			map.put("**R_FIBULA_MARROW**", "Bone Marrow");
  			map.put("**R_PATELLA_MARROW**", "Bone Marrow");
  			map.put("**L_FEMUR_MARROW**", "Bone Marrow");
  			map.put("**L_TIBIA_MARROW**", "Bone Marrow");
  			map.put("**L_FIBULA_MARROW**", "Bone Marrow");
  			map.put("**L_PATELLA_MARROW**", "Bone Marrow");
  		}
  		// heart
  		map.put("****Right-atria-myo*********", "Heart");
  		map.put("****Right-ventricle-myo*********", "Heart");
  		map.put("****Right-atria-chamber****", "Blood");
  		map.put("****Right-ventricle-chamber****", "Blood");
  		map.put("****Left-atria-myo**********", "Heart");
  		map.put("****Left-ventricle-myo**********", "Heart");
  		map.put("****Left-atria-chamber*****", "Blood");
  
  		String key = Configuration.getGlobalConfiguration().getRegistry().get(RegKeys.XCAT_VENTRICLE_SELECTION);
  		if (key!= null) {
  			if (key.contains("1")){
  				map.put("****Left-ventricle-chamber1*****", "Blood (LV)");
  			} else {
  				map.put("****Left-ventricle-chamber1*****", "Heart");
  			}
  			if (key.contains("2")){
  				map.put("****Left-ventricle-chamber2*****", "Blood (LV)");
  			} else {
  				map.put("****Left-ventricle-chamber2*****", "Heart");
  			}
  			if (key.contains("3")){
  				map.put("****Left-ventricle-chamber3*****", "Blood (LV)");
  			} else {
  				map.put("****Left-ventricle-chamber3*****", "Heart");
  			}
  			if (key.contains("4")){
  				map.put("****Left-ventricle-chamber4*****", "Blood (LV)");
  			} else {
  				map.put("****Left-ventricle-chamber4*****", "Heart");
  			}
  		} else {
  			map.put("****Left-ventricle-chamber1*****", "Blood (LV)");
  			map.put("****Left-ventricle-chamber2*****", "Blood (LV)");
  			map.put("****Left-ventricle-chamber3*****", "Blood (LV)");
  			map.put("****Left-ventricle-chamber4*****", "Blood (LV)");
  		}
  		map.put("****Heartwall*********", "Heart");
  		if (Configuration.getGlobalConfiguration().getRegistry().get(RegKeys.XCAT_ONLY_LEFT_ARTERY_TREE_CONTRASTED)!= null) {
  			if (Configuration.getGlobalConfiguration().getRegistry().get(RegKeys.XCAT_ONLY_LEFT_ARTERY_TREE_CONTRASTED).equals("true")) {
  			map.put("/***RCA1***/", "Blood");
  			map.put("/***RCA2***/", "Blood");
  			map.put("/***LCA1***/", "Coronary Artery");
  			map.put("/***LCA2***/", "Coronary Artery");
  			map.put("/***LCA3***/", "Coronary Artery");
  			map.put("/***LCA4***/", "Coronary Artery");
  			map.put("/***LCA5***/", "Coronary Artery");
  			map.put("/***LCA6***/", "Coronary Artery");
  			map.put("/***LCA7***/", "Coronary Artery");
  			map.put("/***LCA8***/", "Coronary Artery");
  			map.put("/***LCA9***/", "Coronary Artery");
  			map.put("/***LCA10***/", "Coronary Artery");
  			}
  		}else{
  			map.put("/***RCA1***/", "Coronary Artery");
  			map.put("/***RCA2***/", "Coronary Artery");
  			map.put("/***LCA1***/", "Coronary Artery");
  			map.put("/***LCA2***/", "Coronary Artery");
  			map.put("/***LCA3***/", "Coronary Artery");
  			map.put("/***LCA4***/", "Coronary Artery");
  			map.put("/***LCA5***/", "Coronary Artery");
  			map.put("/***LCA6***/", "Coronary Artery");
  			map.put("/***LCA7***/", "Coronary Artery");
  			map.put("/***LCA8***/", "Coronary Artery");
  			map.put("/***LCA9***/", "Coronary Artery");
  			map.put("/***LCA10***/", "Coronary Artery");
  		}
  		
  		map.put("Heart Lesion", "Heart Lesion");
  		map.put("Heart Catheter", "Catheter Material");
  		return map;
  	}
  
  	/**
  	 * Lookup Material via the Spline name
  	 * @param name
  	 * @return the material
  	 */
  	public static Material generateFromSplineName(String name){
  		String materialName = getSplineNameMaterialNameLUT().get(name);
  		Material material = XCatMaterialGenerator.generateFromMaterialName(materialName);
  		return material;
  	}
  
  
  	public static boolean exclude(String match){
  		boolean includeVessels = false;
  		if (includeVessels) {
  			String materialName = getSplineNameMaterialNameLUT().get(match);
  			if (materialName != null) {
  				return ! (materialName.contains("Blood"));
  			} else return true;
  		} else return false;
  	}
  
  	
  	@Override
  	public TimeWarper getTimeWarper() {
  		return warper;
  	}
  
  	@Override
  	public void setTimeWarper(TimeWarper warp) {
  		warper = warp;
  	}
  
  }
  /*
   * Copyright (C) 2010-2014 Andreas Maier
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */