diff --git a/src/core/mcqr/mcqrexperiment.cpp b/src/core/mcqr/mcqrexperiment.cpp
index 4443aa516bf4df9a41c32618c4a37e1c8989bb95..479825014e542c54ac4e864bc2fe25a1d8b583b6 100644
--- a/src/core/mcqr/mcqrexperiment.cpp
+++ b/src/core/mcqr/mcqrexperiment.cpp
@@ -152,3 +152,27 @@ McqrExperiment::getMetadataOdsFilePath() const
 {
   return m_metadataOdsFilePath;
 }
+
+void
+McqrExperiment::setMcqrWorkingDirectory(const QString &wd)
+{
+  m_mcqrWorkingDirectoryPath = wd;
+}
+
+const QString &
+McqrExperiment::getMcqrWorkingDirectory() const
+{
+  return m_mcqrWorkingDirectoryPath;
+}
+
+McqrExperimentType
+McqrExperiment::getMcqrExperimentType() const
+{
+  return m_mcqrExperimentType;
+}
+
+void
+McqrExperiment::setMcqrExperimentType(McqrExperimentType exp_type)
+{
+  m_mcqrExperimentType = exp_type;
+}
diff --git a/src/core/mcqr/mcqrexperiment.h b/src/core/mcqr/mcqrexperiment.h
index 39ffb1fb8bf9c4381466655298289296082d47f0..111cf3bdf3c38ae5914787b5802bfa165cf8a012 100644
--- a/src/core/mcqr/mcqrexperiment.h
+++ b/src/core/mcqr/mcqrexperiment.h
@@ -60,6 +60,8 @@ class McqrExperiment
 
   McqrLoadDataMode getMcqrLoadDataMode() const;
 
+  void setMcqrWorkingDirectory(const QString &wd);
+  const QString &getMcqrWorkingDirectory() const;
 
   void setRdataFilePath(const QString &rdata_file);
   const QString &getRdataFilePath() const;
@@ -69,6 +71,10 @@ class McqrExperiment
 
   QString getMassChroqMlFilePath() const;
 
+
+  McqrExperimentType getMcqrExperimentType() const;
+  void setMcqrExperimentType(McqrExperimentType exp_type);
+
   private:
   std::vector<McqrMetadata *> m_metadataList;
   std::vector<QString> m_metadataColumns;
@@ -77,4 +83,6 @@ class McqrExperiment
 
   QString m_rdata_absolute_path;
   QString m_metadataOdsFilePath;
+  QString m_mcqrWorkingDirectoryPath;
+  McqrExperimentType m_mcqrExperimentType;
 };
diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index 7430a35c203214b147e4cbdf4a1b393800812f98..026fcf853fb35675c1316459773f95b7bb6db07e 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -884,21 +884,26 @@ MainWindow::doAcceptedMcqrParamAllQuantiDialog()
   try
     {
       QSettings settings;
+      McqrExperimentSp mcqr_experiment =
+        _project_sp.get()->getMcqrExperimentSp();
+      mcqr_experiment.get()->setMcqrExperimentType(
+        McqrExperimentType::spectralCount);
 
       if(mp_mcqrParamAllQuantiDialog->getMassChroqResultsUsed())
         { // XIC
+
+          mcqr_experiment.get()->setMcqrExperimentType(McqrExperimentType::xic);
           if(mp_mcqrParamAllQuantiDialog->getMcqrRunStatus())
             {
 
-              _project_sp.get()
-                ->getMcqrExperimentSp()
-                .get()
-                ->setMetadataOdsFilePath(
-                  mp_mcqrParamAllQuantiDialog->getMetadataOdsFileInfo()
-                    .absoluteFilePath());
+              mcqr_experiment.get()->setMetadataOdsFilePath(
+                mp_mcqrParamAllQuantiDialog->getMetadataOdsFileInfo()
+                  .absoluteFilePath());
+              mcqr_experiment.get()->setMcqrWorkingDirectory(
+                mp_mcqrParamAllQuantiDialog->getMetadataOdsFileInfo()
+                  .absolutePath());
 
-              mp_mcqrRunView = new McqrRunView(
-                this, _project_sp.get()->getMcqrExperimentSp(), true);
+              mp_mcqrRunView = new McqrRunView(this, mcqr_experiment);
               mp_mcqrRunView->show();
               mp_mcqrRunView->raise();
               mp_mcqrRunView->activateWindow();
@@ -907,8 +912,6 @@ MainWindow::doAcceptedMcqrParamAllQuantiDialog()
         }
       else
         { // spectral count
-          McqrExperimentSp mcqr_experiment =
-            _project_sp.get()->getMcqrExperimentSp();
           QString default_location =
             settings.value("mcqr/rdata_path").toString();
           QString rdata_path =
@@ -925,6 +928,9 @@ MainWindow::doAcceptedMcqrParamAllQuantiDialog()
 
               mcqr_experiment.get()->setRdataFilePath(
                 QFileInfo(rdata_path).absoluteFilePath());
+
+              mcqr_experiment.get()->setMcqrWorkingDirectory(
+                QFileInfo(rdata_path).absolutePath());
               showWaitingMessage(tr("Writing %1 RData file").arg(rdata_path));
               settings.setValue("mcqr/rdata_path",
                                 mcqr_experiment.get()->getRdataFilePath());
@@ -949,7 +955,7 @@ MainWindow::doWritingMcqrSpectralCountRdataFinished(
   hideWaitingMessage();
   if(mp_mcqrParamAllQuantiDialog->getMcqrRunStatus())
     {
-      mp_mcqrRunView = new McqrRunView(this, p_mcqr_experiment, false);
+      mp_mcqrRunView = new McqrRunView(this, p_mcqr_experiment);
       mp_mcqrRunView->show();
       mp_mcqrRunView->raise();
       mp_mcqrRunView->activateWindow();
diff --git a/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp b/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp
index 6bf7c06b6a4c59cf3df0b3e9281179f0308a22d6..2bee59034a2850e07004fcb9a19d143df33b3cba 100644
--- a/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp
+++ b/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp
@@ -336,9 +336,8 @@ McqrSdsXicWidget::runQualityCheckingXic()
       Grantlee::Context grantlee_context;
       grantlee_context.insert("mcqr_step", (std::int8_t)m_ongoingMcqrStep);
       grantlee_context.insert(
-        "rdata_folder",
-        QFileInfo(getMcqrExperimentSpLoaded().get()->getMetadataOdsFilePath())
-          .absoluteDir()
+        "mcqr_working_directory",
+        QDir(getMcqrExperimentSpLoaded().get()->getMcqrWorkingDirectory())
           .path());
       grantlee_context.insert(
         "metadata_ods_path",
diff --git a/src/gui/mcqr_run_view/mcqrrunview.cpp b/src/gui/mcqr_run_view/mcqrrunview.cpp
index d1104987783186e8da05f117e3c79ae409c08679..4afc0d433eef40203d2a7f2c26bdd707e3dd8249 100644
--- a/src/gui/mcqr_run_view/mcqrrunview.cpp
+++ b/src/gui/mcqr_run_view/mcqrrunview.cpp
@@ -48,18 +48,17 @@
 
 
 McqrRunView::McqrRunView(MainWindow *parent,
-                         const McqrExperimentSp &p_mcqr_experiment,
-                         bool use_masschroq_results)
+                         const McqrExperimentSp &p_mcqr_experiment)
   : QWidget(), ui(new Ui::McqrRunView)
 {
   ui->setupUi(this);
+  msp_mcqrExperiment = p_mcqr_experiment;
   setWindowTitle("MCQR run window");
   mp_main = parent;
   // Create the output page
   mp_documentText = new QTextDocument();
   ui->mcqr_result_browser->setDocument(mp_documentText);
-  m_useMassChroqResults = use_masschroq_results;
-  loadSpecificMcqrParameterWidget(p_mcqr_experiment);
+  loadSpecificMcqrParameterWidget();
 
   // Set the Loading icon
   mp_loadingIcon = new QMovie(":icons/resources/icons/icon_wait.gif");
@@ -164,16 +163,16 @@ McqrRunView::endRProcess()
 }
 
 void
-McqrRunView::loadSpecificMcqrParameterWidget(
-  const McqrExperimentSp &p_mcqr_experiment)
+McqrRunView::loadSpecificMcqrParameterWidget()
 {
-  if(m_useMassChroqResults)
+  if(msp_mcqrExperiment.get()->getMcqrExperimentType() ==
+     McqrExperimentType::xic)
     {
-      mp_mcqrParam = new McqrSdsXicWidget(this, p_mcqr_experiment);
+      mp_mcqrParam = new McqrSdsXicWidget(this, msp_mcqrExperiment);
     }
   else
     {
-      mp_mcqrParam = new McqrSdsWidget(this, p_mcqr_experiment);
+      mp_mcqrParam = new McqrSdsWidget(this, msp_mcqrExperiment);
     }
   ui->mcqr_param_layout->addWidget(mp_mcqrParam);
 }
diff --git a/src/gui/mcqr_run_view/mcqrrunview.h b/src/gui/mcqr_run_view/mcqrrunview.h
index 0aac4a8729d7addb5a8fbb0e2979c82b8507b33d..6513b9905fffc1072c4a6174a1fcb93dc473ab2d 100644
--- a/src/gui/mcqr_run_view/mcqrrunview.h
+++ b/src/gui/mcqr_run_view/mcqrrunview.h
@@ -54,8 +54,7 @@ class McqrRunView : public QWidget
 
   public:
   explicit McqrRunView(MainWindow *parent,
-                       const McqrExperimentSp &p_mcqr_experiment,
-                       bool use_masschroq_results);
+                       const McqrExperimentSp &p_mcqr_experiment);
   ~McqrRunView();
   McqrQProcess *getRProcessRunning();
 
@@ -77,16 +76,15 @@ class McqrRunView : public QWidget
   void startRProcess();
   void endRProcess();
   void checkLibrariesInstalled();
-  void
-  loadSpecificMcqrParameterWidget(const McqrExperimentSp &p_mcqr_experiment);
+  void loadSpecificMcqrParameterWidget();
   void handleMcqrErrors(QString error_message);
 
   private:
   Ui::McqrRunView *ui;
   MainWindow *mp_main            = nullptr;
-  bool m_useMassChroqResults     = false;
   McqrParamWidget *mp_mcqrParam  = nullptr;
   QMovie *mp_loadingIcon         = nullptr;
   McqrQProcess *mp_rProcess      = nullptr;
   QTextDocument *mp_documentText = nullptr;
+  McqrExperimentSp msp_mcqrExperiment;
 };
diff --git a/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R b/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R
index c6f40eadd995b2a5170f8ec79cd35fc6e56a3fe8..c33b34e3ad02f94f57190cfd5c3a8e0f60a78b3a 100644
--- a/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R
+++ b/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R
@@ -2,7 +2,7 @@
   message("MCQRBegin: quality_xic")
   cat("<h1>MCQR basic XIC Analysis</h1>")
 
-  setwd("{{ rdata_folder }}")
+  setwd("{{ mcqr_working_directory }}")
   cat(paste("working directory: ", getwd()))
   capture.output(library("MCQR", verbose=FALSE), file=stderr())
   message(paste("MCQRInfo: MCQR version :", packageVersion("MCQR")))
diff --git a/src/utils/types.h b/src/utils/types.h
index 7bbb7e35d561ba2fd34d0817129670dd505df853..9430f08a0efc400782e4e5c285dd06f5270c8823 100644
--- a/src/utils/types.h
+++ b/src/utils/types.h
@@ -232,8 +232,18 @@ enum class PtmMode : std::int8_t
  */
 enum class McqrLoadDataMode : std::int8_t
 {
-  basic     = 0, ///< mcq.read.masschroq
+  basic    = 0, ///< mcq.read.masschroq
   fraction = 1, ///< mcq.read.masschroq.fraction
   label    = 2, ///< mcq.read.masschroq.label
   both     = 3, ///<
 };
+
+
+/** \def McqrExperimentType spectral count, xic
+ *
+ */
+enum class McqrExperimentType : std::int8_t
+{
+  spectralCount = 0, ///< use xtpcpp data
+  xic           = 1, ///< use masschroq results
+};