//---------------------------------------------------------------------------

#ifndef DataH
#define DataH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Chart.hpp>
#include <ExtCtrls.hpp>
#include <TeEngine.hpp>
#include <Series.hpp>
#include <TeeProcs.hpp>
#include <Menus.hpp>
#include <ComCtrls.hpp>
#include <Dialogs.hpp>
//#include "Main.h"
//---------------------------------------------------------------------------

class TDataForm : public TForm
{
__published:	// IDE-managed Components

  TPageControl *Page1;
//=========================
  TTabSheet *DataSheet;
//==========================

  TTabSheet   *FitSheet;
  TGroupBox   *F_Group;
  TEdit       *FoEd;
  TEdit       *FmEd;
  TEdit       *SigEd;
  TEdit       *pEd;
  TCheckBox   *FoFree;
  TCheckBox   *FmFree;
  TCheckBox   *SigFree;
  TCheckBox   *pFree;
  TLabel      *FmLabel;
  TLabel      *SigLabel;
  TLabel      *pLabel;

  TGroupBox   *Tau_Group;

//==========================
  TMainMenu   *MainMenu;
  TMenuItem   *File1;
   TMenuItem *Save_Data_Dlg;
  TMenuItem   *Exit1;
  TTabSheet *SimSheet;
   TMenuItem *Read_Data_Dlg;
   TMenuItem *Read_Results_Dlg;
//------ SIMULATION ----
  TGroupBox *ModelSelBox;
  TRadioButton *SeparateUnitsBtn;
  TRadioButton *RestrictedTransferBtn;
  TRadioButton *LakeBtn;
  TRadioButton *PuddleBtn;
  TGroupBox *ModelTypeBox;
  TRadioButton *ButlerModelBtn;
  TRadioButton *RateModelBtn;
  TGroupBox *ElectronTransferValBox;
  TEdit *TauQAPQEd;
  TGroupBox *ElectronTrasferTypeBox;
  TRadioButton *TwoStepTrBtn;
  TRadioButton *FiveStepTrBtn;
  TLabel *TauQAPQLabel;
  TEdit *TauPQEd;
  TLabel *TauPQLabel;
  TBevel *Bevel3;
  TEdit *TauQAQBEd;
  TEdit *TauQB2PQEd;
  TEdit *TauAssEd;
  TEdit *TauQAQB2Ed;
  TBevel *Bevel4;
  TStaticText *StaticText5;
  TEdit *NoRCEd;
  TStaticText *StaticText6;
  TEdit *PQPoolEd;
   TOpenDialog *OpenFileDialog;
  TGroupBox *RateConstantsBox;
  TLabel *KpLabel;
  TLabel *KfLabel;
  TLabel *KlLabel;
  TLabel *Kt_openLabel;
  TBevel *Bevel5;
  TLabel *Kb_OpenLabel;
  TLabel *Kt_closedLabel;
  TLabel *Kb_closed_label;
  TLabel *KlRCLabel;
  TEdit *kpEd;
  TEdit *kfEd;
  TEdit *klEd;
  TEdit *ktoEd;
  TEdit *kboEd;
  TEdit *ktcEd;
  TEdit *kbcEd;
  TEdit *klrcEd;
  TGroupBox *SimTimeStepBox;
  TEdit *SimStepEd;
  TEdit *SimRecEd;
  TEdit *SimTimeEd;
  TLabel *SimStepLabel;
  TLabel *TauQA_QBLAbel;
  TLabel *TauQA_QB2Label;
  TLabel *Tau_QB2_PQLabel;
  TLabel *Tau_AssocLabel;
  TLabel *NoRCLabel;
  TLabel *PQ_PoolLabel;
  TLabel *SimRecLabel;
  TProgressBar *ProgressBar1;
  TLabel *SimTimeLabel;
  TGroupBox *SimActionBox;
  TButton *SimStartBtn;
  TTabSheet *ProtocolSheet;
  TMenuItem *Edit1;
  TMenuItem *Delete1;
  TMenuItem *Cut1;
  TMenuItem *Copy1;
  TMenuItem *Paste1;
  TMenuItem *Selectall1;
  TMenuItem *N1;
  TMenuItem *Font;
  TFontDialog *FontDialog1;
  TRichEdit *Protocol;
  TPopupMenu *ProtocolPopMenu;
  TMenuItem *Parse_Protocol;
  TMenuItem *Get_Protocol;
  TMenuItem *Store_Protocol;
  TMenuItem *N2;
  TMenuItem *Delete2;
  TMenuItem *Cut2;
  TMenuItem *Copy2;
  TMenuItem *Paste2;
  TMenuItem *Selectall2;
  TMenuItem *N3;
  TMenuItem *Font2;
  TChart *FlashChart;
  TChart *IrrChart;
  TChart *SimChart;
  TEdit *SimRunsEd;
  TLabel *Label1;
  TEdit *RunEd;
  TLabel *Label2;
  TLabel *FoLabel;
  TMenuItem *N4;
  TSaveDialog *SaveFileDlg;
  TMenuItem *N5;
  TMenuItem *Save_Protocol_File;
  TGroupBox *ProtocolBtnBox;
  TButton *Get_ProtocolBtn;
  TButton *Parse_ProtocolBtn;
  TButton *Store_ProtocoBtn;
  TButton *Save_Protocol_FileBtn;
   TGroupBox *GroupBox2;                                                            
   TButton *EXEBtn;
   TShape *EXECUTE_Ind;
   TButton *LoadSeqBtn;
   TButton *SampleBtn;
   TLabel *NoiseLabel;
   TButton *SimulateBtn;
   TEdit *NoiseEd;
   TPanel *FitChartsPanel;
   TChart *ProfileChart;
   TChart *FitChart;
   TGroupBox *GroupBox4;
   TButton *RegressBtn;
   TButton *RegressDecBtn;
   TStaticText *StaticText1;
   TEdit *RegrOrdEd;
   TButton *SaveParamBtn;
   TButton *RestoreParamBtn;
   TSplitter *Splitter1;
  TButton *TimeBaseBtn;
  TEdit *RunsEd;
  TLabel *Label3;
  TLabel *Label4;
   TPanel *DataPlotChartPanel;
   TChart *DataChart;
   TSplitter *DataChartSplitter;
   TPanel *DataPlotSelectPanel;
   TGroupBox *PlotSelectGroup;
   TEdit *FmRangeEd;
   TEdit *FvRangeEd;
   TEdit *PlotRangeEd;
   TEdit *DelRangeEd;
   TEdit *SigRangeEd;
   TEdit *pRangeEd;
   TEdit *t1QARangeEd;
   TEdit *t2QARangeEd;
   TEdit *t2PQRangeEd;
   TEdit *t3PQRangeEd;
   TCheckBox *t1QAPlotBox;
   TCheckBox *t2QAPlotBox;
   TCheckBox *t2PQPlotBox;
   TCheckBox *t3PQPlotBox;
   TCheckBox *PlotBox;
   TCheckBox *FmPlotBox;
   TCheckBox *FvPlotBox;
   TCheckBox *DelPlotBox;
   TCheckBox *SigPlotBox;
   TCheckBox *pPlotBox;
   TCheckBox *t3QAPlotBox;
   TEdit *t3QARangeEd;
   TCheckBox *t1PQPlotBox;
   TEdit *t1PQRangeEd;
   TCheckBox *IrradPlotBox;
   TEdit *IrradRangeEd;
   TCheckBox *TempPlotBox;
   TEdit *TempRangeEd;
   TShape *PlotColSym;
   TShape *FmColSym;
   TShape *FvColSym;
   TShape *DelColSym;
   TShape *SigColSym;
   TShape *pColSym;
   TShape *t1QAColSym;
   TShape *t2QAColSym;
   TShape *t3QAColSym;
   TShape *t1PQColSym;
   TShape *t2PQColSym;
   TShape *t3PQColSym;
   TShape *IrradColSym;
   TShape *TempColSym;
   TColorDialog *ColorDlg;
   TLabel *Alp1Label;
   TEdit *Alp0Ed;
   TLabel *Tau1Label;
   TEdit *Tau0Ed;
   TCheckBox *Tau0Free;
   TLabel *Alp2Label;
   TEdit *Alp1Ed;
   TLabel *Tau2Label;
   TEdit *Tau1Ed;
   TCheckBox *Tau1Free;
   TLabel *Alp3Label;
   TEdit *Alp2Ed;
   TLabel *Tau3Label;
   TEdit *Tau2Ed;
   TCheckBox *Tau2Free;
   TLabel *Alp4Label;
   TEdit *Alp3Ed;
   TLabel *Tau4Label;
   TEdit *Tau3Ed;
   TCheckBox *Tau3Free;
   TButton *FixedGainBtn;
   TLabel *Label8;
   TButton *SingleExpBtn;
   TLabel *ExPowerLabel;
   TEdit *ExPowerEd;
   TLabel *IrradLabel;
   TEdit *IrradEd;
   TGroupBox *GroupBox3;
   TButton *FitBtn;
   TButton *ContFitBtn;
   TButton *StepFitBtn;
   TButton *ShowFitBtn;
   TButton *ResetDelBtn;
   TLabel *NoIterLabel;
   TEdit *NoIterEd;
   TLabel *IterLabel;
   TEdit *IterEd;
   TLabel *DelFactorLabel;
   TEdit *DelFactorEd;
   TLabel *DerValLabel;
   TEdit *DerValueEd;
   TCheckBox *Weighted;
   TLabel *ChisqLabel;
   TEdit *ChisqEd;
   TLabel *DeltaLabel;
   TEdit *DeltaEd;
   TLabel *NoTausLabel;
   TEdit *NoTausEd;
   TCheckBox *CStartFree;
   TEdit *CStartEd;
   TLabel *Label9;
   TBevel *Bevel1;
   TBevel *Bevel2;
   TMenuItem *N6;
   TMenuItem *N7;
   TMenuItem *Save_Results_Dlg;
   TMenuItem *N8;
   TMenuItem *Store_File_NameDlg;
   TButton *FileStoreModeBtn;
   TLabel *Label11;
   TLabel *Label12;
   TPanel *FilePanel;
   TLabel *Label13;
   TLabel *StoreFileNameLabel;
   TPanel *DataChartControlPanel;
   TButton *MoveLeftBtn;
   TButton *MoveRightBtn;
   TSplitter *Splitter3;
   TPanel *ResultsPanel;
   TSplitter *Splitter4;
   TMemo *RawDataMemo;
   TMemo *ResultsMemo;
   TMenuItem *View_Data_Dlg;
   TMenuItem *DeleteFileDlg;
   TMenuItem *N9;
   TBevel *Bevel7;
   TEdit *PlotOptionsEd;
   TEdit *PlotEndEd;
   TEdit *PlotWindowEd;
   TEdit *PlotUpdateEd;
   TShape *Shape1;
   TShape *al1QAColSym;
   TCheckBox *al1QAPlotBox;
   TEdit *al1QARangeEd;
   TShape *al2QAColSym;
   TCheckBox *al2QAPlotBox;
   TEdit *al2QARangeEd;
   TShape *al3QAColSym;
   TCheckBox *al3QAPlotBox;
   TEdit *al3QARangeEd;
   TShape *al1PQColSym;
   TCheckBox *al1PQPlotBox;
   TEdit *al1PQRangeEd;
   TShape *al2PQColSym;
   TCheckBox *al2PQPlotBox;
   TEdit *al2PQRangeEd;
   TShape *al3PQColSym;
   TCheckBox *al3PQPlotBox;
   TEdit *al3PQRangeEd;
   TPopupMenu *PlotRangePopupMenu;
   TMenuItem *ReplotMenu;
   TLabel *Label14;
   TLabel *Label15;
   TLabel *Label16;
   TLabel *Label17;
   TBevel *Bevel8;
   TButton *PlotClear;
   TGroupBox *GroupBox1;
   TLabel *Label18;
   TLabel *Label19;
   TEdit *BlueBackgrLightEd;
   TEdit *IRRBackgrLightEd;
   TButton *BlueLightBtn;
   TButton *IRRLightBtn;
   TLabel *Label20;
   TLabel *Label21;
   TBevel *Bevel9;
   TLabel *SignalCalLb;
        TLabel *iRunLabel;
   TLabel *SignalCalVal;
   TGroupBox *GroupBox5;
   TButton *CycleUpBtn;
   TButton *CycleDownBtn;
   TLabel *Label5;
   TEdit *CycleStartEd;
   TLabel *Label6;
   TEdit *CyclePumpEd;
   TLabel *Label7;
   TEdit *CycleEndEd;
   TLabel *Label10;
   TEdit *Edit2;
   TGroupBox *GroupBox6;
   TButton *FGainBtn;
   TEdit *FGainEd;
   TButton *Button2;
   TEdit *XGainEd;
   TLabel *Label23;
   TLabel *Label24;
   TComboBox *FGainBox;
   TLabel *SignalUnacLb;
   TLabel *SignalUncalVal;
   TShape *Shape2;
   TButton *GetCalibrattionFileBtn;
   TShape *Shape3;
   TButton *SaveCalibrationFileBtn;
   TButton *ReplotBtn;
   TButton *LaserTestBtn;
   TEdit *TimeIntervalEd;
   TLabel *Label22;
   TLabel *Label25;
   TEdit *SeqDelEd;
   TEdit *NoSeqEd;
   TLabel *Label26;
   TLabel *Label27;
   TButton *GetRefButton;
   TCheckBox *ShowRefCheck;
   TButton *SaveRefButton;
   TCheckBox *NormalizeBox;
   TEdit *CycleNoEd;
   TLabel *ycle;
  

  void __fastcall FoEdChange(TObject *Sender);
  void __fastcall FmEdChange(TObject *Sender);
  void __fastcall SigEdChange(TObject *Sender);
  void __fastcall pEdChange(TObject *Sender);
  void __fastcall Alp0EdChange(TObject *Sender);
  void __fastcall Alp1EdChange(TObject *Sender);
  void __fastcall Alp2EdChange(TObject *Sender);
  void __fastcall Alp3EdChange(TObject *Sender);
  void __fastcall Tau0EdChange(TObject *Sender);
  void __fastcall Tau1EdChange(TObject *Sender);
  void __fastcall Tau2EdChange(TObject *Sender);
  void __fastcall Tau3EdChange(TObject *Sender);
  void __fastcall NoTausEdChange(TObject *Sender);
  void __fastcall NoIterEdChange(TObject *Sender);
  void __fastcall FoFreeClick(TObject *Sender);
  void __fastcall FmFreeClick(TObject *Sender);
  void __fastcall SigFreeClick(TObject *Sender);
  void __fastcall pFreeClick(TObject *Sender);
  void __fastcall Tau0FreeClick(TObject *Sender);
  void __fastcall Tau1FreeClick(TObject *Sender);
  void __fastcall Tau2FreeClick(TObject *Sender);
  void __fastcall Tau3FreeClick(TObject *Sender);
  void __fastcall WeightedClick(TObject *Sender);
  void __fastcall GetRefButtonClick(TObject *Sender);
  void __fastcall SaveRefButtonClick(TObject *Sender);
  void __fastcall ShowRefCheckClick(TObject *Sender);
  void __fastcall NormalizeBoxClick(TObject *Sender);
  void __fastcall Save_Data_DlgClick(TObject *Sender);
  void __fastcall ExPowerEdChange(TObject *Sender);
  void __fastcall IrradEdChange(TObject *Sender);
  void __fastcall CStartEdChange(TObject *Sender);
  void __fastcall CStartFreeClick(TObject *Sender);
  void __fastcall ShowFitBtnClick(TObject *Sender);
  void __fastcall FitBtnClick(TObject *Sender);
  void __fastcall StepFitBtnClick(TObject *Sender);
  void __fastcall SimulateBtnClick(TObject *Sender);
  void __fastcall SaveParamBtnClick(TObject *Sender);
  void __fastcall RestoreParamBtnClick(TObject *Sender);
  void __fastcall DelFactorEdChange(TObject *Sender);
  void __fastcall ResetDelBtnClick(TObject *Sender);
  void __fastcall Read_Data_DlgClick(TObject *Sender);
  void __fastcall NoiseEdChange(TObject *Sender);
  void __fastcall DerValueEdChange(TObject *Sender);
  void __fastcall RateModelBtnClick(TObject *Sender);
  void __fastcall TwoStepTrBtnClick(TObject *Sender);
  void __fastcall TauQAPQEdChange(TObject *Sender);
  void __fastcall TauPQEdChange(TObject *Sender);
  void __fastcall TauQAQBEdChange(TObject *Sender);
  void __fastcall TauQAQB2EdChange(TObject *Sender);
  void __fastcall TauQB2PQEdChange(TObject *Sender);
  void __fastcall TauAssEdChange(TObject *Sender);
  void __fastcall NoRCEdChange(TObject *Sender);
  void __fastcall PQPoolEdChange(TObject *Sender);
  void __fastcall kpEdChange(TObject *Sender);
  void __fastcall kfEdChange(TObject *Sender);
  void __fastcall klEdChange(TObject *Sender);
  void __fastcall ktoEdChange(TObject *Sender);
  void __fastcall kboEdChange(TObject *Sender);
  void __fastcall ktcEdChange(TObject *Sender);
  void __fastcall kbcEdChange(TObject *Sender);
  void __fastcall klrcEdChange(TObject *Sender);
  void __fastcall SeparateUnitsBtnClick(TObject *Sender);
  void __fastcall SimTimeEdChange(TObject *Sender);
  void __fastcall SimStepEdChange(TObject *Sender);
  void __fastcall SimRecEdChange(TObject *Sender);
  void __fastcall FontClick(TObject *Sender);
  void __fastcall Cut1Click(TObject *Sender);
  void __fastcall Delete1Click(TObject *Sender);
  void __fastcall Copy1Click(TObject *Sender);
  void __fastcall Paste1Click(TObject *Sender);
  void __fastcall Selectall1Click(TObject *Sender);
  void __fastcall ProtocolPopMenuPopup(TObject *Sender);
  void __fastcall Edit1Click(TObject *Sender);
  void __fastcall SimStartBtnClick(TObject *Sender);
  void __fastcall SimRunsEdChange(TObject *Sender);
  void __fastcall RegrOrdEdChange(TObject *Sender);
  void __fastcall RegressBtnClick(TObject *Sender);
  void __fastcall CycleUpBtnClick(TObject *Sender);
  void __fastcall CycleDownBtnClick(TObject *Sender);
  void __fastcall RegressDecBtnClick(TObject *Sender);
   void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
  void __fastcall Save_Protocol_FileClick(TObject *Sender);
  void __fastcall Get_ProtocolClick(TObject *Sender);
  void __fastcall Parse_ProtocolClick(TObject *Sender);
  void __fastcall Store_ProtocolClick(TObject *Sender);
  void __fastcall SampleBtnClick(TObject *Sender);
  void __fastcall LoadSeqBtnClick(TObject *Sender);
   void __fastcall EXEBtnClick(TObject *Sender);
   void __fastcall TimeBaseBtnClick(TObject *Sender);
   void __fastcall FGainEdChange(TObject *Sender);
   void __fastcall XGainEdChange(TObject *Sender);
   void __fastcall FGainBtnClick(TObject *Sender);
  void __fastcall RunsEdChange(TObject *Sender);
  void __fastcall Page1Resize(TObject *Sender);
   void __fastcall PlotBoxClick(TObject *Sender);
   void __fastcall PlotColSymMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
   void __fastcall SingleExpBtnClick(TObject *Sender);
   void __fastcall FixedGainBtnClick(TObject *Sender);
   void __fastcall Save_Results_DlgClick(TObject *Sender);
   void __fastcall Read_Results_DlgClick(TObject *Sender);
   void __fastcall Store_File_NameDlgClick(TObject *Sender);
   void __fastcall FileStoreModeBtnClick(TObject *Sender);
   void __fastcall View_Data_DlgClick(TObject *Sender);
   void __fastcall DeleteFileDlgClick(TObject *Sender);
   void __fastcall MoveLeftBtnClick(TObject *Sender);
   void __fastcall PlotRangeEdChange(TObject *Sender);
   void __fastcall ReplotMenuClick(TObject *Sender);
   void __fastcall PlotOptionsEdChange(TObject *Sender);
   void __fastcall FormResize(TObject *Sender);
   void __fastcall PlotClearClick(TObject *Sender);
   void __fastcall BlueBackgrLightEdChange(TObject *Sender);
   void __fastcall IRRBackgrLightEdChange(TObject *Sender);
   void __fastcall BlueLightBtnClick(TObject *Sender);
   void __fastcall IRRLightBtnClick(TObject *Sender);
   void __fastcall TimeIntervalEdChange(TObject *Sender);
   void __fastcall FGainBoxChange(TObject *Sender);
   void __fastcall SaveCalibrationFileBtnClick(TObject *Sender);
   void __fastcall GetCalibrattionFileBtnClick(TObject *Sender);
   void __fastcall ReplotBtnClick(TObject *Sender);
   void __fastcall LaserTestBtnClick(TObject *Sender);
   void __fastcall NoSeqEdChange(TObject *Sender);
   void __fastcall SeqDelEdChange(TObject *Sender);
   void __fastcall CycleNoEdChange(TObject *Sender);


private:	// User declarations
  int     sigindex, fmindex, pindex;
  float   arrval[9][9][9], arrsig[9], arrfm[9],arrp[9];
  float   minvalue, ExCalValue;
  float   siggrid, fmgrid, pgrid, gridfactor;
  float   integrated, ww;
  float   refAver, fAver, lambda;
  int     ProfileStart, ProfileEnd, ProfileDelta, RegressOrder;
  char    text[80];
  char*   refname;
  bool    Fnormalized, ReferDisplay, ReferPresent, fittingall, TimeBase;
  bool    FixedGain, SingleExp;
  double  matrix[10][10], bb[10], coeff[10];
  void __fastcall Status();
  float   texp[4], als[4];
  float __fastcall FindMin(float x1, float x2, float x3, float y1, float y2, float y3);
  void __fastcall ShowStatus();
  void __fastcall MakeFit();
  float __fastcall DoReg(int noreg);
  void __fastcall CalculateETR();
  void __fastcall Invert(int dim);
  void __fastcall Regress(int i1, int i2, int order);
  void __fastcall FindCycle();
  void __fastcall UpdateCycle();
  float __fastcall GetArrayMin(float sigcent, float siggrid, float fmcent, float fmgrid, float pcent, float pgrid, int iterations);
  void __fastcall RegressTau(int order);
  void __fastcall MakeFitFRR(int ippstart, int ippend, int idecstart, int idecend, bool QA);
   void __fastcall ShowStatusFRR();
   void __fastcall StoreData(AnsiString filename);
   void __fastcall ShowProgress(int ipstart, int ipend, float res, float tau);
   void __fastcall MakeFitLift();
   float __fastcall GetCresLift(float ccstart, int i1, int i2);
   float __fastcall GetCResLift(float ccstart, int i1, int i2);
   void __fastcall FitTauLift(int ntau);
   float __fastcall GetTauResLift(int ntau, float xtau, float ccstart);
   void __fastcall FitSigLift();
   void __fastcall FitpLift();
   void __fastcall FitfmLift();
   float __fastcall GetFmResLift(float ffm, float ccstart, int i1, int i2);
   float __fastcall GetfoResLift(float ffo, float ccstart, int i1, int i2);
   void __fastcall FitfoLift();


public:		// User declarations
 __fastcall TDataForm(TComponent* Owner);
  TFastLineSeries*  Profile;
  TFastLineSeries*  CORR;
  TFastLineSeries*  CORR1;
  TPointSeries*     F;
  TLineSeries*      FIT;
  TPointSeries*     REF;
  TLineSeries*      CC;
  TFastLineSeries*  FLASH;
  TFastLineSeries*  IRR;
  TFastLineSeries*  EV;
  TFastLineSeries*  EXS;
  TFastLineSeries*  FIF;
  TFastLineSeries*  RED;
  TFastLineSeries*  PQRED;
  TFastLineSeries*  FIH;
  TFastLineSeries*  FIP;
  TFastLineSeries*  CHSEP;
//---- DATACHART Plots ---------
  TLineSeries*       PLOTS[25];
  
//------------------------------
   float PlotVars[20000][25];
   int NoAver;
   int NoPlotVariables;
   int PlotPoint, PlotPoints, PlotStart, PlotEnd, PlotWindow, PlotUpdate, PlotCurrent, NoRecords;
   int Plot_with_new_range;
   float New_range;
   bool PlotOptionsPending;
   int BlueLight, IRRLight;
   int TimeNow, TimeLast, TimeNext, NoSeq, SeqInterval;
   float TimeInterval;

  AnsiString   dataname, StoreFileName, StoreFileIdName;
  AnsiString   ResultsFileName, StoreRecord, DateTimeRecord;
  int         filepos, filelen;
  float fo, fm, sig, p, ChiSq, chifact, foreg, fmreg, exfactor, Delta, DerValue;
  float CStep, ChiSqCycle, ChisTot;
  float cfactor;
  float Resid, ResidLast;
  float fos, fms, ps, sigs, CStarts, Noise;
  float delfo, delfm, delsig, delp, delfactor, delC;
  bool  fofree, fmfree, pfree, sigfree, CSfree, fittingtau;
  bool  AllSamples, ExecuteON, Acquired_Data;
  float tau[4],alp[4], stau, staulimit, stauprev, deltau, deltauFRR[4], deltauLift[4], deltatau, delalp[4];
  float taus[4], alps[4];
  float valp[4],vtau[4];
  float ExPower, ExPowerLast, Irrad, CStart, Step, Sampling;
  bool  taufree[4];
  int NoTaus, NoTauss,NoIter, iter, norep, NoRuns;
  bool weighted, StepFitOn, FirstPassDone;
  int    CycleStart[102],CycleEnd[102],CyclePump[102];
  int    CyclePumpStart[20], CyclePumpEnd[20], CycleDecStart[20], CycleDecEnd[20];
  bool   CycleQA[20];
  float  CycleTau[102], CycleTauMin[102], CycleTauReg[102], CycleTau_ToRegress[102];
  float  CycleC[102];
  int     NoCycles, Cycle, AnalCycles, FIFO_Len;
  float   ffo[1000000];
  int     flashON[10000], flashOFF[10000];
  short   fi[1000000], ri[100000];
  float   ex[2000], f[2000], fs[2000], fit[2000], en[2000], tim[2000], ref[2000], fb[2000], fon[2000];
  float   exlen[2000], delfit[2000], cfit[2000], chsep[2000], der[2000], dt[2000];
  float   c[2000], rav[2000], excal[2000], derdel[2000];
  int     cindex[2000];
  char    CurrentDir[256];
  TMemo*  MemoPtr;
  float   FGain, XGain, SeqTime;
  bool    ExLenParsed, FitDone, FileStoreAutoMode;
  float   MagicNumber;

  struct  Plot_Struct
  {
      int var;
      int pos;
      int symbol;
      unsigned long color;
      float range;
      bool  on;
  } plot;
  struct Plot_Struct plots[40];
  float Gain[20], Scat[20];
  float GainValue, ScatValue, SignalCalibrated, SignalUncalibrated;
  int GainIndex, GainIndexSet;
  bool GainDone;
  bool LaserON;

  int ProfileNop, izero, nozero,nodata, FitStart, FitEnd, FitStarts,FitEnds;
  int Samples;
  float __fastcall GetCRes(int i1, int i2);
  float __fastcall GetCResFRR(float ccstart, int i1, int i2);
  float __fastcall GetSigResLift(float ssig, float ccstart, int i1, int i2);
  float __fastcall GetSigResFRR(float ssig, float ccstart, int i1, int i2);
  float __fastcall GetpResLift(float pp, float ccstart, int i1, int i2);
  float __fastcall GetpResFRR(float pp, float ccstart, int i1, int i2);
  float __fastcall GetFoResFRR(float ffo, int i1, int i2);
  float __fastcall GetFmResFRR(float ffm, int i1, int i2);
  void __fastcall ResetDel(float dd);
  float __fastcall GetTauRes(float xtau, float ccstart, int i1, int i2);
  float __fastcall GetTauResFRR(int ntau, float xtau, float ccstart, int i1, int i2);
  float __fastcall GetAlpResFRR(int nalp, float xalp, float ccstart, int i1, int i2);
  void __fastcall FitfoFRR();
  void __fastcall FitfmFRR();
  void __fastcall FitpFRR();
  void __fastcall FitsigFRR();
  void __fastcall Fittau(int iterations);
  void __fastcall FittauFRR(int ntau);
  void __fastcall FitalpFRR(int nalp);
  void __fastcall Simulate(float pp, float ssig, float ccstart, int i1, int i2);
  float __fastcall GetCStartResFRR(float ccstart, int i1, int i2);
  void __fastcall FitC();
  float __fastcall GetCycleRes(float ffo, float ffm, float ssig, float pp);
  void __fastcall FitCyclefm();
  void __fastcall SaveResLIFT(AnsiString FileName);
  void __fastcall SaveResFRR(AnsiString FileName);
  void __fastcall ExperimentRun();
  void FitCyclesig();
   void __fastcall Status_B2C();
//----- PROTOCOL ------


};
//---------------------------------------------------------------------------
extern PACKAGE TDataForm *DataForm;
//---------------------------------------------------------------------------
#endif
