00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: MdcxCosmicSewer.h,v 1.8 2012/07/20 05:48:16 zhangy Exp $ 00004 // 00005 // Description: 00006 // Class MdcxCosmicSewer. This is a simple example of a user module. It 00007 // just prints out each entrypoint (operation) as it is accessed. 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Author List: 00013 // Zhang Yao(zhangyao@ihep.ac.cn) 00014 // 00015 // Copyright Information: 00016 // Copyright (C) 1994 Lawrence Berkeley Laboratory 00017 // 00018 // History: 00019 // Migration for BESIII MDC 00020 // 00021 //------------------------------------------------------------------------ 00022 00023 #ifndef MDCXCOSMICSEWER_H 00024 #define MDCXCOSMICSEWER_H 00025 00026 //---------------------- 00027 // Base Class Headers -- 00028 //---------------------- 00029 #include "GaudiKernel/Algorithm.h" 00030 #include "CLHEP/Alist/AList.h" 00031 #include "MdcGeom/MdcDetector.h" 00032 #include "BField/BField.h" 00033 #include "MdcRecEvent/RecMdcTrack.h" 00034 #include "MdcRecEvent/RecMdcHit.h" 00035 #include "TrkBase/TrkRecoTrk.h" 00036 #include "TrkFitter/TrkContextEv.h" 00037 #include "MdcCalibFunSvc/MdcCalibFunSvc.h" 00038 #include "RawDataProviderSvc/RawDataProviderSvc.h" 00039 #include "GaudiKernel/NTuple.h" 00040 #include "MdcUtilitySvc/MdcUtilitySvc.h" 00041 #include "MdcPrintSvc/MdcPrintSvc.h" 00042 00043 class MdcxCosmicSewer : public Algorithm { 00044 00045 public: 00046 // Constructors 00047 MdcxCosmicSewer(const std::string& name, ISvcLocator* pSvcLocator); 00048 00049 // Destructor 00050 virtual ~MdcxCosmicSewer(); 00051 00052 // Operations 00053 StatusCode initialize(); 00054 StatusCode execute(); 00055 StatusCode finalize(); 00056 StatusCode beginRun(); 00057 00058 void MdcxHitsToHots(HepVector& helix, TrkRecoTrk* trk, HitRefVec& hits, HitRefVec& skiped); 00059 void store(TrkRecoTrk* tk, HitRefVec& skip); 00060 void clearRecMdcTrackHit(); 00061 void dumpTdsTrack(RecMdcTrackCol* trackList); 00062 00063 private: 00064 void getInfo(HepVector helix, double fltLen, HepPoint3D& pos, Hep3Vector & dir); 00065 int patAmbig(int bes3FlagLR); 00066 int bes3FlagLR(int patAmbig); 00067 int m_debug; 00068 bool m_hist; 00069 bool m_doSag; 00070 00071 std::vector<float> m_cosmicSewPar; 00072 bool m_cosmicSewSkip; 00073 bool m_countPropTime; 00074 bool m_lineFit; 00075 00076 MdcUtilitySvc* m_mdcUtilitySvc; 00077 MdcPrintSvc* m_mdcPrintSvc; 00078 const MdcDetector* m_gm; 00079 IMagneticFieldSvc* m_pIMF; 00080 BField* m_bfield; 00081 TrkContextEv* m_context; 00082 const MdcCalibFunSvc* m_mdcCalibFunSvc; 00083 RawDataProviderSvc* m_rawDataProviderSvc; 00084 double m_bunchT0; 00085 long i_evt; 00086 bool m_test; 00087 int m_nSewed; 00088 00089 NTuple::Tuple* m_xtupleCsmcSew; 00090 NTuple::Item<double> m_csmcD0; 00091 NTuple::Item<double> m_csmcPhi0; 00092 NTuple::Item<double> m_csmcZ0; 00093 NTuple::Item<double> m_csmcOmega; 00094 NTuple::Item<double> m_csmcPt; 00095 NTuple::Item<double> m_csmcTanl; 00096 }; 00097 #endif