00001 #ifndef Physics_ControlSample_DQASelDimu_H 00002 #define Physics_ControlSample_DQASelDimu_H 00003 00004 #include "GaudiKernel/AlgFactory.h" 00005 #include "GaudiKernel/Algorithm.h" 00006 #include "GaudiKernel/NTuple.h" 00007 00008 #include "GaudiKernel/ITHistSvc.h" 00009 #include "TH1.h" 00010 00011 /**********************************************************************/ 00024 class DQASelDimu : public Algorithm { 00025 00026 public: 00027 00028 DQASelDimu(const std::string& name, ISvcLocator* pSvcLocator); 00029 StatusCode initialize(); 00030 StatusCode execute(); 00031 StatusCode finalize(); 00032 00033 private: 00034 ITHistSvc *m_thistsvc; 00035 00036 TH1F *m_mumu_mass; 00037 TH1F *m_mumu_acoll; 00038 TH1F *m_mumu_eop_mup; 00039 TH1F *m_mumu_eop_mum; 00040 TH1F *m_mumu_costheta_mup; 00041 TH1F *m_mumu_costheta_mum; 00042 TH1F *m_mumu_phi_mup; 00043 TH1F *m_mumu_phi_mum; 00044 TH1F *m_mumu_nneu; 00045 TH1F *m_mumu_nlay; 00046 TH1F *m_mumu_nhit; 00047 TH1F *m_mumu_eemc_mup; 00048 TH1F *m_mumu_eemc_mum; 00049 TH1F *m_mumu_x_mup; 00050 TH1F *m_mumu_y_mup; 00051 TH1F *m_mumu_z_mup; 00052 TH1F *m_mumu_x_mum; 00053 TH1F *m_mumu_y_mum; 00054 TH1F *m_mumu_z_mum; 00055 TH1F *m_mumu_px_mup; 00056 TH1F *m_mumu_py_mup; 00057 TH1F *m_mumu_pz_mup; 00058 TH1F *m_mumu_p_mup; 00059 TH1F *m_mumu_px_mum; 00060 TH1F *m_mumu_py_mum; 00061 TH1F *m_mumu_pz_mum; 00062 TH1F *m_mumu_p_mum; 00063 TH1F *m_mumu_deltatof; 00064 TH1F *m_mumu_pidchidedx_mup; 00065 TH1F *m_mumu_pidchidedx_mum; 00066 TH1F *m_mumu_pidchitof1_mup; 00067 TH1F *m_mumu_pidchitof1_mum; 00068 TH1F *m_mumu_pidchitof2_mup; 00069 TH1F *m_mumu_pidchitof2_mum; 00070 00071 00072 00073 00074 bool m_writentuple; 00075 // Declare r0, z0 cut for charged tracks 00076 double m_ecms; 00077 double m_beamangle; 00078 double m_vr0cut; 00079 double m_vz0cut; 00080 double m_coscut; 00081 00082 bool m_useTOF; 00083 bool m_usePID; 00084 bool m_useEMC; 00085 bool m_useMUC; 00086 bool m_useMDC; 00087 bool m_useDEDX; 00088 bool m_useEMConly; 00089 //Declare energy, dphi, dthe cuts for fake gamma's 00090 double m_energyThreshold; 00091 double m_gammaPhiCut; 00092 double m_gammaThetaCut; 00093 double m_gammaTrkCut; 00094 double m_gammathCut; 00095 double m_gammatlCut; 00096 double m_acoll_mu_cut; 00097 double m_acopl_mu_cut; 00098 double m_poeb_mu_cut; 00099 double m_dtof_mu_cut; 00100 double m_eoeb_mu_cut; 00101 double m_etotal_mu_cut; 00102 double m_tpoebh_mu_cut; 00103 double m_tpoebl_mu_cut; 00104 double m_tptotal_mu_cut; 00105 00106 00107 00108 // define Ntuples here 00109 00110 NTuple::Tuple* m_tuple1; 00111 NTuple::Item<long> m_run ; 00112 NTuple::Item<long> m_rec; 00113 NTuple::Item<long> m_ncharg; 00114 NTuple::Item<long> m_nneu ; 00115 NTuple::Item<long> m_ngch ; 00116 NTuple::Item<long> m_nGam ; 00117 NTuple::Item<long> m_dimutag ; 00118 00119 NTuple::Item<double> m_acoll; 00120 NTuple::Item<double> m_acopl; 00121 NTuple::Item<double> m_deltatof; 00122 NTuple::Item<double> m_eop1; 00123 NTuple::Item<double> m_eop2; 00124 NTuple::Item<double> m_eoeb1; 00125 NTuple::Item<double> m_eoeb2; 00126 NTuple::Item<double> m_poeb1; 00127 NTuple::Item<double> m_poeb2; 00128 NTuple::Item<double> m_etoeb1; 00129 NTuple::Item<double> m_etoeb2; 00130 NTuple::Item<long> m_mucinfo1; 00131 NTuple::Item<long> m_mucinfo2; 00132 00133 00134 NTuple::Array<double> m_delang ; 00135 NTuple::Array<double> m_delphi ; 00136 NTuple::Array<double> m_delthe ; 00137 NTuple::Array<long> m_nSeed; 00138 NTuple::Array<long> m_npart; 00139 NTuple::Array<long> m_module; 00140 NTuple::Array<long> m_nemchits; 00141 NTuple::Array<double> m_x; 00142 NTuple::Array<double> m_y; 00143 NTuple::Array<double> m_z; 00144 NTuple::Array<double> m_dx; 00145 NTuple::Array<double> m_dy; 00146 NTuple::Array<double> m_dz; 00147 NTuple::Array<double> m_dtheta; 00148 NTuple::Array<double> m_dphi; 00149 NTuple::Array<double> m_theta; 00150 NTuple::Array<double> m_phi; 00151 NTuple::Array<double> m_energy; 00152 NTuple::Array<double> m_dE; 00153 NTuple::Array<double> m_eSeed; 00154 NTuple::Array<double> m_e3x3; 00155 NTuple::Array<double> m_e5x5; 00156 NTuple::Array<double> m_secondMoment; 00157 NTuple::Array<double> m_latMoment; 00158 NTuple::Array<double> m_a20Moment; 00159 NTuple::Array<double> m_a42Moment; 00160 NTuple::Array<double> m_getTime; 00161 NTuple::Array<double> m_getEAll; 00162 00163 00164 00165 00166 NTuple::Array<long> m_charge ; 00167 NTuple::Array<double> m_vx0 ; 00168 NTuple::Array<double> m_vy0 ; 00169 NTuple::Array<double> m_vz0 ; 00170 00171 00172 NTuple::Array<double> m_px ; 00173 NTuple::Array<double> m_py ; 00174 NTuple::Array<double> m_pz ; 00175 NTuple::Array<double> m_p ; 00176 00177 00178 NTuple::Array<double> m_kal_vx0 ; 00179 NTuple::Array<double> m_kal_vy0 ; 00180 NTuple::Array<double> m_kal_vz0 ; 00181 00182 00183 NTuple::Array<double> m_kal_px ; 00184 NTuple::Array<double> m_kal_py ; 00185 NTuple::Array<double> m_kal_pz ; 00186 NTuple::Array<double> m_kal_p ; 00187 00188 00189 00190 00191 NTuple::Array<float> m_probPH; 00192 NTuple::Array<float> m_normPH; 00193 NTuple::Array<float> m_chie ; 00194 NTuple::Array<float> m_chimu ; 00195 NTuple::Array<float> m_chipi ; 00196 NTuple::Array<float> m_chik ; 00197 NTuple::Array<float> m_chip ; 00198 NTuple::Array<float> m_ghit ; 00199 NTuple::Array<float> m_thit ; 00200 00201 NTuple::Array<float> m_e_emc ; 00202 NTuple::Array<float> m_theta_emc ; 00203 NTuple::Array<float> m_phi_emc ; 00204 00205 NTuple::Array<float> m_nhit_muc ; 00206 NTuple::Array<float> m_nlay_muc; 00207 00208 NTuple::Array<double> m_qual_etof ; 00209 NTuple::Array<double> m_tof_etof ; 00210 NTuple::Array<double> m_te_etof ; 00211 NTuple::Array<double> m_tmu_etof ; 00212 NTuple::Array<double> m_tpi_etof ; 00213 NTuple::Array<double> m_tk_etof ; 00214 NTuple::Array<double> m_tp_etof ; 00215 00216 NTuple::Array<double> m_qual_btof1 ; 00217 NTuple::Array<double> m_tof_btof1 ; 00218 NTuple::Array<double> m_te_btof1 ; 00219 NTuple::Array<double> m_tmu_btof1 ; 00220 NTuple::Array<double> m_tpi_btof1 ; 00221 NTuple::Array<double> m_tk_btof1 ; 00222 NTuple::Array<double> m_tp_btof1 ; 00223 NTuple::Array<double> m_t_btof ; 00224 NTuple::Array<double> m_t_etof ; 00225 NTuple::Array<double> m_qual_btof2 ; 00226 NTuple::Array<double> m_tof_btof2 ; 00227 NTuple::Array<double> m_te_btof2 ; 00228 NTuple::Array<double> m_tmu_btof2 ; 00229 NTuple::Array<double> m_tpi_btof2 ; 00230 NTuple::Array<double> m_tk_btof2 ; 00231 NTuple::Array<double> m_tp_btof2 ; 00232 NTuple::Array<long> m_pidcode; 00233 NTuple::Array<double> m_pidprob; 00234 NTuple::Array<double> m_pidchiDedx; 00235 NTuple::Array<double> m_pidchiTof1; 00236 NTuple::Array<double> m_pidchiTof2; 00237 00238 NTuple::Item<double> m_px_cms_ep ; 00239 NTuple::Item<double> m_py_cms_ep ; 00240 NTuple::Item<double> m_pz_cms_ep ; 00241 NTuple::Item<double> m_e_cms_ep ; 00242 NTuple::Item<double> m_cos_ep ; 00243 NTuple::Item<double> m_px_cms_em ; 00244 NTuple::Item<double> m_py_cms_em ; 00245 NTuple::Item<double> m_pz_cms_em ; 00246 NTuple::Item<double> m_e_cms_em ; 00247 NTuple::Item<double> m_cos_em ; 00248 NTuple::Item<double> m_mass_ee ; 00249 NTuple::Item<double> m_emax ; 00250 NTuple::Item<double> m_esum ; 00251 NTuple::Item<long> m_npip ; 00252 NTuple::Item<long> m_npim ; 00253 NTuple::Item<long> m_nkp ; 00254 NTuple::Item<long> m_nkm ; 00255 NTuple::Item<long> m_np ; 00256 NTuple::Item<long> m_npb ; 00257 NTuple::Item<long> m_nep ; 00258 NTuple::Item<long> m_nem ; 00259 NTuple::Item<long> m_nmup ; 00260 NTuple::Item<long> m_nmum ; 00261 00262 00263 00264 00265 00266 }; 00267 00268 00269 #endif