00001 #ifndef Analysis_PRIMARYVTX_H 00002 #define Analysis_PRIMARYVTX_H 00003 00004 #include "GaudiKernel/AlgFactory.h" 00005 #include "GaudiKernel/Algorithm.h" 00006 #include "GaudiKernel/NTuple.h" 00007 #include "TH1D.h" 00008 #include "CLHEP/Matrix/Vector.h" 00009 00010 using CLHEP::HepVector; 00011 class ITHistSvc; 00012 class BeamParams : public Algorithm 00013 { 00014 public: 00015 BeamParams(const std::string& name, ISvcLocator* pSvcLocator); 00016 StatusCode initialize(); 00017 StatusCode execute(); 00018 StatusCode finalize(); 00019 00020 private: 00021 ITHistSvc* m_thsvc;//zhaohs 00022 int m_sel_number[15]; 00023 00024 int m_pid; 00025 int m_vertexFind; 00026 00027 double m_vz0Cut; 00028 double m_cosThetaCut; 00029 double m_minDistance; 00030 double m_minPointX; 00031 double m_minPointY; 00032 double m_meanPointX; 00033 double m_meanPointY; 00034 double m_chisqCut; 00035 int m_trackIteration; 00036 int m_vertexIteration; 00037 double m_chi2CutforTrkIter; 00038 double m_chi2CutforSmooth; 00039 int m_trackNumberCut; 00040 00041 //particle ID cut 00042 bool m_useDedx; 00043 bool m_useTof1; 00044 bool m_useTof2; 00045 bool m_useTofE; 00046 bool m_useTofQ; 00047 bool m_useEmc; 00048 bool m_useMuc; 00049 double m_PidProbCut; 00050 00051 double m_pivotX; 00052 double m_pivotY; 00053 double m_pivotZ; 00054 00055 int m_trkNum; 00056 int m_runNo; 00057 int m_parVer; 00058 std::string m_fileNameDst; 00059 std::string m_fileNameHadron; 00060 std::string m_figsName; 00061 00062 TH1D* m_vertex_x; 00063 TH1D* m_vertex_y; 00064 TH1D* m_vertex_z; 00065 TH1D* m_vertex_x_kal; 00066 TH1D* m_vertex_y_kal; 00067 TH1D* m_vertex_z_kal; 00068 00069 HepVector m_Cpuvc; 00070 double m_cpu[5]; 00071 00072 int m_hadronFile; 00073 00074 // define NTuples 00075 00076 NTuple::Tuple* m_tuple1; // minimal distance and so on 00077 NTuple::Item<double> m_xc; 00078 NTuple::Item<double> m_yc; 00079 NTuple::Item<double> m_zc; 00080 NTuple::Item<double> m_mind; 00081 00082 NTuple::Tuple* m_tuple2; // chi-square of smooth 00083 NTuple::Item<double> m_chis; 00084 NTuple::Item<double> m_chif; 00085 NTuple::Item<double> m_probs; 00086 NTuple::Item<double> m_probf; 00087 00088 NTuple::Tuple* m_tuple3; // Kalman vertex fit results 00089 NTuple::Item<double> m_chik; 00090 NTuple::Item<long> m_ndofk; 00091 NTuple::Item<double> m_probk; 00092 NTuple::Item<double> m_kvx; 00093 NTuple::Item<double> m_kvy; 00094 NTuple::Item<double> m_kvz; 00095 NTuple::Item<long> m_numTrk; 00096 00097 NTuple::Tuple* m_tuple4; // Global vertex fit results 00098 NTuple::Item<double> m_chig; 00099 NTuple::Item<long> m_ndofg; 00100 NTuple::Item<double> m_probg; 00101 NTuple::Item<double> m_gvx; 00102 NTuple::Item<double> m_gvy; 00103 NTuple::Item<double> m_gvz; 00104 00105 NTuple::Tuple* m_tuple5; 00106 NTuple::Item<double> m_pull_drho; 00107 NTuple::Item<double> m_pull_phi; 00108 NTuple::Item<double> m_pull_kapha; 00109 NTuple::Item<double> m_pull_dz; 00110 NTuple::Item<double> m_pull_lamb; 00111 NTuple::Item<double> m_pull_momentum; 00112 00113 NTuple::Tuple* m_tuple6; 00114 NTuple::Item<double> m_mdcTrk_x; 00115 NTuple::Item<double> m_mdcTrk_y; 00116 NTuple::Item<double> m_mdcTrk_z; 00117 NTuple::Item<double> m_mdcTrk_r; 00118 NTuple::Item<double> m_rxy; 00119 NTuple::Item<double> m_mdcTrk_dr; 00120 NTuple::Item<double> m_mdcKalTrk_z; 00121 00122 NTuple::Tuple* m_tuple7; 00123 NTuple::Item<double> m_gpull_drho; 00124 NTuple::Item<double> m_gpull_phi; 00125 NTuple::Item<double> m_gpull_kapha; 00126 NTuple::Item<double> m_gpull_dz; 00127 NTuple::Item<double> m_gpull_lamb; 00128 }; 00129 #endif