reactionConfig can use IAEA for excited energies
This commit is contained in:
parent
90df60b650
commit
874918c275
|
@ -5,6 +5,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include <TMacro.h>
|
#include <TMacro.h>
|
||||||
#include <TList.h>
|
#include <TList.h>
|
||||||
|
@ -16,6 +17,27 @@
|
||||||
|
|
||||||
namespace AnalysisLib {
|
namespace AnalysisLib {
|
||||||
|
|
||||||
|
//*######################################### Execute Python Script
|
||||||
|
std::vector<std::string> executePythonScript(std::string command) {
|
||||||
|
std::vector<std::string> result;
|
||||||
|
printf("Python : %s \n", command.c_str());
|
||||||
|
FILE* pipe = popen(command.c_str(), "r");
|
||||||
|
if (!pipe) {
|
||||||
|
std::cerr << "Failed to open pipe for command: " << command << std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr int buffer_size = 256;
|
||||||
|
char buffer[buffer_size];
|
||||||
|
|
||||||
|
while (fgets(buffer, buffer_size, pipe) != nullptr) {
|
||||||
|
result.emplace_back(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
pclose(pipe);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//*######################################### TRAPEZOID
|
//*######################################### TRAPEZOID
|
||||||
TGraph * TrapezoidFilter(TGraph * trace, int baseLineEnd = 80, int riseTime = 10, int flatTop = 20, float decayTime = 2000){
|
TGraph * TrapezoidFilter(TGraph * trace, int baseLineEnd = 80, int riseTime = 10, int flatTop = 20, float decayTime = 2000){
|
||||||
///Trapezoid filter https://doi.org/10.1016/0168-9002(94)91652-7
|
///Trapezoid filter https://doi.org/10.1016/0168-9002(94)91652-7
|
||||||
|
|
|
@ -225,7 +225,64 @@ inline bool ReactionConfig::LoadReactionConfig(TMacro * macro){
|
||||||
if( recoilLine == 5 ) recoil[ID].decayA = atoi(str[0].c_str());
|
if( recoilLine == 5 ) recoil[ID].decayA = atoi(str[0].c_str());
|
||||||
if( recoilLine == 6 ) recoil[ID].decayZ = atoi(str[0].c_str());
|
if( recoilLine == 6 ) recoil[ID].decayZ = atoi(str[0].c_str());
|
||||||
|
|
||||||
if( recoilLine > 6 && str.size() == 4) exList[ID].Add( atoi(str[0].c_str()), atoi(str[1].c_str()), atoi(str[2].c_str()), atoi(str[3].c_str()));
|
if( recoilLine > 6 && str.size() == 4) {
|
||||||
|
if( str[0] == "IAEA"){
|
||||||
|
|
||||||
|
exList[ID].Clear();
|
||||||
|
|
||||||
|
recoil[ID].heavyA = beamA + targetA - recoil[ID].lightA;
|
||||||
|
recoil[ID].heavyZ = beamZ + targetZ - recoil[ID].lightZ;
|
||||||
|
printf(">>>>>>>>>>>>> Retrieving Ex data from IAEA website....\n");
|
||||||
|
std::string scriptPath = "../WebSimHelper/getEx.py " + std::to_string(recoil[ID].heavyA) + " " + std::to_string(recoil[ID].heavyZ) + " " + str[2];
|
||||||
|
std::vector<std::string> output = AnalysisLib::executePythonScript(scriptPath);
|
||||||
|
|
||||||
|
if( output.size() > 1 ){
|
||||||
|
for( size_t dudu = 1 ; dudu < output.size(); dudu ++ ){
|
||||||
|
printf("%s", output[dudu].c_str());
|
||||||
|
std::vector<std::string> dondon = AnalysisLib::SplitStr(output[dudu], " ");
|
||||||
|
|
||||||
|
if( str[1].find("all") == std::string::npos){ // only comfirm states
|
||||||
|
if(dondon[2].find(')') != std::string::npos ) continue;
|
||||||
|
if(dondon[2].find('N') != std::string::npos ) continue;
|
||||||
|
// printf("kdlsakdas ---- %s\n", str[1].c_str());
|
||||||
|
|
||||||
|
if(str[1] == "+" && dondon[2].find('+') != std::string::npos ){
|
||||||
|
// printf(" only comfim + states\n");
|
||||||
|
exList[ID].Add( atoi(dondon[1].c_str()), 1.0, 1.0, atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
if(str[1] == "-" && dondon[2].find('-') != std::string::npos ){
|
||||||
|
// printf(" only comfim - states\n");
|
||||||
|
exList[ID].Add( atoi(dondon[1].c_str()), 1.0, 1.0, atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
if( str[1] == "known" ){
|
||||||
|
// printf(" All comfim state\n");
|
||||||
|
exList[ID].Add( atoi(dondon[1].c_str()), 1.0, 1.0, atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
if(str[1] == "+all" && dondon[2].find('+') != std::string::npos ){
|
||||||
|
// printf(" All state : %s\n", str[1].c_str());
|
||||||
|
exList[ID].Add( atoi(dondon[1].c_str()), 1.0, 1.0, atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
if(str[1] == "-all" && dondon[2].find('-') != std::string::npos ){
|
||||||
|
// printf(" All state : %s\n", str[1].c_str());
|
||||||
|
exList[ID].Add( atoi(dondon[1].c_str()), 1.0, 1.0, atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
if( str[1] == "all" ){
|
||||||
|
// printf(" All state \n");
|
||||||
|
exList[ID].Add( atoi(dondon[1].c_str()), 1.0, 1.0, atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
printf(" No states found from IAEA database, assume ground state.");
|
||||||
|
exList[ID].Add( 0, 1.0, 1.0, 0.01);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
exList[ID].Add( atoi(str[0].c_str()), atoi(str[1].c_str()), atoi(str[2].c_str()), atoi(str[3].c_str()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
18
WebSimHelper/getEx.py
Executable file
18
WebSimHelper/getEx.py
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env /usr/bin/python3
|
||||||
|
|
||||||
|
import isotopeLib as iso
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if len(sys.argv) < 3:
|
||||||
|
print("Usage: python getEx.py A Z Ex")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
A = int(sys.argv[1])
|
||||||
|
Z = int(sys.argv[2])
|
||||||
|
Ex = float(sys.argv[3])
|
||||||
|
ASym = iso.GetSymbol(A, Z)
|
||||||
|
|
||||||
|
ExList = iso.GetExList(ASym, Ex)
|
||||||
|
|
||||||
|
print(ExList)
|
|
@ -41,7 +41,7 @@ except FileNotFoundError:
|
||||||
## 'ENSDFauthors', 'Extraction_date']
|
## 'ENSDFauthors', 'Extraction_date']
|
||||||
|
|
||||||
|
|
||||||
def GetExList(ASym : str, maxEx : float):
|
def GetExList(ASym : str, maxEx : float) ->pd.DataFrame:
|
||||||
try:
|
try:
|
||||||
exList = lc_read_csv(livechart + "fields=levels&nuclides=" + ASym)
|
exList = lc_read_csv(livechart + "fields=levels&nuclides=" + ASym)
|
||||||
exJpi = exList[['energy', 'jp']]
|
exJpi = exList[['energy', 'jp']]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user