/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/BesDChain/BesDChain-00-00-14/BesDChain/CDCandidate.h

Go to the documentation of this file.
00001 #ifndef CLEODCHAIN_CDCANDIDATE_H
00002 #define CLEODCHAIN_CDCANDIDATE_H
00003 // -*- C++ -*-
00004 //
00005 // Package:     DChain
00006 // Module:      CDCandidate
00007 // 
00008 // Description: Basic particle candidate need to use DChain list package
00009 //
00010 // Usage:
00011 //    <usage>
00012 //
00013 // Author:      Simon Patton
00014 // Created:     Wed Sep 18 14:47:30 EDT 1996
00015 // $Id: CDCandidate.h,v 1.5 2011/10/27 06:15:12 zoujh Exp $
00016 //
00017 // Revision history
00018 //
00019 // $Log: CDCandidate.h,v $
00020 // Revision 1.5  2011/10/27 06:15:12  zoujh
00021 // add user tag to particle data
00022 //
00023 // Revision 1.4  2010/03/29 04:35:45  zoujh
00024 // See ChangeLog
00025 //
00026 // Revision 1.3  2009/09/22 08:24:41  hujf
00027 // see ChangeLog
00028 //
00029 // Revision 1.2  2009/06/22 14:55:48  zoujh
00030 // See ChangeLog
00031 //
00032 // Revision 1.1.1.1  2009/03/03 06:05:56  maqm
00033 // first import of BesDChain
00034 //
00035 // Revision 1.6  2006/01/11 20:37:27  cdj
00036 // work with renaming done in DChain package
00037 //
00038 // Revision 1.5  2004/03/05 22:01:49  chengp
00039 // implemented Monte Carlo matching
00040 //
00041 // Revision 1.4  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.3  2001/09/12 19:10:36  ajm36
00045 // add lambda functions to CDCandidate
00046 //
00047 // Revision 1.2  2001/04/20 14:03:38  ajm36
00048 // add finalChildren function to return tracks and showers
00049 //
00050 // Revision 1.1  2001/04/11 13:19:10  urner
00051 // transition to files with CD prefix. Addition of new files
00052 //
00053 // Revision 1.3  2001/03/23 23:05:34  urner
00054 // added pi0 eta and CDKs decay lists
00055 //
00056 // Revision 1.2  2000/12/19 15:09:34  cdj
00057 // removed forward decleration of DBCDPhotonFit
00058 //
00059 // Revision 1.1.1.1  2000/12/18 22:17:25  cdj
00060 // imported CleoDChain
00061 //
00062 // Revision 1.23  1998/05/04 19:10:43  sjp
00063 // Fixed access confusion for kinematicData
00064 //
00065 // Revision 1.22  1998/04/17 18:48:56  sjp
00066 // Modifed to use latest CLEO types
00067 //
00068 // Revision 1.21  1997/09/03 14:58:39  sjp
00069 // Use new report.h and KTKinematicData
00070 //
00071 // Revision 1.20  1997/08/29 17:01:16  sjp
00072 // Modified to handle new Cairn Templated classes
00073 //
00074 // Revision 1.19  1997/08/22 16:18:49  sjp
00075 // New name for access functions
00076 //
00077 // Revision 1.18  1997/08/19 23:01:37  sjp
00078 // Restructured package to be independent of CleoDChain
00079 //
00080 // Revision 1.17  1997/08/19 20:41:29  sjp
00081 // Updated to use <package>/<file>.h include structure.
00082 //   (Note: This version of the code has not been compiled)
00083 //
00084 // Revision 1.16  1997/07/03 17:47:59  sjp
00085 // Cleaned up include files
00086 //
00087 // Revision 1.15  1997/01/21 20:30:21  sjp
00088 // Changed CPP flags and include because of library reorganization
00089 //
00090 // Revision 1.14  1996/12/20 20:58:34  sjp
00091 // New pathname for FoorPrint
00092 //
00093 // Revision 1.13  1996/11/04 17:00:49  sjp
00094 // Separated of CDDecay part of CDCandidate into new class
00095 //
00096 
00097 // system include files
00098 #include <vector>
00099 
00100 #include "CLHEP/Vector/LorentzVector.h"
00101 
00102 // user include files
00103 #include "DecayChain/Element/ReferenceCount.h"  // superclass
00104 #include "BesDChain/DBCandidate.h"
00105 #include "BesDChain/CDFootPrint.h" // CDFootPrint
00106 
00107 using CLHEP::HepLorentzVector;
00108 using CLHEP::Hep3Vector;
00109 
00110 // forward declarations
00111 class CDDecay ;
00112 class EvtRecTrack;
00113 class EvtRecPi0;
00114 class EvtRecEtaToGG;
00115 class EvtRecVeeVertex;
00116 
00117 namespace DecayChain {
00118    class KinematicData;
00119 }
00120 
00121 using std::vector;
00122 
00123 class CDCandidate : public dchain::ReferenceCount
00124 {
00125       // friend classses and functions
00126 
00127    public:
00128       // constants, enums and typedefs
00129       typedef CDDecay DecayEvidence ;
00130       typedef std::pair< vector<const EvtRecTrack*>, vector<const EvtRecTrack*> >
00131          TracksAndShowers;
00132 
00133       // Constructors and destructor
00134       virtual ~CDCandidate() ;
00135 
00136       // assignment operator(s)
00137       const CDCandidate& operator=( const CDCandidate& aOtherCDCandidate ) ;
00138 
00139       // member functions
00140       void   setUserTag(int tag);
00141       CDCandidate& setP4( const HepLorentzVector& aMomentum ) ;
00142 
00143       // const member functions
00144       int    userTag() const;
00145       double mass() const ;
00146       int    charge() const ;
00147       double energy() const ;
00148       const  Hep3Vector& momentum() const;
00149       const  HepLorentzVector& p4() const;
00150       const  DecayChain::KinematicData* kinematicData() const;
00151 #ifdef EXTEND
00152       //for recover 4p after kinematic fit
00153       void recover() const ;
00154 #endif
00155 
00156       TracksAndShowers finalChildren() const;
00157 
00158       inline virtual DBCandidate::Hypo hypo() const;
00159 
00160       virtual bool  builtFromTrack() const ;
00161       virtual const EvtRecTrack* track() const ;
00162       virtual bool  builtFromCDPhoton() const ;
00163       virtual const EvtRecTrack* photon() const ;
00164       virtual bool  builtFromCDPi0() const ;
00165       virtual const EvtRecPi0* navPi0() const ;
00166       virtual bool  builtFromCDEta() const ;
00167       virtual const EvtRecEtaToGG* navEta() const ;
00168       virtual bool  builtFromCDKs() const ;
00169       virtual const EvtRecVeeVertex* navKshort() const ;
00170       virtual bool  builtFromCDLambda() const ;
00171       virtual const EvtRecVeeVertex* navLambda() const ;
00172       virtual bool  builtFromCDDecay() const ;
00173       virtual const DecayEvidence& decay() const ;
00174 
00175       //
00176       bool  overlap( const CDCandidate& aOtherCDCandidate ) const ;
00177       const CDFootPrint& footPrint() const ;
00178 
00179       // static member functions
00180 
00181    protected:
00182       // Constructors and destructor
00183       CDCandidate( const CDCandidate& aOtherCDCandidate ) ;
00184       CDCandidate( const CDFootPrint& aCDFootPrint ) ;
00185 
00186       // protected member functions
00187       void setKinematicData( const DecayChain::KinematicData& aKinematicData ) ;
00188       void setCDFootPrint( const CDFootPrint& aCDFootPrint ) ;
00189 
00190       virtual DecayChain::KinematicData* defaultKinematicData() const = 0 ;
00191 
00192       void recurseNode(TracksAndShowers& final, const CDCandidate& cand) const;
00193 
00194       // protected data members
00195 
00196    private:
00197       // Constructors and destructor
00198       CDCandidate() ; // stop default
00199       // private member functions
00200       DecayChain::KinematicData* modifiableKinematicData() ;
00201 
00202       // data members
00203       DecayChain::KinematicData*  m_kinematicDataPtr;
00204 
00205       CDFootPrint m_footPrint ;
00206 
00207 } ;
00208 
00209 typedef const CDCandidate& FixedCDCandidate ;
00210 
00211 // inline function definitions
00212 inline DBCandidate::Hypo CDCandidate::hypo() const
00213 {
00214     return DBCandidate::kMaxHypo;
00215 }
00216 
00217 #endif /* CLEODCHAIN_CDCANDIDATE_H */

Generated on Tue Nov 29 22:58:19 2016 for BOSS_7.0.2 by  doxygen 1.4.7