00001 // -*- C++ -*- 00002 // 00003 // Package: <CleoDChain> 00004 // Module: CDKs 00005 // 00006 // Description: <one line class summary> 00007 // 00008 // Implementation: 00009 // <Notes on implementation> 00010 // 00011 // Author: David Urner 00012 // Created: Thu Mar 22 16:23:36 EST 2001 00013 // $Id: CDKs.cxx,v 1.2 2009/06/22 14:55:48 zoujh Exp $ 00014 // 00015 // Revision history 00016 // 00017 // $Log: CDKs.cxx,v $ 00018 // Revision 1.2 2009/06/22 14:55:48 zoujh 00019 // See ChangeLog 00020 // 00021 // Revision 1.1.1.1 2009/03/03 06:05:56 maqm 00022 // first import of BesDChain 00023 // 00024 // Revision 1.6 2006/01/11 20:37:25 cdj 00025 // work with renaming done in DChain package 00026 // 00027 // Revision 1.5 2004/03/05 22:01:44 chengp 00028 // implemented Monte Carlo matching 00029 // 00030 // Revision 1.4 2003/05/15 19:58:09 cdj 00031 // revamped memory handling so always use a ReferenceHolder to deal with the reference counting 00032 // 00033 // Revision 1.3 2001/11/06 15:20:46 ajm36 00034 // override defaultKinematicData for pi0, eta, ks, lambda 00035 // 00036 // Revision 1.2 2001/04/25 12:52:12 ajm36 00037 // plugged memory leak in ctor for pi0's, k shorts, etas 00038 // 00039 // Revision 1.1 2001/04/11 13:19:02 urner 00040 // transition to files with CD prefix. Addition of new files 00041 // 00042 // Revision 1.2 2001/03/24 03:07:56 cdj 00043 // fixed CDPi0 CDKs and CDEta classes so could properly assess info from CDCandidate class 00044 // 00045 // Revision 1.1 2001/03/23 23:05:28 urner 00046 // added pi0 eta and CDKs decay lists 00047 // 00048 00049 // system include files 00050 00051 // user include files 00052 #include "EvtRecEvent/EvtRecVeeVertex.h" 00053 #include "BesDChain/util/KinematicData.h" 00054 #include "BesDChain/CDChargedPion.h" 00055 #include "BesDChain/CDKs.h" 00056 //zoujh: ... 00057 //#include "AnalEvent/BComposedParticle.h" 00058 00059 // 00060 // constants, enums and typedefs 00061 // 00062 using namespace dchain; 00063 using DecayChain::KinematicData; 00064 00065 // 00066 // static data member definitions 00067 // 00068 00069 // 00070 // constructors and destructor 00071 // 00072 CDKs::CDKs(const EvtRecVeeVertex* aVisible) : 00073 m_ks(aVisible) 00074 { 00075 EvtRecVeeVertex* ks = const_cast<EvtRecVeeVertex*>(aVisible); 00076 ReferenceHolder<CDChargedPion> tmp = new CDChargedPion(ks->daughter(0)); 00077 addChild(*tmp); 00078 tmp = new CDChargedPion(ks->daughter(1)); 00079 addChild(*tmp); 00080 } 00081 00082 00083 CDKs::~CDKs() 00084 { 00085 } 00086 00087 00088 //------ buildFromCDKs ----- 00089 // return `true' as CDKs is made up from VisibleEvidence 00090 // 00091 bool CDKs::builtFromCDKs() const 00092 { 00093 return true; 00094 } 00095 00096 00097 //------ CDKs ----- 00098 // return NavKs for this CDKs 00099 // 00100 const EvtRecVeeVertex* CDKs::navKshort() const 00101 { 00102 return m_ks ; 00103 } 00104 00105 KinematicData* CDKs::defaultKinematicData() const 00106 { 00107 KinematicData* data = new KinematicData(); 00108 00109 double mass = m_ks->mass(); 00110 const HepVector& w_ks = m_ks->w(); 00111 00112 double e = sqrt(mass*mass + w_ks[0]*w_ks[0] + w_ks[1]*w_ks[1] + w_ks[2]*w_ks[2]); 00113 00114 data->setP4( HepLorentzVector(w_ks[0], w_ks[1], w_ks[2], e) ); 00115 00116 return data; 00117 } 00118