qmca  0.0.20
mcagroup.cpp
Go to the documentation of this file.
1 #include "mcagroup.h"
2 #include "epicsmca.h"
3 
4 #include <QFileDialog>
5 
6 #include <stdio.h>
7 
8 MCAGroup::MCAGroup(QObject *parent)
9  : QObject(parent)
10 {
11 }
12 
14 {
15  while (!m_MCAList.isEmpty()) {
16  delete m_MCAList.takeFirst();
17  }
18 }
19 
21 {
22  m_MCAList.append(mca);
23 }
24 
26 {
27  return m_MCAList.count();
28 }
29 
31 {
32  EpicsMCA *mca;
33 
34  foreach(mca, m_MCAList) {
35  mca->erase();
36  }
37 }
38 
40 {
41  EpicsMCA *mca;
42 
43  foreach(mca, m_MCAList) {
44  mca->start();
45  }
46 }
47 
49 {
50  EpicsMCA *mca;
51 
52  foreach(mca, m_MCAList) {
53  mca->stop();
54  }
55 }
56 
58 {
59  EpicsMCA *mca;
60 
61  foreach(mca, m_MCAList) {
62  mca->eraseAndStart();
63  }
64 }
65 
67 {
68  EpicsMCA *mca;
69 
70  foreach(mca, m_MCAList) {
71  mca->setPresetRealTime(t);
72  }
73 }
74 
76 {
77  EpicsMCA *mca;
78 
79  foreach(mca, m_MCAList) {
80  mca->setPresetLiveTime(t);
81  }
82 }
83 
85 {
86  QString name = QFileDialog::getSaveFileName(0, "Save MCA Data...");
87 
88  if (name != "") {
89  write_data(name);
90  }
91 }
92 
93 void MCAGroup::write_data(QString name)
94 {
95  FILE *f = fopen(qPrintable(name),"w");
96 
97  QVector<QVector<double> > cols;
98  EpicsMCA *mca;
99 
100  fprintf(f, "#N");
101 
102  foreach(mca, m_MCAList) {
103  fprintf(f,"\t%s",qPrintable(mca->pvName()));
104  cols.append(mca->value());
105  }
106 
107  fprintf(f, "\n");
108 
109  int ncols = cols.count();
110  int nrows = 0;
111 
112  if (ncols) {
113  nrows = cols[0].count();
114  }
115 
116  printf("%d rows x %d columns\n", nrows, ncols);
117 
118  for (int i=0; i<nrows; i++) {
119  fprintf(f, "%d", i);
120 
121  for (int j=0; j<ncols; j++) {
122  fprintf(f, "\t%g", cols[j][i]);
123  }
124 
125  fprintf(f, "\n");
126  }
127 
128  fclose(f);
129 }
130 
void erase_start_mcas()
Definition: mcagroup.cpp:57
void append(EpicsMCA *mca)
Definition: mcagroup.cpp:20
void stop_mcas()
Definition: mcagroup.cpp:48
void setPresetRealTime(double t)
Definition: mcagroup.cpp:66
void start_mcas()
Definition: mcagroup.cpp:39
void setPresetRealTime(double t)
Definition: epicsmca.cpp:25
void stop()
Definition: epicsmca.cpp:70
QList< EpicsMCA * > m_MCAList
Definition: mcagroup.h:33
void setPresetLiveTime(double t)
Definition: epicsmca.cpp:30
QString pvName()
Definition: epicsobject.cpp:30
void save_data()
Definition: mcagroup.cpp:84
void erase_mcas()
Definition: mcagroup.cpp:30
QVector< double > value()
Definition: epicsarray.cpp:90
void setPresetLiveTime(double t)
Definition: mcagroup.cpp:75
void eraseAndStart()
Definition: epicsmca.cpp:65
void start()
Definition: epicsmca.cpp:60
void erase()
Definition: epicsmca.cpp:55
MCAGroup(QObject *parent)
Definition: mcagroup.cpp:8
void write_data(QString name)
Definition: mcagroup.cpp:93
virtual ~MCAGroup()
Definition: mcagroup.cpp:13
int count()
Definition: mcagroup.cpp:25