source: Sophya/trunk/Poubelle/archTOI.old/archeopsfile.h@ 310

Last change on this file since 310 was 310, checked in by ansari, 26 years ago

Conversion Archeops raw file -> TOI

File size: 4.8 KB
RevLine 
[310]1#ifndef ARCHEOPSFILE_H
2#define ARCHEOPSFILE_H
3
4#include <stdio.h>
5#include <string>
6#include <stack>
7
8#define _archeops // Acquisition Archeops (avec transputer)
9#define programme
10
11extern "C" {
12#include "archeops.h"
13}
14
15enum {
16 block_param_mask = 1 << block_param,
17 block_journal_mask = 1 << block_journal,
18 block_reglage_mask = 1 << block_reglage,
19 block_dilution_mask = 1 << block_dilution,
20 block_gps_mask = 1 << block_gps,
21 block_une_periode_mask = 1 << block_une_periode,
22 block_synchro_sol_mask = 1 << block_synchro_sol,
23 block_pointage_sol_mask = 1 << block_pointage_sol,
24 block_bolo_nc_mask = 1 << block_bolo,
25 block_gyro_nc_mask = 1 << block_gyro,
26 block_sst_nc_mask = 1 << block_sst,
27 block_11_mask = 1 << block_11,
28 block_bolo_comprime_mask = 1 << block_bolo_comprime,
29 block_gyro_comprime_mask = 1 << block_gyro_comprime,
30 block_sst_comprime_mask = 1 << block_sst_comprime,
31 block_catalog_flash_mask = 1 << block_catalog_flash,
32 block_cmd_flash_mask = 1 << block_cmd_flash,
33 block_data_brute_mask = 1 << block_data_brute,
34 block_18_mask = 1 << block_18,
35 block_19_mask = 1 << block_19,
36
37 block_bolo_mask = block_bolo_nc_mask | block_bolo_comprime_mask,
38 block_gyro_mask = block_gyro_nc_mask | block_gyro_comprime_mask,
39 block_sst_mask = block_sst_nc_mask | block_sst_comprime_mask
40};
41
42class BlockSet;
43
44class ArchExc : public exception {
45public:
46 ArchExc(string s) : msg(s) {}
47 string Msg() {return msg;}
48protected:
49 string msg;
50};
51
52class ArcheopsFile {
53public:
54 ArcheopsFile(string const& fname); // starting before first block
55 ArcheopsFile(ArcheopsFile const&);
56 virtual ~ArcheopsFile();
57
58 void setUTCOffset(int UTCOffset=2); // StartMJD : decodage a partir du nom du bloc...
59 double getStartMJD();
60
61 bool nextBlock(); // go to next block, true if block exists
62 bool nextBlock(long mask); // go to next block matching mask
63 int blockKind(); // kind of the current bloc, enum in archeops.h
64 int blockRawKind(); // kind of the current raw bloc, enum in archeops.h
65 int blockNum(); // number (timestamp) of the current bloc
66 string blockKdName();
67 string blockRawKdName();
68
69 double perEchant(); // periode d'echantillonage pour le dernier bloc reglage
70 double perBlock(); // duree (en secondes) correspondant a un bloc bolo
71 // utilise infos dernier bloc param et dernier bloc reglage.
72 int nEchBlock(); // Nb d'echantillons dans un bloc bolo
73
74
75 void pushMark(); // push current file position, and "last" blocks
76 void popMark(); // pops last file position and "last" blocks
77
78 void grabLastBlocs(ArcheopsFile const& oldFile);
79
80 block_type_modele* currentBlock(); // internal buffer
81
82 block_type_param* lastParam(); // saved blocks, including current
83 block_type_journal* lastJournal();
84 block_type_reglage* lastReglage();
85 block_type_dilution* lastDilution();
86 block_type_gps* lastGPS();
87 block_type_une_periode* lastUnePeriode();
88 block_type_synchro_sol* lastSynchroSol();
89 block_type_pointage_sol* lastPointageSol();
90 block_type_bolo* lastBolo(); // can be uncompressed bolo_comp
91 block_type_bolo* llastBolo();
92 block_type_gyro* lastGyro();
93 block_type_sst* lastSST();
94 block_type_bolo_comprime* lastBoloComp();
95 block_type_gyro_comprime* lastGyroComp();
96 block_type_sst_comprime* lastSSTComp();
97
98 // Decodage des derniers blocs..
99
100 // GPS
101 // On travaille en MJD = JD - 2450000.0, = 9 octobre 1995 midi UTC
102 // 1er juillet 1999 minuit UTC = JD 2451360.5, MJD 1360.5
103 int getGPSBlockNum();
104 double getGPSUTC(); // en secondes depuis minuit UTC
105 double getGPSMJD(); // modified julian day du dernier bloc GPS, JD - 2450000
106 double getGPSLat(); // degres, + = NORD
107 double getGPSLong(); // degres, + = EST
108
109 // Bolo
110 long getRawBolo(int ibolo, int imesure); // donnee brute, avec seulement soustraction offset
111 double getMuVBolo(int ibolo, int imesure); // microvolts, filtre avec filtre carre
112
113 // SST, gyros, etc
114
115 double getAzimut(int imesure);
116 double getPendDirect(int imesure);
117 double getPendOrth(int imesure);
118
119 double getAlpha(int imesure);
120 double getDelta(int imesure);
121
122
123protected:
124 BlockSet* blockSet;
125 stack<BlockSet*> blockStack;
126 stack<size_t> fposStack;
127
128 void saveCurBlock();
129 void postProcessBlock();
130
131 void computeMJD(string const& fname);
132
133 block_type_modele curBlock;
134 int curKind;
135 int curRawKind;
136 size_t curPos;
137 size_t fLen;
138 FILE* f;
139 string fn;
140
141 double rawMJD; // decodage a partir du nom de fichier, sans application d'offset heure locale
142 double startMJD; // MJD du debut du fichier.
143 double utcOffset;
144private:
145};
146
147#endif
Note: See TracBrowser for help on using the repository browser.