source: Sophya/trunk/FrEROS/AnaLC/lcproc.cc@ 3324

Last change on this file since 3324 was 3308, checked in by ansari, 18 years ago

Creation du module AnaLC (lecture suivi EROS avec SOPHYA) dans la base
SOPHYA - cmv+reza 22/08/2007

  • Property svn:executable set to *
File size: 2.4 KB
Line 
1#include "lcproc.h"
2
3#include "sopnamsp.h"
4
5LightCurveProc::LightCurveProc(string outppf, int dtblks, int dtblkti)
6 : dts(dtblks) , dtti(dtblkti), _outname(outppf)
7{
8 // Defining column names for the dts : One row / star
9 dts.AddFloatColumn("NumEt");
10 dts.AddFloatColumn("FluxRef");
11 dts.AddFloatColumn("XPos");
12 dts.AddFloatColumn("YPos");
13 dts.AddFloatColumn("nmes");
14 dts.AddFloatColumn("MeanFlux");
15 dts.AddFloatColumn("SigFlux");
16
17
18 // Defining column names for the dtti : One row / exposure ( = TimeInfo_
19 dtti.AddFloatColumn("TStart");
20 dtti.AddFloatColumn("Expose");
21 dtti.AddFloatColumn("Fond");
22 dtti.AddFloatColumn("SigFond");
23 dtti.AddFloatColumn("SigX");
24 dtti.AddFloatColumn("SigY");
25 dtti.AddFloatColumn("Absorption");
26 dtti.AddIntegerColumn("FgBad");
27}
28
29LightCurveProc::~LightCurveProc()
30{
31 cout << " LightCurveProc::~LightCurveProc() Writing DT-Stars, DT-TimeInfo to file \n"
32 << _outname << endl;
33 POutPersist po(_outname);
34 po << PPFNameTag("stardt") << dts;
35 po << PPFNameTag("timdt") << dtti;
36}
37
38void LightCurveProc::ProcessLC(int numet, int nmes, STARINFO *sti, TIMEINFO *tminf, MESUREU *mesu)
39{
40 double xnt[20];
41 xnt[0] = sti->NumEt;
42 xnt[1] = sti->FluxRef;
43 xnt[2] = sti->XPos;
44 xnt[3] = sti->YPos;
45
46 xnt[4] = (double)nmes;
47
48 // We have to check that fgbad has been filled
49 if (fgbad.size() < nmes)
50 for(int kb=fgbad.size(); kb<nmes; kb++) fgbad.push_back(0);
51
52 xnt[5] = 0.;
53 for(int jt=0; jt<nmes; jt++) { /* mesure jt=0 is the reference image */
54 if (fgbad[jt] != 0) continue;
55 xnt[5] += mesu[jt].Flux;
56 }
57 xnt[5] /= nmes; // mean flux of the star number numet
58
59 xnt[6] = 0.;
60 for(int jt=1; jt<nmes; jt++) {
61 if (fgbad[jt] != 0) continue;
62 xnt[6] += (mesu[jt].Flux - xnt[5])*(mesu[jt].Flux - xnt[5]);
63 }
64 xnt[6] = sqrt(xnt[6]/nmes); // flux dispersion of the star number numet
65
66 dts.AddRow(xnt);
67}
68
69void LightCurveProc::TimeInfo(int nmes, TIMEINFO *tminf)
70{
71 double xnt[20];
72 fgbad.clear();
73 for(int jt=0; jt<nmes; jt++){
74 fgbad.push_back(0);
75 if (jt == 0) fgbad[jt] = 1; // flag mes #0 (ref) as bad
76 if((jt==260)||(jt==647)) fgbad[jt] = 2; // in-proper mesures
77 xnt[0] = tminf[jt].TStart/86400.;
78 xnt[1] = tminf[jt].Expose;
79 xnt[2] = tminf[jt].Fond;
80 xnt[3] = tminf[jt].SigFond;
81 xnt[4] = (double)tminf[jt].SigX;
82 xnt[5] = tminf[jt].SigY;
83 xnt[6] = tminf[jt].Absorption;
84 xnt[7] = fgbad[jt];
85 dtti.AddRow(xnt);
86 }
87}
88
Note: See TracBrowser for help on using the repository browser.