From b7f856e58297e2bf480eaecc877d42afaa67e9b7 Mon Sep 17 00:00:00 2001
From: Nicolas Thiolliere <nicolas.thiolliere@subatech.in2p3.fr>
Date: Thu, 30 Mar 2017 16:45:23 +0200
Subject: [PATCH] New direction... On the model of ROOT2DAT.

---
 Utils/ROOT2ROOT/GENERIC/CLASS_R2R             | Bin 0 -> 75576 bytes
 Utils/ROOT2ROOT/GENERIC/CLASS_ROOT2ROOT.cxx   | 256 ++++++---
 Utils/ROOT2ROOT/GENERIC/Makefile              |  14 -
 Utils/ROOT2ROOT/GENERIC/ROOTFileList.txt      |   2 +
 .../ROOT2ROOT/GENERIC/ROOTFileListCrashed.txt |   0
 Utils/ROOT2ROOT/GENERIC/RUN/Makefile          |  61 +++
 Utils/ROOT2ROOT/GENERIC/RUN/inc/Facility.hxx  |  27 +
 Utils/ROOT2ROOT/GENERIC/RUN/inc/Header.hxx    |   8 +
 .../{SSENAR => RUN/inc}/IsotopicVector.hxx    |   0
 Utils/ROOT2ROOT/GENERIC/RUN/inc/Reactor.hxx   |  45 ++
 Utils/ROOT2ROOT/GENERIC/RUN/inc/Run.hxx       |  59 ++
 .../GENERIC/{SSENAR => RUN/inc}/ZAI.hxx       |   0
 Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIHeat.hxx   |  70 +++
 Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIMass.hxx   |  70 +++
 Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAITox.hxx    |  70 +++
 Utils/ROOT2ROOT/GENERIC/RUN/src/Facility.cxx  |  15 +
 .../{SSENAR => RUN/src}/IsotopicVector.cxx    |  12 +-
 Utils/ROOT2ROOT/GENERIC/RUN/src/Reactor.cxx   |  17 +
 Utils/ROOT2ROOT/GENERIC/RUN/src/Run.cxx       |  17 +
 .../GENERIC/{SSENAR => RUN/src}/ZAI.cxx       |   0
 Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIHeat.cxx   |  99 ++++
 Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIMass.cxx   |  78 +++
 Utils/ROOT2ROOT/GENERIC/RUN/src/ZAITox.cxx    |  99 ++++
 Utils/ROOT2ROOT/GENERIC/SSENAR/Linkdef.hxx    |  21 -
 Utils/ROOT2ROOT/GENERIC/SSENAR/Makefile       |  15 -
 Utils/ROOT2ROOT/GENERIC/SSENAR/README.rst     |  14 -
 Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.cxx   | 509 ------------------
 Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.hxx   | 127 -----
 28 files changed, 935 insertions(+), 770 deletions(-)
 create mode 100755 Utils/ROOT2ROOT/GENERIC/CLASS_R2R
 delete mode 100644 Utils/ROOT2ROOT/GENERIC/Makefile
 create mode 100644 Utils/ROOT2ROOT/GENERIC/ROOTFileList.txt
 create mode 100644 Utils/ROOT2ROOT/GENERIC/ROOTFileListCrashed.txt
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/Makefile
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/Facility.hxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/Header.hxx
 rename Utils/ROOT2ROOT/GENERIC/{SSENAR => RUN/inc}/IsotopicVector.hxx (100%)
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/Reactor.hxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/Run.hxx
 rename Utils/ROOT2ROOT/GENERIC/{SSENAR => RUN/inc}/ZAI.hxx (100%)
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIHeat.hxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIMass.hxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAITox.hxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/src/Facility.cxx
 rename Utils/ROOT2ROOT/GENERIC/{SSENAR => RUN/src}/IsotopicVector.cxx (99%)
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/src/Reactor.cxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/src/Run.cxx
 rename Utils/ROOT2ROOT/GENERIC/{SSENAR => RUN/src}/ZAI.cxx (100%)
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIHeat.cxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIMass.cxx
 create mode 100644 Utils/ROOT2ROOT/GENERIC/RUN/src/ZAITox.cxx
 delete mode 100644 Utils/ROOT2ROOT/GENERIC/SSENAR/Linkdef.hxx
 delete mode 100644 Utils/ROOT2ROOT/GENERIC/SSENAR/Makefile
 delete mode 100644 Utils/ROOT2ROOT/GENERIC/SSENAR/README.rst
 delete mode 100644 Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.cxx
 delete mode 100644 Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.hxx

diff --git a/Utils/ROOT2ROOT/GENERIC/CLASS_R2R b/Utils/ROOT2ROOT/GENERIC/CLASS_R2R
new file mode 100755
index 0000000000000000000000000000000000000000..3dad266940b6c68314acc8d8552505201239fc38
GIT binary patch
literal 75576
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

literal 0
HcmV?d00001

diff --git a/Utils/ROOT2ROOT/GENERIC/CLASS_ROOT2ROOT.cxx b/Utils/ROOT2ROOT/GENERIC/CLASS_ROOT2ROOT.cxx
index feda0aa8f..c86a03902 100644
--- a/Utils/ROOT2ROOT/GENERIC/CLASS_ROOT2ROOT.cxx
+++ b/Utils/ROOT2ROOT/GENERIC/CLASS_ROOT2ROOT.cxx
@@ -1,10 +1,7 @@
 /* 
 
-Simple code used to convert root output file produced by CLASS to simple data file
-
-Remains : 
-
-First Cycle Time
+Code to use in Sensitivity Analysis
+Read and store in a TTree N Scenario information (Input and Output)
 
 Authors:
 
@@ -43,33 +40,14 @@ string exec(const char* cmd)
 int main(int argc, char** argv)
 {
 //---------------------------------------------------------------------------------------------------------------------------------------------
-//---------------------------------------------------------------TO ADAPT----------------------------------------------------------------------
+//---------------------------------------------------------------DATA TO CHANGE----------------------------------------------------------------
 //---------------------------------------------------------------------------------------------------------------------------------------------
 
     // Size limits for crashed and correct jobs
     string s_SizeLimit = "14M";
 
 //---------------------------------------------------------------------------------------------------------------------------------------------
-//---------------------------------------------------------------VARIABLES---------------------------------------------------------------------
-//---------------------------------------------------------------------------------------------------------------------------------------------
-
-    string s_tmp; 
-    Long64_t TimeSecond = 0;
-
-    IsotopicVector v_Pu;
-    v_Pu.Add(94,238,0,1);
-    v_Pu.Add(94,239,0,1);
-    v_Pu.Add(94,240,0,1);
-    v_Pu.Add(94,241,0,1);
-    v_Pu.Add(94,242,0,1);
-    v_Pu.Add(95,241,0,1);
-
-    IsotopicVector v_U;
-    v_U.Add(92,238,0,1);
-    v_U.Add(92,235,0,1);
-
-//---------------------------------------------------------------------------------------------------------------------------------------------
-//---------------------------------------------------------------BRANCHES ---------------------------------------------------------------------
+//---------------------------------------------------------------INPUT BRANCHES TO CHANGE------------------------------------------------------
 //---------------------------------------------------------------------------------------------------------------------------------------------
 
     TFile *FileScenario = new TFile("Scenario.root","RECREATE");
@@ -92,7 +70,62 @@ int main(int argc, char** argv)
     double  Fr_SPu  = 0;    TreeScenario->Branch("Fr_SPu",&Fr_SPu,"Fr_SPu/D");
 
 //---------------------------------------------------------------------------------------------------------------------------------------------
-//---------------------------------------------------------------INPUT ------------------------------------------------------------------------
+//---------------------------------------------------------------VARIABLES---------------------------------------------------------------------
+//---------------------------------------------------------------------------------------------------------------------------------------------
+
+    string s_tmp; 
+    Long64_t TimeSecond = 0;
+
+    Long64_t Time = 0;
+    double Power = 0;
+    vector<IsotopicVector *> IV_Branch;
+    int NStocks=0; int NPools=0; int NReactors=0; int NFabPlants=0;
+
+    vector <string> v_Branches; // vector that will contain all the branches stored in the TTree
+
+//---------------------------------------------------------------------------------------------------------------------------------------------
+//---------------------------------------------------------------IV ---------------------------------------------------------------------------
+//---------------------------------------------------------------------------------------------------------------------------------------------
+
+    IsotopicVector v_U;
+    v_U.Add(92,234,0,1);
+    v_U.Add(92,235,0,1);
+    v_U.Add(92,236,0,1);
+    v_U.Add(92,237,0,1);
+    v_U.Add(92,238,0,1);
+    v_U.Add(92,239,0,1);
+
+    IsotopicVector v_Np;
+    v_Np.Add(93,236,0,1);
+    v_Np.Add(93,237,0,1);
+    v_Np.Add(93,238,0,1);
+    v_Np.Add(93,239,0,1);
+
+    IsotopicVector v_Pu;
+    v_Pu.Add(94,238,0,1);
+    v_Pu.Add(94,239,0,1);
+    v_Pu.Add(94,240,0,1);
+    v_Pu.Add(94,241,0,1);
+    v_Pu.Add(94,242,0,1);
+
+    IsotopicVector v_Am;
+    v_Am.Add(95,241,0,1);
+    v_Am.Add(95,242,0,1);
+    v_Am.Add(95,242,1,1);
+    v_Am.Add(95,243,0,1);
+    v_Am.Add(95,244,0,1);
+
+    IsotopicVector v_Cm;
+    v_Cm.Add(96,242,0,1);
+    v_Cm.Add(96,243,0,1);
+    v_Cm.Add(96,244,0,1);
+    v_Cm.Add(96,245,0,1);
+    v_Cm.Add(96,246,0,1);
+    v_Cm.Add(96,247,0,1);
+    v_Cm.Add(96,248,0,1);
+
+//---------------------------------------------------------------------------------------------------------------------------------------------
+//--------------------------------------------------------------- BRANCHES INFO ---------------------------------------------------------------
 //---------------------------------------------------------------------------------------------------------------------------------------------
 
     string PathToROOTFiles = string(argv[1]);
@@ -115,10 +148,80 @@ int main(int argc, char** argv)
     TFile *TFileName = new TFile(s_OneFileForBranches.c_str());
     TTree *fData = new TTree(); 
     fData = (TTree*) gDirectory->Get(TFileName->GetListOfKeys()->At(TFileName->GetNkeys() - 1)->GetName());
+    fData->SetBranchStatus("*", 0); // All branches are unbranched
+    int NBranches = fData->GetListOfBranches()->GetEntries();
+    
+    cout<<endl<<endl<<"################################################"<<endl;
+    cout<<"TTree " << fData->GetName()<<" Loaded "<<endl;
+    cout<<"################################################"<<endl;
+    cout<<"List of existing Branches : "<<endl<<endl;
+    for(int i=0; i<NBranches; i++)
+    {
+        s_tmp = fData->GetListOfBranches()->At(i)->GetName();
+        if(s_tmp[s_tmp.size()-1]=='.') s_tmp = s_tmp.substr(0, s_tmp.size()-1);
+        v_Branches.push_back(s_tmp);
+        cout<<v_Branches[i]<<endl;
+    } 
+    cout<<"################################################"<<endl;
+    cout<<"################################################"<<endl<<endl;
+    
+    // Number of Stocks
+    for(int i=0; i<NBranches; i++) if (v_Branches[i].substr(0,2)=="S_") NStocks++;
+    Storage* B_Stock[NStocks]; int IndiceStock=0;
+    // Number of Pools
+    for(int i=0; i<NBranches; i++) if (v_Branches[i].substr(0,2)=="P_") NPools++;
+    Pool* B_Pool[NPools]; int IndicePool=0;
+    // Number of Reactors
+    for(int i=0; i<NBranches; i++) if (v_Branches[i].substr(0,2)=="R_") NReactors++;
+    Reactor* B_Reactor[NReactors]; int IndiceReactor=0;
+    // Number of Fabrication Plants
+    for(int i=0; i<NBranches; i++) if (v_Branches[i].substr(0,2)=="F_") NFabPlants++;
+    FabricationPlant* B_FabPlant[NFabPlants]; int IndiceFabPlant=0;
+
     //Time Steps
     Long64_t NTime = fData->GetEntries();
     TFileName->Close();
 
+
+
+
+exit(1);
+
+//---------------------------------------------------------------------------------------------------------------------------------------------
+//--------------------------------------------------------------- Fill MATRIX In File----------------------------------------------------------
+//---------------------------------------------------------------------------------------------------------------------------------------------
+
+    // Output data ascii file name
+    //size_t SPos = FileName.find(".root");    FileName.replace(SPos, std::string(".root").length(), ".dat");
+    ofstream DataFileName("Scenario.info"); DataFileName<<scientific<<setprecision(5);
+
+    int NumberOfIsotopes = 7; // Number of group to be printed (i.e. MA, U, FP, Unat, etc...)
+    
+    DataFileName<<"C AbsTime        0"<<endl;
+    DataFileName<<"C ParcPower      1"<<endl;
+    DataFileName<<"C ---------------------------------------------------------------------"<<endl;
+    DataFileName<<"C "<<setw(20)<<" "<<setw(5)<<"U"<<setw(5)<<"Np"<<setw(5)<<"Pu"<<setw(5)<<"Am"<<setw(5)<<"Cm"<<setw(5)<<"MA"<<setw(5)<<"PF"<<endl;
+    DataFileName<<"C ---------------------------------------------------------------------"<<endl;
+    for(int i=2; i<NBranches; i++)
+    {
+        DataFileName<<"C "<<setw(20)<<v_Branches[i]; 
+        //DataFileName.seekp((i-1) * 100 + 20);
+        for(int e=0; e<NumberOfIsotopes; e++)
+        {
+            DataFileName<<setw(5)<<2 + NumberOfIsotopes*(i-2) + e;
+        }DataFileName<<endl;
+        if(i%6==0)
+        {
+            DataFileName<<"C ---------------------------------------------------------------------"<<endl;
+            DataFileName<<"C "<<setw(20)<<" "<<setw(5)<<"U"<<setw(5)<<"Np"<<setw(5)<<"Pu"<<setw(5)<<"Am"<<setw(5)<<"Cm"<<setw(5)<<"MA"<<setw(5)<<"PF"<<endl;
+            DataFileName<<"C ---------------------------------------------------------------------"<<endl;
+        }
+    }
+    DataFileName<<"C ---------------------------------------------------------------------"<<endl;
+    DataFileName<<"C"<<endl;
+    DataFileName<<"C"<<endl;
+    DataFileName<<"C"<<endl;
+
 //---------------------------------------------------------------------------------------------------------------------------------------------
 //---------------------------------------------------------------WRITING ----------------------------------------------------------------------
 //---------------------------------------------------------------------------------------------------------------------------------------------
@@ -138,9 +241,71 @@ int main(int argc, char** argv)
     cout<<endl;
 
 //---------------------------------------------------------------------------------------------------------------------------------------------
-//---------------------------------------------------------------LOAD BRANCHES-----------------------------------------------------------------
+//---------------------------------------------------------------CONNECT BRANCHES--------------------------------------------------------------
 //---------------------------------------------------------------------------------------------------------------------------------------------
 
+    // Time
+    fData->SetBranchStatus("AbsTime", 1);       //Branch activation
+    fData->SetBranchAddress("AbsTime", &Time);  //Connection between variable and Branches
+    // Thermal Power
+    fData->SetBranchStatus("ParcPower", 1);
+    fData->SetBranchAddress("ParcPower", &Power);
+
+    for(int i=0; i<NBranches; i++) IV_Branch.push_back(0);
+
+    for(int i=2; i<NBranches; i++)
+    {
+        if (v_Branches[i].substr(0,2)=="S_")
+        {
+            B_Stock[IndiceStock] = new Storage();
+            fData->SetBranchStatus((v_Branches[i] + "*").c_str(), 1);
+            fData->SetBranchAddress((v_Branches[i] + ".").c_str(), &B_Stock[IndiceStock]);
+            IndiceStock++;
+        }
+        else if (v_Branches[i].substr(0,2)=="P_")
+        {
+            B_Pool[IndicePool] = new Pool();
+            fData->SetBranchStatus((v_Branches[i] + "*").c_str(), 1);
+            fData->SetBranchAddress((v_Branches[i] + ".").c_str(), &B_Pool[IndicePool]);
+            IndicePool++;
+        }
+        else if (v_Branches[i].substr(0,2)=="R_")
+        {
+            B_Reactor[IndiceReactor] = new Reactor();
+            fData->SetBranchStatus((v_Branches[i] + "*").c_str(), 1);
+            fData->SetBranchAddress((v_Branches[i] + ".").c_str(), &B_Reactor[IndiceReactor]);
+            IndiceReactor++;
+        }
+        else if (v_Branches[i].substr(0,2)=="F_")
+        {
+            B_FabPlant[IndiceFabPlant] = new FabricationPlant();
+            fData->SetBranchStatus((v_Branches[i] + "*").c_str(), 1);
+            fData->SetBranchAddress((v_Branches[i] + ".").c_str(), &B_FabPlant[IndiceFabPlant]);
+            IndiceFabPlant++;
+        }
+        else
+        {
+            fData->SetBranchStatus((v_Branches[i] + "*").c_str(), 1);                   //Branch activation
+            fData->SetBranchAddress((v_Branches[i] + ".").c_str(), &IV_Branch[i]);      //Connection between variable and Branches
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+//---------------------------------------------------------------------------------------------------------------------------------------------
+//---------------------------------------------------------------LOAD BRANCHES-----------------------------------------------------------------
+//---------------------------------------------------------------------------------------------------------------------------------------------
+/*
     cout<<endl<<"#########################"<<endl;
     cout<<"Number Of ROOT Files : "<<NumberOfElements<<endl;
     cout<<"Number Of Time Step / Files : "<<NTime<<endl<<endl;
@@ -214,37 +379,7 @@ int main(int argc, char** argv)
         fData->SetBranchStatus((Branchname+"*").c_str(), 1);
         fData->SetBranchAddress((Branchname+".").c_str(), &IV_TOTAL);
 
-        Reactor* PWR_UOX = new Reactor();
-        Branchname = "R_PWR_UOx";
-        ActiveBranchName = Branchname + "*"; 
-        fData->SetBranchStatus(ActiveBranchName.c_str(), 1);
-        fData->SetBranchAddress((Branchname+".").c_str(), &PWR_UOX);
-
-        Reactor* PWR_MOX = new Reactor();
-        Branchname = "R_PWR_MOX";
-        ActiveBranchName = Branchname + "*"; 
-        fData->SetBranchStatus(ActiveBranchName.c_str(), 1);
-        fData->SetBranchAddress((Branchname+".").c_str(), &PWR_MOX);
-
-        Reactor* SFR_MOX = new Reactor();
-        Branchname = "R_SFR_MOX";
-        ActiveBranchName = Branchname + "*"; 
-        fData->SetBranchStatus(ActiveBranchName.c_str(), 1);
-        fData->SetBranchAddress((Branchname+".").c_str(), &SFR_MOX);
-
-        Storage* Stock_UOX = new Storage();
-        Branchname = "S_StockUOx"; 
-        ActiveBranchName = Branchname + "*"; 
-        fData->SetBranchStatus(ActiveBranchName.c_str(), 1);
-        fData->SetBranchAddress((Branchname+".").c_str(), &Stock_UOX);
-
-        Storage* Stock_MOX = new Storage();
-        Branchname = "S_StockMOx"; 
-        ActiveBranchName = Branchname + "*"; 
-        fData->SetBranchStatus(ActiveBranchName.c_str(), 1);
-        fData->SetBranchAddress((Branchname+".").c_str(), &Stock_MOX);
-
-        //---------------------------------------------------------------------------------------------------------------------------------------------
+         //---------------------------------------------------------------------------------------------------------------------------------------------
         //---------------------------------------------------------------LOOP ON EVENTS AND FILE WRITING-----------------------------------------------
         //---------------------------------------------------------------------------------------------------------------------------------------------
 
@@ -269,8 +404,9 @@ int main(int argc, char** argv)
 
     FileScenario->Write();
     FileScenario->Close();
+*/
 }
 
 /*
- g++ -std=c++11 -o CLASS_R2D CLASS_ROOT2DAT.cxx -I $CLASS_include -L $CLASS_lib -lCLASSpkg `root-config --cflags` `root-config --libs` -fopenmp -lgomp -Wunused-result
+ g++ -std=c++11 -o CLASS_R2R CLASS_ROOT2ROOT.cxx -I $CLASS_include -L $CLASS_lib -lCLASSpkg `root-config --cflags` `root-config --libs` -fopenmp -lgomp -Wunused-result
 */
diff --git a/Utils/ROOT2ROOT/GENERIC/Makefile b/Utils/ROOT2ROOT/GENERIC/Makefile
deleted file mode 100644
index b35d0bc1c..000000000
--- a/Utils/ROOT2ROOT/GENERIC/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-SRC=$(wildcard *.cxx)
-OBJ=$(SRC:.cxx=.ex)
-CC=g++ -std=c++11
-LIB=-I ${CLASS_include} -L ${CLASS_lib} -L SSENAR -lCLASSpkg -lSsenar `root-config --cflags` `root-config --libs` -fopenmp -lgomp -Wunused-result -lTMVA
-
-all: $(OBJ)
-
-%.ex: %.cxx
-	${CC} -o $@  $< ${LIB}
-
-clean:
-	rm *.ex
-                                                                    
-
diff --git a/Utils/ROOT2ROOT/GENERIC/ROOTFileList.txt b/Utils/ROOT2ROOT/GENERIC/ROOTFileList.txt
new file mode 100644
index 000000000..a17759cbe
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/ROOTFileList.txt
@@ -0,0 +1,2 @@
+ROOT_FILES/OUT_3.391e+01_3.432e+01_8.256e+01_8.583e-01_1.009e-01_4.077e-02_6.226e+00_3.485e+00_8.609e+00_3.000e+00_1.500e-01/OUT.root
+ROOT_FILES/OUT_5.992e+01_5.275e+01_6.886e+01_8.936e-01_6.936e-02_3.708e-02_9.185e+00_1.902e+01_3.535e+00_4.000e+00_1.900e-01/OUT.root
diff --git a/Utils/ROOT2ROOT/GENERIC/ROOTFileListCrashed.txt b/Utils/ROOT2ROOT/GENERIC/ROOTFileListCrashed.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/Makefile b/Utils/ROOT2ROOT/GENERIC/RUN/Makefile
new file mode 100644
index 000000000..4ab20a8bb
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/Makefile
@@ -0,0 +1,61 @@
+ROOTCFLAGS:=$(shell ${ROOTSYS}/bin/root-config --cflags)
+ROOTGLIBS:=$(shell ${ROOTSYS}/bin/root-config --glibs)
+ROOTLIBS:=$(shell ${ROOTSYS}/bin/root-config --libs)
+
+CXX= g++ -std=c++11
+CXXFLAGS= -O2 -g -fPIC -finline-functions
+
+LIBDIR=lib/
+
+SRC_dir = src/
+INC_dir = inc/
+
+SRC_files = $(wildcard $(SRC_dir)/*.cxx)
+INC_files = $(wildcard $(INC_dir)/*.hxx)
+
+OBJ_dir = obj/
+LIBNAME = Runpkg
+
+# files need a dictionary by ROOT
+OBJ_Dict  = ZAIDict.o \
+			IsotopicVectorDict.o \
+			ReactorDict.o \
+			FacilityDict.o \
+			RunDict.o
+
+# all object files (build from source and dictionry list)
+OBJ  = $(SRC_files:$(SRC_dir)/%.cxx=$(OBJ_dir)/%.o)
+OBJ += $(OBJ_Dict:%.o=$(OBJ_dir)/%.o)
+
+# root object files, I don't understand this one
+ROOTOBJS_ = ZAI.o ZAIDict.o \
+			IsotopicVector.o IsotopicVectorDict.o \
+			Reactor.o ReactorDict.o \
+			Facility.o FacilityDict.o \
+			Run.o RunDict.o
+
+ROOTOBJS  = $(ROOTOBJS_:%.o=$(OBJ_dir)/%.o)
+
+CXXFLAGS += -I$(INC_dir) $(ROOTCFLAGS)
+LD        = $(CXX)
+LIBS      = -L$(LIBDIR) $(ROOTLIBS) -lTMVA $(OMPLIB)
+LDFLAGS  += -shared
+
+all: $(OBJ) $(OBJ_model) $(OBJ_ext)
+	@echo "\033[33m"lib$(LIBNAME).so : "\033[0m"
+	$(LD) $(LDFLAGS) $(OBJ) $(LIBS) -o $(LIBDIR)/lib$(LIBNAME).so
+	@echo "\033[1m    lib$(LIBNAME).so done\033[0m"
+	@echo "\033[33m"lib$(LIBNAME)_root.so : "\033[0m"
+	$(LD) $(LDFLAGS) $(ROOTOBJS) $(LIBS) -o $(LIBDIR)/lib$(LIBNAME)_root.so
+	@echo "\033[1m    lib$(LIBNAME)_root.so done\033[0m"
+
+clean:
+	@echo "\033[41;97;1mclean\033[0m"
+	rm -f $(OBJ) $(OBJ_model) $(OBJ_ext) $(SRC_dir)/*~ $(SRC_dir)/*Dict.cxx $(SRC_dir)/*Dict.h
+
+.SUFFIXES: .cxx
+
+# build standard sources
+$(OBJ_dir)/%.o:		$(SRC_dir)/%.cxx $(INC_files)
+	@echo "\033[95m"$(notdir $@) : "\033[0m"
+	$(CXX) $(CXXFLAGS) -c $< -o $@
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/Facility.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Facility.hxx
new file mode 100644
index 000000000..c26601df8
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Facility.hxx
@@ -0,0 +1,27 @@
+#include <string>
+#include <iostream>
+#include <IsotopicVector.hxx>
+
+using namespace std;
+
+class Facility 
+{
+
+    public : 
+
+    // Constructors
+    Facility();
+    // estructor
+    ~Facility();
+
+    string GetName() {return fName;}
+    void SetName(string Name) {fName = Name;}
+
+    private : 
+
+    string fName;
+    IsotopicVector fIV; // The IV vector according to the time
+
+
+
+   };
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/Header.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Header.hxx
new file mode 100644
index 000000000..63773d6b4
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Header.hxx
@@ -0,0 +1,8 @@
+#include <iostream>
+#include <cmath>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+
+using namespace std;
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/IsotopicVector.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/IsotopicVector.hxx
similarity index 100%
rename from Utils/ROOT2ROOT/GENERIC/SSENAR/IsotopicVector.hxx
rename to Utils/ROOT2ROOT/GENERIC/RUN/inc/IsotopicVector.hxx
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/Reactor.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Reactor.hxx
new file mode 100644
index 000000000..394f80afd
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Reactor.hxx
@@ -0,0 +1,45 @@
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+class Reactor : public Facility
+{
+
+    public : 
+
+    // Constructor
+    Reactor()
+    // Destructor
+    ~Reactor()
+
+    // Get and Set Methods
+
+    string GetFuelType() {return fFuelType;}
+    void SetFuelType(string FuelType) {fFuelType=FuelType;}
+
+    vector <double> GetPower() {return fPower;} // Power as a function of the time
+    void SetPower(vector<double> Power) {fPower=Power;} // Power as a function of the time
+
+    vector <double> GetEnergy() {return fEnergy;} // Energy as a function of the time
+    void Setenergy(vector<double> energy) {fEnergy=Energy;} // Energy as a function of the time
+
+    private :
+
+    string fFuelType;
+
+    vector <double> fPower; // Power as a function of the time
+    vector <double> fEnergy; // Energy as a function of the time
+
+    vector <double> fBurnup;  // BU as a function of the time
+
+    double fStartingTime;
+    double fShutDownTime;
+
+    double fCycleTime;
+    double fThermalPower;
+    double fLoadFactor;
+    double fHMMass;
+
+    vector <IsotopicVector> fIVAtBOC; // IV @ BOC as a function of the time
+};
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/Run.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Run.hxx
new file mode 100644
index 000000000..5131de322
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/Run.hxx
@@ -0,0 +1,59 @@
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+
+
+class Run 
+{
+
+    public :
+  
+    // Contructors
+    Run();
+    // Destructors
+    ~Run();
+
+    // Get and Set methods
+    map<string, double> GetRunParameter() {return fRunParameter;} // The map of user input parameters
+    void SetRunParameter(map<string, double> RunParameter) {fRunParameter=RunParameter;} // The map of user input parameters
+
+    int GetRunID() {return fRunID;} // Integer ID for this run
+    void SetRunID(int RunID) {fRunID=RunID;} // Integer ID for this run
+
+    bool GetRunIsOK() {return fIsOK;} // Tell is Run is OK
+    void SetRunIsOK(bool IsOK) {fIsOK = IsOK;} // Tell is Run is OK
+
+    int GetNTimeStep() {return fNTimeStep;} // Number of Time Steps
+    void SetNTimeStep(int NTimeStep) {fNTimeStep=NTimeStep;} // Number of Time Steps
+
+    vector<double> GetTimeStepVector {return fTimeStepVector;} // Vector of time steps
+    void SetTimeStepVector(vector<double> TimeStepVector) {fTimeStepVector = TimeStepVector;} // Vector of time steps
+
+    private : 
+
+    map<string, double> fRunParameter; // The map of user input parameters
+
+    int fRunID; // Integer ID for this run
+
+    bool fIsOK; // Tell is Run is OK
+
+    int fNTimeStep; // Number of Time Steps
+    vector<double> fTimeStepVector; // Vector of time steps
+
+    // Number of Facilities
+    int fNumberOfFacilities;
+    int fNumberOfRectaors;
+    int fNumberOfStorages;
+    int fNumberOfPools;
+    int fNumberOfFabPlants;
+    int fNumberOfSepPlants;
+
+    // Names of Facilities
+    vector<string> fNamesOfReactors;
+    vector<string> fNamesOfStorages;
+    vector<string> fNamesOfPools;
+    vector<string> fNamesOfFabPlants;
+    vector<string> fNamesOfSepPlants;
+};
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/ZAI.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAI.hxx
similarity index 100%
rename from Utils/ROOT2ROOT/GENERIC/SSENAR/ZAI.hxx
rename to Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAI.hxx
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIHeat.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIHeat.hxx
new file mode 100644
index 000000000..f126c7348
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIHeat.hxx
@@ -0,0 +1,70 @@
+#ifndef _ZAIHeat_
+#define _ZAIHeat_
+
+/*!
+ \file
+ \brief Header file for ZAIHeat classes.
+ 
+ 
+ @author BaM 
+ @author BLG
+ @version 2.0
+ */
+
+#include <map>
+
+#include "ZAI.hxx"
+#include "TObject.h"
+#include <iostream>
+
+using namespace std;
+
+
+class IsotopicVector;
+
+//-----------------------------------------------------------------------------//
+//! Defines the decay heat of a ZAI
+  /*!
+ The aims of this class is to handle decay heat
+ Activity-to-Heat factors are from (92SDOe + M.e.Brendan, dec 98).
+ Values are in CLASS_PATH/data/HeatTox.dat
+
+ @author BLG 
+ @author BaM
+ @version 1.0
+ */
+//________________________________________________________________________
+
+
+class ZAIHeat
+{
+	
+	
+public:
+	/*!
+	 \name Constructor/Desctructor
+	 */
+	//@{
+	
+	ZAIHeat();//!< Normal Constructor.
+	
+	~ZAIHeat();//!< Normal Destructor.
+	//@}
+
+	/*!
+	 \name Fucntions returning decay Heat [W]
+	 */
+	//@{
+	double GetHeat(ZAI zai ) const; //!< get with ZAI
+	double GetHeat(const int Z, const int A, const int I )    const { return GetHeat( ZAI(Z, A, I) ); } //!< Get with Z, A
+	
+	double GetHeat(const IsotopicVector IV)    const; //return Heat of IV [W]
+	//@}
+private:
+	map<ZAI, double> fZAIHeat; //! ZAI Heat list
+
+
+};
+
+
+#endif
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIMass.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIMass.hxx
new file mode 100644
index 000000000..524e699de
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAIMass.hxx
@@ -0,0 +1,70 @@
+#ifndef _ZAIMass_
+#define _ZAIMass_
+
+/*!
+ \file
+ \brief Header file for ZAIMass classes.
+ 
+ 
+ @author BaM 
+ @author BLG
+ @version 2.0
+ */
+
+#include <map>
+
+#include "ZAI.hxx"
+#include "TObject.h"
+#include <iostream>
+
+using namespace std;
+
+
+class IsotopicVector;
+
+//-----------------------------------------------------------------------------//
+//! Defines the molar mass of a ZAI
+
+/*!
+ The aims of this class is to handle the molar mass of each ZAI
+ 
+ @author BaM
+ @author BLG 
+ @version 1.0
+ */
+//________________________________________________________________________
+
+
+class ZAIMass
+{
+	
+	
+public:
+	/*!
+	 \name Constructor/Desctructor
+	 */
+	//@{
+	
+	ZAIMass();//!< Normal Constructor.
+	
+	~ZAIMass();//!< Normal Destructor.
+	//@}
+
+	/*!
+	 \name Fucntions returning molar mass [g/mol]
+	 */
+	//@{
+	double GetMass(ZAI zai ) const; //!< get with ZAI
+	double GetMass(const int Z, const int A )    const { return GetMass( ZAI(Z, A, 0) ); } //!< Get with Z, A
+	//@}
+	
+	double GetMass(const IsotopicVector & IV)    const; //return Mass of IV [t]
+
+private:
+	map<ZAI, double> fZAIMass; //! ZAI mass list
+
+
+};
+
+
+#endif
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAITox.hxx b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAITox.hxx
new file mode 100644
index 000000000..9a7b05904
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/inc/ZAITox.hxx
@@ -0,0 +1,70 @@
+#ifndef _ZAITox_
+#define _ZAITox_
+
+/*!
+ \file
+ \brief Header file for ZAITox classes.
+ 
+ 
+ @author BaM 
+ @author BLG
+ @version 2.0
+ */
+
+#include <map>
+
+#include "ZAI.hxx"
+#include "TObject.h"
+#include <iostream>
+
+using namespace std;
+
+
+class IsotopicVector;
+
+//-----------------------------------------------------------------------------//
+//! Defines the Radiotoxicity of a ZAI
+  /*!
+ The aims of this class is to handle radiotoxicity
+ Activity-to-Sievert factors are from (??).
+ Values are in CLASS_PATH/data/HeatTox.dat
+
+ @author BLG 
+ @author BaM
+ @version 1.0
+ */
+//________________________________________________________________________
+
+
+class ZAITox
+{
+	
+	
+public:
+	/*!
+	 \name Constructor/Desctructor
+	 */
+	//@{
+	
+	ZAITox();//!< Normal Constructor.
+	
+	~ZAITox();//!< Normal Destructor.
+	//@}
+
+	/*!
+	 \name Fucntions returning radiotoxicity [Sv]
+	 */
+	//@{
+	double GetRadioTox(ZAI zai ) const; //!< get with ZAI
+	double GetRadioTox(const int Z, const int A, const int I )    const { return GetRadioTox( ZAI(Z, A, I) ); } //!< Get with Z, A
+	
+	double GetRadioTox(const IsotopicVector IV)    const; //return Heat of IV [W]
+	//@}
+private:
+	map<ZAI, double> fZAITox; //! ZAI Radiotox list
+
+
+};
+
+
+#endif
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/src/Facility.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/Facility.cxx
new file mode 100644
index 000000000..3fb1993f4
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/Facility.cxx
@@ -0,0 +1,15 @@
+#include <Header.hxx>
+#include <Facility.hxx>
+
+using namespace std;
+
+// --------------------------------------------------------
+Facility::Facility()
+{
+
+}
+// --------------------------------------------------------
+Facility::~Facility()
+{
+
+}
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/IsotopicVector.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/IsotopicVector.cxx
similarity index 99%
rename from Utils/ROOT2ROOT/GENERIC/SSENAR/IsotopicVector.cxx
rename to Utils/ROOT2ROOT/GENERIC/RUN/src/IsotopicVector.cxx
index d3c2d0e4b..c94e6ecb9 100644
--- a/Utils/ROOT2ROOT/GENERIC/SSENAR/IsotopicVector.cxx
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/IsotopicVector.cxx
@@ -1,14 +1,6 @@
-#include "IsotopicVector.hxx"
+#include <Header.hxx>
+#include <IsotopicVector.hxx>
 
-#include "CLASSLogger.hxx"
-#include "CLASSConstante.hxx"
-
-
-#include <cmath>
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <algorithm>
 //________________________________________________________________________
 //________________________________________________________________________
 //
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/src/Reactor.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/Reactor.cxx
new file mode 100644
index 000000000..65b54374d
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/Reactor.cxx
@@ -0,0 +1,17 @@
+#include <Header.hxx>
+#include <Reactor.hxx>
+
+using namespace std;
+
+
+// --------------------------------------------------------
+Reactor::Reactor()
+{
+
+}
+// --------------------------------------------------------
+Reactor::~Reactor()
+{
+
+
+}
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/src/Run.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/Run.cxx
new file mode 100644
index 000000000..6c7392aab
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/Run.cxx
@@ -0,0 +1,17 @@
+#include <Header.hxx>
+#include <Run.hxx>
+
+using namespace std;
+
+// --------------------------------------------------------
+Run::Run()
+{
+
+
+}
+// --------------------------------------------------------
+Run::~Run()
+{
+
+
+}
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/ZAI.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAI.cxx
similarity index 100%
rename from Utils/ROOT2ROOT/GENERIC/SSENAR/ZAI.cxx
rename to Utils/ROOT2ROOT/GENERIC/RUN/src/ZAI.cxx
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIHeat.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIHeat.cxx
new file mode 100644
index 000000000..7a51e9f36
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIHeat.cxx
@@ -0,0 +1,99 @@
+#include "ZAIHeat.hxx"
+
+//#include "CLASSConstante.hxx"
+
+#include "stdlib.h"
+#include <fstream>
+#include <string>
+
+#include "IsotopicVector.hxx"
+#include "external/StringLine.hxx"
+
+#include "IrradiationModel.hxx"
+
+	//________________________________________________________________________
+	//
+	//		ZAI
+	//
+	//
+	//
+	//
+	//________________________________________________________________________
+	//____________________________InClass Operator____________________________
+	//________________________________________________________________________
+
+//________________________________________________________________________
+ZAIHeat::ZAIHeat()
+{
+	string  CLASSPATH = getenv("CLASS_PATH");
+	string	HeatToxFile = CLASSPATH + "/data/HeatTox.dat";
+
+	ifstream infile(HeatToxFile.c_str());	
+
+	if(!infile.good())
+	{	
+		cout << "Error in ZAIHeat : can't find/open file " << HeatToxFile << endl;
+		exit(1);
+	}
+
+	IrradiationModel* IM = new IrradiationModel();
+	IM->SetZAIThreshold(0);
+	IM->LoadDecay();
+
+	int Z,A,I;
+	string Name;
+	double WperBq,SvperBq;
+	while (!infile.eof())
+	{	
+		string line;
+		stringstream ossline;
+		getline(infile, line);
+		ossline << line;
+		
+		if(StringLine::IsDouble(line.substr(0,1))) //else is a comment
+		{	ossline>>Z>>A>>I>>WperBq>>SvperBq;
+			fZAIHeat.insert( pair< ZAI,double >( ZAI(Z,A,I),IM->GetDecayConstant(ZAI(Z,A,I))*WperBq) );
+		}	
+	}
+
+	delete IM;
+	infile.close();
+}	
+//________________________________________________________________________
+ZAIHeat::~ZAIHeat()
+{
+	fZAIHeat.clear();
+}
+//________________________________________________________________________
+double ZAIHeat::GetHeat(ZAI zai ) const
+{
+
+	map<ZAI ,double> ZAIHeat = fZAIHeat;
+	map<ZAI ,double>::iterator it;
+	it = ZAIHeat.find(zai);
+
+	if ( it != ZAIHeat.end() )
+	{
+		return it->second;
+	}
+	else
+	{
+		return 0;
+	}
+
+}
+//________________________________________________________________________
+double ZAIHeat::GetHeat(const IsotopicVector IV) const
+{
+	double TotalHeat = 0;
+	
+	map<ZAI ,double >::iterator it;
+	map<ZAI ,double > isotopicquantity = IV.GetIsotopicQuantity();
+	
+	for( it = isotopicquantity.begin(); it != isotopicquantity.end(); it++)
+		TotalHeat += (*it).second * GetHeat( (*it).first ) ;
+	
+	
+	return TotalHeat;
+	
+}
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIMass.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIMass.cxx
new file mode 100644
index 000000000..07cf799e8
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAIMass.cxx
@@ -0,0 +1,78 @@
+#include "ZAIMass.hxx"
+
+//#include "CLASSConstante.hxx"
+
+#include "stdlib.h"
+#include <fstream>
+#include <string>
+
+#include "IsotopicVector.hxx"
+	//________________________________________________________________________
+	//
+	//		ZAI
+	//
+	//
+	//
+	//
+	//________________________________________________________________________
+	//____________________________InClass Operator____________________________
+	//________________________________________________________________________
+
+
+ZAIMass::ZAIMass()
+{
+	string  CLASSPATH = getenv("CLASS_PATH");
+	string	MassDataFile = CLASSPATH + "/data/Mass.dat";
+
+	ifstream infile(MassDataFile.c_str());	
+
+	if(!infile.good())
+	{	
+		cout << " ZAIMass Error.\n can't find/open file " << MassDataFile << endl;
+		exit(1);
+	}
+
+	int Z,A;
+	string Name;
+	double MassUnity,MassDec,error;
+	while (infile>>Z>>A>>Name>>MassUnity>>MassDec>>error)
+	{
+		double Masse = MassUnity + MassDec * 1e-6;
+		fZAIMass.insert( pair< ZAI,double >( ZAI(Z,A,0), Masse ) );
+	}
+
+	infile.close();
+}
+
+
+ZAIMass::~ZAIMass()
+{
+	fZAIMass.clear();
+}
+
+
+double ZAIMass::GetMass( ZAI zai ) const
+{
+	map<ZAI,double>::const_iterator  MassIT = fZAIMass.find( ZAI(zai.Z(), zai.A(), 0) );
+
+	if(MassIT == fZAIMass.end())
+		return zai.A();
+	else
+	   return MassIT->second;
+
+}
+
+
+double ZAIMass::GetMass(const IsotopicVector & IV) const
+{
+	double AVOGADRO = 6.02214129e23;
+	double TotalMass = 0;
+
+	for( IsotopicVector::const_iterator it = IV.begin(); it != IV.end(); it++)
+	{
+		TotalMass += it->second/AVOGADRO * GetMass( it->first ) ;
+	}
+
+	return TotalMass*1e-6;
+
+}
diff --git a/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAITox.cxx b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAITox.cxx
new file mode 100644
index 000000000..7b340e883
--- /dev/null
+++ b/Utils/ROOT2ROOT/GENERIC/RUN/src/ZAITox.cxx
@@ -0,0 +1,99 @@
+#include "ZAITox.hxx"
+
+//#include "CLASSConstante.hxx"
+
+#include "stdlib.h"
+#include <fstream>
+#include <string>
+
+#include "IsotopicVector.hxx"
+#include "external/StringLine.hxx"
+
+#include "IrradiationModel.hxx"
+
+	//________________________________________________________________________
+	//
+	//		ZAI
+	//
+	//
+	//
+	//
+	//________________________________________________________________________
+	//____________________________InClass Operator____________________________
+	//________________________________________________________________________
+
+//________________________________________________________________________
+ZAITox::ZAITox()
+{
+	string  CLASSPATH = getenv("CLASS_PATH");
+	string	HeatToxFile = CLASSPATH + "/data/HeatTox.dat";
+
+	ifstream infile(HeatToxFile.c_str());	
+
+	if(!infile.good())
+	{	
+		cout << "Error in ZAITox : can't find/open file " << HeatToxFile << endl;
+		exit(1);
+	}
+
+	IrradiationModel* IM = new IrradiationModel();
+	IM->SetZAIThreshold(1);
+	IM->LoadDecay();
+
+	int Z,A,I;
+	string Name;
+	double WperBq,SvperBq;
+	while (!infile.eof())
+	{	
+		string line;
+		stringstream ossline;
+		getline(infile, line);
+		ossline << line;
+		
+		if(StringLine::IsDouble(line.substr(0,1))) //else is a comment
+		{	ossline>>Z>>A>>I>>WperBq>>SvperBq;
+			fZAITox.insert( pair< ZAI,double >( ZAI(Z,A,I),IM->GetDecayConstant(ZAI(Z,A,I))*SvperBq) );
+		}	
+	}
+
+	delete IM;
+	infile.close();
+}	
+//________________________________________________________________________
+ZAITox::~ZAITox()
+{
+	fZAITox.clear();
+}
+//________________________________________________________________________
+double ZAITox::GetRadioTox(ZAI zai ) const
+{
+
+	map<ZAI ,double> ZAITox = fZAITox;
+	map<ZAI ,double>::iterator it;
+	it = ZAITox.find(zai);
+
+	if ( it != ZAITox.end() )
+	{
+		return it->second;
+	}
+	else
+	{
+		return 0;
+	}
+
+}
+//________________________________________________________________________
+double ZAITox::GetRadioTox(const IsotopicVector IV) const
+{
+	double TotalTox = 0;
+	
+	map<ZAI ,double >::iterator it;
+	map<ZAI ,double > isotopicquantity = IV.GetIsotopicQuantity();
+	
+	for( it = isotopicquantity.begin(); it != isotopicquantity.end(); it++)
+		TotalTox += (*it).second * GetRadioTox( (*it).first ) ;
+	
+	
+	return TotalTox;
+	
+}
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/Linkdef.hxx b/Utils/ROOT2ROOT/GENERIC/SSENAR/Linkdef.hxx
deleted file mode 100644
index 51a6545d0..000000000
--- a/Utils/ROOT2ROOT/GENERIC/SSENAR/Linkdef.hxx
+++ /dev/null
@@ -1,21 +0,0 @@
-// =====================================================================================
-
-#include "ZAI.hxx"
-#include "IsotopicVector.hxx"
-#include "Scenar_t.hxx"
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-#pragma link C++ nestedclasses;
-
-
-#pragma link C++ class pair<ZAI,double>+;
-#pragma link C++ class map<ZAI,double>+;
-#pragma link C++ class vector<IsotopicVector*>+;
-#pragma link C++ class Scenar_t+;
-#pragma link C++ all_functions Scenar_t;
-
-#endif
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/Makefile b/Utils/ROOT2ROOT/GENERIC/SSENAR/Makefile
deleted file mode 100644
index cc32d372c..000000000
--- a/Utils/ROOT2ROOT/GENERIC/SSENAR/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-CC=g++ -std=c++11 -shared
-LIBCINT=-I${CLASS_include}
-LIB=`root-config --ldflags` -I${ROOTSYS}/include -I${CLASS_include} -L${CLASS_lib} -lCLASSpkg -fPIC -fopenmp -lgomp -Wunused-result
-
-all: libSsenar.so
-
-Scenar_t_dict.cxx: ZAI.hxx IsotopicVector.hxx Scenar_t.hxx Linkdef.hxx
-	rootcint -f $@ -c ${LIBCINT} -p $^
-
-libSsenar.so: Scenar_t_dict.cxx  ZAI.cxx IsotopicVector.cxx Scenar_t.cxx
-	${CC} -o $@  ${LIB} $^
-
-clean:
-	rm libSsenar.so *dict*
-                                                                    
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/README.rst b/Utils/ROOT2ROOT/GENERIC/SSENAR/README.rst
deleted file mode 100644
index c0a6bf1db..000000000
--- a/Utils/ROOT2ROOT/GENERIC/SSENAR/README.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-class Scenar_t
-==============
-
-Les objets de type **Scenar_t** sont utilisés pour décrire un *scénario* CLASS. En pratique les attributs de **Scenar_t** sont les paramètres qui identifient le scénario. Par exemple, dans une étude multiparamétrique ces attributs sont (au minimum) les paramètres avec lesquels on exécutes CLASS_Exec :
-
-* Burn-Up
-* Nbre de rechargements
-* Facteur de charge
-* Temps de refroidissement
-* Temps de fabrication
-* Vecteurs Isotopiques (Dans les différentes étapes du cycle combustible)
-* ...
-
-L'utilisation des objets **Scenar_t** implique que l'ensemble des observables d'intérêt, par exemple l'inventaire total des noyaux, ne soient accessibles que par des methodes internes de la class. L'objectif est de pouvoir calculer ce que l'on veut à la demande.
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.cxx b/Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.cxx
deleted file mode 100644
index b08404864..000000000
--- a/Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.cxx
+++ /dev/null
@@ -1,509 +0,0 @@
-// =====================================================================================
-
-#include "Scenar_t.hxx"
-
-ClassImp(Scenar_t) // Needed by ROOT
-
-//    
-// Const
-// =====================================================================================
-Scenar_t::Scenar_t():TObject()
-{
-    NTimeStep = 0;
-    S_IsOk = false ;
-    //
-    UOx_CT = 0.0;
-    MOx_CT = 0.0;
-    // Cumulated Number of Load
-    UOx_NLOAD = 0;
-    MOx_NLOAD = 0;
-    MOx_MLOAD = 0;
-}
-Scenar_t::Scenar_t(const unsigned short vlength):TObject()
-{
-
-        NTimeStep = vlength;
-        Time.resize(vlength); // [Year]
-        Power.resize(vlength);
-        //
-        S_IsOk = false ;
-        //
-        UOx_CT = 0.0;
-        MOx_CT = 0.0;
-        // Cumulated Number of Load
-        UOx_NLOAD = 0;
-        MOx_NLOAD = 0;
-        MOx_MLOAD = 0;
-
-        // Facilities IV of Interest
-        //
-        v_PWR_UOx_BOC.resize(vlength);
-        v_PWR_MOx_BOC.resize(vlength);
-               
-        v_PWR_UOx_EOC.resize(vlength);
-        v_PWR_MOx_EOC.resize(vlength);
-
-        v_StockUOx_CIN.resize(vlength);
-        v_StockUOx_COU.resize(vlength);
-        v_StockUOx.resize(vlength);
-
-        v_StockMOx_CIN.resize(vlength);
-        v_StockMOx_COU.resize(vlength);
-        v_StockMOx.resize(vlength);
-        
-        // Isotopic vectors, CYCLE
-        //
-        v_IVTOTAL.resize(vlength);
-        v_IVINCYCLE.resize(vlength);
-        v_IVWASTE.resize(vlength);
-}
-//
-// Dest
-// =====================================================================================
-Scenar_t::~Scenar_t()
-{}
-
-//
-// Methods
-// =====================================================================================
-
-void Scenar_t::Print()
-{
-
-    cout << " =============================================================== " << endl;
-    cout << " Scenario Info " << endl;
-    cout << " BU_UOx   : " << this->BU_UOx    << endl;
-    cout << " TC_UOx   : " << this->TC_UOx    << endl;
-    cout << " BU_MOx   : " << this->BU_MOx    << endl;
-    cout << " TC_MOx   : " << this->TC_MOx    << endl;
-    cout << " TF_MOx   : " << this->TF_MOx    << endl;
-    cout << " IsMOxAm  : " << this->IsMOxAm   << endl;
-    cout << " Fr_MOx   : " << this->Fr_MOx    << endl;
-    cout << " NB_Fuel  : " << this->NB_Fuel   << endl;
-    cout << " Ks_Fuel  : " << this->Ks_Fuel   << endl;
-    cout << " LF_Fuel  : " << this->LF_Fuel   << endl;
-    cout << " StMMOx   : " << this->StMMOx    << endl;
-    cout << " NTimeStep: " << this->NTimeStep << endl;
-    cout << " TimeStep : " << this->TimeStep  << endl;
-    cout << " S_IsOk   : " << this->S_IsOk    << endl;
-    cout << " =============================================================== " << endl;
-
-}
-
-
-void Scenar_t::Clear()
-{
-
-        Time.clear(); // [Year]
-        Power.clear();
-
-        // Facilities IV of Interest
-        //
-        v_PWR_UOx_BOC.clear();
-        v_PWR_MOx_BOC.clear();
-               
-        v_PWR_UOx_EOC.clear();
-        v_PWR_MOx_EOC.clear();
-
-        v_StockUOx_CIN.clear();
-        v_StockUOx_COU.clear();
-        v_StockUOx.clear();
-
-        v_StockMOx_CIN.clear();
-        v_StockMOx_COU.clear();
-        v_StockMOx.clear();
-        
-        // Isotopic vectors, CYCLE
-        //
-        v_IVTOTAL.clear();
-        v_IVINCYCLE.clear();
-        v_IVWASTE.clear();
-}
-
-
-// =====================================================================================
-
-vector<double> Scenar_t::GetPWR_UOx_BOC(unsigned short Z)
-{//
-    vector<double> v_tBOC;
-    v_tBOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tBOC.push_back(this->v_PWR_UOx_BOC[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tBOC;
-}
-
-vector<double> Scenar_t::GetPWR_UOx_BOC(unsigned short Z, unsigned short A, unsigned short I)
-{//
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tBOC;
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tBOC.push_back(this->v_PWR_UOx_BOC[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tBOC;
-}
-///
-
-vector<double> Scenar_t::GetPWR_MOx_BOC(unsigned short Z)
-{//
-    vector<double> v_tBOC;
-    v_tBOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tBOC.push_back(this->v_PWR_MOx_BOC[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tBOC;
-}
-
-vector<double> Scenar_t::GetPWR_MOx_BOC(unsigned short Z, unsigned short A, unsigned short I)
-{//
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tBOC;
-    v_tBOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tBOC.push_back(this->v_PWR_MOx_BOC[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tBOC;
-}
-
-////
-
-vector<double> Scenar_t::GetPWR_UOx_EOC(unsigned short Z)
-{//
-    vector<double> v_tEOC;
-    v_tEOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tEOC.push_back(this->v_PWR_UOx_EOC[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tEOC;
-}
-
-vector<double> Scenar_t::GetPWR_UOx_EOC(unsigned short Z, unsigned short A, unsigned short I)
-{//
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tEOC;
-    v_tEOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tEOC.push_back(this->v_PWR_UOx_EOC[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tEOC;
-}
-///
-
-vector<double> Scenar_t::GetPWR_MOx_EOC(unsigned short Z)
-{//
-    vector<double> v_tEOC;
-    v_tEOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tEOC.push_back(this->v_PWR_MOx_EOC[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tEOC;
-}
-
-vector<double> Scenar_t::GetPWR_MOx_EOC(unsigned short Z, unsigned short A, unsigned short I)
-{//
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tEOC;
-    v_tEOC.reserve(this->NTimeStep);
-    for (unsigned short i = 0; i < this->NTimeStep; i++){
-        v_tEOC.push_back(this->v_PWR_MOx_EOC[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tEOC;
-}
-
-
-// =====================================================================================
-
-vector<double> Scenar_t::GetTotalInvOfIsotope(unsigned short Z)
-{
-    vector<double> v_tTotalInv;
-    v_tTotalInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tTotalInv.push_back((this->v_IVTOTAL)[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tTotalInv;
-}
-
-vector<double> Scenar_t::GetTotalInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tTotalInv;
-    v_tTotalInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tTotalInv.push_back((this->v_IVTOTAL)[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tTotalInv;
-}
-
-double Scenar_t::GetTotalInvOfIsotopeAtTime(unsigned short Z, double time)
-{
-    if (this->v_IVTOTAL.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        return  (this->v_IVTOTAL)[i]->GetSpeciesComposition(Z).GetTotalMass();
-    }
-}
-
-double Scenar_t::GetTotalInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time)
-{
-    if (this->v_IVTOTAL.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        IsotopicVector tIV; tIV.Add(Z,A,I,1);
-        //
-        return  (this->v_IVTOTAL)[i]->GetThisComposition(tIV).GetTotalMass();
-    }
-}
-
-// =====================================================================================
-
-vector<double> Scenar_t::GetIncycleInvOfIsotope(unsigned short Z)
-{
-    vector<double> v_tIncycleInv;
-    v_tIncycleInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tIncycleInv.push_back((this->v_IVINCYCLE)[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tIncycleInv;
-}
-
-vector<double> Scenar_t::GetIncycleInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tIncycleInv;
-    v_tIncycleInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tIncycleInv.push_back((this->v_IVINCYCLE)[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tIncycleInv;
-}
-
-double Scenar_t::GetIncycleInvOfIsotopeAtTime(unsigned short Z, double time)
-{
-    if (this->v_IVINCYCLE.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        return  (this->v_IVINCYCLE)[i]->GetSpeciesComposition(Z).GetTotalMass();
-    }
-}
-
-double Scenar_t::GetIncycleInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time)
-{
-    if (this->v_IVINCYCLE.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        IsotopicVector tIV; tIV.Add(Z,A,I,1);
-        //
-        return  (this->v_IVINCYCLE)[i]->GetThisComposition(tIV).GetTotalMass();
-    }
-}
-
-
-// =====================================================================================
-
-vector<double> Scenar_t::GetWasteInvOfIsotope(unsigned short Z)
-{
-    vector<double> v_tWasteInv;
-    v_tWasteInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tWasteInv.push_back((this->v_IVWASTE)[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tWasteInv;
-}
-
-vector<double> Scenar_t::GetWasteInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tWasteInv;
-    v_tWasteInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tWasteInv.push_back((this->v_IVWASTE)[i]->GetThisComposition(tIV).GetTotalMass());
-    }
-    return v_tWasteInv;
-}
-
-double Scenar_t::GetWasteInvOfIsotopeAtTime(unsigned short Z, double time)
-{
-    if (this->v_IVWASTE.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        return  (this->v_IVWASTE)[i]->GetSpeciesComposition(Z).GetTotalMass();
-    }
-}
-
-
-double Scenar_t::GetWasteInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time)
-{
-    if (this->v_IVWASTE.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        IsotopicVector tIV; tIV.Add(Z,A,I,1);
-        //
-        return  (this->v_IVWASTE)[i]->GetThisComposition(tIV).GetTotalMass();
-    }
-}
-
-
-// =====================================================================================
-
-vector<double> Scenar_t::GetStockUOxFlux(unsigned short Z)
-{
-    vector<double> v_tStockUOxFlux;
-    v_tStockUOxFlux.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){
-        double cumin = (this->v_StockUOx_CIN[i])->GetSpeciesComposition(Z).GetTotalMass();
-        double cumout = (this->v_StockUOx_COU[i])->GetSpeciesComposition(Z).GetTotalMass();
-
-        v_tStockUOxFlux.push_back(cumin - cumout);
-    }
-    return v_tStockUOxFlux;
-}
-
-vector<double> Scenar_t::GetStockUOxFlux(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tStockUOxFlux;
-    v_tStockUOxFlux.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){
-        double cumin = (this->v_StockUOx_CIN[i])->GetThisComposition(tIV).GetTotalMass();
-        double cumout = (this->v_StockUOx_COU[i])->GetThisComposition(tIV).GetTotalMass();
-        v_tStockUOxFlux.push_back(cumin - cumout);
-    }
-    return v_tStockUOxFlux;
-}
-
-vector<double> Scenar_t::GetStockUOxInvOfIsotope(unsigned short Z)
-{
-    vector<double> v_tStockInv;
-    v_tStockInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tStockInv.push_back((this->v_StockUOx)[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tStockInv;
-}
-
-
-vector<double> Scenar_t::GetStockUOxInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tStockInv;
-    v_tStockInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-
-        v_tStockInv.push_back((this->v_StockUOx)[i]->GetThisComposition(tIV).GetTotalMass());
-
-    }
-    return v_tStockInv;
-}
-
-
-double Scenar_t::GetStockUOxInvOfIsotopeAtTime(unsigned short Z, double time)
-{
-    if (this->v_StockUOx.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        //
-        return (this->v_StockUOx)[i]->GetSpeciesComposition(Z).GetTotalMass();
-    }
-}
-
-
-double Scenar_t::GetStockUOxInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time)
-{
-    if (this->v_StockUOx.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        IsotopicVector tIV; tIV.Add(Z,A,I,1);
-        //
-        return (this->v_StockUOx)[i]->GetThisComposition(tIV).GetTotalMass();
-    }
-}
-
-////
-
-vector<double> Scenar_t::GetStockMOxFlux(unsigned short Z)
-{
-    vector<double> v_tStockMOxFlux;
-    v_tStockMOxFlux.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){
-        double cumin = (this->v_StockMOx_CIN[i])->GetSpeciesComposition(Z).GetTotalMass();
-        double cumout = (this->v_StockMOx_COU[i])->GetSpeciesComposition(Z).GetTotalMass();
-
-        v_tStockMOxFlux.push_back(cumin - cumout);
-    }
-    return v_tStockMOxFlux;
-}
-
-vector<double> Scenar_t::GetStockMOxFlux(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tStockMOxFlux;
-    v_tStockMOxFlux.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){
-        double cumin = (this->v_StockMOx_CIN[i])->GetThisComposition(tIV).GetTotalMass();
-        double cumout = (this->v_StockMOx_COU[i])->GetThisComposition(tIV).GetTotalMass();
-        v_tStockMOxFlux.push_back(cumin - cumout);
-    }
-    return v_tStockMOxFlux;
-}
-
-vector<double> Scenar_t::GetStockMOxInvOfIsotope(unsigned short Z)
-{
-    vector<double> v_tStockInv;
-    v_tStockInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-        v_tStockInv.push_back((this->v_StockMOx)[i]->GetSpeciesComposition(Z).GetTotalMass());
-    }
-    return v_tStockInv;
-}
-
-
-vector<double> Scenar_t::GetStockMOxInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I)
-{
-    IsotopicVector tIV; tIV.Add(Z,A,I,1);
-    vector<double> v_tStockInv;
-    v_tStockInv.reserve(this->NTimeStep);
-    //
-    for (unsigned short i =0; i < this->NTimeStep; i++){//
-
-        v_tStockInv.push_back((this->v_StockMOx)[i]->GetThisComposition(tIV).GetTotalMass());
-
-    }
-    return v_tStockInv;
-}
-
-
-double Scenar_t::GetStockMOxInvOfIsotopeAtTime(unsigned short Z, double time)
-{
-    if (this->v_StockMOx.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        //
-        return (this->v_StockMOx)[i]->GetSpeciesComposition(Z).GetTotalMass();
-    }
-}
-
-
-double Scenar_t::GetStockMOxInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time)
-{
-    if (this->v_StockMOx.empty()) return 0.0;
-    else{
-        unsigned short i = (unsigned short) (time/(this->TimeStep));
-        IsotopicVector tIV; tIV.Add(Z,A,I,1);
-        //
-        return (this->v_StockMOx)[i]->GetThisComposition(tIV).GetTotalMass();
-    }
-}
-
diff --git a/Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.hxx b/Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.hxx
deleted file mode 100644
index 010eca4b6..000000000
--- a/Utils/ROOT2ROOT/GENERIC/SSENAR/Scenar_t.hxx
+++ /dev/null
@@ -1,127 +0,0 @@
-#ifndef SCENAR_T_HXX
-#define SCENAR_T_HXX
-
-#include <vector>
-
-#include "ZAI.hxx"
-#include "IsotopicVector.hxx"
-#include "TObject.h"
-
-//
-// data structure
-//
-
-// Length of the vector for the constuctor
-// this is actually equivalent to NTimeStep
-
-class ZAI;
-class Isotopicvector;
-//
-class Scenar_t: public TObject
-{
-    public:
-        //
-        Scenar_t();
-        Scenar_t(const unsigned short vlength);
-        virtual ~Scenar_t();
-        //
-        double BU_UOx; // [GWd/t]
-        double TC_UOx;
-        double BU_MOx;
-        double TC_MOx;
-        double TF_MOx;
-        bool  IsMOxAm; //
-        double Fr_MOx; // [%]
-        double NB_Fuel;
-        double Ks_Fuel;
-        double LF_Fuel;
-        unsigned short StMMOx;
-        unsigned short NTimeStep;
-        double TimeStep;
-        vector<double> Time; // [Year]
-        vector<double> Power;
-        //
-        bool S_IsOk;
-        //
-        double UOx_CT;
-        double MOx_CT;
-        // Cumulated Number of Load
-        unsigned short UOx_NLOAD;
-        unsigned short MOx_NLOAD;
-        unsigned short MOx_MLOAD;
-
-        // Facilities IV of Interest
-        //
-        vector<IsotopicVector*> v_PWR_UOx_BOC;
-        vector<IsotopicVector*> v_PWR_MOx_BOC;
-               
-        vector<IsotopicVector*> v_PWR_UOx_EOC;
-        vector<IsotopicVector*> v_PWR_MOx_EOC;
-
-        vector<IsotopicVector*> v_StockUOx_CIN;
-        vector<IsotopicVector*> v_StockUOx_COU;
-        vector<IsotopicVector*> v_StockUOx;
-
-        vector<IsotopicVector*> v_StockMOx_CIN;
-        vector<IsotopicVector*> v_StockMOx_COU;
-        vector<IsotopicVector*> v_StockMOx;
-        
-        // Isotopic vectors, CYCLE
-        //
-        vector<IsotopicVector*> v_IVTOTAL;
-        vector<IsotopicVector*> v_IVINCYCLE;
-        vector<IsotopicVector*> v_IVWASTE;
-
-        // 
-        // Methods
-        //
-
-        void Print();
-        void Clear();
-        //
-        vector<double>  GetPWR_UOx_BOC(unsigned short Z); // 
-        vector<double>  GetPWR_UOx_BOC(unsigned short Z, unsigned short A, unsigned short I=0);
-        vector<double>  GetPWR_MOx_BOC(unsigned short Z);
-        vector<double>  GetPWR_MOx_BOC(unsigned short Z, unsigned short A, unsigned short I=0);
-
-        vector<double>  GetPWR_UOx_EOC(unsigned short Z); //
-        vector<double>  GetPWR_UOx_EOC(unsigned short Z, unsigned short A, unsigned short I=0); //
-        vector<double>  GetPWR_MOx_EOC(unsigned short Z);
-        vector<double>  GetPWR_MOx_EOC(unsigned short Z, unsigned short A, unsigned short I=0);
-
-        //
-        vector<double>  GetTotalInvOfIsotope(unsigned short Z);
-        vector<double>  GetTotalInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I=0);
-        double    GetTotalInvOfIsotopeAtTime(unsigned short Z, double Time);
-        double    GetTotalInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time);
-
-        vector<double>  GetIncycleInvOfIsotope(unsigned short Z);
-        vector<double>  GetIncycleInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I=0);
-        double    GetIncycleInvOfIsotopeAtTime(unsigned short Z, double Time);
-        double    GetIncycleInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time);
-
-        vector<double>  GetWasteInvOfIsotope(unsigned short Z);
-        vector<double>  GetWasteInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I=0);
-        double    GetWasteInvOfIsotopeAtTime(unsigned short Z, double Time);
-        double    GetWasteInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time);
-
-        vector<double>  GetStockUOxFlux(unsigned short Z);
-        vector<double>  GetStockUOxFlux(unsigned short Z, unsigned short A, unsigned short I=0);
-        vector<double>  GetStockUOxInvOfIsotope(unsigned short Z);
-        vector<double>  GetStockUOxInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I=0);
-        double  GetStockUOxInvOfIsotopeAtTime(unsigned short Z, double time);
-        double  GetStockUOxInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time);
-
-        vector<double>  GetStockMOxFlux(unsigned short Z);
-        vector<double>  GetStockMOxFlux(unsigned short Z, unsigned short A, unsigned short I=0);
-        vector<double>  GetStockMOxInvOfIsotope(unsigned short Z);
-        vector<double>  GetStockMOxInvOfIsotope(unsigned short Z, unsigned short A, unsigned short I=0);
-        double  GetStockMOxInvOfIsotopeAtTime(unsigned short Z, double time);
-        double  GetStockMOxInvOfIsotopeAtTime(unsigned short Z, unsigned short A, unsigned short I, double time);
-
-        //
-        ClassDef (Scenar_t,1)
-
-};
-
-#endif
-- 
GitLab