source: Sophya/trunk/Poubelle/archTOI.old/ssthandler.h@ 3997

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

V2

File size: 3.3 KB
RevLine 
[350]1// ssthandler.h
2// Eric Aubourg CEA/DAPNIA/SPP juillet 1999
3
[315]4#ifndef SSTHANDLER_H
5#define SSTHANDLER_H
6
[394]7#include <math.h>
[315]8#include <vector>
[394]9#include <map>
[315]10
11#ifndef nb_max_bolo
12#define _archeops // Acquisition Archeops (avec transputer)
13#define programme
14extern "C" {
15#include "archeops.h"
16}
17#endif
18
[394]19class ArcheopsFile;
[315]20
[394]21// Zone findStar
22#include "sstetoile.h"
23#include "pisteetoile.h"
24
25//#define SST_DEBUG
[534]26//#define SSTDUMP
27#define SSTChassLog
28//#define SSTStatLog
29
30#define NbChanDump (3)
[394]31#define NbPhotDiodBarette (46)
32#define NbEtInMapMax (100)
33#define NbSampleBlock (2*nb_per_block)
34// Fin Zone findStar
35
[315]36class SSTHandler {
37public:
38 SSTHandler();
39 SSTHandler(SSTHandler const&);
40 SSTHandler& operator = (SSTHandler const&);
41 virtual ~SSTHandler();
42
[394]43 enum process { permDiode = 1,
[315]44 findStars = 2,
45 findPeriod = 4,
46 findAxis = 8 };
47
48 void NeedProcess(int prcMask);
49 void ProcessBlock(block_type_sst*);
[342]50
51 static void Has2Bars(bool, int elecOffset=0); // elecOffset : which wired together
[315]52
[394]53 long getLastBlkNum() {return lastBlkNum;}
[315]54 int getRawSignal(int imesure, int idiode); // for last block
55 int getSignal(int imesure, int idiode); // for last block, imesure<0 -> history
[394]56
57 // Zone findStar
58 int getNumbStar(int iSampl);
59 // return number of star found in sample number iSampl
60 int getStarZ(int iSampl, int istar);
61 // return diode number of the star
62 double getStarF(int iSampl, int istar);
63 // return star flux in Ampère
64 double getStarTime(int iSampl, int istar);
65 // return star time in this sample
[315]66
67protected:
68 int diodeRaw[nb_per_block*2][48];
69 int diodeHistLength;
70 int* diodeT; //[>nb_per_block*2]*[nb_photo_diodes];
71 int prcTodo;
72 int starHistLength;
73 long lastBlkNum;
74
[394]75 // Is there two photoDiod Arrays and how are they connected?
[342]76 static bool has2bars;
77 static int elecOffset;
78
[315]79 inline int& diode(int iSamp, int iDiod) {return diodeT[iSamp*nb_photo_diodes+iDiod];}
80
[394]81 static int diodpermut[46]; // diodpermut[i] = channel de la diode i
82
83 void DecodeTMBlock(block_type_sst*, int i, int* diodes); // mesure i -> diodes
84 void PermutDiode(); // diodeRaw -> diode, avec decalage, 1 echantillon.
85 int FindStars(block_type_sst* blk); // sur les 72 derniers echantillons dans diode.
86 // return nmber of star found in last block
87
88 // Zone findStar
89 int NbStarInBlock;
[315]90
[394]91 PisteEtoile** PisteBar;
92
[534]93#ifdef SSTDUMP
[394]94 ofstream** pPisteDump;
95#endif
96
97 map<double,SSTEtoile> StarHistoryMap;
98 // On stocke les etoiles de manière ordonnée en temps
99 typedef map<double,SSTEtoile>::iterator StarHistIter;
100 typedef map<double,SSTEtoile>::const_iterator StarConstHistIter;
[315]101
[394]102 vector<SSTEtoile> LastBlockStarVec;
103 // Vecteur des SSTEtoile du block classees en ordre de temps decroissant.
104 //vector<SSTEtoile> reverse_iterator StarVecRevIter LastBlockStarVec.rbegin();
105 SSTEtoile LastStar;
106 PisteEtoile* pPiste; // Piste courante d'analyse
107 int Diodedata[NbSampleBlock];
108 int offseDataDiod;
109 int LastBlockSSTNb; // Gère la disparition des blocs défectueux
110 int noStarDet;
111 int FirstSplNb(block_type_sst* blk); // Calcule l'index du premier echantillon du block analysé
[534]112
[401]113 static ofstream sstchass;
114 static bool sstchassinit;
[315]115
[394]116 void findStarConstruct();
117 void findStarDestruct();
[315]118};
119
120#endif
Note: See TracBrowser for help on using the repository browser.