diff --git a/gui/CLASSPlotElement.cxx b/gui/CLASSPlotElement.cxx
index 704d1fc9e2027a106bf8d72a1c587354015694ff..9028932cc72a21e3c87caaa6e21600e49d297933 100644
--- a/gui/CLASSPlotElement.cxx
+++ b/gui/CLASSPlotElement.cxx
@@ -5,24 +5,24 @@ using namespace std;
 	// for gcc3.2.3 only
 
 
-CLASSPlotElement::CLASSPlotElement(int treeId, int facilityId, int facylitynumber, int IVNumber, ZAI zai)
+CLASSPlotElement::CLASSPlotElement(int treeId, int facilityId, int facilitynumber, int IVNumber, ZAI zai)
 {
 	
 	fTreeId = treeId;
 	fFacilityId = facilityId;
-	fFacylityNumber = facylitynumber;
+	fFacilityNumber = facilitynumber;
 	fIVNumber = IVNumber;
 	fZAI = zai;
 	
 }
 
 
-CLASSPlotElement::CLASSPlotElement(int treeId, int facilityId, int facylitynumber, int IVNumber, int Z, int A, int I)
+CLASSPlotElement::CLASSPlotElement(int treeId, int facilityId, int facilitynumber, int IVNumber, int Z, int A, int I)
 {
 	
 	fTreeId = treeId;
 	fFacilityId = facilityId;
-	fFacylityNumber = facylitynumber;
+	fFacilityNumber = facilitynumber;
 	fIVNumber = IVNumber;
 	fZAI = ZAI(Z,A,I);
 	
diff --git a/gui/CLASSPlotElement.hxx b/gui/CLASSPlotElement.hxx
index 2d05c8ba5b5e1b1ed6ed09b746621eedab1b64c7..7b019651fb96a6b2e11909d0b4381ff6968bf59c 100644
--- a/gui/CLASSPlotElement.hxx
+++ b/gui/CLASSPlotElement.hxx
@@ -32,11 +32,12 @@ class CLASSPlotElement
 				// 4 FabricationPlant
 
 	int fIVNumber;	// Id of IsotopicVector
-			// 0 Incycle
+			// 0 Inventory
 			// 1 CumulativeIN
 			// 2 CulumativeOUT
+			// 3 Ratio of mass of selected ZAI(s) over Total Mass of Actinides
 
-	int fFacylityNumber;	// Id of Facility
+	int fFacilityNumber;	// Id of Facility
 				// For General :
 				// 0 TOTAL
 				// 1 INCYCLE
diff --git a/gui/CLASSRead.cxx b/gui/CLASSRead.cxx
index aab2e7f95f5fd839497331e58ed80d4f5373986b..9f4fb4ef1342ddd05b7763165caeb91a2b570c0b 100644
--- a/gui/CLASSRead.cxx
+++ b/gui/CLASSRead.cxx
@@ -299,10 +299,16 @@ void CLASSRead::PlotInv(vector<CLASSPlotElement> toplot, bool DecayChain, int St
 	Ymax = -1.e36;
 
 	bool SumOfSelected = false;
-
-	if(toplot[0].fTreeId ==  -1 )
+	bool SumOfSelectedOnly = false;
+	if(toplot[0].fTreeId ==  -1)
+	{
+		SumOfSelected = true;
+		toplot.erase(toplot.begin());
+	}
+	else if(toplot[0].fTreeId ==  -10)
 	{
 		SumOfSelected = true;
+		SumOfSelectedOnly = true;
 		toplot.erase(toplot.begin());
 	}
 
@@ -369,6 +375,9 @@ void CLASSRead::PlotInv(vector<CLASSPlotElement> toplot, bool DecayChain, int St
 	TH1F*	  fhr = fCNucleiInv->DrawFrame(Xmin,Ymin*0.95,Xmax,Ymax*1.05);
 	string Xtitle = "Time [year]";
 	string Ytitle = "Mass [kg]";
+	if(toplot[0].fIVNumber==3){//Only mass ratio are ploted
+		Ytitle = "Mass ratio";
+	}
 	fhr->SetXTitle(Xtitle.c_str());
 	fhr->SetYTitle(Ytitle.c_str());
 	fhr->GetXaxis()->CenterTitle();
@@ -405,35 +414,35 @@ void CLASSRead::PlotInv(vector<CLASSPlotElement> toplot, bool DecayChain, int St
 	}
 
 
-
-	for (int i = 0; i < (int)fGraphInv.size(); i++)
-	{
-		if( i != 0 || SumOfSelected) out += " same";
-
-		fGraphInv[i]->SetName(GetTittleOutName(toplot[i]).c_str());
-		fGraphInv[i]->SetTitle(GetTittleOutName(toplot[i]).c_str());
-		fGraphInv[i]->SetLineColor(CurveColor(i));
-		fGraphInv[i]->SetMarkerColor(CurveColor(i));
-		fGraphInv[i]->SetMarkerStyle(10);
-		fGraphInv[i]->Draw(out.c_str());
-		fGraphInv[i]->SetLineColor(CurveColor(i));
-		fGraphInv[i]->SetMarkerColor(CurveColor(i));
-
-		double x;
-		double y;
-		double x_0;
-		double y_0;
-		fGraphInv[i]->GetPoint(1, x_0, y_0);
+	if(!SumOfSelectedOnly){
+		for (int i = 0; i < (int)fGraphInv.size(); i++)
+		{
+			if( i != 0 || SumOfSelected) out += " same";
+
+			fGraphInv[i]->SetName(GetTittleOutName(toplot[i]).c_str());
+			fGraphInv[i]->SetTitle(GetTittleOutName(toplot[i]).c_str());
+			fGraphInv[i]->SetLineColor(CurveColor(i));
+			fGraphInv[i]->SetMarkerColor(CurveColor(i));
+			fGraphInv[i]->SetMarkerStyle(10);
+			fGraphInv[i]->Draw(out.c_str());
+			fGraphInv[i]->SetLineColor(CurveColor(i));
+			fGraphInv[i]->SetMarkerColor(CurveColor(i));
+
+			double x;
+			double y;
+			double x_0;
+			double y_0;
+			fGraphInv[i]->GetPoint(1, x_0, y_0);
 		
-		fGraphInv[i]->GetPoint(fGraphInv[i]->GetN()-1, x, y);
+			fGraphInv[i]->GetPoint(fGraphInv[i]->GetN()-1, x, y);
 
-		fLegendInv[i] = new TLatex(x_0+0.6*(x-x_0),y_0+1.05*(y-y_0),GetLegendOutName(toplot[i]).c_str());
-		fLegendInv[i]->SetTextSize(0.05);
-		fLegendInv[i]->SetTextFont(132);
-		fLegendInv[i]->SetTextColor(CurveColor(i));
-		fLegendInv[i]->Draw();
+			fLegendInv[i] = new TLatex(x_0+0.6*(x-x_0),y_0+1.05*(y-y_0),GetLegendOutName(toplot[i]).c_str());
+			fLegendInv[i]->SetTextSize(0.05);
+			fLegendInv[i]->SetTextFont(132);
+			fLegendInv[i]->SetTextColor(CurveColor(i));
+			fLegendInv[i]->Draw();
+		}
 	}
-
 	fCNucleiInv->Update();
 
 
@@ -483,12 +492,18 @@ void CLASSRead::PlotTox(vector<CLASSPlotElement> toplot, bool DecayChain, int St
 	Ymax = -1.e36;
 	
 	bool SumOfSelected = false;
-	
-	if(toplot[0].fTreeId ==  -1 )
+	bool SumOfSelectedOnly = false;
+	if(toplot[0].fTreeId ==  -1)
 	{
 		SumOfSelected = true;
 		toplot.erase(toplot.begin());
 	}
+	else if(toplot[0].fTreeId ==  -10)
+	{
+		SumOfSelected = true;
+		SumOfSelectedOnly = true;
+		toplot.erase(toplot.begin());
+	}
 	
 	for (int i = 0; i < (int)toplot.size(); i++)
 	{
@@ -587,35 +602,36 @@ void CLASSRead::PlotTox(vector<CLASSPlotElement> toplot, bool DecayChain, int St
 		
 	}
 	
-	
-	for (int i = 0; i < (int)fGraphTox.size(); i++)
-	{
-		if( i != 0 || SumOfSelected) out += " same";
+	if(!SumOfSelectedOnly){	
+		for (int i = 0; i < (int)fGraphTox.size(); i++)
+		{
+			if( i != 0 || SumOfSelected) out += " same";
 		
-		fGraphTox[i]->SetName(GetTittleOutName(toplot[i]).c_str());
-		fGraphTox[i]->SetTitle(GetTittleOutName(toplot[i]).c_str());
-		fGraphTox[i]->SetLineColor(CurveColor(i));
-		fGraphTox[i]->SetMarkerColor(CurveColor(i));
-		fGraphTox[i]->SetMarkerStyle(10);
-		fGraphTox[i]->Draw(out.c_str());
-		fGraphTox[i]->SetLineColor(CurveColor(i));
-		fGraphTox[i]->SetMarkerColor(CurveColor(i));
+			fGraphTox[i]->SetName(GetTittleOutName(toplot[i]).c_str());
+			fGraphTox[i]->SetTitle(GetTittleOutName(toplot[i]).c_str());
+			fGraphTox[i]->SetLineColor(CurveColor(i));
+			fGraphTox[i]->SetMarkerColor(CurveColor(i));
+			fGraphTox[i]->SetMarkerStyle(10);
+			fGraphTox[i]->Draw(out.c_str());
+			fGraphTox[i]->SetLineColor(CurveColor(i));
+			fGraphTox[i]->SetMarkerColor(CurveColor(i));
 		
-		double x;
-		double y;
-		double x_0;
-		double y_0;
-		fGraphTox[i]->GetPoint(1, x_0, y_0);
+			double x;
+			double y;
+			double x_0;
+			double y_0;
+			fGraphTox[i]->GetPoint(1, x_0, y_0);
 		
-		fGraphTox[i]->GetPoint(fGraphTox[i]->GetN()-1, x, y);
+			fGraphTox[i]->GetPoint(fGraphTox[i]->GetN()-1, x, y);
 		
-		fLegendTox[i] = new TLatex(x_0+0.6*(x-x_0),y_0+1.05*(y-y_0),GetLegendOutName(toplot[i]).c_str());
-		fLegendTox[i]->SetTextSize(0.05);
-		fLegendTox[i]->SetTextFont(132);
-		fLegendTox[i]->SetTextColor(CurveColor(i));
-		fLegendTox[i]->Draw();
+			fLegendTox[i] = new TLatex(x_0+0.6*(x-x_0),y_0+1.05*(y-y_0),GetLegendOutName(toplot[i]).c_str());
+			fLegendTox[i]->SetTextSize(0.05);
+			fLegendTox[i]->SetTextFont(132);
+			fLegendTox[i]->SetTextColor(CurveColor(i));
+			fLegendTox[i]->Draw();
+		}
 	}
-	
+
 	fCNucleiTox->Update();
 	
 	
@@ -666,10 +682,16 @@ void CLASSRead::PlotHeat(vector<CLASSPlotElement> toplot, bool DecayChain, int S
 	Ymax = -1.e36;
 	
 	bool SumOfSelected = false;
-	
-	if(toplot[0].fTreeId ==  -1 )
+	bool SumOfSelectedOnly = false;
+	if(toplot[0].fTreeId ==  -1)
+	{
+		SumOfSelected = true;
+		toplot.erase(toplot.begin());
+	}
+	else if(toplot[0].fTreeId ==  -10)
 	{
 		SumOfSelected = true;
+		SumOfSelectedOnly = true;
 		toplot.erase(toplot.begin());
 	}
 	
@@ -768,35 +790,36 @@ void CLASSRead::PlotHeat(vector<CLASSPlotElement> toplot, bool DecayChain, int S
 		
 	}
 	
-	
-	for (int i = 0; i < (int)fGraphHeat.size(); i++)
-	{
-		if( i != 0 || SumOfSelected) out += " same";
+	if(!SumOfSelectedOnly){		
+		for (int i = 0; i < (int)fGraphHeat.size(); i++)
+		{
+			if( i != 0 || SumOfSelected) out += " same";
 		
-		fGraphHeat[i]->SetName(GetTittleOutName(toplot[i]).c_str());
-		fGraphHeat[i]->SetTitle(GetTittleOutName(toplot[i]).c_str());
-		fGraphHeat[i]->SetLineColor(CurveColor(i));
-		fGraphHeat[i]->SetMarkerColor(CurveColor(i));
-		fGraphHeat[i]->SetMarkerStyle(10);
-		fGraphHeat[i]->Draw(out.c_str());
-		fGraphHeat[i]->SetLineColor(CurveColor(i));
-		fGraphHeat[i]->SetMarkerColor(CurveColor(i));
+			fGraphHeat[i]->SetName(GetTittleOutName(toplot[i]).c_str());
+			fGraphHeat[i]->SetTitle(GetTittleOutName(toplot[i]).c_str());
+			fGraphHeat[i]->SetLineColor(CurveColor(i));
+			fGraphHeat[i]->SetMarkerColor(CurveColor(i));
+			fGraphHeat[i]->SetMarkerStyle(10);
+			fGraphHeat[i]->Draw(out.c_str());
+			fGraphHeat[i]->SetLineColor(CurveColor(i));
+			fGraphHeat[i]->SetMarkerColor(CurveColor(i));
 		
-		double x;
-		double y;
-		double x_0;
-		double y_0;
-		fGraphHeat[i]->GetPoint(1, x_0, y_0);
+			double x;
+			double y;
+			double x_0;
+			double y_0;
+			fGraphHeat[i]->GetPoint(1, x_0, y_0);
 		
-		fGraphHeat[i]->GetPoint(fGraphHeat[i]->GetN()-1, x, y);
+			fGraphHeat[i]->GetPoint(fGraphHeat[i]->GetN()-1, x, y);
 		
-		fLegendHeat[i] = new TLatex(x_0+0.6*(x-x_0),y_0+1.05*(y-y_0),GetLegendOutName(toplot[i]).c_str());
-		fLegendHeat[i]->SetTextSize(0.05);
-		fLegendHeat[i]->SetTextFont(132);
-		fLegendHeat[i]->SetTextColor(CurveColor(i));
-		fLegendHeat[i]->Draw();
+			fLegendHeat[i] = new TLatex(x_0+0.6*(x-x_0),y_0+1.05*(y-y_0),GetLegendOutName(toplot[i]).c_str());
+			fLegendHeat[i]->SetTextSize(0.05);
+			fLegendHeat[i]->SetTextFont(132);
+			fLegendHeat[i]->SetTextColor(CurveColor(i));
+			fLegendHeat[i]->Draw();
+		}
 	}
-	
+
 	fCNucleiHeat->Update();
 	
 	
@@ -858,15 +881,15 @@ void CLASSRead::BuildTGraph(vector<CLASSPlotElement> toplot, int PlotId, string
 		fData[toplot[0].fTreeId]->SetBranchStatus(ActiveInBranchName.c_str(),1);
 
 		if(toplot[i].fFacilityId ==  0)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &IV[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &IV[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  1)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &reactor[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &reactor[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  2)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &stock[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &stock[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  3)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &pool[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &pool[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  4)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &fabricationplant[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &fabricationplant[toplot[i].fFacilityNumber]);
 	}
 
 
@@ -881,189 +904,129 @@ void CLASSRead::BuildTGraph(vector<CLASSPlotElement> toplot, int PlotId, string
 
 		for (int i = 0; i < (int)toplot.size(); i++)
 		{
+			int Z = toplot[i].fZAI.Z();
+			int A = toplot[i].fZAI.A();
+			int I = toplot[i].fZAI.I();
+			double ZAIQuantity = 0;
 
-			if(toplot[i].fFacilityId ==  0)
+			if(toplot[i].fFacilityId ==  0)// 0 General
 			{
-				int Z = toplot[i].fZAI.Z();
-				int A = toplot[i].fZAI.A();
-				int I = toplot[i].fZAI.I();
-				double ZAIQuantity = IV[toplot[i].fFacylityNumber]->GetZAIIsotopicQuantity(Z,A,I);
-			
-				if(PlotId ==  0)
-					ZAIQuantity *=  cZAIMass.GetMass(Z,A)/AVOGADRO*1e-3;
-				else if(PlotId ==  1)
-					ZAIQuantity *=  cZAITox.GetRadioTox(Z,A,I);
-				else if(PlotId ==  2)
-					ZAIQuantity *=  cZAIHeat.GetHeat(Z,A,I);
+				if( toplot[i].fIVNumber ==  0 )
+					ZAIQuantity = IV[toplot[i].fFacilityNumber]->GetZAIIsotopicQuantity(Z,A,I);
+				else if( toplot[i].fIVNumber ==  3 )
+				{
+					if(IV[toplot[i].fFacilityNumber]->GetActinidesComposition().GetTotalMass()!=0)
+						ZAIQuantity = 1e-3*IV[toplot[i].fFacilityNumber]->GetZAIIsotopicQuantity(Z,A,I)/IV[toplot[i].fFacilityNumber]->GetActinidesComposition().GetTotalMass();
+				}
+				else if ( toplot[i].fIVNumber <  3 )
+				{
+					cout << "WARNING Cumulative IVs undefined for general quantities" << endl;
+				}
 				else
 				{
-					cout << "Bad PlotId" << endl;
+					cout << "Bad IVNumber" << endl;
 					return;
 				}
 
-				
-				vQuantity[i].push_back(ZAIQuantity);
-
-
-
-				if(Ymin>ZAIQuantity) Ymin = ZAIQuantity;
-				if(Ymax<ZAIQuantity) Ymax = ZAIQuantity;
-
 			}
-			else if(toplot[i].fFacilityId ==  1)
+			else if(toplot[i].fFacilityId ==  1)// 1 reactor
 			{
-				int Z = toplot[i].fZAI.Z();
-				int A = toplot[i].fZAI.A();
-				int I = toplot[i].fZAI.I();
-
-				double ZAIQuantity = 0;
-
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
-				else
+					ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
+				else if( toplot[i].fIVNumber ==  3 )
 				{
-					cout << "Bad IVNumber" << endl;
-					return;
+					if(reactor[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass()!=0)
+						ZAIQuantity = 1e-3*reactor[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)/reactor[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass();
 				}
-
-				if(PlotId ==  0)
-					ZAIQuantity *=  cZAIMass.GetMass(Z,A)/AVOGADRO*1e-3;
-				else if(PlotId ==  1)
-					ZAIQuantity *=  cZAITox.GetRadioTox(Z,A,I);
-				else if(PlotId ==  2)
-					ZAIQuantity *=  cZAIHeat.GetHeat(Z,A,I);
 				else
 				{
-					cout << "Bad PlotId" << endl;
+					cout << "Bad IVNumber" << endl;
 					return;
 				}
-
-				vQuantity[i].push_back(ZAIQuantity);
-
-				if(Ymin>ZAIQuantity) Ymin = ZAIQuantity;
-				if(Ymax<ZAIQuantity) Ymax = ZAIQuantity;
-
 			}
-			else if(toplot[i].fFacilityId ==  2)
+			else if(toplot[i].fFacilityId ==  2)// 2 Stock
 			{
-				int Z = toplot[i].fZAI.Z();
-				int A = toplot[i].fZAI.A();
-				int I = toplot[i].fZAI.I();
-
-				double ZAIQuantity = 0;
-
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
-				else
+					ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
+				else if( toplot[i].fIVNumber ==  3 )
 				{
-					cout << "Bad IVNumber" << endl;
-					return;
+					if(stock[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass()!=0)
+						ZAIQuantity = 1e-3*stock[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)/stock[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass();
 				}
-				
-				if(PlotId ==  0)
-					ZAIQuantity *=  cZAIMass.GetMass(Z,A)/AVOGADRO*1e-3;
-				else if(PlotId ==  1)
-					ZAIQuantity *=  cZAITox.GetRadioTox(Z,A,I);
-				else if(PlotId ==  2)
-					ZAIQuantity *=  cZAIHeat.GetHeat(Z,A,I);
 				else
 				{
-					cout << "Bad PlotId" << endl;
+					cout << "Bad IVNumber" << endl;
 					return;
 				}
-
-				vQuantity[i].push_back(ZAIQuantity);
-
-
-				if(Ymin>ZAIQuantity) Ymin = ZAIQuantity;
-				if(Ymax<ZAIQuantity) Ymax = ZAIQuantity;
-
 			}
-			else if(toplot[i].fFacilityId ==  3)
+			else if(toplot[i].fFacilityId ==  3)// 3 Pool
 			{
-				int Z = toplot[i].fZAI.Z();
-				int A = toplot[i].fZAI.A();
-				int I = toplot[i].fZAI.I();
-
-				double ZAIQuantity = 0;
-
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
-				else
+					ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
+				else if( toplot[i].fIVNumber ==  3 )
 				{
-					cout << "Bad IVNumber" << endl;
-					return;
+					if(pool[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass()!=0)
+						ZAIQuantity = 1e-3*pool[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)/pool[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass();
 				}
-				
-				if(PlotId ==  0)
-					ZAIQuantity *=  cZAIMass.GetMass(Z,A)/AVOGADRO*1e-3;
-				else if(PlotId ==  1)
-					ZAIQuantity *=  cZAITox.GetRadioTox(Z,A,I);
-				else if(PlotId ==  2)
-					ZAIQuantity *=  cZAIHeat.GetHeat(Z,A,I);
 				else
 				{
-					cout << "Bad PlotId" << endl;
+					cout << "Bad IVNumber" << endl;
 					return;
 				}
-
-				vQuantity[i].push_back(ZAIQuantity);
-
-
-				if(Ymin>ZAIQuantity) Ymin = ZAIQuantity;
-				if(Ymax<ZAIQuantity) Ymax = ZAIQuantity;
-
 			}
-			else if(toplot[i].fFacilityId ==  4)
+			else if(toplot[i].fFacilityId ==  4)// 4 FabricationPlant
 			{
-				int Z = toplot[i].fZAI.Z();
-				int A = toplot[i].fZAI.A();
-				int I = toplot[i].fZAI.I();
-
-				double ZAIQuantity = 0;
-
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
+					ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I);
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
-				else
+					ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I);
+				else if( toplot[i].fIVNumber ==  3 )
 				{
-					cout << "Bad IVNumber" << endl;
-					return;
+					if(fabricationplant[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass()!=0)
+						ZAIQuantity = 1e-3*fabricationplant[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)/fabricationplant[toplot[i].fFacilityNumber]->GetInsideIV().GetActinidesComposition().GetTotalMass();
 				}
-				
-				if(PlotId ==  0)
-					ZAIQuantity *=  cZAIMass.GetMass(Z,A)/AVOGADRO*1e-3;
-				else if(PlotId ==  1)
-					ZAIQuantity *=  cZAITox.GetRadioTox(Z,A,I);
-				else if(PlotId ==  2)
-					ZAIQuantity *=  cZAIHeat.GetHeat(Z,A,I);
 				else
 				{
-					cout << "Bad PlotId" << endl;
+					cout << "Bad IVNumber" << endl;
 					return;
 				}
+			}
+			else
+			{
+				cout << "Bad FacilityId" << endl;
+				return;
+			}
 
-				vQuantity[i].push_back(ZAIQuantity);
-
-				if(Ymin>ZAIQuantity) Ymin = ZAIQuantity;
-				if(Ymax<ZAIQuantity) Ymax = ZAIQuantity;
-
+			if(PlotId ==  0 )
+				ZAIQuantity *=  cZAIMass.GetMass(Z,A)/AVOGADRO*1e-3;
+			else if(PlotId ==  1)
+				ZAIQuantity *=  cZAITox.GetRadioTox(Z,A,I);
+			else if(PlotId ==  2)
+				ZAIQuantity *=  cZAIHeat.GetHeat(Z,A,I);
+			else
+			{
+				cout << "Bad PlotId" << endl;
+				return;
 			}
+				
+			vQuantity[i].push_back(ZAIQuantity);
+
+			if(Ymin>ZAIQuantity) Ymin = ZAIQuantity;
+			if(Ymax<ZAIQuantity) Ymax = ZAIQuantity;
 		}
 
 
@@ -1157,15 +1120,15 @@ void CLASSRead::BuildTGraphUsingDecayChain(vector<CLASSPlotElement> toplot, int
 		fData[toplot[0].fTreeId]->SetBranchStatus(ActiveInBranchName.c_str(),1);
 		
 		if(toplot[i].fFacilityId ==  0)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &IV[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &IV[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  1)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &reactor[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &reactor[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  2)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &stock[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &stock[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  3)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &pool[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &pool[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  4)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &fabricationplant[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &fabricationplant[toplot[i].fFacilityNumber]);
 	}
 	
 	
@@ -1187,7 +1150,7 @@ void CLASSRead::BuildTGraphUsingDecayChain(vector<CLASSPlotElement> toplot, int
 			int Z = toplot[i].fZAI.Z();
 			int A = toplot[i].fZAI.A();
 			int I = toplot[i].fZAI.I();
-			IsotopicVector ZAIQuantity = IV[toplot[i].fFacylityNumber]->GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+			IsotopicVector ZAIQuantity = IV[toplot[i].fFacilityNumber]->GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			
 			vIV[i].push_back(ZAIQuantity);
 			
@@ -1201,11 +1164,11 @@ void CLASSRead::BuildTGraphUsingDecayChain(vector<CLASSPlotElement> toplot, int
 			IsotopicVector ZAIQuantity;
 			
 			if( toplot[i].fIVNumber ==  0 )
-				ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  1 )
-				ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  2 )
-				ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else
 			{
 				cout << "Bad IVNumber" << endl;
@@ -1224,11 +1187,11 @@ void CLASSRead::BuildTGraphUsingDecayChain(vector<CLASSPlotElement> toplot, int
 			IsotopicVector ZAIQuantity;
 			
 			if( toplot[i].fIVNumber ==  0 )
-				ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  1 )
-				ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  2 )
-				ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else
 			{
 				cout << "Bad IVNumber" << endl;
@@ -1247,11 +1210,11 @@ void CLASSRead::BuildTGraphUsingDecayChain(vector<CLASSPlotElement> toplot, int
 			IsotopicVector ZAIQuantity;
 			
 			if( toplot[i].fIVNumber ==  0 )
-				ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  1 )
-				ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  2 )
-				ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else
 			{
 				cout << "Bad IVNumber" << endl;
@@ -1270,11 +1233,11 @@ void CLASSRead::BuildTGraphUsingDecayChain(vector<CLASSPlotElement> toplot, int
 			IsotopicVector ZAIQuantity;
 			
 			if( toplot[i].fIVNumber ==  0 )
-				ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  1 )
-				ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else if( toplot[i].fIVNumber ==  2 )
-				ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
+				ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I) * ZAI(Z,A,I);
 			else
 			{
 				cout << "Bad IVNumber" << endl;
@@ -1720,15 +1683,15 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 		fData[toplot[0].fTreeId]->SetBranchStatus(ActiveInBranchName.c_str(),1);
 
 		if(toplot[i].fFacilityId ==  0)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &IV[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &IV[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  1)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &reactor[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &reactor[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  2)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &stock[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &stock[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  3)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &pool[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &pool[toplot[i].fFacilityNumber]);
 		else if(toplot[i].fFacilityId ==  4)
-			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &fabricationplant[toplot[i].fFacylityNumber]);
+			fData[toplot[i].fTreeId]->SetBranchAddress(InBranchName.c_str(), &fabricationplant[toplot[i].fFacilityNumber]);
 	}
 
 
@@ -1749,7 +1712,7 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 				int Z = toplot[i].fZAI.Z();
 				int A = toplot[i].fZAI.A();
 				int I = toplot[i].fZAI.I();
-				double ZAIQuantity = IV[toplot[i].fFacylityNumber]->GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+				double ZAIQuantity = IV[toplot[i].fFacilityNumber]->GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 
 				vQuantity[i].push_back(ZAIQuantity);
 
@@ -1768,11 +1731,11 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 				double ZAIQuantity = 0;
 
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = reactor[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = reactor[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else
 				{
 					cout << "Bad IVNumber" << endl;
@@ -1794,11 +1757,11 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 				double ZAIQuantity = 0;
 
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = stock[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = stock[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else
 				{
 					cout << "Bad IVNumber" << endl;
@@ -1821,11 +1784,11 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 				double ZAIQuantity = 0;
 
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = pool[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = pool[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else
 				{
 					cout << "Bad IVNumber" << endl;
@@ -1848,11 +1811,11 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 				double ZAIQuantity = 0;
 
 				if( toplot[i].fIVNumber ==  0 )
-					ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetInsideIV().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  1 )
-					ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetCumulativeIVIn().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else if( toplot[i].fIVNumber ==  2 )
-					ZAIQuantity = fabricationplant[toplot[i].fFacylityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
+					ZAIQuantity = fabricationplant[toplot[i].fFacilityNumber]->GetCumulativeIVOut().GetZAIIsotopicQuantity(Z,A,I)*A/6.02e23*1e-3;
 				else
 				{
 					cout << "Bad IVNumber" << endl;
@@ -1924,7 +1887,7 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 				switch (toplot[j].fFacilityId)
 				{
 					case 0:
-						switch (toplot[j].fFacylityNumber)
+						switch (toplot[j].fFacilityNumber)
 					{
 						case 0:
 							name = "TOTAL.";
@@ -1985,21 +1948,21 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 						break;
 
 					case 1:
-						name = "Reactor" + itoa(toplot[j].fFacylityNumber) + ".";
+						name = "Reactor" + itoa(toplot[j].fFacilityNumber) + ".";
 
 
 
 						break;
 
 					case 2:
-						name = "Storage" + itoa(toplot[j].fFacylityNumber) + ".";
+						name = "Storage" + itoa(toplot[j].fFacilityNumber) + ".";
 
 
 
 						break;
 
 					case 3:
-						name = "Pool" + itoa(toplot[j].fFacylityNumber) + ".";
+						name = "Pool" + itoa(toplot[j].fFacilityNumber) + ".";
 
 
 
@@ -2007,7 +1970,7 @@ void CLASSRead::ConvertxmlTTreeMass(vector<CLASSPlotElement> toplot, string file
 						break;
 
 					case 4:
-						name = "FabricationPlant" + itoa(toplot[j].fFacylityNumber) + ".";
+						name = "FabricationPlant" + itoa(toplot[j].fFacilityNumber) + ".";
 
 
 
@@ -2089,7 +2052,7 @@ string CLASSRead::GetBranchInName(CLASSPlotElement toplot)
 	switch (toplot.fFacilityId)
 	{
 		case 0:
-			switch (toplot.fFacylityNumber)
+			switch (toplot.fFacilityNumber)
 		{
 			case 0:
 				name = "TOTAL.";
@@ -2138,23 +2101,23 @@ string CLASSRead::GetBranchInName(CLASSPlotElement toplot)
 			break;
 
 		case 1:
-			name = "R_" + fReactorName[toplot.fTreeId][toplot.fFacylityNumber];
+			name = "R_" + fReactorName[toplot.fTreeId][toplot.fFacilityNumber];
 			return name;
 			break;
 
 		case 2:
-			name = "S_" + fStockName[toplot.fTreeId][toplot.fFacylityNumber];
+			name = "S_" + fStockName[toplot.fTreeId][toplot.fFacilityNumber];
 			return name;
 			break;
 
 		case 3:
-			name = "P_" + fPoolName[toplot.fTreeId][toplot.fFacylityNumber];
+			name = "P_" + fPoolName[toplot.fTreeId][toplot.fFacilityNumber];
 			return name;
 
 			break;
 
 		case 4:
-			name = "F_" + fFabricationName[toplot.fTreeId][toplot.fFacylityNumber];
+			name = "F_" + fFabricationName[toplot.fTreeId][toplot.fFacilityNumber];
 			return name;
 			break;
 
@@ -2179,7 +2142,7 @@ string CLASSRead::GetLegendOutName(CLASSPlotElement toplot)
 			break;
 
 		case 0:
-			switch (toplot.fFacylityNumber)
+			switch (toplot.fFacilityNumber)
 		{
 
 
@@ -2235,23 +2198,23 @@ string CLASSRead::GetLegendOutName(CLASSPlotElement toplot)
 			break;
 
 		case 1:
-			name = "P_{" + itoa(toplot.fTreeId) + "} " + fReactorName[toplot.fTreeId][toplot.fFacylityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
+			name = "P_{" + itoa(toplot.fTreeId) + "} " + fReactorName[toplot.fTreeId][toplot.fFacilityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
 			for (int i = 0; i < toplot.fZAI.I(); i++) name+=  "*";
 			break;
 
 		case 2:
-			name = "P_{" + itoa(toplot.fTreeId) + "} " + fStockName[toplot.fTreeId][toplot.fFacylityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
+			name = "P_{" + itoa(toplot.fTreeId) + "} " + fStockName[toplot.fTreeId][toplot.fFacilityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
 			for (int i = 0; i < toplot.fZAI.I(); i++) name+=  "*";
 			break;
 
 		case 3:
-			name = "P_{" + itoa(toplot.fTreeId) + "} " + fPoolName[toplot.fTreeId][toplot.fFacylityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
+			name = "P_{" + itoa(toplot.fTreeId) + "} " + fPoolName[toplot.fTreeId][toplot.fFacilityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
 			for (int i = 0; i < toplot.fZAI.I(); i++) name+=  "*";
 
 			break;
 
 		case 4:
-			name = "P_{" + itoa(toplot.fTreeId) + "} " + fFabricationName[toplot.fTreeId][toplot.fFacylityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
+			name = "P_{" + itoa(toplot.fTreeId) + "} " + fFabricationName[toplot.fTreeId][toplot.fFacilityNumber] + " ^{" + itoa(toplot.fZAI.A()) + "}" + ReadNucleusName[toplot.fZAI.Z()];
 			for (int i = 0; i < toplot.fZAI.I(); i++) name+=  "*";
 			break;
 
@@ -2296,7 +2259,7 @@ string CLASSRead::GetTittleOutName(CLASSPlotElement toplot)
 	switch (toplot.fFacilityId)
 	{
 		case 0:
-			switch (toplot.fFacylityNumber)
+			switch (toplot.fFacilityNumber)
 		{
 			case 0:
 				name = "PARC "+ itoa(toplot.fTreeId) + " TOTAL " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
@@ -2345,23 +2308,23 @@ string CLASSRead::GetTittleOutName(CLASSPlotElement toplot)
 			break;
 
 		case 1:
-			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fReactorName[toplot.fTreeId][toplot.fFacylityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
+			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fReactorName[toplot.fTreeId][toplot.fFacilityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
 			return name;
 			break;
 
 		case 2:
-			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fStockName[toplot.fTreeId][toplot.fFacylityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
+			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fStockName[toplot.fTreeId][toplot.fFacilityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
 			return name;
 			break;
 
 		case 3:
-			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fPoolName[toplot.fTreeId][toplot.fFacylityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
+			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fPoolName[toplot.fTreeId][toplot.fFacilityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
 			return name;
 
 			break;
 
 		case 4:
-			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fFabricationName[toplot.fTreeId][toplot.fFacylityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
+			name = "PARC "+ itoa(toplot.fTreeId) +  " " + fFabricationName[toplot.fTreeId][toplot.fFacilityNumber] + " " + itoa(toplot.fZAI.Z()) + " " + itoa(toplot.fZAI.A()) + " " + itoa(toplot.fZAI.I());
 			return name;
 			break;
 			
diff --git a/gui/CLASSWin.cxx b/gui/CLASSWin.cxx
index e00d8bf2183a5845383f585d9ce47be4fe939bd0..157713c2ea18351d5f1395809eeaec64b05d8991 100644
--- a/gui/CLASSWin.cxx
+++ b/gui/CLASSWin.cxx
@@ -259,8 +259,8 @@ void MainWin::Start(vector<string> VFileName)
 	fInventoryFrame = new TGGroupFrame(fPlotConfigFoil[0],"", kHorizontalFrame );
 	fPlotConfigFoil[0]->AddFrame(fInventoryFrame,fL5555);
 	
-	fCheckIVPlot = new TGCheckButton*[3];
-	fCheckIVPlot[0] = new TGCheckButton(fInventoryFrame,"Inside",M_CHECK_INSIDE);
+	fCheckIVPlot = new TGCheckButton*[4];
+	fCheckIVPlot[0] = new TGCheckButton(fInventoryFrame,"Inventory",M_CHECK_INSIDE);
 	fCheckIVPlot[0]->SetFont(fLabelFontS);
 	fInventoryFrame->AddFrame(fCheckIVPlot[0],fL2222);
 	fCheckIVPlot[0]->Associate(this);
@@ -275,10 +275,15 @@ void MainWin::Start(vector<string> VFileName)
 	fCheckIVPlot[2]->SetFont(fLabelFontS);
 	fInventoryFrame->AddFrame(fCheckIVPlot[2],fL2222);
 	fCheckIVPlot[2]->Associate(this);
+
+	fCheckIVPlot[3] = new TGCheckButton(fInventoryFrame,"Mass Fraction in HM",M_CHECK_RATIO);
+	fCheckIVPlot[3]->SetFont(fLabelFontS);
+	fInventoryFrame->AddFrame(fCheckIVPlot[3],fL2222);
+	fCheckIVPlot[3]->Associate(this);
 	
 	//Radio/Heat frame
 	//Radio Or Decay subframe
-	fDecayOrRadioFrame = new  TGGroupFrame(fPlotConfigFoil[1],"Radio-toxicity / decay heat" );
+	fDecayOrRadioFrame = new  TGGroupFrame(fPlotConfigFoil[1],"" );
 	fPlotConfigFoil[1]->AddFrame(fDecayOrRadioFrame,fL5555);
 	
 	fButtonHeat = new TGRadioButton(fDecayOrRadioFrame,"Decay Heat",M_RADIO_DECAY_HEAT);
@@ -380,20 +385,29 @@ void MainWin::Start(vector<string> VFileName)
 	//misc check buttons
 	fCheckAMNuc = new TGCheckButton(fMiscHzFrame,"MA",M_CHECK_AM_NUC);
 	fCheckFPNuc = new TGCheckButton(fMiscHzFrame,"FP",M_CHECK_FP_NUC);
-	fCheckSumOfSelected = new TGCheckButton(fMiscHzFrame,"Sum of Selected");
+	fCheckALLNuc = new TGCheckButton(fMiscHzFrame,"All",M_CHECK_ALL_NUC);
+
+	fCBSelected=new TGComboBox(fMiscHzFrame,M_CB_TOX_SELECTED);
+	fCBSelected->AddEntry("Selected",0);
+	fCBSelected->AddEntry("Selected & Sum of selected",1);
+	fCBSelected->AddEntry("Sum of selected only",2);
+	fCBSelected->Select(0);
+	fCBSelected->Resize(200,17);
+
 	
 	fCheckFPNuc->SetFont(fLabelFontS);
 	fCheckAMNuc->SetFont(fLabelFontS);
-	fCheckSumOfSelected->SetFont(fLabelFontS);
+	fCheckALLNuc->SetFont(fLabelFontS);
 	
 	fMiscHzFrame->AddFrame(fCheckAMNuc,fL2222);
 	fMiscHzFrame->AddFrame(fCheckFPNuc,fL2222);
-	fMiscHzFrame->AddFrame(fCheckSumOfSelected,fL2222);
+	fMiscHzFrame->AddFrame(fCheckALLNuc,fL2222);
+	fMiscHzFrame->AddFrame(fCBSelected,fL2222);
 	
 	fCheckFPNuc->Associate(this);
 	fCheckAMNuc->Associate(this);
-	fCheckSumOfSelected->Associate(this);
-	
+	fCheckALLNuc->Associate(this);
+	fCBSelected->Associate(this);	
 	//1 jeu de NucleusTab pour tous
 	
 	//
@@ -499,16 +513,26 @@ bool MainWin::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
 				case M_CHECK_INSIDE:
 					fButtonHeat->SetState(kButtonUp);
 					fButtonRadiotox->SetState(kButtonUp);
+					fCheckIVPlot[3]->SetState(kButtonUp);
 					break;
 					
 				case M_CHECK_CUMIN:
 					fButtonHeat->SetState(kButtonUp);
 					fButtonRadiotox->SetState(kButtonUp);
+					fCheckIVPlot[3]->SetState(kButtonUp);
 					break;
 					
 				case M_CHECK_CUMOUT:
 					fButtonHeat->SetState(kButtonUp);
 					fButtonRadiotox->SetState(kButtonUp);
+					fCheckIVPlot[3]->SetState(kButtonUp);
+					break;
+
+				case M_CHECK_RATIO:
+					fButtonHeat->SetState(kButtonUp);
+					fButtonRadiotox->SetState(kButtonUp);
+					for(int i = 0 ; i<3 ; i++ )
+						fCheckIVPlot[i]->SetState(kButtonUp);
 					break;
 					
 				case M_CHECK_BY_MOTHER:
@@ -562,6 +586,21 @@ bool MainWin::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
 						}
 					}	
 					break;
+				case M_CHECK_ALL_NUC:
+					if(fCheckALLNuc->GetState() == kButtonDown)
+					{	for( int l = 0; l < (int)fDATA->GetZAIvector().size(); l++ )
+						{
+								fCheckArrayNuc[l]->SetState(kButtonDown);
+						}
+					}
+					else
+					{
+						for( int l = 0; l < (int)fDATA->GetZAIvector().size(); l++ )
+						{
+								fCheckArrayNuc[l]->SetState(kButtonUp);
+						}
+					}
+					break;
 			}
 			case kCM_RADIOBUTTON:
 				switch (parm1)
@@ -569,14 +608,14 @@ bool MainWin::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
 				case M_RADIO_DECAY_HEAT:
 					fButtonHeat->SetState(kButtonDown);
 					fButtonRadiotox->SetState(kButtonUp);
-					for(int i = 0 ; i<3 ; i++ )
+					for(int i = 0 ; i<4 ; i++ )
 						fCheckIVPlot[i]->SetState(kButtonUp);
 					break;
 					
 				case M_RADIO_RADIOTOX:
 					fButtonHeat->SetState(kButtonUp);
 					fButtonRadiotox->SetState(kButtonDown);
-					for(int i = 0 ; i<3 ; i++ )
+					for(int i = 0 ; i<4 ; i++ )
 						fCheckIVPlot[i]->SetState(kButtonUp);
 					break;
 					
@@ -639,10 +678,14 @@ void MainWin::Plot()
 	vector<CLASSPlotElement> toplot;
 	vector<CLASSPlotElement> toplotPower;
 	
-	if(fCheckSumOfSelected->GetState() == kButtonDown)
+	if(fCBSelected->GetSelected()==1)
 	{
 		toplot.push_back( CLASSPlotElement(-1, -1, -1, -1,-1,-1,-1) );
 	}
+	else if(fCBSelected->GetSelected()==2)
+	{
+		toplot.push_back( CLASSPlotElement(-10, -10, -10, -10,-10,-10,-10) );
+	}
 	//Power
 	for(int i = 0; i < fNumberOfParc; i++)
 	{
@@ -661,11 +704,26 @@ void MainWin::Plot()
 		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(fButtonRadiotox->GetState() == kButtonDown || fButtonHeat->GetState() == kButtonDown)
 				{
-					if(fCheckArrayNuc[k]->GetState() == kButtonDown)
-						toplot.push_back( CLASSPlotElement(i, 0, j,0, fDATA->GetZAIvector()[k]));
+					for(int k = 0; k < Nnucleus; k++)
+					{
+						if(fCheckArrayNuc[k]->GetState() == kButtonDown)
+							toplot.push_back( CLASSPlotElement(i,0,j,0, fDATA->GetZAIvector()[k]));
+					}
 				}
+				else
+				{
+					for(int l = 0;l<4;l++)
+						if (fCheckIVPlot[l]->GetState() == kButtonDown)
+							for(int k = 0; k < Nnucleus; k++)
+							{
+								if(fCheckArrayNuc[k]->GetState() == kButtonDown)
+									toplot.push_back( CLASSPlotElement(i,0,j,l, fDATA->GetZAIvector()[k]));
+							}
+				}
+			}
 		}
 		
 		for(int j = 0; j < fNumberOfReactor[i]; j++)
@@ -682,7 +740,7 @@ void MainWin::Plot()
 				}
 				else
 				{
-					for(int l = 0;l<3;l++)
+					for(int l = 0;l<4;l++)
 						if (fCheckIVPlot[l]->GetState() == kButtonDown)
 							for(int k = 0; k < Nnucleus; k++)
 							{
@@ -707,7 +765,7 @@ void MainWin::Plot()
 				}
 				else
 				{
-					for(int l = 0;l<3;l++)
+					for(int l = 0;l<4;l++)
 						if (fCheckIVPlot[l]->GetState() == kButtonDown)
 							for(int k = 0; k < Nnucleus; k++)
 							{
@@ -732,7 +790,7 @@ void MainWin::Plot()
 				}
 				else
 				{
-					for(int l = 0;l<3;l++)
+					for(int l = 0;l<4;l++)
 						if (fCheckIVPlot[l]->GetState() == kButtonDown)
 							for(int k = 0; k < Nnucleus; k++)
 							{
@@ -757,7 +815,7 @@ void MainWin::Plot()
 				}
 				else
 				{
-					for(int l = 0;l<3;l++)
+					for(int l = 0;l<4;l++)
 						if (fCheckIVPlot[l]->GetState() == kButtonDown)
 							for(int k = 0; k < Nnucleus; k++)
 							{
@@ -785,7 +843,7 @@ void MainWin::Plot()
 	
 	if(toplot.size() != 0)
 	{
-		for(int i = 0 ; i<3 ; i++ )
+		for(int i = 0 ; i<4 ; i++ )
 		{
 			if(fCheckIVPlot[i]->GetState() == kButtonDown)
 			{	fDATA->PlotInv(toplot,fIsByMother,StartingStep,FinalTime,NStep,IsLinear);
@@ -827,7 +885,7 @@ void MainWin::Conversionxml()
 		{
 			if(fCheckArrayReactor[i][j]->GetState() == kButtonDown)
 			{
-				for(int l  = 0;l<3;l++)
+				for(int l  = 0;l<4;l++)
 					if (fCheckIVPlot[l]->GetState() == kButtonDown)
 						for(int k = 0; k < Nnucleus; k++)
 						{
@@ -840,7 +898,7 @@ void MainWin::Conversionxml()
 		for(int j = 0; j < fNumberOfStock[i]; j++)
 		{
 			if(fCheckArrayStock[i][j]->GetState() == kButtonDown)
-				for(int l  = 0;l<3;l++)
+				for(int l  = 0;l<4;l++)
 					if (fCheckIVPlot[l]->GetState() == kButtonDown)
 						for(int k = 0; k < Nnucleus; k++)
 						{
@@ -852,7 +910,7 @@ void MainWin::Conversionxml()
 		for(int j = 0; j < fNumberOfPool[i]; j++)
 		{
 			if(fCheckArrayPool[i][j]->GetState() == kButtonDown)
-				for(int l  = 0;l<3;l++)
+				for(int l  = 0;l<4;l++)
 					if (fCheckIVPlot[l]->GetState() == kButtonDown)
 						for(int k = 0; k < Nnucleus; k++)
 						{
@@ -864,7 +922,7 @@ void MainWin::Conversionxml()
 		for(int j = 0; j < fNumberOfFab[i]; j++)
 		{
 			if(fCheckArrayFab[i][j]->GetState() == kButtonDown)
-				for(int l  = 0;l<3;l++)
+				for(int l  = 0;l<4;l++)
 					if (fCheckIVPlot[l]->GetState() == kButtonDown)
 						for(int k = 0; k < Nnucleus; k++)
 						{
diff --git a/gui/CLASSWin.hxx b/gui/CLASSWin.hxx
index 999cbf2c6d3482ff0fbd2ad541b67596ed87b1c4..4a77ca81e2913885cc766c47d350f63798613818 100644
--- a/gui/CLASSWin.hxx
+++ b/gui/CLASSWin.hxx
@@ -66,16 +66,19 @@ enum CommandId{
 	M_RADIO_DECAY_HEAT,
 	M_RADIO_RADIOTOX,
 	M_CB_SCENAR_Time,
+	M_CB_TOX_SELECTED,
 	M_CHECK_LINEAR_Tox,
 	M_TE_toxfirst,
 	M_TE_toxlast,
 	M_TE_toxnstep,
 	M_CHECK_AM_NUC,
 	M_CHECK_FP_NUC,
+	M_CHECK_ALL_NUC,
 	M_CHECK_BY_MOTHER,
 	M_CHECK_INSIDE,
 	M_CHECK_CUMIN,
 	M_CHECK_CUMOUT,
+	M_CHECK_RATIO,
 	M_BUTTON_MOTHER_MORE};
 			  
 			  
@@ -173,8 +176,9 @@ private:
 	
 	//misc frame
 	TGCompositeFrame	*fMiscFrame,*fMiscHzFrame;
-	TGCheckButton		*fCheckAMNuc,*fCheckFPNuc,*fCheckSumOfSelected;
-	
+	TGCheckButton		*fCheckAMNuc,*fCheckFPNuc,*fCheckALLNuc;
+	TGComboBox		*fCBSelected;
+
 	//Factories Arrays
 	TGCheckButton ***	fCheckArrayTotal;
 	TGCheckButton ***	fCheckArrayReactor;