feat: implement Geant Material class, add object registration, and update PropertyWidget signal handling and read-only state
This commit is contained in:
@@ -29,9 +29,10 @@
|
||||
#define MATTER_H
|
||||
|
||||
#include "Core/Object.h"
|
||||
#include <Geant4/G4Material.hh>
|
||||
#include <Geant4/G4NistManager.hh>
|
||||
|
||||
class G4Element;
|
||||
class G4Material;
|
||||
|
||||
namespace uLib {
|
||||
namespace Geant {
|
||||
@@ -55,19 +56,55 @@ private:
|
||||
//// MATERIAL //////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// TODO: finish from G4NistMaterialBuilder
|
||||
|
||||
class Material : public Object {
|
||||
public:
|
||||
|
||||
enum State {
|
||||
Undefined = 0,
|
||||
Solid,
|
||||
Liquid,
|
||||
Gas
|
||||
};
|
||||
|
||||
virtual const char* GetClassName() const override { return "Geant.Material"; }
|
||||
|
||||
uLibRefMacro(G4Data,G4Material *)
|
||||
Material();
|
||||
Material(const char *name);
|
||||
~Material();
|
||||
|
||||
void SetFromNist(const char *name);
|
||||
|
||||
template <typename Ar>
|
||||
void serialize(Ar &ar) {
|
||||
ar & HRP("name", m_G4Data->GetName());
|
||||
ar & HRP("density", m_G4Data->GetDensity());
|
||||
ar & serialization::make_hrp_enum("state", m_G4Data->GetState(), {"Undefined", "Solid", "Liquid", "Gas"});
|
||||
}
|
||||
|
||||
G4Material *GetG4Material() { return m_G4Data; }
|
||||
|
||||
private:
|
||||
G4Material *m_G4Data;
|
||||
|
||||
};
|
||||
|
||||
// class MaterialCompound : public Material {
|
||||
// public:
|
||||
|
||||
|
||||
// MaterialCompound(const char *name) {}
|
||||
|
||||
// void AddMaterial(Material *m, double fractionmass) { m_Materials.push_back(std::make_pair(m, fractionmass)); }
|
||||
// void AddElement(Element *e, double fractionmass) { m_Elements.push_back(std::make_pair(e, fractionmass)); }
|
||||
// void SetDensity(double density) { m_Density = density; }
|
||||
|
||||
// private:
|
||||
// std::vector<std::pair<Material *, double>> m_Materials;
|
||||
// std::vector<std::pair<Element *, double>> m_Elements;
|
||||
// double m_Density;
|
||||
// };
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user