boolean recombine(Atom atom, Electron electron) {
		if (!electron.readyToGo(model.getModelTime())) // the electron is just ionized
			return false;
		if (!atom.isExcitable())
			return false;

		a1 = atom; // the electron will recombine with a1 with the assistance of a2
		e = electron;
		double rxij, ryij, rijsq, sig;
		for (int i = 0; i < model.numberOfAtoms; i++) {
			a2 = model.atom[i];
			if (a1 == a2)
				continue;
			rxij = a1.rx - a2.rx;
			ryij = a1.ry - a2.ry;
			rijsq = rxij * rxij + ryij * ryij;
			sig = 0.55 * (a1.sigma + a2.sigma);
			sig *= sig;
			if (rijsq < sig) {
				break;
			}
			a2 = null;
		}
		if (a2 == null)
			return false;
		transformVelocities();
		ElectronicStructure es = model.getElement(a1.id).getElectronicStructure();
		EnergyLevel level = es.getEnergyLevel(0);
		double excess = level.getEnergy();
		if (!solve(excess))
			return false;
		e.setEnergyLevel(level);
		// associate the electron with this atom
		e.setAtom(a1);
		a1.addElectron(e);
		// neutralize the atom
		a1.setCharge(0);
		transformVelocitiesBack();
		return true;
	}