00001 #ifndef Physics_Analysis_Gam4pikp_H 00002 #define Physics_Analysis_Gam4pikp_H 00003 00004 #include "GaudiKernel/AlgFactory.h" 00005 #include "GaudiKernel/Algorithm.h" 00006 #include "GaudiKernel/NTuple.h" 00007 //#include "VertexFit/ReadBeamParFromDb.h" 00008 00009 class Gam4pikp : public Algorithm { 00010 00011 public: 00012 Gam4pikp(const std::string& name, ISvcLocator* pSvcLocator); 00013 StatusCode initialize(); 00014 StatusCode execute(); 00015 StatusCode finalize(); 00016 00017 private: 00018 void InitVar(); 00019 void BubbleSort(std::vector<double> &, std::vector<int> &); 00020 00021 00022 // Declare r0, z0 cut for charged tracks 00023 double m_vr0cut; 00024 double m_vz0cut; 00025 bool m_skim4pi; 00026 bool m_skim4k; 00027 bool m_skim2pi2pr; 00028 bool m_rootput; 00029 00030 //Declare energy, dphi, dthe cuts for fake gamma's 00031 double m_energyThreshold; 00032 double m_gammaPhiCut; 00033 double m_gammaThetaCut; 00034 double m_ecms; 00035 double m_gammadangcut; 00036 // 00037 int m_test4C; 00038 int m_test5C; 00039 00040 // 00041 int m_checkDedx; 00042 int m_checkTof; 00043 00044 // define Ntuples here 00045 NTuple::Tuple* m_tuple0; 00046 NTuple::Item<double> m_tnumber; 00047 NTuple::Item<double> m_totaltrack; 00048 NTuple::Item<double> m_totalcharged; 00049 NTuple::Item<double> m_totalgam; 00050 NTuple::Item<double> m_massth; 00051 00052 00053 00054 00055 NTuple::Tuple* m_tuple1; 00056 NTuple::Item<long> m_run; 00057 NTuple::Item<long> m_rec; 00058 NTuple::Item<double> m_mpprecall; 00059 NTuple::Item<double> m_meeall; 00060 NTuple::Item<double> m_ncgjs; 00061 NTuple::Item<double> m_cla2kpi; 00062 NTuple::Array<double> m_comcs2kpi; 00063 NTuple::Array<double> m_comcs4pi; 00064 NTuple::Item<long> m_idxmc; 00065 NTuple::Array<long> m_pdgid; 00066 NTuple::Array<long> m_motheridx; 00067 NTuple::Item<double> m_mpprec4c; 00068 NTuple::Array<double> m_x0js, m_y0js, m_z0js, m_r0js, m_Rxyjs, m_Rzjs; 00069 NTuple::Array<double> m_Rnxyjs; 00070 NTuple::Array<double> m_Rnzjs; 00071 NTuple::Array<double> m_phinjs; 00072 NTuple::Item<long> m_cy2kpi; 00073 NTuple::Item<long> m_cl4pi; 00074 NTuple::Item<long> m_clajs; 00075 NTuple::Item<long> m_idxmdc; 00076 NTuple::Array<double> m_pdg; 00077 NTuple::Array<double> m_cbmc; 00078 00079 NTuple::Array<double> m_angjs5; 00080 NTuple::Array<double> m_nearjs5; 00081 NTuple::Array<double> m_angjs6; 00082 NTuple::Array<double> m_nearjs6; 00083 NTuple::Array<double> m_ang4pi5; 00084 NTuple::Array<double> m_near4pi5; 00085 NTuple::Array<double> m_ang4pi6; 00086 NTuple::Array<double> m_near4pi6; 00087 00088 NTuple::Array<double> m_ppmdcjs; 00089 NTuple::Array<double> m_pxmdcjs; 00090 NTuple::Array<double> m_pymdcjs; 00091 NTuple::Array<double> m_pzmdcjs; 00092 NTuple::Array<double> m_ptmdcjs; 00093 NTuple::Array<double> m_ppkaljs; 00094 NTuple::Array<double> m_ptkaljs; 00095 NTuple::Array<double> m_ppmdc2kpi; 00096 NTuple::Array<double> m_pxmdc2kpi; 00097 NTuple::Array<double> m_pymdc2kpi; 00098 NTuple::Array<double> m_pzmdc2kpi; 00099 NTuple::Array<double> m_ptmdc2kpi; 00100 NTuple::Array<double> m_ppkal2kpi; 00101 NTuple::Array<double> m_ptkal2kpi; 00102 NTuple::Array<double> m_charge2kpi; 00103 NTuple::Array<double> m_chie2kpi; 00104 NTuple::Array<double> m_chimu2kpi; 00105 NTuple::Array<double> m_chipi2kpi; 00106 NTuple::Array<double> m_chik2kpi; 00107 NTuple::Array<double> m_chip2kpi; 00108 NTuple::Array<double> m_ghit2kpi; 00109 NTuple::Array<double> m_thit2kpi; 00110 NTuple::Array<double> m_probph2kpi; 00111 NTuple::Array<double> m_normph2kpi; 00112 00113 NTuple::Array<double> m_chiejs; 00114 NTuple::Array<double> m_chimujs; 00115 NTuple::Array<double> m_chipijs; 00116 NTuple::Array<double> m_chikjs; 00117 NTuple::Array<double> m_chipjs; 00118 NTuple::Array<double> m_ghitjs; 00119 NTuple::Array<double> m_thitjs; 00120 NTuple::Array<double> m_probphjs; 00121 NTuple::Array<double> m_normphjs; 00122 00123 NTuple::Array<double> m_bjmucjs; 00124 NTuple::Array<double> m_bjmuc2kpi; 00125 NTuple::Array<double> m_bjemcjs; 00126 NTuple::Array<double> m_bjemc2kpi; 00127 NTuple::Array<double> m_bjtofjs; 00128 NTuple::Array<double> m_bjtof2kpi; 00129 NTuple::Array<double> m_bjtofvaljs; 00130 NTuple::Array<double> m_bjtofval2kpi; 00131 NTuple::Array<double> m_emcjs; 00132 NTuple::Array<double> m_evpjs; 00133 NTuple::Array<double> m_timecgjs; 00134 NTuple::Array<double> m_depthmucjs; 00135 NTuple::Array<double> m_layermucjs; 00136 NTuple::Array<double> m_emc2kpi; 00137 NTuple::Array<double> m_evp2kpi; 00138 NTuple::Array<double> m_timecg2kpi; 00139 NTuple::Array<double> m_depthmuc2kpi; 00140 NTuple::Array<double> m_layermuc2kpi; 00141 NTuple::Array<double> m_cosmdc2kpi; 00142 NTuple::Array<double> m_phimdc2kpi; 00143 00144 NTuple::Array<double> m_costpid2kpi; 00145 NTuple::Array<double> m_dedxpid2kpi; 00146 NTuple::Array<double> m_tof1pid2kpi; 00147 NTuple::Array<double> m_tof2pid2kpi; 00148 NTuple::Array<double> m_probe2kpi; 00149 NTuple::Array<double> m_probmu2kpi; 00150 NTuple::Array<double> m_probpi2kpi; 00151 NTuple::Array<double> m_probk2kpi; 00152 NTuple::Array<double> m_probpr2kpi; 00153 NTuple::Array<double> m_pidnum2kpi; 00154 00155 NTuple::Array<double> m_chipidxpid2kpi; 00156 NTuple::Array<double> m_chipitof1pid2kpi; 00157 NTuple::Array<double> m_chipitof2pid2kpi; 00158 NTuple::Array<double> m_chipitofpid2kpi; 00159 NTuple::Array<double> m_chipitofepid2kpi; 00160 NTuple::Array<double> m_chipitofqpid2kpi; 00161 NTuple::Array<double> m_probpidxpid2kpi; 00162 NTuple::Array<double> m_probpitofpid2kpi; 00163 00164 NTuple::Array<double> m_chikdxpid2kpi; 00165 NTuple::Array<double> m_chiktof1pid2kpi; 00166 NTuple::Array<double> m_chiktof2pid2kpi; 00167 NTuple::Array<double> m_chiktofpid2kpi; 00168 NTuple::Array<double> m_chiktofepid2kpi; 00169 NTuple::Array<double> m_chiktofqpid2kpi; 00170 NTuple::Array<double> m_probkdxpid2kpi; 00171 NTuple::Array<double> m_probktofpid2kpi; 00172 00173 NTuple::Array<double> m_chiprdxpid2kpi; 00174 NTuple::Array<double> m_chiprtof1pid2kpi; 00175 NTuple::Array<double> m_chiprtof2pid2kpi; 00176 NTuple::Array<double> m_chiprtofpid2kpi; 00177 NTuple::Array<double> m_chiprtofepid2kpi; 00178 NTuple::Array<double> m_chiprtofqpid2kpi; 00179 NTuple::Array<double> m_probprdxpid2kpi; 00180 NTuple::Array<double> m_probprtofpid2kpi; 00181 00182 NTuple::Array<double> m_cosmdcjs; 00183 NTuple::Array<double> m_phimdcjs; 00184 NTuple::Array<double> m_dedxpidjs; 00185 NTuple::Array<double> m_tof1pidjs; 00186 NTuple::Array<double> m_tof2pidjs; 00187 NTuple::Array<double> m_probejs; 00188 NTuple::Array<double> m_probmujs; 00189 NTuple::Array<double> m_probpijs; 00190 NTuple::Array<double> m_probkjs; 00191 NTuple::Array<double> m_probprjs; 00192 00193 NTuple::Array<double> m_cotof1js; 00194 NTuple::Array<double> m_cotof2js; 00195 NTuple::Array<double> m_counterjs; 00196 NTuple::Array<double> m_barreljs; 00197 NTuple::Array<double> m_layertofjs; 00198 NTuple::Array<double> m_readoutjs; 00199 NTuple::Array<double> m_clusterjs; 00200 NTuple::Array<double> m_betajs; 00201 NTuple::Array<double> m_tofjs; 00202 NTuple::Array<double> m_tofpathjs; 00203 NTuple::Array<double> m_zhitjs; 00204 NTuple::Array<double> m_tofIDjs; 00205 NTuple::Array<double> m_clusterIDjs; 00206 NTuple::Array<double> m_texejs; 00207 NTuple::Array<double> m_texmujs; 00208 NTuple::Array<double> m_texpijs; 00209 NTuple::Array<double> m_texkjs; 00210 NTuple::Array<double> m_texprjs; 00211 NTuple::Array<double> m_dtejs; 00212 NTuple::Array<double> m_dtmujs; 00213 NTuple::Array<double> m_dtpijs; 00214 NTuple::Array<double> m_dtkjs; 00215 NTuple::Array<double> m_dtprjs; 00216 00217 NTuple::Array<double> m_cotof12kpi; 00218 NTuple::Array<double> m_cotof22kpi; 00219 NTuple::Array<double> m_counter2kpi; 00220 NTuple::Array<double> m_barrel2kpi; 00221 NTuple::Array<double> m_layertof2kpi; 00222 NTuple::Array<double> m_readout2kpi; 00223 NTuple::Array<double> m_cluster2kpi; 00224 NTuple::Array<double> m_beta2kpi; 00225 NTuple::Array<double> m_tof2kpi; 00226 NTuple::Array<double> m_tofpath2kpi; 00227 NTuple::Array<double> m_zhit2kpi; 00228 NTuple::Array<double> m_tofID2kpi; 00229 NTuple::Array<double> m_clusterID2kpi; 00230 NTuple::Array<double> m_texe2kpi; 00231 NTuple::Array<double> m_texmu2kpi; 00232 NTuple::Array<double> m_texpi2kpi; 00233 NTuple::Array<double> m_texk2kpi; 00234 NTuple::Array<double> m_texpr2kpi; 00235 NTuple::Array<double> m_dte2kpi; 00236 NTuple::Array<double> m_dtmu2kpi; 00237 NTuple::Array<double> m_dtpi2kpi; 00238 NTuple::Array<double> m_dtk2kpi; 00239 NTuple::Array<double> m_dtpr2kpi; 00240 NTuple::Array<double> m_sigmaetof2kpi; 00241 NTuple::Array<double> m_sigmamutof2kpi; 00242 NTuple::Array<double> m_sigmapitof2kpi; 00243 NTuple::Array<double> m_sigmaktof2kpi; 00244 NTuple::Array<double> m_sigmaprtof2kpi; 00245 NTuple::Array<double> m_t0tof2kpi; 00246 NTuple::Array<double> m_errt0tof2kpi; 00247 00248 NTuple::Array<double> m_sigmaetofjs; 00249 NTuple::Array<double> m_sigmamutofjs; 00250 NTuple::Array<double> m_sigmapitofjs; 00251 NTuple::Array<double> m_sigmaktofjs; 00252 NTuple::Array<double> m_sigmaprtofjs; 00253 NTuple::Array<double> m_t0tofjs; 00254 NTuple::Array<double> m_errt0tofjs; 00255 NTuple::Item<double> m_mchic2kpi; 00256 NTuple::Item<long> m_eventtype; 00257 NTuple::Item<double> m_mpsip2kpi; 00258 NTuple::Item<double> m_chis2kpi; 00259 NTuple::Item<double> m_mchic4c2kpi; 00260 NTuple::Item<double> m_mpsip4c2kpi; 00261 NTuple::Item<double> m_chis4c2kpi; 00262 NTuple::Item<double> m_mlplm2kpi; 00263 NTuple::Item<double> m_mhphm2kpi; 00264 NTuple::Item<double> m_mlphp2kpi; 00265 NTuple::Item<double> m_mlmhm2kpi; 00266 NTuple::Item<double> m_mlphm2kpi; 00267 NTuple::Item<double> m_mlmhp2kpi; 00268 00269 NTuple::Item<long> m_ncy20; 00270 NTuple::Item<long> m_ncy30; 00271 00272 NTuple::Item<long> m_idxemc; 00273 NTuple::Array<long> m_numHits; // Total number of hits 00274 NTuple::Array<double> m_secondmoment; 00275 NTuple::Array<double> m_latmoment; 00276 NTuple::Array<double> m_timegm; 00277 NTuple::Array<double> m_cellId; 00278 NTuple::Array<double> m_module; 00279 NTuple::Array<double> m_a20Moment; 00280 NTuple::Array<double> m_a42Moment; 00281 NTuple::Array<double> m_getEAll; 00282 NTuple::Array<double> m_getShowerId; 00283 NTuple::Array<double> m_getClusterId; 00284 NTuple::Array<double> m_x; // Shower coordinates and errors 00285 NTuple::Array<double> m_y; 00286 NTuple::Array<double> m_z; 00287 NTuple::Array<double> m_cosemc; // Shower Counter angles and errors 00288 NTuple::Array<double> m_phiemc; 00289 NTuple::Array<double> m_energy; // Total energy observed in Emc 00290 NTuple::Array<double> m_eSeed; 00291 NTuple::Array<double> m_e3x3; 00292 NTuple::Array<double> m_e5x5; 00293 NTuple::Array<double> m_dang4c; 00294 NTuple::Array<double> m_dthe4c; 00295 NTuple::Array<double> m_dphi4c; 00296 NTuple::Array<double> m_dang4crt; 00297 NTuple::Array<double> m_dthe4crt; 00298 NTuple::Array<double> m_dphi4crt; 00299 NTuple::Matrix<double> m_phgmtof; 00300 NTuple::Array<double> m_phgmtof0; 00301 NTuple::Array<double> m_phgmtof1; 00302 NTuple::Array<double> m_phgmtof2; 00303 00304 00305 Algorithm* m_subalg1; 00306 Algorithm* m_subalg2; 00307 Algorithm* m_subalg3; 00308 00309 }; 00310 00311 #endif