diff --git a/bin/c1.js b/bin/c1.js index d9211c2..ed9c21f 100644 --- a/bin/c1.js +++ b/bin/c1.js @@ -1,15 +1,16 @@ { -"projectile":[11.99, 6.0], +"projectile":[11.99671, 6], "energy": 1000, -"material":[{"A":12, +"material":[{"A":12.0107, "Z":6, "thickness":1.0 }, { - "A":56, + "A":55.845, "Z":26, "density":7.8, "thickness":0.05 } - ] + ], +"config":"atimav1.4" } diff --git a/bin/c2.js b/bin/c2.js index 5d0e199..2d2a99c 100644 --- a/bin/c2.js +++ b/bin/c2.js @@ -1,16 +1,16 @@ { -"projectile":[11.99, 6.0], +"projectile":[11.99671, 6], "energy":{ "min": 100, "max": 1000, "step": 100 }, -"material":[{"A":12, +"material":[{"A":12.0107, "Z":6, "thickness":1.0 }, { - "A":56, + "A":55.845, "Z":26, "density":7.8, "thickness":0.05 diff --git a/bin/c3.js b/bin/c3.js index ab5957d..0e4cde8 100644 --- a/bin/c3.js +++ b/bin/c3.js @@ -1,5 +1,5 @@ { -"projectile":[11.99, 6.0], +"projectile":[11.99671, 6], "energy":{ "min": 100, "max": 1000, diff --git a/bin/catima_calculator.cpp b/bin/catima_calculator.cpp index 0990453..fd66913 100644 --- a/bin/catima_calculator.cpp +++ b/bin/catima_calculator.cpp @@ -27,6 +27,7 @@ int main( int argc, char * argv[] ) Projectile projectile; Layers layers; std::vector energies; + Config conf; if(argc == 1 ){ help(); @@ -98,6 +99,20 @@ int main( int argc, char * argv[] ) else{ throw std::invalid_argument("material field is missing"); } + if(j.count("config")>0){ + auto e = j["config"]; + if(e.is_string()){ + std::string cstr = e.get(); + if(cstr=="atimav1.3"){ + conf.z_effective = z_eff_type::pierce_blann; + cout<<"using config: Atima v1.3\n"; + } + if(cstr=="atimav1.4"){ + conf.z_effective = z_eff_type::atima14; + cout<<"using config: Atima v1.4\n"; + } + } + } } // end of try catch(...){ diff --git a/docs/catima_calculator.md b/docs/catima_calculator.md new file mode 100644 index 0000000..1bf8163 --- /dev/null +++ b/docs/catima_calculator.md @@ -0,0 +1,135 @@ +Catima Caluclator +================ +Catima Caluclator is a command line application and interface to the catime library. + +Usage +----- +The application is executed from the command line: + +``` + catima_calculator config_file"; +``` + +example +``` + catima_calculator c.json +``` + +Config File Format +------------------ +The file must be a valid JSON formatted file. + +The json file should contain the following keys: "projectile", "material", "energy" + +#### projectile +The __projectile__ keywords are: + * array - 2 number array, 1st is mass number, 2nd is charge of the projectile + +examples: +``` + "projectile":[11.997,6], +``` + +#### material +The __material__ keyword is array of object for multi layer material, +or single object defining the material. +The material object must contain __Z__ keyword defining proton number +of the projectile or the compound material id. +Optional material object keywords are: + * __Z__ - proton number or compunds id, mandatory + * __A__ - mass number of the material, if 0 or undefined elemental atomic weight is used + * __density__ - density in g/cm3, if 0 or undefined the tabulated density will be used. + * __thickness__ - material or layer thickness in g/cm2 + +#### energy +The __energy__ keyword can be +1.a number specifying the kinetic energy: +``` + "energy":"500.0" +``` + +2. array of numbers for multiple energies: +``` + "energy":[100,200,500,1000] +``` + +3. Object specifying minimum energy, maximum energy and energy step, to calculate multiple energies: +``` + "energy":{ + "min": 100, + "max": 1000, + "step": 10 + } +``` +instead of "step" key the "num" can be specified for integer number of steps between min and max energy. + +#### config +The calculation configuration can be change using __config__ keyword. If +not specified default will be used. The config keyword is expected to be one of the strings + * "atimav1.3" - for Atima v1.3 setting + * "atimav1.4" - for Atima v1.4 setting +``` +"config":"atimav1.4" +``` + + + +Example Files +------------------- +``` +{ +"projectile":[11.99671, 6], +"energy": 1000, +"material":[{"A":12.0107, + "Z":6, + "thickness":1.0 + }, + { + "A":55.845, + "Z":26, + "density":7.8, + "thickness":0.05 + } + ], +"config":"atimav1.4" +} +``` + +``` +{ +"projectile":[11.99671, 6], +"energy":{ + "min": 100, + "max": 1000, + "step": 100 + }, +"material":[{"A":12.0107, + "Z":6, + "thickness":1.0 + }, + { + "A":55.845, + "Z":26, + "density":7.8, + "thickness":0.05 + } + ] +} +``` + +``` +{ +"projectile":[11.99671, 6], +"energy":{ + "min": 100, + "max": 1000, + "step": 100 + }, +"material":{"A":12, + "Z":6, + "density":2.0, + "thickness":1.0 + } +} +``` +