#include "headers/Transport.h" #include "headers/Source.h" #include "headers/Utility.h" #include "headers/Output.h" #include "headers/OuterSource.h" #include "headers/Dispersion.h" #include "headers/Dose.h" #include "TROOT.h" #include "TSystem.h" #include "TF1.h" #include "TString.h" #include "TH1F.h" #include "TUnuran.h" #include "TUnuranEmpDist.h" #include "TCanvas.h" #include "TApplication.h" #include "TMath.h" #include /* LIST OF REFERENCES [1] AA10 - Accident Analysis Report - Public: Water leakage in Monolith Vessel, ESS-0052199 [2] ESS - Activity transport and dose calculation models and tools used in safety analyses at ESS, ESS-0092033 */ void StandaloneApplication(int argc, char** argv) { clock_t tStart = clock(); // ==>> here the ROOT macro is called gSystem->Load("libUnuran"); int nAccidents=100; double a = 500; //min double b = 1640; //max equal to MAR, see [1] double c = 700; //mode TF1 * triangularPDF = new TF1("triangularPDF", TriangularPDF, a, b, 3); triangularPDF->SetParameters(a, b, c); //wind distribution from empirical data ifstream in; in.open("wind_speed"); double wind_speed; vector data; while(in >> wind_speed){ data.push_back(wind_speed); } in.close(); TUnuran unr; TUnuranEmpDist dist( data.begin(), data.end()); unr.Init(dist); TH1F * hTriangular = new TH1F("hTriangular", "Triangular PDF", 800, 0, b); //TString title_emitted = Form("Normalized Activity Emitted in %.0f s", final_time); TH1F * hDose = new TH1F("hDose", "Dose", 1000, 0, 0.1); //Beginning of the Monte Carlo run LP102-PIE 1 for(int i=0; i< nAccidents; i++){ double water_spilled = triangularPDF->GetRandom(); hTriangular->Fill(water_spilled); OuterSource outer_source; outer_source.setWater_spilled(water_spilled); outer_source.Go(); Dispersion dispersion(outer_source); double wind_speed = unr.Sample(); dispersion.setWind_speed(wind_speed); dispersion.Go(); Dose dose(dispersion); dose.Go(); hDose->Fill(dose.getFinal_dose()); } TCanvas * c1 = new TCanvas("c1", "Water Spilled", 600, 600); c1->cd(); hTriangular->Draw(); TCanvas * c2 = new TCanvas("c2", "Dose to the Public" , 600, 600); c2->cd(); hDose->Draw(); cout << "\nElapsed Time: " << (double)(clock() - tStart) / CLOCKS_PER_SEC << " s\n"; } // This is the standard "main" of C++ starting // a ROOT application int main(int argc, char** argv) { TApplication app("ROOT Application", &argc, argv); StandaloneApplication(app.Argc(), app.Argv()); app.Run(); return 0; }