| [3308] | 1 | #include "lcproc.h" | 
|---|
|  | 2 |  | 
|---|
|  | 3 | #include "sopnamsp.h" | 
|---|
|  | 4 |  | 
|---|
|  | 5 | LightCurveProc::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 |  | 
|---|
|  | 29 | LightCurveProc::~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 |  | 
|---|
|  | 38 | void 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 | 
|---|
| [3572] | 49 | if ((int)fgbad.size() < nmes) | 
|---|
| [3308] | 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 |  | 
|---|
|  | 69 | void 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 |  | 
|---|