00001 #ifndef EventPreSelect_H 00002 #define EventPreSelect_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 #include "EventPreSelect/DimuPreSelect.h" 00010 00011 class EventPreSelect : public Algorithm { 00012 00013 public: 00014 EventPreSelect(const std::string& name, ISvcLocator* pSvcLocator); 00015 StatusCode initialize(); 00016 StatusCode execute(); 00017 StatusCode finalize(); 00018 00019 bool WhetherSector(double ph,double ph1,double ph2); 00020 00021 private: 00022 00023 int m_BarrelOrEndcap; 00024 bool m_output; 00025 double m_ecm; 00026 static int idmax[43]; 00027 00028 // Tag this event 00029 bool m_isBarrelBhabha; 00030 bool m_isEndcapBhabha; 00031 bool m_isBarrelDimu; 00032 bool m_isEndcapDimu; 00033 bool m_isHadron; 00034 bool m_isBarrelDiphoton; 00035 bool m_isEndcapDiphoton; 00036 00037 // Whether select event 00038 bool m_selectBhabha; 00039 bool m_selectDimu; 00040 bool m_selectHadron; 00041 bool m_selectDiphoton; 00042 bool m_writeDst; 00043 bool m_writeRec; 00044 00045 // Sub-Algorithm for each event 00046 DimuPreSelect *m_dimuAlg; 00047 00048 // Declare r0, z0 cut for charged tracks 00049 double m_vr0cut; 00050 double m_vz0cut; 00051 double m_pt0HighCut; 00052 double m_pt0LowCut; 00053 00054 // Declare energy, dphi, dthe cuts for fake gamma's 00055 double m_energyThreshold; 00056 double m_gammaPhiCut; 00057 double m_gammaThetaCut; 00058 00059 // Select creteria for each event 00060 double m_bhabhaEmcECut; 00061 double m_bhabhaMaxECut; 00062 double m_bhabhaSecECut; 00063 double m_bhabhaDTheCut; 00064 double m_bhabhaDPhiCut1; 00065 double m_bhabhaDPhiCut2; 00066 double m_bhabhaDPhiCut3; 00067 double m_bhabhaDPhiCut4; 00068 int m_bhabhaMdcHitCutB; 00069 int m_bhabhaMdcHitCutE; 00070 00071 double m_dimuEHighCut; 00072 double m_dimuELowCut; 00073 double m_dimuDTheCut; 00074 double m_dimuDPhiCut; 00075 00076 double m_hadronChaECut; 00077 double m_hadronNeuECut; 00078 00079 double m_diphotonEmcECut; 00080 double m_diphotonSecECut; 00081 double m_diphotonDTheCut; 00082 double m_diphotonDPhiCut1; 00083 double m_diphotonDPhiCut2; 00084 00086 long int m_events; 00087 00089 long int m_barrelBhabhaNumber; 00090 long int m_endcapBhabhaNumber; 00091 long int m_barrelDimuNumber; 00092 long int m_endcapDimuNumber; 00093 long int m_hadronNumber; 00094 long int m_barrelDiphotonNumber; 00095 long int m_endcapDiphotonNumber; 00096 00097 00098 Algorithm* m_subalg1; //select barrel bhabha 00099 Algorithm* m_subalg2; //select endcap bhabha 00100 Algorithm* m_subalg3; //select barrel dimu 00101 Algorithm* m_subalg4; //select endcap dimu 00102 Algorithm* m_subalg5; //select hadron 00103 Algorithm* m_subalg6; //select barrel diphoton 00104 Algorithm* m_subalg7; //select endcap diphoton 00105 Algorithm* m_subalg8; //write dst 00106 Algorithm* m_subalg9; //write rec 00107 00108 // define Ntuples here 00109 00110 NTuple::Tuple* m_tuple0; //Trk2Sh2 00111 NTuple::Item<double> m_esum; 00112 NTuple::Item<double> m_eemc; 00113 NTuple::Item<double> m_etot; 00114 NTuple::Item<double> m_nGood; 00115 NTuple::Item<double> m_nCharge; 00116 NTuple::Item<double> m_nGam; 00117 NTuple::Item<double> m_ptot; 00118 NTuple::Item<double> m_pp; 00119 NTuple::Item<double> m_pm; 00120 NTuple::Item<long> m_runnb; 00121 NTuple::Item<long> m_evtnb; 00122 NTuple::Item<double> m_maxE; 00123 NTuple::Item<double> m_secE; 00124 NTuple::Item<double> m_dThe; 00125 NTuple::Item<double> m_dPhi; 00126 NTuple::Item<long> m_mdcHit1; 00127 NTuple::Item<long> m_mdcHit2; 00128 00129 NTuple::Tuple* m_tuple1; // charged track vertex 00130 NTuple::Item<double> m_vx0; 00131 NTuple::Item<double> m_vy0; 00132 NTuple::Item<double> m_vz0; 00133 NTuple::Item<double> m_vr0; 00134 NTuple::Item<double> m_theta0; 00135 NTuple::Item<double> m_p0; 00136 NTuple::Item<double> m_pt0; 00137 00138 NTuple::Tuple* m_tuple2; // photon 00139 NTuple::Item<double> m_dthe; 00140 NTuple::Item<double> m_dphi; 00141 NTuple::Item<double> m_dang; 00142 NTuple::Item<double> m_eraw; 00143 00144 NTuple::Tuple* m_tuple3; // for dimu selection 00145 }; 00146 00147 #endif