00001 //$id$ 00002 // 00003 //$log$ 00004 00005 /* 00006 * 2004/03/08 Zhengyun You Peking University 00007 * 00008 * 2004/09/12 Zhengyun You Peking University 00009 * transplanted to Gaudi framework 00010 */ 00011 00012 #ifndef MUC_REC_TRK_EXT_H 00013 #define MUC_REC_TRK_EXT_H 00014 00015 #include "GaudiKernel/Algorithm.h" 00016 #include "GaudiKernel/NTuple.h" 00017 #include "HepPDT/ParticleDataTable.hh" 00018 #include <string> 00019 #include <vector> 00020 00021 #include "MucRecEvent/MucRecHitContainer.h" 00022 #include "MucRecEvent/RecMucTrack.h" 00023 00024 class MucRecTrkExt:public Algorithm { 00025 public: 00026 MucRecTrkExt(const std::string& name, ISvcLocator* pSvcLocator); 00027 StatusCode initialize(); 00028 StatusCode execute(); 00029 StatusCode finalize(); 00030 00031 void TrackFinding(RecMucTrack *aTrack); 00032 float getWindowSize(Hep3Vector mom, int part, int seg, int gap); 00033 00034 private: 00035 int m_ExtTrackSeedMode; 00036 int m_CompareWithMcHit; 00037 int m_fittingMethod; 00038 int m_EmcShowerSeedMode; 00039 int m_MucHitSeedMode; 00040 int m_NtOutput; //switch of output Muc.root 00041 bool m_Blind; 00042 bool m_MsOutput; 00043 long m_totalEvent; 00044 00045 int m_NDigisTotal; 00046 int m_NHitsTotal; 00047 int m_NHitsFoundTotal; 00048 int m_NHitsLostTotal; 00049 int m_NHitsMisFoundTotal; 00050 int m_NHitsLostByMdcTotal; 00051 int m_NHitsLostByExtTotal; 00052 00053 int m_NTracksTotal; 00054 int m_NTracksRecoTotal; 00055 int m_NTracksLostByMdcTotal; 00056 int m_NTracksLostByExtTotal; 00057 int m_NTracksMdcGhostTotal; 00058 00059 int m_emcrec; 00060 00061 std::vector<int> m_NHitsLost; 00062 std::vector<int> m_NHitsLostInGap; 00063 std::vector<int> m_TrackLostHit; 00064 std::vector<int> m_TrackLostHitNumber; 00065 std::vector<int> m_TrackLostByMdc; 00066 std::vector<int> m_TrackLostByExt; 00067 00068 std::string m_configFile; 00069 HepPDT::ParticleDataTable* m_particleTable; 00070 MucRecHitContainer *m_MucRecHitContainer; 00071 00072 std::string m_filter_filename; 00073 struct FilterEvent { 00074 std::string bossver; 00075 int runid; 00076 int eventid; 00077 }; 00078 std::vector<FilterEvent> m_filter_event; 00079 MucRecHitContainer *aMucRecHitContainer; 00080 00081 NTuple::Tuple* m_tuple; 00082 NTuple::Item<double> m_posx; 00083 NTuple::Item<double> m_posy; 00084 NTuple::Item<double> m_posz; 00085 NTuple::Item<double> m_posx_ext; 00086 NTuple::Item<double> m_posy_ext; 00087 NTuple::Item<double> m_posz_ext; 00088 NTuple::Item<double> m_posx_sigma; 00089 NTuple::Item<double> m_posy_sigma; 00090 NTuple::Item<double> m_posz_sigma; 00091 NTuple::Item<double> m_depth; 00092 NTuple::Item<double> m_Distance; 00093 NTuple::Item<double> m_MaxHits; 00094 NTuple::Item<double> m_Chi2; 00095 NTuple::Item<double> m_Dist_x; 00096 NTuple::Item<double> m_Dist_y; 00097 NTuple::Item<double> m_Dist_z; 00098 NTuple::Item<double> m_px_mc; 00099 NTuple::Item<double> m_py_mc; 00100 NTuple::Item<double> m_pz_mc; 00101 NTuple::Item<double> m_emctrack; 00102 NTuple::Item<double> m_muc_digi; 00103 00104 NTuple::Item<double> m_part; 00105 NTuple::Item<double> m_seg; 00106 NTuple::Item<double> m_gap; 00107 NTuple::Item<double> m_strip; 00108 NTuple::Item<double> m_diff; 00109 NTuple::Item<double> m_distance; 00110 00111 NTuple::Item<double> m_run; 00112 NTuple::Item<double> m_event; 00113 00114 }; 00115 00116 #endif /* MUC_REC_TRK_EXT_H */