///////////////////////////////////////////////////////////////////////
// $Id: FitTrackMSListModule.h,v 1.3 2002/12/04 23:05:29 rhatcher Exp $
//
// A JobControl Module that calculates a fit and creates a 
// CandFitTrackMSList from a CandTrackList
//
// Tom Bringley
// ttb2@duke.edu 
// 6/13/2001
////////////////////////////////////////////////////////////////////////

#ifndef FITTRACKMSLISTMODULE_H
#define FITTRACKMSLISTMODULE_H

#include "JobControl/JobCModule.h"

#include "TFile.h"
#include "TTree.h"


class JobCommand;
class MomNavigator;

class FitTrackMSListModule : public JobCModule, public TObject
{
public:
   FitTrackMSListModule();
  ~FitTrackMSListModule();
  
   const Registry &DefaultConfig() const;
   void Config(const Registry &r);
  
  //   void BeginJob();
  JobCResult Reco(MomNavigator *mom);
  JobCResult Ana(const MomNavigator *mom);
  //   void HandleCommand(JobCommand *command);
  void EndJob();


private:
  TString fListIn;     // Name of CandTrackList to retrieve
  TString fListOut;    // Name of CandFitTrackSRList to output

  TFile *fFile;

  TTree *fStripNt;
  TTree *fTrackNt;
  TTree *fPlaneNt;

  Int_t nt_run;
  Int_t nt_snarl;
  Int_t nt_timesec;
  Double_t nt_timens;
  Int_t nt_track;
  Int_t nt_plane;
  Int_t nt_planeview;
  Int_t nt_strip;
  Float_t nt_tpos;
  Int_t nt_inshower;
  Int_t nt_adc[2];
  Float_t nt_adcplane;
  Double_t nt_time[2];
  Double_t nt_corrtime[2];
  Double_t nt_residtime[2];
  Int_t nt_crate[2];
  Int_t nt_varc[2];
  Int_t nt_vmm[2];
  Int_t nt_vaadc[2];
  Int_t nt_vachip[2];
  Int_t nt_vachannel[2];
  Int_t nt_pixel[2];
  Float_t nt_uvz[3];
  Float_t nt_dircos[3];
  Float_t nt_clearfiber[2];
  Float_t nt_wlspigtail[2];
  Float_t nt_halflength;
  Float_t nt_pmtph[2];
  Float_t nt_attndist[2];
  Float_t nt_attnc1[2];
  Float_t nt_attnc2[2];
  Float_t nt_attnl1[2];
  Float_t nt_attnl2[2];
  Float_t nt_attnnorm[2];
  Float_t nt_attncorr[2];
  Float_t nt_ds;

  Int_t nttrack_nstrip;
  Int_t nttrack_ntrackstrip;
  Int_t nttrack_ndigit;
  Int_t nttrack_ntrackdigit;
  Int_t nttrack_ntimefitdigit;
  Int_t nttrack_adc;
  Int_t nttrack_nplane;
  Int_t nttrack_nplane_track;
  Float_t nttrack_uvz[3];
  Float_t nttrack_dircos[3];
  Float_t nttrack_houghdircos[3];
  Float_t nttrack_fitdircos[3];
  Float_t nttrack_fitintercept[2];
  Float_t nttrack_uvzend[3];
  Float_t nttrack_dircosend[3];
  Float_t nttrack_timeslope;
  Float_t nttrack_timefitchi2;
  Float_t nttrack_houghchi2;
  Float_t nttrack_maxradius;
  UInt_t nttrack_date_year;
  UInt_t nttrack_date_month;
  UInt_t nttrack_date_day;
  UInt_t nttrack_date_hour;
  UInt_t nttrack_date_minute;
  UInt_t nttrack_date_second;
  UInt_t nttrack_date_nanosecond;
  Int_t nttrack_snarl_nstrip;
  Int_t nttrack_snarl_begplane;
  Int_t nttrack_snarl_endplane;
  Int_t nttrack_snarl_nplane;
  Float_t nttrack_snarl_adc;
  Float_t nttrack_utime[2];
  Float_t nttrack_vtime[2];
  Int_t nttrack_nplanefaildemux;
  Float_t nttrack_begdigitstrip[2];
  Int_t nttrack_dplanebeg;
  Int_t nttrack_dplaneend;
  Float_t nttrack_momentum;
  Float_t nttrack_ds;

  Int_t ntreroot_inu;
  Int_t ntreroot_iaction;
  Float_t ntreroot_p4nu[4];
  Float_t ntreroot_p4sh[4];
  Float_t ntreroot_p4mu[4];
  Float_t ntreroot_p4el[4];
  Float_t ntreroot_xyz[3];
  

  Int_t ntplane_nstrip;
  Int_t ntplane_adc;
  Int_t ntplane_plane;
  Float_t ntplane_uvz[3];
  Float_t ntplane_dircos[3];

  Float_t nttrack_momentumL;
  Float_t nttrack_momentumBF;
  Float_t nttrack_momentumMS;
  Float_t nttrack_momentumBoth;
  Float_t nttrack_momentumAlt;

  Float_t nttrack_chi2;
  Float_t nttrack_chi2L;
  Float_t nttrack_chi2BF;
  Float_t nttrack_chi2MS;
  Float_t nttrack_chi2Both;
  Float_t nttrack_chi2Alt;

  Int_t nttrack_flag;

  Float_t nttrack_charge;
  Float_t nttrack_charged;

  Int_t nttrack_iter;
  
   ClassDef(FitTrackMSListModule,0)           // FitTrackMSListModule version 0
};

#endif
