00001 #ifndef ESTIME_FLAG_
00002 #define ESTIME_FLAG_
00003 #include <vector>
00004 #include "GaudiKernel/Algorithm.h"
00005 #include "GaudiKernel/NTuple.h"
00006 #include "HepPDT/ParticleDataTable.hh"
00007 #include "RawDataProviderSvc/IRawDataProviderSvc.h"
00008 #include <stdio.h>
00009 #include "CalibData/EsTime/EsTimeCalibData.h"
00010 #include "CalibData/CalibModel.h"
00011 #include "GaudiKernel/DataSvc.h"
00012 #include "CalibDataSvc/ICalibRootSvc.h"
00013 #include "CalibData/CalibModel.h"
00014 #include "CalibData/CalibBase1.h"
00015 #include "EstTofCaliSvc/IEstTofCaliSvc.h"
00016 #include "CalibData/Tof/TofCalibData.h"
00017 #include "TofQElecSvc/ITofQElecSvc.h"
00018 #include "MdcUtilitySvc/MdcUtilitySvc.h"
00019 #include "MdcCalibFunSvc/MdcCalibFunSvc.h"
00020 #include "MdcCalibFunSvc/IMdcCalibFunSvc.h"
00021
00022 #include "EsTimeAlg/EstParameter.h"
00023 #include <iostream>
00024 #include <fstream>
00025
00026 typedef std::vector<double> Vdouble;
00027
00028 class EsTimeAlg :public Algorithm{
00029
00030 public:
00031
00032 EsTimeAlg(const std::string& name, ISvcLocator* pSvcLocator);
00033
00034 StatusCode initialize();
00035 StatusCode execute();
00036 StatusCode finalize();
00037
00038 public:
00039 int m_flag;
00040
00041
00042 int m_nbunch;
00043
00044 double m_bunchtime_MC;
00045 int m_ntupleflag;
00046
00047
00048 int m_optCosmic;
00049 int m_cosmicScheme;
00050
00051
00052 int m_phase;
00053 int m_userawtime_opt;
00054 double toffset_rawtime;
00055 double toffset_rawtime_e;
00056 double offset_dt;
00057 double offset_dt_end;
00058 int m_debug;
00059 int m_beforrec;
00060
00061 int m_evtNo;
00062 double m_ebeam;
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 int _MDC_Inner;
00076
00077
00078
00079 bool m_useXT;
00080 bool m_useT0cal;
00081 bool m_useSw;
00082 bool m_mdcopt;
00083 bool m_TofOpt;
00084 double m_TofOpt_Cut;
00085 bool m_useTimeFactor;
00086
00087 private:
00088
00089 StatusCode storeTDS(double tEst, int tEstFlag, double quality);
00090 double Opt_new(const double arr[],const int size,const double sigma_cut);
00091 double EST_Trimmer(double t0_original,double t0_offset,double raw_offset,double offset_dt,double bunchTime);
00092
00093 int ndriftt;
00094 int ntrkMC;
00095 int ntrk;
00096 int m_pass[5];
00097
00098 IDataProviderSvc* m_pCalibDataSvc;
00099 ICalibRootSvc* m_pRootSvc;
00100 IEstTofCaliSvc* tofCaliSvc;
00101 ITofQElecSvc* tofQElecSvc;
00102 IMdcCalibFunSvc* imdcCalibSvc;
00103 MdcCalibFunSvc* m_mdcCalibFunSvc;
00104 MdcUtilitySvc* m_mdcUtilitySvc;
00105
00106 HepPDT::ParticleDataTable* m_particleTable;
00107 IRawDataProviderSvc* m_rawDataProviderSvc;
00108 NTuple::Tuple* m_tuple2;
00109
00110
00111 NTuple::Item<int> g_eventNo, g_runNo;
00112
00113
00114 NTuple::Item<int> g_ntrkMC;
00115 NTuple::Array<double> g_theta0MC, g_phi0MC;
00116 NTuple::Array<double> g_pxMC, g_pyMC, g_pzMC, g_ptMC;
00117
00118
00119 NTuple::Item <double> g_nmatchbarrel,g_nmatchend;
00120 NTuple::Item <double> g_nmatchbarrel_1,g_nmatchbarrel_2;
00121 NTuple::Item <int> g_nmatch_tot;
00122 NTuple::Item <int> g_ntrk,g_trigtiming;
00123 NTuple::Array<double> g_ttof;
00124 NTuple::Array<double> g_vel;
00125 NTuple::Array<double> g_abmom;
00126 NTuple::Array<int> g_pid;
00127 NTuple::Array<double> g_t0for,g_t0back;
00128 NTuple::Item <double> g_meant0,g_t0less,g_t0barrelTof;
00129 NTuple::Item <double> g_ndriftt,g_nmatchmdc,g_EstimeMdc;
00130 NTuple::Item <double> g_t0mean,g_T0,g_t0,g_mcTestime;
00131 NTuple::Item <double> g_meantdc, g_Testime_fzisan, g_Testime;
00132 NTuple::Item <int> g_ntofup,g_ntofdown,g_ntofup1,g_ntofdown1;
00133 NTuple::Item <double> g_difftof_b, g_difftof_e;
00134 NTuple::Array <double> g_meantevup,g_meantevdown;
00135 NTuple::Item<int> m_estFlag;
00136 NTuple::Item<double>m_estTime;
00137
00138 NTuple::Tuple* m_tuple9;
00139 NTuple::Array<double> g_meantev;
00140 NTuple::Item<int> g_nmatch;
00141
00142 NTuple::Tuple* m_tuple3;
00143 NTuple::Item <double> g_t0offset_b;
00144 NTuple::Item <double> g_t0offset_e;
00145 NTuple::Item <int> g_bunchtime;
00146 };
00147
00148
00149 #endif