1 | #ifndef PisteEtoileSeen
|
---|
2 | #define PisteEtoileSeen
|
---|
3 | #include "sstetoile.h"
|
---|
4 | #include "transfelec.h"
|
---|
5 | #include "formepulse.h"
|
---|
6 |
|
---|
7 | /* // D. Yvon, CE Saclay, 08/99
|
---|
8 |
|
---|
9 | // Analyse the Photodiode track to find star pulse.
|
---|
10 | // Caracterise the time and amplitude of the star Pulse
|
---|
11 |
|
---|
12 | We analyse a set of 32 samples. The 16 first are considered as prepulse sample.
|
---|
13 | On the prepulse:
|
---|
14 | We compute baseline and substract it.
|
---|
15 | Then compute slope due to pile up and substract it
|
---|
16 | Then compute Vrms.
|
---|
17 | Look for trigger
|
---|
18 | If triggered :
|
---|
19 | Look for maximum. If max found 20< Max< 28
|
---|
20 | Iterate time fit on pulse area and compute amplitude and X2
|
---|
21 | Find best X2.
|
---|
22 | Fit parabole arond the minimum of X2 to get the true minimum.
|
---|
23 | Build SSTStar.
|
---|
24 |
|
---|
25 | That's it. Test code tstpisteetoile.cc can be found in tstroutines folder.
|
---|
26 | When done push the track eigth samples forward and iterate analysis.
|
---|
27 | */
|
---|
28 |
|
---|
29 | class FormePulse;
|
---|
30 |
|
---|
31 | #define PEtoileDebug
|
---|
32 |
|
---|
33 |
|
---|
34 | #define PhDiodTabLong (48)
|
---|
35 | #define Prepulselong (32)
|
---|
36 | #define Pousslong (8)
|
---|
37 |
|
---|
38 |
|
---|
39 | // Parametrisation du Trigger
|
---|
40 | #define SeuilGachette (6.) // On déclenche à SeuilGachette sigmas
|
---|
41 | #define SSTLsbVal (10./4096)
|
---|
42 |
|
---|
43 | // Parametrisation Analyse Fine
|
---|
44 | #define TFExcursion (15.e-3) // Secondes: Excursion du fit autour de MaxIndex
|
---|
45 | #define TPasTFit (2.5e-3) // Secondes:
|
---|
46 | // Secondes:
|
---|
47 |
|
---|
48 | class PisteEtoile {
|
---|
49 | public:
|
---|
50 | PisteEtoile(short NoPhotDiod=0);
|
---|
51 | PisteEtoile (PisteEtoile const & x);
|
---|
52 | ~PisteEtoile();
|
---|
53 | PisteEtoile& operator = (PisteEtoile const & x);
|
---|
54 | void fill(int* pData, int inDebutPiste=0, int nData=PhDiodTabLong);
|
---|
55 | void push(int* pData, int nbdata=Pousslong);
|
---|
56 | //"Pousse" les données dans PhDiodArray de nbdata
|
---|
57 | bool traque() ;
|
---|
58 | // Traque l'etoile.
|
---|
59 | bool trig();
|
---|
60 | //Trig sur les donnees? Si Oui declenche une analyse complète
|
---|
61 | void demasque();
|
---|
62 | // Met en Oeuvre un fit de forme pour determiner le temps et l'amplitude.
|
---|
63 |
|
---|
64 | bool isAlive() { return DiodVivante;}
|
---|
65 | void kill() { DiodVivante=false;}
|
---|
66 | void restore() { DiodVivante=true;}
|
---|
67 |
|
---|
68 | SSTEtoile DonneEtoile() {return LastEtoile;}
|
---|
69 | //Retourne la dernière Etoile détectee
|
---|
70 | inline int SSTLargEvtIndex();
|
---|
71 | inline int SSTLongIndexEvt();
|
---|
72 | protected:
|
---|
73 | double PasTempsEch; //Secondes
|
---|
74 | // Idendificateur, repères et gestion
|
---|
75 | short NoPhDiod;
|
---|
76 | int indexDebutPiste; // A actualiser dans push() et Fill()! BUGG!!!!
|
---|
77 | bool DiodVivante; // Si false, On ne fait rien
|
---|
78 |
|
---|
79 | // Stocke donnees brutes et traitees
|
---|
80 | int* PhDiodArray;
|
---|
81 | double* PhDiodPiste;
|
---|
82 |
|
---|
83 | // Derniere Etoile Vue
|
---|
84 | SSTEtoile LastEtoile;
|
---|
85 |
|
---|
86 | // Variables d'analyse
|
---|
87 | bool gachette;
|
---|
88 | double Vrms;
|
---|
89 | short MaxIndex; // Index de l'amplitude Max en analyse Trig()
|
---|
90 | double AmplMax;
|
---|
91 | int widthHalfMax;
|
---|
92 | // double integ;
|
---|
93 | // Variables Resultat d'analyse fine
|
---|
94 |
|
---|
95 | double AmplRes;
|
---|
96 | double TIndex;
|
---|
97 | double X2Min;
|
---|
98 | bool SuccesAFine;
|
---|
99 |
|
---|
100 | // Utilitaires de calcul analyse fine
|
---|
101 | double AmplNorm;
|
---|
102 | // Normalisation d'amplitude sur FPulse dans l'ajustement iteratif
|
---|
103 | double *pFitArray0;
|
---|
104 | // Pointeur origine du tableau d'echantillon sur lequel sera calculé le fit
|
---|
105 | double *pFitArray;
|
---|
106 | // Pointeur courant du tableau d'echantillon
|
---|
107 | double* Ampl; //Tableau des amplitudes calculées
|
---|
108 |
|
---|
109 | double* X2; //Tableau des X2 calculés
|
---|
110 |
|
---|
111 | static TransFuncElec Trapani;
|
---|
112 | static FormePulse FPulse;
|
---|
113 |
|
---|
114 | };
|
---|
115 |
|
---|
116 | #endif
|
---|