Loading...
Searching...
No Matches
pappso::TimsMsRunReaderMs2Selected Class Reference

`#include <timsmsrunreaderms2selected.h>`

Inheritance diagram for pappso::TimsMsRunReaderMs2Selected:

## Public Member Functions

| TimsMsRunReaderMs2Selected (MsRunIdCstSPtr &msrun_id_csp)
virtual | ~TimsMsRunReaderMs2Selected ()
virtual MassSpectrumSPtr | massSpectrumSPtr (std::size_t spectrum_index) override
| get a MassSpectrumSPtr class given its spectrum index
virtual MassSpectrumCstSPtr | massSpectrumCstSPtr (std::size_t spectrum_index) override
virtual QualifiedMassSpectrum | qualifiedMassSpectrum (std::size_t spectrum_index, bool want_binary_data=true) const override
| get a QualifiedMassSpectrum class given its scan number
virtual void | readSpectrumCollection (SpectrumCollectionHandlerInterface &handler) override
| function to visit an MsRunReader and get each Spectrum in a spectrum collection handler
virtual void | readSpectrumCollection2 (const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override
virtual std::size_t | spectrumListSize () const override
| get the totat number of spectrum conained in the MSrun data file
virtual bool | hasScanNumbers () const override
| tells if spectra can be accessed using scan numbers by default, it returns false. Only overrided functions can check if scan numbers are available in the current file
void | setMs2FilterCstSPtr (pappso::FilterInterfaceCstSPtr filter)
void | setMs1FilterCstSPtr (pappso::FilterInterfaceCstSPtr filter)
Public Member Functions inherited from pappso::TimsMsRunReaderMs2
| TimsMsRunReaderMs2 (MsRunIdCstSPtr &msrun_id_csp)
| TimsMsRunReaderMs2 (const TimsMsRunReaderBase &msrun_reader_base)
virtual | ~TimsMsRunReaderMs2 ()
virtual pappso::XicCoordSPtr | newXicCoordSPtrFromSpectrumIndex (std::size_t spectrum_index, pappso::PrecisionPtr precision) const override
| get a xic coordinate object from a given spectrum index
virtual pappso::XicCoordSPtr | newXicCoordSPtrFromQualifiedMassSpectrum (const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override
| get a xic coordinate object from a given spectrum
virtual void | readSpectrumCollectionByMsLevel (SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override
| function to visit an MsRunReader and get each Spectrum in a spectrum collection handler by Ms Levels
void | setMs2FilterCstSPtr (pappso::FilterInterfaceCstSPtr filter)
void | setMs1FilterCstSPtr (pappso::FilterInterfaceCstSPtr filter)
void | setMs2BuiltinCentroid (bool centroid)
| enable or disable simple centroid filter on raw tims data for MS2
virtual std::vector< std::size_t > | getPrecursorsIDFromMzRt (int charge, double mz_val, double rt_sec, double k0)
| Get all the precursors id which match the values.
virtual bool | releaseDevice () override
| release data back end device if a the data back end is released, the developper has to use acquireDevice before using the msrunreader object
virtual bool | acquireDevice () override
| acquire data back end device
virtual TimsDataSp | getTimsDataSPtr ()
| give an access to the underlying raw data pointer
virtual std::vector< double > | getRetentionTimeLine () override
| retention timeline get retention times along the MSrun in seconds
virtual Trace | getTicChromatogram () override
| get a TIC chromatogram
Public Member Functions inherited from pappso::TimsMsRunReaderBase
| TimsMsRunReaderBase (MsRunIdCstSPtr &msrun_id_csp)
| TimsMsRunReaderBase (const TimsMsRunReaderBase &msrun_reader_base)
virtual | ~TimsMsRunReaderBase ()
Public Member Functions inherited from pappso::MsRunReader
| MsRunReader (const MsRunIdCstSPtr &ms_run_id)
| MsRunReader (const MsRunReader &other)
virtual | ~MsRunReader ()
const MsRunIdCstSPtr & | getMsRunId () const
virtual std::size_t | scanNumber2SpectrumIndex (std::size_t scan_number)
| if possible, converts a scan number into a spectrum index This is a convenient function to help transition from the old scan number (not implemented by all vendors) to more secure spectrum index (not vendor dependant). It is better to not rely on this function.
void | setMonoThread (bool is_mono_thread)
| set only one is_mono_thread to true
bool | isMonoThread () const

## Protected Member Functions

virtual void | initialize () override
virtual bool | accept (const QString &file_name) const override
| tells if the reader is able to handle this file must be implemented by private MS run reader, specific of one or more file format

## Private Attributes

TimsData * | mpa_timsData = nullptr

## Friends

class | MsFileAccessor

## Additional Inherited Members

Protected Attributes inherited from pappso::TimsMsRunReaderMs2
TimsDdaPrecursors * | mp_timsDdaPrecursors = nullptr
Protected Attributes inherited from pappso::TimsMsRunReaderBase
TimsDataSp | msp_timsData = nullptr
Protected Attributes inherited from pappso::MsRunReader
MsRunIdCstSPtr | mcsp_msRunId
MsRunReaderScanNumberMultiMap * | mpa_multiMapScanNumber = nullptr

## Detailed Description

Definition at line 41 of file timsmsrunreaderms2selected.h.

## Constructor & Destructor Documentation

## TimsMsRunReaderMs2Selected()

TimsMsRunReaderMs2Selected::TimsMsRunReaderMs2Selected | ( | MsRunIdCstSPtr & | msrun_id_csp | ) |

Todo:
  write docs

Definition at line 38 of file timsmsrunreaderms2selected.cpp.

: TimsMsRunReaderMs2(msrun_id_csp)
{
initialize();
}
pappso::TimsMsRunReaderMs2Selected::initialize
virtual void initialize() override
Definition timsmsrunreaderms2selected.cpp:54
pappso::TimsMsRunReaderMs2
Definition timsmsrunreaderms2.h:39

References initialize().

## ~TimsMsRunReaderMs2Selected()

TimsMsRunReaderMs2Selected::~TimsMsRunReaderMs2Selected | ( |  | ) |

virtual

Definition at line 45 of file timsmsrunreaderms2selected.cpp.

{
if(mpa_timsData != nullptr)
{
delete mpa_timsData;
}
}
pappso::TimsMsRunReaderMs2Selected::mpa_timsData
TimsData * mpa_timsData
Definition timsmsrunreaderms2selected.h:78

References mpa_timsData.

## Member Function Documentation

## accept()

bool TimsMsRunReaderMs2Selected::accept | ( | const QString & | file_name | ) | const

override protected virtual

tells if the reader is able to handle this file must be implemented by private MS run reader, specific of one or more file format

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 94 of file timsmsrunreaderms2selected.cpp.

{
qDebug() << file_name;
return true;
}

## hasScanNumbers()

bool TimsMsRunReaderMs2Selected::hasScanNumbers | ( |  | ) | const

override virtual

tells if spectra can be accessed using scan numbers by default, it returns false. Only overrided functions can check if scan numbers are available in the current file

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 326 of file timsmsrunreaderms2selected.cpp.

{
return false;
}

## initialize()

void pappso::TimsMsRunReaderMs2Selected::initialize | ( |  | ) |

override protected virtual

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 54 of file timsmsrunreaderms2selected.cpp.

{
mpa_timsData = new TimsData(mcsp_msRunId.get()->getFileName());
mp_timsDdaPrecursors = mpa_timsData->getTimsDdaPrecursorsPtr();
}
pappso::MsRunReader::mcsp_msRunId
MsRunIdCstSPtr mcsp_msRunId
Definition msrunreader.h:175
pappso::TimsData
Definition timsdata.h:70
pappso::TimsData::getTimsDdaPrecursorsPtr
TimsDdaPrecursors * getTimsDdaPrecursorsPtr() const
Definition timsdata.cpp:1092
pappso::TimsMsRunReaderMs2::mp_timsDdaPrecursors
TimsDdaPrecursors * mp_timsDdaPrecursors
Definition timsmsrunreaderms2.h:115

Referenced by TimsMsRunReaderMs2Selected().

## massSpectrumCstSPtr()

pappso::MassSpectrumCstSPtr TimsMsRunReaderMs2Selected::massSpectrumCstSPtr | ( | std::size_t | spectrum_index | ) |

override virtual

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 111 of file timsmsrunreaderms2selected.cpp.

{
QualifiedMassSpectrum mass_spectrum =
qualifiedMassSpectrum(spectrum_index, true);
return mass_spectrum.getMassSpectrumSPtr();
}
pappso::QualifiedMassSpectrum
Class representing a fully specified mass spectrum.
Definition qualifiedmassspectrum.h:99
pappso::QualifiedMassSpectrum::getMassSpectrumSPtr
MassSpectrumSPtr getMassSpectrumSPtr() const
Get the MassSpectrumSPtr.
Definition qualifiedmassspectrum.cpp:133
pappso::TimsMsRunReaderMs2Selected::qualifiedMassSpectrum
virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data=true) const override
get a QualifiedMassSpectrum class given its scan number
Definition timsmsrunreaderms2selected.cpp:120

References pappso::QualifiedMassSpectrum::getMassSpectrumSPtr(), and qualifiedMassSpectrum().

## massSpectrumSPtr()

pappso::MassSpectrumSPtr TimsMsRunReaderMs2Selected::massSpectrumSPtr | ( | std::size_t | spectrum_index | ) |

override virtual

get a MassSpectrumSPtr class given its spectrum index

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 102 of file timsmsrunreaderms2selected.cpp.

{
QualifiedMassSpectrum mass_spectrum =
qualifiedMassSpectrum(spectrum_index, true);
return mass_spectrum.getMassSpectrumSPtr();
}

References pappso::QualifiedMassSpectrum::getMassSpectrumSPtr(), and qualifiedMassSpectrum().

## qualifiedMassSpectrum()

QualifiedMassSpectrum TimsMsRunReaderMs2Selected::qualifiedMassSpectrum | ( | std::size_t | spectrum_index,
|  | bool | want_binary_data = `true`
| ) |  | const

override virtual

get a QualifiedMassSpectrum class given its scan number

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 120 of file timsmsrunreaderms2selected.cpp.

{
std::size_t precursor_index = (spectrum_index / 2) + 1;
TimsDdaPrecursors::SpectrumDescr spectrum_descr =
mp_timsDdaPrecursors->getSpectrumDescrWithPrecursorId(precursor_index);
if(spectrum_index % 2 == 0)
{
qDebug();
// this is an MS1 spectrum
QualifiedMassSpectrum mass_spectrum_ms1;
mp_timsDdaPrecursors->getQualifiedMs1MassSpectrumBySpectrumDescr(
getMsRunId(), mass_spectrum_ms1, spectrum_descr, want_binary_data);
qDebug(); // << mass_spectrum_ms1.toString();
// qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString();
return mass_spectrum_ms1;
}
else
{
qDebug();
QualifiedMassSpectrum mass_spectrum_ms2;
if(spectrum_descr.ms2_index != spectrum_index)
{
qDebug();
throw PappsoException(
QObject::tr(
"ERROR in %1 %2 %3 spectrum_descr.ms2_index != spectrum_index")
.arg(__FILE__)
.arg(__FUNCTION__)
.arg(__LINE__));
}
mp_timsDdaPrecursors->getQualifiedMs2MassSpectrumBySpectrumDescr(
getMsRunId(), mass_spectrum_ms2, spectrum_descr, want_binary_data);
qDebug(); // << mass_spectrum_ms2.toString();
// qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString();
return mass_spectrum_ms2;
}
}
pappso::MsRunReader::getMsRunId
const MsRunIdCstSPtr & getMsRunId() const
Definition msrunreader.cpp:57
pappso::PappsoException
Definition pappsoexception.h:42
pappso::TimsDdaPrecursors::getQualifiedMs1MassSpectrumBySpectrumDescr
void getQualifiedMs1MassSpectrumBySpectrumDescr(const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, const SpectrumDescr &spectrum_descr, bool want_binary_data)
Definition timsddaprecursors.cpp:603
pappso::TimsDdaPrecursors::getQualifiedMs2MassSpectrumBySpectrumDescr
void getQualifiedMs2MassSpectrumBySpectrumDescr(const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, const SpectrumDescr &spectrum_descr, bool want_binary_data)
Definition timsddaprecursors.cpp:717
pappso::TimsDdaPrecursors::getSpectrumDescrWithPrecursorId
TimsDdaPrecursors::SpectrumDescr getSpectrumDescrWithPrecursorId(std::size_t precursor_id) const
get an intermediate structure describing a spectrum
Definition timsddaprecursors.cpp:414
pappso::TimsDdaPrecursors::SpectrumDescr
Definition timsddaprecursors.h:61
pappso::TimsDdaPrecursors::SpectrumDescr::ms2_index
std::size_t ms2_index
Definition timsddaprecursors.h:67

References pappso::MsRunReader::getMsRunId(), pappso::TimsDdaPrecursors::getQualifiedMs1MassSpectrumBySpectrumDescr(), pappso::TimsDdaPrecursors::getQualifiedMs2MassSpectrumBySpectrumDescr(), pappso::TimsDdaPrecursors::getSpectrumDescrWithPrecursorId(), pappso::TimsMsRunReaderMs2::mp_timsDdaPrecursors, and pappso::TimsDdaPrecursors::SpectrumDescr::ms2_index.

Referenced by massSpectrumCstSPtr(), massSpectrumSPtr(), and readSpectrumCollection().

## readSpectrumCollection()

void TimsMsRunReaderMs2Selected::readSpectrumCollection | ( | SpectrumCollectionHandlerInterface & | handler | ) |

override virtual

function to visit an MsRunReader and get each Spectrum in a spectrum collection handler

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 166 of file timsmsrunreaderms2selected.cpp.

{
const bool want_binary_data = handler.needPeakList();
// const bool want_binary_data = false;
// We'll need it to perform the looping in the spectrum list.
std::size_t spectrum_list_size = spectrumListSize();
// qDebug() << "The spectrum list has size:" << spectrum_list_size;
// Inform the handler of the spectrum list so that it can handle feedback to
// the user.
handler.spectrumListHasSize(spectrum_list_size);
std::vector<size_t> selected_precursor{63905,
73549,
105675,
130439,
177297,
177369,
177483,
190453,
196967,
246691,
271215,
289423,
310669};
// QFile temp_output("/data/temp.txt");
// temp_output.open(QIODevice::WriteOnly | QIODevice::Text);
// QTextStream out(&temp_output);
// Iterate in the full list of spectra.
bool readAhead = handler.isReadAhead();
if(readAhead)
{
std::size_t process_list_size = 300;
struct tmp_item
{
QualifiedMassSpectrum qualified_mass_spectrum;
std::size_t iter;
bool want_binary_data;
};
for(std::size_t i = 0; i < spectrum_list_size; i += process_list_size)
{
// QTextStream out(&temp_output);
qDebug();
// If the user of this reader instance wants to stop reading the
// spectra, then break this loop.
if(handler.shouldStop())
{
qDebug() << "The operation was cancelled. Breaking the loop.";
break;
}
std::vector<tmp_item> item_list;
for(std::size_t iter = 0;
(iter < process_list_size) && ((iter + i) < spectrum_list_size);
iter++)
{
if(std::find(selected_precursor.begin(),
selected_precursor.end(),
iter + i) != selected_precursor.end())
{
bool get_data = want_binary_data;
if((iter + i) % 2 == 0)
{ // MS1
get_data = handler.needMsLevelPeakList(1);
}
else
{
get_data = handler.needMsLevelPeakList(2);
}
item_list.push_back(
{QualifiedMassSpectrum(), iter + i, get_data});
}
}
qDebug() << item_list.size();
// Use QtConcurrentBlocking::mapped to apply the scale function to all
// the images in the list.
QtConcurrent::blockingMap(
item_list.begin(), item_list.end(), [this](tmp_item &one_item) {
qDebug() << one_item.iter;
one_item.qualified_mass_spectrum =
qualifiedMassSpectrum(one_item.iter, one_item.want_binary_data);
// qDebug() << one_item.qualified_mass_spectrum.size() << " " <<
// one_item.qualified_mass_spectrum.getMassSpectrumSPtr().get()->toString();
});
qDebug() << item_list.size();
for(auto &item : item_list)
{
// qDebug() <<
// item.qualified_mass_spectrum.getMassSpectrumSPtr()
// .get()
// ->toString();
handler.setQualifiedMassSpectrum(item.qualified_mass_spectrum);
qDebug();
}
}
}
else
{
for(std::size_t iter = 0; iter < spectrum_list_size; iter++)
{
qDebug();
// If the user of this reader instance wants to stop reading the
// spectra, then break this loop.
if(handler.shouldStop())
{
qDebug() << "The operation was cancelled. Breaking the loop.";
break;
}
bool get_data = want_binary_data;
if(iter % 2 == 0)
{ // MS1
if(!handler.needMsLevelPeakList(1))
{
get_data = false;
}
}
QualifiedMassSpectrum qualified_mass_spectrum =
qualifiedMassSpectrum(iter, get_data);
handler.setQualifiedMassSpectrum(qualified_mass_spectrum);
qDebug();
}
}
// End of
// for(std::size_t iter = 0; iter < spectrum_list_size; iter++)
// Now let the loading handler know that the loading of the data has
// ended. The handler might need this "signal" to perform additional tasks
// or to cleanup cruft.
// qDebug() << "Loading ended";
// temp_output.close();
handler.loadingEnded();
}
pappso::SpectrumCollectionHandlerInterface::shouldStop
virtual bool shouldStop()
Definition spectrumcollectionhandlerinterface.cpp:38
pappso::SpectrumCollectionHandlerInterface::isReadAhead
virtual bool isReadAhead() const
tells if we want to read ahead spectrum
Definition spectrumcollectionhandlerinterface.cpp:58
pappso::SpectrumCollectionHandlerInterface::needPeakList
virtual bool needPeakList() const =0
tells if we need the peak list (if we want the binary data) for each spectrum
pappso::SpectrumCollectionHandlerInterface::loadingEnded
virtual void loadingEnded()
Definition spectrumcollectionhandlerinterface.cpp:43
pappso::SpectrumCollectionHandlerInterface::needMsLevelPeakList
virtual bool needMsLevelPeakList(unsigned int ms_level) const final
tells if we need the peak list (if we want the binary data) for each spectrum, given an MS level
Definition spectrumcollectionhandlerinterface.cpp:64
pappso::SpectrumCollectionHandlerInterface::spectrumListHasSize
virtual void spectrumListHasSize(std::size_t size)
Definition spectrumcollectionhandlerinterface.cpp:47
pappso::SpectrumCollectionHandlerInterface::setQualifiedMassSpectrum
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
pappso::TimsMsRunReaderMs2Selected::spectrumListSize
virtual std::size_t spectrumListSize() const override
get the totat number of spectrum conained in the MSrun data file
Definition timsmsrunreaderms2selected.cpp:319

References pappso::SpectrumCollectionHandlerInterface::isReadAhead(), pappso::SpectrumCollectionHandlerInterface::loadingEnded(), pappso::SpectrumCollectionHandlerInterface::needMsLevelPeakList(), pappso::SpectrumCollectionHandlerInterface::needPeakList(), qualifiedMassSpectrum(), pappso::SpectrumCollectionHandlerInterface::setQualifiedMassSpectrum(), pappso::SpectrumCollectionHandlerInterface::shouldStop(), pappso::SpectrumCollectionHandlerInterface::spectrumListHasSize(), and spectrumListSize().

Referenced by readSpectrumCollection2().

## readSpectrumCollection2()

void TimsMsRunReaderMs2Selected::readSpectrumCollection2 | ( | const MsRunReadConfig & | config,
|  | SpectrumCollectionHandlerInterface & | handler
| ) |  |

override virtual

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 311 of file timsmsrunreaderms2selected.cpp.

{
return readSpectrumCollection(handler);
}
pappso::TimsMsRunReaderMs2Selected::readSpectrumCollection
virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override
function to visit an MsRunReader and get each Spectrum in a spectrum collection handler
Definition timsmsrunreaderms2selected.cpp:166

References readSpectrumCollection().

## setMs1FilterCstSPtr()

void TimsMsRunReaderMs2Selected::setMs1FilterCstSPtr | ( | pappso::FilterInterfaceCstSPtr | filter | ) |

Definition at line 78 of file timsmsrunreaderms2selected.cpp.

{
if(mp_timsDdaPrecursors != nullptr)
{
mp_timsDdaPrecursors->setMs1FilterCstSPtr(filter);
}
else
{
throw PappsoException(
QObject::tr("ERROR in TimsMsRunReaderMs2Selected::setMs1FilterCstSPtr "
"mp_timsDdaPrecursors is null"));
}
}
pappso::TimsDdaPrecursors::setMs1FilterCstSPtr
void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
filter interface to apply just after raw MS1 specturm extraction the filter can be a list of filters ...
Definition timsddaprecursors.cpp:711

References pappso::TimsMsRunReaderMs2::mp_timsDdaPrecursors, and pappso::TimsDdaPrecursors::setMs1FilterCstSPtr().

## setMs2FilterCstSPtr()

void TimsMsRunReaderMs2Selected::setMs2FilterCstSPtr | ( | pappso::FilterInterfaceCstSPtr | filter | ) |

Definition at line 62 of file timsmsrunreaderms2selected.cpp.

{
if(mp_timsDdaPrecursors != nullptr)
{
mp_timsDdaPrecursors->setMs2FilterCstSPtr(filter);
}
else
{
throw PappsoException(
QObject::tr("ERROR in TimsMsRunReaderMs2Selected::setMs2FilterCstSPtr "
"mp_timsDdaPrecursors is null"));
}
}
pappso::TimsDdaPrecursors::setMs2FilterCstSPtr
void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
filter interface to apply just after raw MS2 specturm extraction the filter can be a list of filters ...
Definition timsddaprecursors.cpp:706

References pappso::TimsMsRunReaderMs2::mp_timsDdaPrecursors, and pappso::TimsDdaPrecursors::setMs2FilterCstSPtr().

## spectrumListSize()

std::size_t TimsMsRunReaderMs2Selected::spectrumListSize | ( |  | ) | const

override virtual

get the totat number of spectrum conained in the MSrun data file

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 319 of file timsmsrunreaderms2selected.cpp.

{
return (mp_timsDdaPrecursors->getTotalPrecursorCount() * 2);
}
pappso::TimsDdaPrecursors::getTotalPrecursorCount
std::size_t getTotalPrecursorCount() const
get the number of precursors analyzed by PASEF
Definition timsddaprecursors.cpp:300

References pappso::TimsDdaPrecursors::getTotalPrecursorCount(), and pappso::TimsMsRunReaderMs2::mp_timsDdaPrecursors.

Referenced by readSpectrumCollection().

## Friends And Related Symbol Documentation

## MsFileAccessor

friend class MsFileAccessor

friend

Definition at line 43 of file timsmsrunreaderms2selected.h.

## Member Data Documentation

## mpa_timsData

TimsData* pappso::TimsMsRunReaderMs2Selected::mpa_timsData = nullptr

private

Definition at line 78 of file timsmsrunreaderms2selected.h.

Referenced by ~TimsMsRunReaderMs2Selected().

The documentation for this class was generated from the following files:

- pappsomspp/msrun/private/timsmsrunreaderms2selected.h
- pappsomspp/msrun/private/timsmsrunreaderms2selected.cpp