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
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
00079
00080 NTuple::Tuple* m_tuple1;
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