diff --git a/gui/trunk/CLASSRead.cxx b/gui/trunk/CLASSRead.cxx
index 89076c007dad266182d1285d9fddedb6eebc8b96..dbad7e57d975acabb897633be0a15bc5f08fd5cd 100755
--- a/gui/trunk/CLASSRead.cxx
+++ b/gui/trunk/CLASSRead.cxx
@@ -824,7 +824,7 @@ void CLASSRead::ASCIIWrite(string filename)
 //________________________________________________________________________
 //________________________________________________________________________
 //________________________________________________________________________
-void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string opt)
+void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string filename)
 {
 
 
@@ -834,7 +834,6 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string opt)
 
 
 
-	string out = opt;
 	Long64_t nentries = fData[toplot[0].fTreeId]->GetEntries();
 
 
@@ -1030,7 +1029,7 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string opt)
 
 
 	// Beginning of the document XML
-	ofstream f ("test.xml");
+	ofstream f (filename.c_str());
 	cout << f.is_open();
 	if (!f.is_open())
 		cout << "Impossible d'ouvrir le fichier en ecriture !" << endl;
@@ -1212,7 +1211,7 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string opt)
 }
 
 //________________________________________________________________________
-void CLASSRead::ConvertXmlMass(vector<CLASSPlotElement> toplot, string opt)
+void CLASSRead::ConvertXmlMass(vector<CLASSPlotElement> toplot, string filename)
 {
 	
 	vector<CLASSPlotElement> toplotTTree[fData.size()];
@@ -1225,12 +1224,10 @@ void CLASSRead::ConvertXmlMass(vector<CLASSPlotElement> toplot, string opt)
 		toplotTTree[toplot[i].fTreeId].push_back(toplot[i]);
 	}
 	
-	string out = opt;
 	for (int i = 0; i < (int)fData.size(); i++)
 	{
-		if(i == 1) out += " same";
 		if(toplotTTree[i].size() !=0)
-			ConvertxmlTTreeMass(toplotTTree[i], out);
+			ConvertxmlTTreeMass(toplotTTree[i], filename);
 		
 	}
 }
diff --git a/gui/trunk/CLASSRead.hxx b/gui/trunk/CLASSRead.hxx
index 7573a2c4e9f2dbc90e00b4b0b8791b25466982e4..ef7e789941c2cc8d97f2a3c285d88dc987c2551c 100755
--- a/gui/trunk/CLASSRead.hxx
+++ b/gui/trunk/CLASSRead.hxx
@@ -60,7 +60,7 @@ public :
 	void PlotPower(vector<CLASSPlotElement> toplot, string opt = "L");
 	void PlotTTreePower(vector<CLASSPlotElement> toplot, string opt = "L");
 
-	void ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string opt = "L");
+	void ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string filename);
 	void ConvertXmlMass(vector<CLASSPlotElement> toplot, string opt = "L");           
 	void ConvertxmlTTreePower(vector<CLASSPlotElement> toplotPower, string opt = "L");
 	void ConvertXmlPower(vector<CLASSPlotElement> toplotPower, string opt = "L");     
diff --git a/gui/trunk/CLASSWin.cxx b/gui/trunk/CLASSWin.cxx
index e346e66918b1aab95db5251bcdc387734b48ac93..7463be2eb0e913e5db75302a04f2a13298e47e14 100755
--- a/gui/trunk/CLASSWin.cxx
+++ b/gui/trunk/CLASSWin.cxx
@@ -444,6 +444,82 @@ void MainWin::Plot()
 		fDATA->Plot(toplot);
 	
 }
+void MainWin::Conversionxml()
+{
+	int Nnucleus = fDATA->GetZAIvector().size();
+
+	vector<CLASSPlotElement> toplot;
+	vector<CLASSPlotElement> toplotPower;
+
+	for(int i=0; i < fNumberOfParc; i++)
+	{
+
+		for(int j=0; j < fNumberOfTOT-1; j++) //fNumberOfTOT -1 ?? ->All except power
+		{
+			if(fCheckArrayTotal[i][j]->GetState()==kButtonDown)
+				for(int k=0; k < Nnucleus; k++)
+				{
+					if(fCheckArrayNuc[k]->GetState()==kButtonDown)
+						toplot.push_back( CLASSPlotElement(i, 0, j,0, fDATA->GetZAIvector()[k]));
+				}
+		}
+
+		for(int j=0; j < fNumberOfReactor[i]; j++)
+		{
+			if(fCheckArrayReactor[i][j]->GetState()==kButtonDown)
+			{
+				for(int l =0;l<3;l++)
+					if (fCheckIVPlot[l]->GetState()==kButtonDown)
+						for(int k=0; k < Nnucleus; k++)
+						{
+							if(fCheckArrayNuc[k]->GetState()==kButtonDown)
+								toplot.push_back( CLASSPlotElement(i, 1, j,l, fDATA->GetZAIvector()[k]));
+						}
+			}
+		}
+
+		for(int j=0; j < fNumberOfStock[i]; j++)
+		{
+			if(fCheckArrayStock[i][j]->GetState()==kButtonDown)
+				for(int l =0;l<3;l++)
+					if (fCheckIVPlot[l]->GetState()==kButtonDown)
+						for(int k=0; k < Nnucleus; k++)
+						{
+							if(fCheckArrayNuc[k]->GetState()==kButtonDown)
+								toplot.push_back( CLASSPlotElement(i, 2, j,l, fDATA->GetZAIvector()[k]));
+						}
+		}
+
+		for(int j=0; j < fNumberOfPool[i]; j++)
+		{
+			if(fCheckArrayPool[i][j]->GetState()==kButtonDown)
+				for(int l =0;l<3;l++)
+					if (fCheckIVPlot[l]->GetState()==kButtonDown)
+						for(int k=0; k < Nnucleus; k++)
+						{
+							if(fCheckArrayNuc[k]->GetState()==kButtonDown)
+								toplot.push_back( CLASSPlotElement(i, 3, j,l, fDATA->GetZAIvector()[k]));
+						}
+		}
+
+		for(int j=0; j < fNumberOfFab[i]; j++)
+		{
+			if(fCheckArrayFab[i][j]->GetState()==kButtonDown)
+				for(int l =0;l<3;l++)
+					if (fCheckIVPlot[l]->GetState()==kButtonDown)
+						for(int k=0; k < Nnucleus; k++)
+						{
+							if(fCheckArrayNuc[k]->GetState()==kButtonDown)
+								toplot.push_back( CLASSPlotElement(i, 4, j,l, fDATA->GetZAIvector()[k]));
+						}
+		}
+	}
+
+	if(toplot.size() != 0)
+		fDATA->ConvertXmlMass(toplot);
+	
+}
+
 //_____________________________________________________________________________________________
 void MainWin::FillNucTab()		// fill the Inventory Tab foil
 {
diff --git a/gui/trunk/CLASSWin.hxx b/gui/trunk/CLASSWin.hxx
index e4f233df45b68183b19e2e664db55ed9d68bde2b..723dcd9780cccd55779151effbe1a6d8352ef4c2 100755
--- a/gui/trunk/CLASSWin.hxx
+++ b/gui/trunk/CLASSWin.hxx
@@ -73,6 +73,7 @@ public:
 	bool ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2); //@- widget signal handler method
 	void CloseWindow();			//@- destroy the main window
 	void Plot();				//@- general Plot method
+        void Conversionxml();                   //@- general Conversionxml method
 
 
 	void FillItemTab(int i);