]> git.treefish.org Git - phys/latlib.git/blob - o815/o815.h
31d36da421dc0aa8b8a3640a2cc84dab85426d84
[phys/latlib.git] / o815 / o815.h
1 #ifndef O815_H
2 #define O815_H
3
4 #include <string>
5 #include <vector>
6 #include <mpi.h>
7 #include <stdlib.h>
8
9 #include "latlib/paraq.h"
10 #include "latlib/writeout.h"
11
12 using namespace std;
13
14 class obs;
15
16 class o815 {
17  public:
18   class obs {
19   public:
20     obs(const string& obsid, o815 *_O815);
21     void finish();
22     void meas();
23   private:
24     virtual void _meas(bool loadedobs)=0;
25     virtual void _finish()=0;
26   protected:
27     o815 *O815;
28     char *obsMem;
29     ostream *oout;
30     ostream *olog;
31     string obsid;
32   };
33
34   struct {
35     int nmeas;
36     int nskip;
37     int nequi;
38     int lsize[2];
39     pair<string,int> obscache;
40     pair<string,int> confcache;
41     string outdir;
42     bool idonly;
43     bool showjobnum;
44   } comargs;
45
46   o815(int argc, char **argv, const string& programid);
47   paraq *paraQ;
48   writeout *out;
49   vector<obs*> observables;
50
51 private:
52   MPI_Status mpiStatus;
53   int numprocs, rank;
54   static void listArg(int *target, int tlen, char *listarg);
55   void parseArgs(int argc, char **argv);
56   string programid;
57   string headMaster();
58 };
59
60 #endif