00001 #ifndef BhabhaPreSelect_H 00002 #define BhabhaPreSelect_H 00003 #include <cstring> 00004 00005 #include "GaudiKernel/AlgFactory.h" 00006 #include "GaudiKernel/Algorithm.h" 00007 #include "GaudiKernel/NTuple.h" 00008 #include "EvtRecEvent/EvtRecTrack.h" 00009 00010 00011 class BhabhaPreSelect : public Algorithm { 00012 00013 public: 00014 BhabhaPreSelect(const std::string& name, ISvcLocator* pSvcLocator); 00015 StatusCode initialize(); 00016 StatusCode execute(); 00017 StatusCode finalize(); 00018 00019 bool WhetherSector(double,double=0.,double=CLHEP::twopi); 00020 00021 int selectedType() const 00022 { 00023 return m_selectedType; 00024 } 00025 int selectedTrkID1() const 00026 { 00027 return m_selectedTrkID1; 00028 } 00029 int selectedTrkID2() const 00030 { 00031 return m_selectedTrkID2; 00032 } 00033 00034 private: 00035 00036 RecEmcShower* matched( int TrkID ) const ; 00037 double Angle2ClosestShower( int ShowerID ); 00038 // Declare r0, z0 cut for charged tracks 00039 double m_vr0cut; 00040 double m_vz0cut; 00041 00042 double m_lowEnergyShowerCut; 00043 double m_highEnergyShowerCut; 00044 double m_matchThetaCut ; 00045 double m_matchPhiCut ; 00046 00047 double m_highMomentumCut; 00048 double m_EoPMaxCut; 00049 double m_EoPMinCut; 00050 double m_minAngShEnergyCut; 00051 double m_minAngCut; 00052 double m_acolliCut; 00053 double m_eNormCut; 00054 double m_pNormCut; 00055 int m_BarrelOrEndcap; 00056 00057 static int idmax[43]; 00058 00059 double m_oneProngMomentumCut; 00060 00061 bool m_output; 00062 00064 int m_selectedType; 00065 int m_selectedTrkID1; 00066 int m_selectedTrkID2; 00068 long int m_events; 00069 00071 long int m_rejected; 00072 00073 int m_oneProngsSelected; 00074 int m_twoProngsMatchedSelected; 00075 int m_twoProngsOneMatchedSelected; 00076 00077 00078 // define Ntuples here 00079 00080 NTuple::Tuple* m_tuple1; //Trk2Sh2 00081 NTuple::Item<double> m_trk1_p; 00082 NTuple::Item<double> m_trk1_theta; 00083 NTuple::Item<double> m_trk1_phi; 00084 NTuple::Item<double> m_sh1_ene; 00085 NTuple::Item<double> m_sh1_theta; 00086 NTuple::Item<double> m_sh1_phi; 00087 00088 NTuple::Item<double> m_trk2_p; 00089 NTuple::Item<double> m_trk2_theta; 00090 NTuple::Item<double> m_trk2_phi; 00091 NTuple::Item<double> m_sh2_ene; 00092 NTuple::Item<double> m_sh2_theta; 00093 NTuple::Item<double> m_sh2_phi; 00094 NTuple::Item<double> m_di_the; 00095 NTuple::Item<double> m_di_phi; 00096 00097 NTuple::Item<double> m_etot; 00098 NTuple::Item<long> m_mdc_hit1; 00099 NTuple::Item<long> m_mdc_hit2; 00100 NTuple::Item<double> m_pNorm; 00101 NTuple::Item<double> m_eNorm; 00102 NTuple::Item<double> m_acolli; 00103 NTuple::Tuple* m_tuple2; 00104 NTuple::Item<double> m_sh_ene; 00105 NTuple::Item<double> m_sh_theta; 00106 NTuple::Item<double> m_sh_phi; 00107 }; 00108 00109 #endif