00001 #ifndef CLEODCHAIN_CDDECAY_H 00002 #define CLEODCHAIN_CDDECAY_H 00003 // -*- C++ -*- 00004 // 00005 // Package: CleoDChain 00006 // Module: CDDecay 00007 // 00008 // Description: CDDecay candidate built from other candidates 00009 // 00010 // Usage: 00011 // <usage> 00012 // 00013 // Author: Simon Patton 00014 // Created: Wed Sep 18 14:47:30 EDT 1996 00015 // $Id: CDDecay.h,v 1.2 2009/09/22 08:24:41 hujf Exp $ 00016 // 00017 // Revision history 00018 // 00019 // $Log: CDDecay.h,v $ 00020 // Revision 1.2 2009/09/22 08:24:41 hujf 00021 // see ChangeLog 00022 // 00023 // Revision 1.1.1.1 2009/03/03 06:05:56 maqm 00024 // first import of BesDChain 00025 // 00026 // Revision 1.8 2006/03/17 19:36:47 ponyisi 00027 // Fix mcParticle() to use gammaFSR when available while doing matching 00028 // 00029 // Revision 1.7 2006/01/11 20:37:28 cdj 00030 // work with renaming done in DChain package 00031 // 00032 // Revision 1.6 2004/10/19 13:39:38 cdj 00033 // removed unimplemented CDDecay::parent() method 00034 // 00035 // Revision 1.5 2004/06/02 23:24:55 ryd 00036 // Made constructor of CDDecay from CDCandidate explicit 00037 // 00038 // Revision 1.4 2004/03/05 22:01:49 chengp 00039 // implemented Monte Carlo matching 00040 // 00041 // Revision 1.3 2003/05/15 19:58:15 cdj 00042 // revamped memory handling so always use a ReferenceHolder to deal with the reference counting 00043 // 00044 // Revision 1.2 2002/04/09 20:54:19 lyon 00045 // Added CDDecay::setKinematicData 00046 // 00047 // Revision 1.1 2001/04/11 13:19:14 urner 00048 // transition to files with CD prefix. Addition of new files 00049 // 00050 // Revision 1.3 2001/04/04 15:16:50 cdj 00051 // added a protected default constructor (used for storage) 00052 // 00053 // Revision 1.2 2001/04/03 17:25:57 cdj 00054 // changed isCDDecay to builtFromCDDecay 00055 // 00056 // Revision 1.1.1.1 2000/12/18 22:17:26 cdj 00057 // imported CleoDChain 00058 // 00059 // Revision 1.11 1998/04/17 18:49:12 sjp 00060 // Modifed to use latest CLEO types 00061 // 00062 // Revision 1.10 1997/09/03 14:58:43 sjp 00063 // Use new report.h and KTKinematicData 00064 // 00065 // Revision 1.9 1997/08/29 17:01:19 sjp 00066 // Modified to handle new CDDecay Templated classes 00067 // 00068 // Revision 1.8 1997/08/26 04:02:08 sjp 00069 // Added typedef for CandidateClass 00070 // 00071 // Revision 1.7 1997/08/19 23:01:40 sjp 00072 // Restructured package to be independent of CleoDChain 00073 // 00074 // Revision 1.6 1997/08/19 20:41:37 sjp 00075 // Updated to use <package>/<file>.h include structure. 00076 // (Note: This version of the code has not been compiled) 00077 // 00078 // Revision 1.5 1997/01/31 20:10:20 sjp 00079 // Modified to use the new `bug' include files 00080 // 00081 // Revision 1.4 1997/01/21 20:30:25 sjp 00082 // Changed CPP flags and include because of library reorganization 00083 // 00084 // Revision 1.3 1997/01/19 20:32:06 sjp 00085 // Changed LargeCount to Count 00086 // 00087 // Revision 1.2 1996/12/20 20:59:50 sjp 00088 // Extended pathname for Includes. 00089 // 00090 // Revision 1.1 1996/11/04 17:01:57 sjp 00091 // New class for CDDecay CDCandidate 00092 // 00093 00094 // system include files 00095 #include <stdint.h> 00096 #include <vector> 00097 00098 // user include files 00099 #include "DecayChain/Element/DCChildren.h" // For enumerator 00100 #include "BesDChain/CDCandidate.h" // superclass 00101 #include "DecayChain/Element/ReferenceHolder.h" 00102 00103 // forward declarations 00104 template < class Arg > class DCAnalysisFunction ; 00105 00106 namespace DecayChain { 00107 class KinematicData; 00108 } 00109 00110 class CDDecay : public CDCandidate 00111 { 00112 // friend classses and functions 00113 00114 public: 00115 // constants, enums and typedefs 00116 typedef CDCandidate CandidateClass ; 00117 00118 // Constructors and destructor 00119 CDDecay( const CDDecay& aOtherCDDecay ) ; 00120 explicit CDDecay( const CDCandidate& aProduct ) ; 00121 CDDecay( const CDDecay& aProducts , 00122 const CDCandidate& aAdditionalProduct ) ; 00123 virtual ~CDDecay() ; 00124 00125 // member functions 00126 void addChild( const CDCandidate& aAdditionalProduct ) ; 00127 00128 // Replace the KinematicData for this decay. Useful for 00129 // saving results of a fit. 00130 void setKinematicData( const DecayChain::KinematicData& aKinematicData ); 00131 00132 // const member functions 00133 virtual bool builtFromCDDecay( void ) const ; 00134 virtual const CDDecay& decay( void ) const ; 00135 uint32_t numberChildren() const ; 00136 void iterateChildren( void ( * analyze )( const CDCandidate& ) ) const ; 00137 void iterateChildren( DCAnalysisFunction< CDCandidate >& analyze ) const ; 00138 const CDCandidate& child( unsigned int aPosition ) const ; 00139 const std::vector<dchain::ReferenceHolder<CDCandidate> >& children() const ; 00140 // static member functions 00141 // add for kinematic fit 00142 #ifdef EXTEND 00143 double chisq() const { return m_kmfit_chisq;} 00144 void chisq(double c) { m_kmfit_chisq = c;} 00145 double vchisq() const { return m_vxfit_chisq;} 00146 void vchisq(double c) { m_vxfit_chisq = c;} 00147 protected: 00148 double m_kmfit_chisq; 00149 double m_vxfit_chisq; 00150 #endif 00151 protected: 00152 // Constructors and destructor 00153 CDDecay() ; // used for storage 00154 00155 // protected member functions 00156 virtual DecayChain::KinematicData* defaultKinematicData() const ; 00157 00158 private: 00159 // Constructors and destructor 00160 00161 // assignment operator(s) 00162 const CDDecay& operator=( const CDDecay& aOtherCDDecay ) ; // stop default 00163 00164 // private member functions 00165 00166 // data members 00167 std::vector< dchain::ReferenceHolder<CDCandidate> >& m_children ; 00168 00169 // static data members 00170 00171 } ; 00172 00173 typedef const CDDecay& FixedCDDecay ; 00174 typedef CDDecay& PossibleCDDecay ; 00175 00176 // inline function definitions 00177 00178 #endif /* CLEODCHAIN_CDDECAY_H */