text: Clazz.declarePackage ("J.adapter.readers.quantum");
  Clazz.load (["J.adapter.readers.quantum.BasisFunctionReader", "JU.List"], "J.adapter.readers.quantum.SlaterReader", ["java.util.Arrays", "J.quantum.SlaterData", "J.util.Logger"], function () {
  c$ = Clazz.decorateAsClass (function () {
  this.slaters = null;
  this.slaterArray = null;
  if (!Clazz.isClassDefined ("J.adapter.readers.quantum.SlaterReader.SlaterSorter")) {
  J.adapter.readers.quantum.SlaterReader.$SlaterReader$SlaterSorter$ ();
  }
  if (!Clazz.isClassDefined ("J.adapter.readers.quantum.SlaterReader.OrbitalSorter")) {
  J.adapter.readers.quantum.SlaterReader.$SlaterReader$OrbitalSorter$ ();
  }
  Clazz.instantialize (this, arguments);
  }, J.adapter.readers.quantum, "SlaterReader", J.adapter.readers.quantum.BasisFunctionReader);
  Clazz.prepareFields (c$, function () {
  this.slaters =  new JU.List ();
  });
  $_M(c$, "addSlater", 
  function (iAtom, a, b, c, d, zeta, coef) {
  System.out.println ("SlaterReader " + this.slaters.size () + ": " + iAtom + " " + a + " " + b + " " + c + " " + d + " " + zeta + " " + coef);
  this.slaters.addLast ( new J.quantum.SlaterData (iAtom, a, b, c, d, zeta, coef));
  }, "~N,~N,~N,~N,~N,~N,~N");
  $_M(c$, "addSlater", 
  function (sd, n) {
  sd.index = n;
  this.slaters.addLast (sd);
  }, "J.quantum.SlaterData,~N");
  $_M(c$, "setSlaters", 
  function (doScale, doSort) {
  if (this.slaterArray == null) {
  var nSlaters = this.slaters.size ();
  this.slaterArray =  new Array (nSlaters);
  for (var i = 0; i < this.slaterArray.length; i++) this.slaterArray[i] = this.slaters.get (i);
  
  }if (doScale) for (var i = 0; i < this.slaterArray.length; i++) {
  var sd = this.slaterArray[i];
  sd.coef *= this.scaleSlater (sd.x, sd.y, sd.z, sd.r, sd.zeta);
  if (J.util.Logger.debugging) {
  J.util.Logger.debug ("SlaterReader " + i + ": " + sd.iAtom + " " + sd.x + " " + sd.y + " " + sd.z + " " + sd.r + " " + sd.zeta + " " + sd.coef);
  }}
  if (doSort) {
  java.util.Arrays.sort (this.slaterArray, Clazz.innerTypeInstance (J.adapter.readers.quantum.SlaterReader.SlaterSorter, this, null));
  var pointers =  Clazz.newIntArray (this.slaterArray.length, 0);
  for (var i = 0; i < this.slaterArray.length; i++) pointers[i] = this.slaterArray[i].index;
  
  this.sortOrbitalCoefficients (pointers);
  }this.moData.put ("slaters", this.slaterArray);
  this.atomSetCollection.setAtomSetAuxiliaryInfo ("moData", this.moData);
  }, "~B,~B");
  $_M(c$, "setMOs", 
  function (units) {
  this.moData.put ("mos", this.orbitals);
  this.moData.put ("energyUnits", units);
  this.finalizeMOData (this.moData);
  }, "~S");
  $_M(c$, "sortOrbitalCoefficients", 
  function (pointers) {
  for (var i = this.orbitals.size (); --i >= 0; ) {
  var mo = this.orbitals.get (i);
  var coefs = mo.get ("coefficients");
  var sorted =  Clazz.newFloatArray (pointers.length, 0);
  for (var j = 0; j < pointers.length; j++) {
  var k = pointers[j];
  if (k < coefs.length) sorted[j] = coefs[k];
  }
  mo.put ("coefficients", sorted);
  }
  }, "~A");
  $_M(c$, "sortOrbitals", 
  function () {
  var array = this.orbitals.toArray ( new Array (0));
  java.util.Arrays.sort (array, Clazz.innerTypeInstance (J.adapter.readers.quantum.SlaterReader.OrbitalSorter, this, null));
  this.orbitals.clear ();
  for (var i = 0; i < array.length; i++) this.orbitals.addLast (array[i]);
  
  });
  $_M(c$, "scaleSlater", 
  function (ex, ey, ez, er, zeta) {
  var el = ex + ey + ez;
  switch (el) {
  case 0:
  case 1:
  ez = -1;
  break;
  }
  return J.adapter.readers.quantum.SlaterReader.getSlaterConstCartesian (el + er + 1, Math.abs (zeta), el, ex, ey, ez);
  }, "~N,~N,~N,~N,~N");
  c$.fact = $_M(c$, "fact", 
  ($fz = function (f, zeta, n) {
  return Math.pow (2 * zeta, n + 0.5) * Math.sqrt (f * 0.07957747154594767 / J.adapter.readers.quantum.SlaterReader.fact1[n]);
  }, $fz.isPrivate = true, $fz), "~N,~N,~N");
  c$.getSlaterConstCartesian = $_M(c$, "getSlaterConstCartesian", 
  function (n, zeta, el, ex, ey, ez) {
  return J.adapter.readers.quantum.SlaterReader.fact (ez < 0 ? J.adapter.readers.quantum.SlaterReader.dfact2[el + 1] : J.adapter.readers.quantum.SlaterReader.dfact2[el + 1] / J.adapter.readers.quantum.SlaterReader.dfact2[ex] / J.adapter.readers.quantum.SlaterReader.dfact2[ey] / J.adapter.readers.quantum.SlaterReader.dfact2[ez], zeta, n);
  }, "~N,~N,~N,~N,~N,~N");
  c$.getSlaterConstDSpherical = $_M(c$, "getSlaterConstDSpherical", 
  function (n, zeta, ex, ey) {
  return J.adapter.readers.quantum.SlaterReader.fact (Clazz.doubleToInt (15 / (ex < 0 ? 12 : ey < 0 ? 4 : 1)), zeta, n);
  }, "~N,~N,~N,~N");
  c$.$SlaterReader$SlaterSorter$ = function () {
  Clazz.pu$h ();
  c$ = Clazz.decorateAsClass (function () {
  Clazz.prepareCallback (this, arguments);
  Clazz.instantialize (this, arguments);
  }, J.adapter.readers.quantum.SlaterReader, "SlaterSorter", null, java.util.Comparator);
  $_V(c$, "compare", 
  function (a, b) {
  return (a.iAtom < b.iAtom ? -1 : a.iAtom > b.iAtom ? 1 : 0);
  }, "J.quantum.SlaterData,J.quantum.SlaterData");
  c$ = Clazz.p0p ();
  };
  c$.$SlaterReader$OrbitalSorter$ = function () {
  Clazz.pu$h ();
  c$ = Clazz.decorateAsClass (function () {
  Clazz.prepareCallback (this, arguments);
  Clazz.instantialize (this, arguments);
  }, J.adapter.readers.quantum.SlaterReader, "OrbitalSorter", null, java.util.Comparator);
  $_V(c$, "compare", 
  function (a, b) {
  var c = (a.get ("energy")).floatValue ();
  var d = (b.get ("energy")).floatValue ();
  return (c < d ? -1 : d < c ? 1 : 0);
  }, "java.util.Map,java.util.Map");
  c$ = Clazz.p0p ();
  };
  Clazz.defineStatics (c$,
  "_1_4pi", 0.07957747154594767,
  "fact1", [1.0, 2.0, 24.0, 720.0, 40320.0, 362880.0, 87178291200.0],
  "dfact2", [1, 1, 3, 15, 105]);
  });
  