![]() |
The "Carbon contamination" rules for xps4xps |
![]() |
|
The features of the Carbon contamination rules are
|
IsCarbonPresent (Spectrum)
{
HasPeakInRangeBE(Spectrum, 282, 288) //Carbon line(s) present
}
whether Carbon KLL Auger is present in the spectrum
IsCarbonAugerPresent (Spectrum)
{
HasPeakInrangeKE(Spectrum, 269, 275) //KLL Auger present
}
whether Ruthenium is present in the spectrum
IsRutheniumPresent (Spectrum)
{
HasPeakInRangeBE(Spectrum, 458, 462) //ruthenium present
}
whether Carbon 1s line is present
HasCarbon1sPeak (Spectrum) =
{
IsCarbonPresent(Spectrum)
AND
IsCarbonAugerPresent(Spectrum)
AND
NOT IsRutheniumPresent(Spectrum)
}
The rule IsCarbonContaminationConsensus is a consensus-type rule,
which uses five subrules and calculates a percentage ratio
as the subrules vote. Depending on the percentage ratio,
returns True, False or Unknown.
IsCarbonContaminationConsensus( Spectrum )
{
Norm = 0; Sum = 0;
Norm = Norm + 20;
if( IsCarbonEnergySeparationOK(Spectrum) )
Sum = Sum + 20;
Norm = Norm + 40;
if( !DoesSampleContainCarbon(Spectrum) )
Sum = Sum + 40;
Norm = Norm + 25;
if( IsCarbonShirleyTailHigh(Spectrum) )
Sum = Sum + 25;
Norm = Norm + 25;
if( IsCarbonPostPeakSlopeBiggest(Spectrum) )
Sum = Sum + 25;
Norm = Norm + 20;
if( IsCarbonAngleRatioBiggest(Spectrum) )
Sum = Sum + 20;
if( Sum*100/Norm > 70)
True;
else if(Sum*100/Norm < 25)
False;
else
Unknown;
}
The subrules used here are:
IsCarbonEnergySeparationOK(Spectrum) =
{
EnergySeparation < 20
AND
EnergySeparation > 15
}
DoesSampleContainCarbon(Spectrum) =
{
Spectrum->GetSample()->GetContainsCarbon()
}
IsCarbonShirleyTailHigh(Spectrum) =
{
Spectrum->GetC1sPeak()->GetShirleyTailHeight() > 0.1
}
IsCarbonPostPeakSlopeBiggest(Spectrum) =
{
for Peak in AllPeaks
{
if(Peak->GetPostPeakSlope() > PeakC1s->GetPostPeakSlope()
False;
}
True;
}
IsCarbonAngleRatioBiggest(Spectrum) =
{
for Peak in AllPeaks
{
if(Peak->GetAngleRatio() > PeakC1s->GetAngleRatio()
False;
}
True;
}