11/*******************************************************************************
2- * Copyright (c) 2019, 2025 Lablicate GmbH.
2+ * Copyright (c) 2019, 2026 Lablicate GmbH.
33 *
44 * This program and the accompanying materials are made
55 * available under the terms of the Eclipse Public License 2.0
1414package net .openchrom .xxd .process .supplier .templates .ui .charts ;
1515
1616import java .util .ArrayList ;
17+ import java .util .HashSet ;
1718import java .util .List ;
19+ import java .util .Set ;
1820
1921import org .eclipse .chemclipse .model .baseline .IBaselineModel ;
2022import org .eclipse .chemclipse .model .core .IChromatogram ;
2628import org .eclipse .chemclipse .model .updates .IPeakUpdateListener ;
2729import org .eclipse .chemclipse .msd .model .core .IChromatogramMSD ;
2830import org .eclipse .chemclipse .msd .model .core .selection .ChromatogramSelectionMSD ;
31+ import org .eclipse .chemclipse .support .traces .ITrace ;
32+ import org .eclipse .chemclipse .support .traces .TraceFactory ;
33+ import org .eclipse .chemclipse .support .traces .TraceNominalMSD ;
34+ import org .eclipse .chemclipse .support .traces .TraceRasteredWSD ;
2935import org .eclipse .chemclipse .ux .extension .ui .support .BaselineSelectionPaintListener ;
3036import org .eclipse .chemclipse .ux .extension .xxd .ui .custom .ChromatogramPeakChart ;
3137import org .eclipse .chemclipse .ux .extension .xxd .ui .custom .PeakChartSettings ;
@@ -539,8 +545,14 @@ private IPeak extractPeakFromUserSelection(int xStart, int yStart, int xStop, in
539545 * CB
540546 */
541547 IBaselineModel baselineModel = chromatogram .getBaselineModel ();
542- startIntensity = baselineModel .getBackgroundAbundance (startRetentionTime );
543- stopIntensity = baselineModel .getBackgroundAbundance (stopRetentionTime );
548+ Set <ITrace > traceSet = getTraceSet (chromatogram , traces );
549+ if (traceSet != null ) {
550+ startIntensity = baselineModel .getBackground (startRetentionTime , traceSet );
551+ stopIntensity = baselineModel .getBackground (stopRetentionTime , traceSet );
552+ } else {
553+ startIntensity = baselineModel .getBackground (startRetentionTime );
554+ stopIntensity = baselineModel .getBackground (stopRetentionTime );
555+ }
544556 }
545557 PeakSupport peakSupport = new PeakSupport ();
546558 peak = peakSupport .extractPeakByRetentionTime (chromatogram , startRetentionTime , stopRetentionTime , startIntensity , stopIntensity , traces );
@@ -561,6 +573,17 @@ private IPeak extractPeakFromUserSelection(int xStart, int yStart, int xStop, in
561573 return peak ;
562574 }
563575
576+ private Set <ITrace > getTraceSet (IChromatogram chromatogram , String traces ) {
577+
578+ if (chromatogram instanceof IChromatogramMSD ) {
579+ return new HashSet <>(TraceFactory .parseTraces (traces , TraceNominalMSD .class ));
580+ } else if (chromatogram instanceof IChromatogramWSD ) {
581+ return new HashSet <>(TraceFactory .parseTraces (traces , TraceRasteredWSD .class ));
582+ }
583+
584+ return null ;
585+ }
586+
564587 private void fireUpdate (IPeak peak ) {
565588
566589 if (peakUpdateListener != null ) {
0 commit comments