content: /*
   * Copyright (C) 2014 - Andreas Maier 
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */
  
  import edu.stanford.rsl.conrad.physics.materials.Material;
  import edu.stanford.rsl.conrad.physics.materials.database.MaterialsDB;
  import edu.stanford.rsl.conrad.physics.materials.utils.AttenuationType;
  import edu.stanford.rsl.conrad.utils.UserUtil;
  import ij.gui.Plot;
  import ij.plugin.PlugIn;
  
  
  public class Generate_Absorption_Plot implements PlugIn{
  
  	public Generate_Absorption_Plot (){
  		
  	}
  	
  	@Override
  	public void run(String arg) {
  		try {
  			double min = UserUtil.queryDouble("Minimum [keV]", 10);
  			double max = UserUtil.queryDouble("Maximum [keV]", 150);
  			double delta = UserUtil.queryDouble("Delta [keV]", 0.5);
  			Object materialString = UserUtil.chooseObject("Please select a material: ", "Material Selection", MaterialsDB.getMaterials(), "water");
  			Material material = MaterialsDB.getMaterial(materialString.toString());
  			
  			int steps = (int) ((max - min) / delta);
  			double [] energies = new double [steps];
  			double [] absorption =  new double [steps];
  			
  			for (int i = 0; i < steps; i ++){
  				energies[i] = min + (i*delta);
  				absorption[i] = material.getAttenuation(energies[i], AttenuationType.TOTAL_WITH_COHERENT_ATTENUATION) / material.getDensity();
  			}
  			
  			Plot plot = new Plot("Absorption Spectrum of " + material, "Energy [keV]", "mu / rho [cm^2/g]", energies, absorption);
  			plot.show();
  		} catch (Exception e) {
  			// TODO Auto-generated catch block
  			e.printStackTrace();
  		}
  	}
  	
  }
  
  