00001 #ifndef QCMCFilter_h 00002 #define QCMCFilter_h 1 00003 00004 #include <string> 00005 #include "HepPDT/ParticleDataTable.hh" 00006 #include "GaudiKernel/Algorithm.h" 00007 00008 #include "EventModel/EventHeader.h" 00009 #include "EvtRecEvent/EvtRecEvent.h" 00010 00011 #include "CLHEP/Matrix/SymMatrix.h" 00012 #include <vector> 00013 using namespace std; 00014 00015 class IDataProviderSvc; 00016 00017 class QCMCFilter : public Algorithm { 00018 public: 00019 QCMCFilter(const std::string& name, ISvcLocator* pSvcLocator); 00020 00021 std::vector<double> findD0Decay(int charm); 00022 00023 StatusCode initialize(); 00024 StatusCode execute(); 00025 StatusCode finalize(); 00026 00027 // ------------ constants, enums and typedefs -------------- 00028 00029 private: 00030 IDataProviderSvc* m_evtSvc; 00031 00032 HepPDT::ParticleDataTable* m_particleTable; 00033 00034 // ------------ data members ------------------------------- 00035 int m_nUnknownEvents ; 00036 int m_nUnknownDecays ; 00037 int m_nD0D0barEvents ; 00038 int m_nD0bar ; 00039 int m_nDpDmEvents ; 00040 int m_nD0D0barDiscarded ; 00041 int m_nDpDmDiscarded ; 00042 int m_nCPPlus ; 00043 int m_nCPMinus ; 00044 int m_nFlavoredCFD0 ; 00045 int m_nFlavoredCSD0 ; 00046 int m_nFlavoredDCSD0 ; 00047 int m_nSL ; 00048 00049 int m_nDalitz ; 00050 double m_dalitzNumer1 ; 00051 double m_dalitzNumer2 ; 00052 double m_dalitzDenom ; 00053 00054 bool m_invertSelection ; 00055 double m_x ; 00056 double m_y ; 00057 double m_rCF ; 00058 double m_zCF ; 00059 bool m_wCFSign ; // true = +, false = - 00060 double m_rCS ; 00061 double m_zCS ; 00062 bool m_wCSSign ; // true = +, false = - 00063 double m_dplusDminusWeight ; 00064 int m_dalitzModel ; 00065 bool m_useNewWeights ; 00066 00067 double m_rwsCF ; 00068 double m_rwsCS ; 00069 double m_deltaCF ; 00070 double m_deltaCS ; 00071 00072 double m_largestWeight ; 00073 00074 }; 00075 00076 #endif 00077