diff --git a/src/core/libmaven/datastructures/adduct.cpp b/src/core/libmaven/datastructures/adduct.cpp index 29f39d9c12..34a9b9f6a7 100644 --- a/src/core/libmaven/datastructures/adduct.cpp +++ b/src/core/libmaven/datastructures/adduct.cpp @@ -97,6 +97,11 @@ float Adduct::computeParentMass(float mz) float Adduct::computeAdductMz(float parentMass) { + if (isParent() && MassCalculator::ionizationType == MassCalculator::EI) { + MassCalculator massCalc; + return massCalc.adjustMass(parentMass, _charge); + } + return (parentMass * static_cast(_nmol) + _mass) / static_cast(abs(_charge)); } diff --git a/src/core/libmaven/mavenparameters.cpp b/src/core/libmaven/mavenparameters.cpp index efb1f36525..65a949c806 100644 --- a/src/core/libmaven/mavenparameters.cpp +++ b/src/core/libmaven/mavenparameters.cpp @@ -524,10 +524,12 @@ void MavenParameters::setOptionsDialogSettings(const char* key, const char* valu setIonizationMode((Polarity)polarity); } - if (strcmp(key, "ionizationType") == 0 && stoi(value) == 1) { - MassCalculator::ionizationType = MassCalculator::EI; - } else { - MassCalculator::ionizationType = MassCalculator::ESI; + if (strcmp(key, "ionizationType") == 0) { + if (stoi(value) == 1) { + MassCalculator::ionizationType = MassCalculator::EI; + } else { + MassCalculator::ionizationType = MassCalculator::ESI; + } } if(strcmp(key, "q1Accuracy") == 0) diff --git a/src/gui/mzroll/mainwindow.cpp b/src/gui/mzroll/mainwindow.cpp index 7778dbc35e..d95dc3ab22 100644 --- a/src/gui/mzroll/mainwindow.cpp +++ b/src/gui/mzroll/mainwindow.cpp @@ -3599,8 +3599,9 @@ void MainWindow::addToHistory(const mzSlice& slice) { bool MainWindow::addSample(mzSample* sample) { if (sample && sample->scans.size() > 0) { samples.push_back(sample); - mavenParameters->samples.push_back(sample); - settingsForm->setSettingsIonizationMode("Auto-detect"); + mavenParameters->samples.push_back(sample); + if (settingsForm->ionizationType->currentText() != "EI") + settingsForm->setSettingsIonizationMode("Auto-detect"); return true; } else { delete (sample); diff --git a/src/gui/mzroll/settingsform.cpp b/src/gui/mzroll/settingsform.cpp index 43b9133cd6..a536626e8a 100644 --- a/src/gui/mzroll/settingsform.cpp +++ b/src/gui/mzroll/settingsform.cpp @@ -389,8 +389,11 @@ void SettingsForm::getFormValues() settings->setValue("aslsAsymmetry", asymmetrySlider->value()); // change ionization type - if (ionizationType->currentText() == "EI") MassCalculator::ionizationType = MassCalculator::EI; - else MassCalculator::ionizationType = MassCalculator::ESI; + if (ionizationType->currentText() == "EI") { + MassCalculator::ionizationType = MassCalculator::EI; + } else { + MassCalculator::ionizationType = MassCalculator::ESI; + } mzSample::setFilter_centroidScans( centroid_scan_flag->checkState() == Qt::Checked ); mzSample::setFilter_minIntensity( scan_filter_min_intensity->value() );