30#ifndef _PRGEHANDLER_H_
31#define _PRGEHANDLER_H_
38#include <TSAXParser.h>
114 virtual void OnStartElement(
const char* str,
const TList* attributes);
139 virtual void OnError(
const char* str);
256 virtual Double_t
GetZmax(
const Double_t energy);
263 virtual Double_t
GetZmax(
const Int_t idx);
274 virtual Double_t
Get_n(
const Double_t energy,
const Double_t z);
285 virtual Double_t
Get_n(
const Int_t idx,
const Double_t z);
std::vector< Int_t > PIntVector
std::vector< Double_t > PDoubleVector
std::vector< PRgeData > PRgeDataList
Container for multiple TrimSP range distributions at different energies.
virtual bool IsValid()
Returns validity status.
virtual Double_t Get_n(const Double_t energy, const Double_t z)
Returns normalized particle distribution at given energy and depth.
PRgeHandler(std::string fln="")
Constructor that loads TrimSP data from XML configuration.
virtual bool ReadRgeFile(const std::string fln, PRgeData &data)
Reads a single RGE file and populates a PRgeData structure.
bool fValid
Validity flag (true if all RGE files loaded successfully)
virtual Double_t GetZmax(const Double_t energy)
Returns maximum penetration depth for a given energy.
virtual Int_t GetEnergyIndex(const Double_t energy)
Finds the data set index for a given energy.
virtual ~PRgeHandler()
Destructor.
virtual PRgeDataList GetRgeData()
Returns all RGE data sets.
PRgeDataList fData
Collection of RGE data sets (one per energy)
virtual UInt_t GetNoOfRgeDataSets()
Returns number of loaded RGE data sets.
bool isTrimSp
True when inside <trim_sp> element.
virtual std::string GetTrimSpFlnPre()
Returns the RGE filename prefix.
virtual std::string GetTrimSpDataPath()
Returns the TrimSP data directory path.
std::string fTrimSpFlnPre
RGE filename prefix (e.g., "LCCO_E" for LCCO_E1000.rge)
virtual void OnCdataBlock(const char *str, Int_t len)
Called for CDATA blocks (SLOT)
PXmlRgeHandler()
Default constructor.
virtual void OnEndElement(const char *str)
Called when XML end tag is encountered (SLOT)
virtual void OnComment(const char *str)
Called for XML comments (SLOT)
std::string fTrimSpDataPath
Directory path to RGE files.
virtual void OnStartElement(const char *str, const TList *attributes)
Called when XML start tag is encountered (SLOT)
virtual void OnCharacters(const char *str)
Called for element content between tags (SLOT)
virtual void OnStartDocument()
Called at start of XML document parsing (SLOT)
virtual ~PXmlRgeHandler()
Destructor.
PIntVector fTrimSpDataEnergyList
List of implantation energies in eV.
virtual void OnFatalError(const char *str)
Called when parser encounters a fatal error (SLOT)
virtual const PIntVector GetTrimSpDataVectorList() const
Returns the list of implantation energies.
virtual bool IsValid()
Returns validity status of parsed configuration.
bool fIsValid
Validity flag (false if parsing errors occur)
virtual void OnEndDocument()
Called at end of XML document parsing, performs validation (SLOT)
virtual void OnWarning(const char *str)
Called when parser emits a warning (SLOT)
EKeyWords
Enum for tracking which XML element is currently being parsed.
virtual void OnError(const char *str)
Called when parser encounters an error (SLOT)
EKeyWords fKey
Current parsing context/state.
Data structure for a single TrimSP range distribution at a given energy.
PDoubleVector amplitude
Number of particles at each depth (raw counts from TrimSP)
Double_t noOfParticles
Total number of particles (sum of amplitudes)
PDoubleVector nn
Normalized particle density where ∫nn(z)dz = 1.
Double_t energy
Implantation energy in eV.
PDoubleVector depth
Depth values in nanometers (nm)