00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: MdcMergeDups.h,v 1.3 2012/05/13 23:43:41 zhangy Exp $ 00004 // 00005 // Description: 00006 // Class MdcMergeDups is to be merge duplicated track in MDC. 00007 // 00008 // Environment: 00009 // Software developed for the BESIII Detector at the BEPCII. 00010 // 00011 // Author List: 00012 // Yoshi Iwasaki(yoshihito.iwasaki@kek.jp) Original Author 00013 // Zhang Yao(zhangyao@ihep.ac.cn) Migrate to BESIII 00014 // 00015 // Copyright Information: 00016 // Copyright (C) 2009 IHEP 00017 // 00018 // History: 00019 // Zhang Yao 2009-10-30 00020 // Migration BELLE TTrackManager::merge() for BESIII MDC 00021 // 00022 //------------------------------------------------------------------------ 00023 00024 #ifndef MDCMERGECRUL_H 00025 #define MDCMERGECRUL_H 00026 00027 //---------------------- 00028 // Base Class Headers -- 00029 //---------------------- 00030 #include "GaudiKernel/Algorithm.h" 00031 #include "CLHEP/Alist/AList.h" 00032 #include "MdcData/MdcHit.h" 00033 #include "GaudiKernel/SmartDataPtr.h" 00034 #include "MdcRecEvent/RecMdcTrack.h" 00035 #include "MdcRecEvent/RecMdcHit.h" 00036 #include "MdcCalibFunSvc/MdcCalibFunSvc.h" 00037 #include "RawDataProviderSvc/RawDataProviderSvc.h" 00038 #include "MagneticField/IMagneticFieldSvc.h" 00039 #include "MdcGeom/MdcDetector.h" 00040 #include "BField/BField.h" 00041 00042 //--------------------- 00043 //-- Class Interface -- 00044 //--------------------- 00045 00046 class MdcMergeDups : public Algorithm { 00047 00048 //-------------------- 00049 // Instance Members -- 00050 //-------------------- 00051 00052 public: 00053 // Constructors 00054 MdcMergeDups(const std::string& name, ISvcLocator* pSvcLocator); 00055 00056 // Destructor 00057 virtual ~MdcMergeDups(); 00058 00059 // Operations 00060 StatusCode initialize(); 00061 StatusCode execute(); 00062 StatusCode finalize(); 00063 StatusCode beginRun(); 00064 int mergeDups(void); 00065 int mergeCurl(void); 00066 int testByOverlapHit(RecMdcTrack* refTk, RecMdcTrack* testTk); 00067 int testByParam(RecMdcTrack* refTk, RecMdcTrack* testTk); 00068 int doMergeLong(std::vector<RecMdcTrack*> mergeTkList); 00069 int doMergeCurl(std::vector<RecMdcTrack*> mergeTkList); 00070 //int doMergeOdd(std::vector<RecMdcTrack*> mergeTkList); 00071 void store(TrkRecoTrk* aTrack); 00072 bool eraseTdsTrack(RecMdcTrackCol::iterator tk); 00073 00074 void dumpRecMdcTrack(); 00075 00076 private: 00077 const MdcDetector* m_gm; 00078 BField* m_bfield; 00079 00080 int m_debug; 00081 double m_maxDd0InMerge; 00082 double m_maxDphi0InMerge; 00083 double m_maxPdradInMerge; 00084 double m_maxRcsInMerge; 00085 double m_mergePt; 00086 double m_mergeLoadAx; 00087 double m_mergeLoadSt; 00088 double m_mergeOverlapRatio; 00089 double m_bunchT0; 00090 }; 00091 #endif