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