const void SecondExperiment::printExp(){
	cout << "Printing Second Exp" << endl;
	unsigned int bin[numberOfBins];
	ofstream myfile;
	myfile.open("SecondExperiment.txt");
	myfile << "# BinNr | NumberOfElektron\n";
	srand(time(NULL));
	for(unsigned int i=0;i<numberOfBins;i++){
		bin[i] = 0;
	}

	double binBreite = 2*minima/numberOfBins;

	for(unsigned int i=0;i<numberOfElec;i++){
		Electron* elec = new Electron(normalverteiltRand(deltaU,U));
		Experiment* exp1 = new Experiment(*elec,slit);

		// Idee: VerwerfMethode:

		double randAngle = gleichverteilteRand(-minima,+minima);

		double randInt = exp1->Intensity(randAngle, elec->Lambda());


		delete elec;
		delete exp1;

		if(randInt<gleichverteilteRand(0,1)){
			i--;
			continue;
		}
		else {
			// cout << "randAngle = " << randAngle << "\n";
			int binNr = randAngle/binBreite + numberOfBins/2;
			if(binNr >= 0 && binNr <= numberOfBins) bin[binNr]++;
		}

	} // end for

	// Normieren
	unsigned int max=0;
	for(unsigned int i=0;i<numberOfBins;i++){
		if(max<bin[i]) max=bin[i];
	}

	for(unsigned int i=0;i<numberOfBins;i++){
		myfile << (i-numberOfBins/2.)*binBreite << "\t" << (double) bin[i]/max  << "\n";
	}


	myfile.close();
}
int main() {
	cout << "Computational Exercise 4.2a)\n\nDouble Slit\n" << endl;

	DoubleSlit *slit = new DoubleSlit(62,272);
	cout << "Slit has width = " <<  slit->Width() << " nm and Distance = " << slit->Distance() <<  " nm" << endl;

	Electron *elec = new Electron(300);
	cout << "The Electron has a lambda of " << elec->Lambda() << endl;

	// Idee: Electron erzeugen
	// Winkel zuordnen nach Wahrscheinlichkeitsverteilung

	// Seeding
	srand(time(NULL));



	Experiment *expe = new Experiment(*elec,*slit);
	cout << "\nDie Minima der Intensität liegen bei: " << expe->Minima() << endl;
	expe->printEx(10000);


	cout << "\n *** Starte Experiment mit normalverteilter Spannung ***" << endl;
	// SecondExperiment(DoubleSlit slit, unsigned int numberOfElec,unsigned int numberOfBins, double U,double deltaU,
	SecondExperiment *expe2 = new SecondExperiment(*slit,10000,200,300.,10.);
	expe2->printExp();
	expe2->printNormv();


	cout << "\n +++ Finished! +++" << endl;

	delete expe;
	delete elec;
	delete slit;
	return 0;
}