/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/EsTimeAlg/EsTimeAlg-00-02-60/EsTimeAlg/EsTimeAlg.h

Go to the documentation of this file.
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;   //1: use segment linear fitting method
00040     //2: use fasttrk and mdc hit
00041 
00042     int m_nbunch; //3: 3 bunches,0ns,8ns,16ns
00043     //6: 6 bunches,0,4,8,12,16,20ns
00044     double m_bunchtime_MC;
00045     int m_ntupleflag; //0: donot draw ntuple
00046     //1: add ntuple
00047 
00048     int m_optCosmic;   // optCosmic = 1: employ cosmic correction, 0: don't
00049     int m_cosmicScheme; // cosmicScheme to decide incoming and outgoing legs
00050     // 0: 2hits+TDCdiff  1: 2hits+Phi  2: All hits+Phi 
00051 
00052     int m_phase;   // Detector Version, 1 ETOF->96Scin, 2 ETOF->2MRPC+92Scin, 3->72MRPC
00053     int m_userawtime_opt;  //1: use raw tdc time of TOF;  0: use TOF calibration TDC time   
00054     double toffset_rawtime;//offset for barrel using rawtime of TOF
00055     double toffset_rawtime_e;//offset for endcap using rawtime of TOF
00056     double offset_dt;
00057     double offset_dt_end;
00058     int m_debug; 
00059     int m_beforrec; 
00060     //  double m_t0shift;   //TOF event start time need abstract m_t0shift when do MDC calibration
00061     int m_evtNo;       //1: cout event Number; 0: don't
00062     double m_ebeam;    // beam energy;
00063     //  void doMDCMatching( int * ){};    // Simple hit matching
00064     // int   _doMatch;
00065     //int   _optCosmic, _cosmicScheme;
00066     //int   _SkipMC,_Skip;
00067     //double _ptCut, _drCut, _dzCut;
00068     //double _pathlCut, _ztofCutmin, _ztofCutmax;
00069     //double _timeOfs;
00070     //int   _MDC_Skip;
00071     //double _MDC_ptCut, _MDC_drCut, _MDC_dzCut;
00072     //int   _MDC_Tof, _MDC_Prop, _MDC_Walk;
00073     //int   _MDC_Debug;
00074     //int   _MDC_Xt;
00075     int   _MDC_Inner;
00076 
00077     // private:
00078     //  static evtime * _evtprt;
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);//yzhang add
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     // double Opt_new(  vector<double>::iterator beg,vector<double>::iterator end);
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     //NTuple::Tuple*  m_tuple9;
00110 
00111     NTuple::Item<int>  g_eventNo, g_runNo;
00112     //MCTruth
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     //recon
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

Generated on Tue Nov 29 23:13:21 2016 for BOSS_7.0.2 by  doxygen 1.4.7