def angularDistribution(this, bins, states = "all", simulation = -1, label = ''):
		print "Calculating angular distribution";
		length = this.stateNumbers[simulation];
		runName = this.simulations[simulation];
		mdf.combine(runName, length);
		angle, angleDistribution = mda.angularDistribution(bins, runName, length, states);
		mdplot.plotAngularDistribution(this.path, angleDistribution, angle*180/np.pi, label = label);
		return angle, angleDistribution;
	def radialDistribution(this, bins, simulation = -1, states = "all", label = ''):
		print "Calculating radial distribution";
		simPath = this.simulations[simulation];
		length = this.stateNumbers[simulation];
		mdf.combine(simPath, length, );
		r, g = mda.calculateRadialDistribution(simPath, bins, length, states);
		mdplot.plotRadialDistribution(this.path, g, r, label = label);
		return r, g;
	def numberOfSilanol(this, A, t, simulation = -1, states = "all", label = ''):
		length = this.stateNumbers[simulation];
		runName = this.simulations[simulation];
		N = mda.silanolGroups(runName, length, states);
		if(states == "all"):
			states = np.arange(0, last + 1);
		#end
		print np.shape(N), np.shape(t);
		mdplot.plotSilanol(this.path, N, t, A, label = label);
		return t, N;
	def analyze(this, simulation = -1, label = ''):
		simPath = this.simulations[simulation];
		length = this.stateNumbers[simulation];
		#Read dt and step from file
		datafile = open(simPath + "/init/data.dat");
		datafile.readline(); datafile.readline();
		dt = float(datafile.readline());
		step = int(datafile.readline());
		datafile.close();
		t = step*dt*np.arange(0, length + 1);
		K, V, T, r2 = mda.getAnalysis(simPath, length);
		mdplot.plotEnergy(this.path, V, K, t, label = label);
		mdplot.plotTemperature(this.path, T, t, label = label);
		mdplot.plotDisplacement(this.path, r2, t, label = label);
		D = np.zeros(np.shape(r2));
		for i in range(0, 3):
			D[1:, i] = r2[1:, i]/(6*t[1:]);
		#end
		return K, V, T, r2, D, t;