BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
InstallArea/include/BesDChain/BesDChain/CDCandidate.h
Go to the documentation of this file.
1#ifndef CLEODCHAIN_CDCANDIDATE_H
2#define CLEODCHAIN_CDCANDIDATE_H
3// -*- C++ -*-
4//
5// Package: DChain
6// Module: CDCandidate
7//
8// Description: Basic particle candidate need to use DChain list package
9//
10// Usage:
11// <usage>
12//
13// Author: Simon Patton
14// Created: Wed Sep 18 14:47:30 EDT 1996
15// $Id: CDCandidate.h,v 1.5 2011/10/27 06:15:12 zoujh Exp $
16//
17// Revision history
18//
19// $Log: CDCandidate.h,v $
20// Revision 1.5 2011/10/27 06:15:12 zoujh
21// add user tag to particle data
22//
23// Revision 1.4 2010/03/29 04:35:45 zoujh
24// See ChangeLog
25//
26// Revision 1.3 2009/09/22 08:24:41 hujf
27// see ChangeLog
28//
29// Revision 1.2 2009/06/22 14:55:48 zoujh
30// See ChangeLog
31//
32// Revision 1.1.1.1 2009/03/03 06:05:56 maqm
33// first import of BesDChain
34//
35// Revision 1.6 2006/01/11 20:37:27 cdj
36// work with renaming done in DChain package
37//
38// Revision 1.5 2004/03/05 22:01:49 chengp
39// implemented Monte Carlo matching
40//
41// Revision 1.4 2003/05/15 19:58:15 cdj
42// revamped memory handling so always use a ReferenceHolder to deal with the reference counting
43//
44// Revision 1.3 2001/09/12 19:10:36 ajm36
45// add lambda functions to CDCandidate
46//
47// Revision 1.2 2001/04/20 14:03:38 ajm36
48// add finalChildren function to return tracks and showers
49//
50// Revision 1.1 2001/04/11 13:19:10 urner
51// transition to files with CD prefix. Addition of new files
52//
53// Revision 1.3 2001/03/23 23:05:34 urner
54// added pi0 eta and CDKs decay lists
55//
56// Revision 1.2 2000/12/19 15:09:34 cdj
57// removed forward decleration of DBCDPhotonFit
58//
59// Revision 1.1.1.1 2000/12/18 22:17:25 cdj
60// imported CleoDChain
61//
62// Revision 1.23 1998/05/04 19:10:43 sjp
63// Fixed access confusion for kinematicData
64//
65// Revision 1.22 1998/04/17 18:48:56 sjp
66// Modifed to use latest CLEO types
67//
68// Revision 1.21 1997/09/03 14:58:39 sjp
69// Use new report.h and KTKinematicData
70//
71// Revision 1.20 1997/08/29 17:01:16 sjp
72// Modified to handle new Cairn Templated classes
73//
74// Revision 1.19 1997/08/22 16:18:49 sjp
75// New name for access functions
76//
77// Revision 1.18 1997/08/19 23:01:37 sjp
78// Restructured package to be independent of CleoDChain
79//
80// Revision 1.17 1997/08/19 20:41:29 sjp
81// Updated to use <package>/<file>.h include structure.
82// (Note: This version of the code has not been compiled)
83//
84// Revision 1.16 1997/07/03 17:47:59 sjp
85// Cleaned up include files
86//
87// Revision 1.15 1997/01/21 20:30:21 sjp
88// Changed CPP flags and include because of library reorganization
89//
90// Revision 1.14 1996/12/20 20:58:34 sjp
91// New pathname for FoorPrint
92//
93// Revision 1.13 1996/11/04 17:00:49 sjp
94// Separated of CDDecay part of CDCandidate into new class
95//
96
97// system include files
98#include <vector>
99
100#include "CLHEP/Vector/LorentzVector.h"
101
102// user include files
103#include "DecayChain/Element/ReferenceCount.h" // superclass
104#include "BesDChain/DBCandidate.h"
105#include "BesDChain/CDFootPrint.h" // CDFootPrint
106
107using CLHEP::HepLorentzVector;
108using CLHEP::Hep3Vector;
109
110// forward declarations
111class CDDecay ;
112class EvtRecTrack;
113class EvtRecPi0;
114class EvtRecEtaToGG;
115class EvtRecVeeVertex;
116
117namespace DecayChain {
118 class KinematicData;
119}
120
121using std::vector;
122
124{
125 // friend classses and functions
126
127 public:
128 // constants, enums and typedefs
130 typedef std::pair< vector<const EvtRecTrack*>, vector<const EvtRecTrack*> >
132
133 // Constructors and destructor
134 virtual ~CDCandidate() ;
135
136 // assignment operator(s)
137 const CDCandidate& operator=( const CDCandidate& aOtherCDCandidate ) ;
138
139 // member functions
140 void setUserTag(int tag);
141 CDCandidate& setP4( const HepLorentzVector& aMomentum ) ;
142
143 // const member functions
144 int userTag() const;
145 double mass() const ;
146 int charge() const ;
147 double energy() const ;
148 const Hep3Vector& momentum() const;
149 const HepLorentzVector& p4() const;
151#ifdef EXTEND
152 //for recover 4p after kinematic fit
153 void recover() const ;
154#endif
155
157
158 inline virtual DBCandidate::Hypo hypo() const;
159
160 virtual bool builtFromTrack() const ;
161 virtual const EvtRecTrack* track() const ;
162 virtual bool builtFromCDPhoton() const ;
163 virtual const EvtRecTrack* photon() const ;
164 virtual bool builtFromCDPi0() const ;
165 virtual const EvtRecPi0* navPi0() const ;
166 virtual bool builtFromCDEta() const ;
167 virtual const EvtRecEtaToGG* navEta() const ;
168 virtual bool builtFromCDKs() const ;
169 virtual const EvtRecVeeVertex* navKshort() const ;
170 virtual bool builtFromCDLambda() const ;
171 virtual const EvtRecVeeVertex* navLambda() const ;
172 virtual bool builtFromCDDecay() const ;
173 virtual const DecayEvidence& decay() const ;
174
175 //
176 bool overlap( const CDCandidate& aOtherCDCandidate ) const ;
177 const CDFootPrint& footPrint() const ;
178
179 // static member functions
180
181 protected:
182 // Constructors and destructor
183 CDCandidate( const CDCandidate& aOtherCDCandidate ) ;
184 CDCandidate( const CDFootPrint& aCDFootPrint ) ;
185
186 // protected member functions
187 void setKinematicData( const DecayChain::KinematicData& aKinematicData ) ;
188 void setCDFootPrint( const CDFootPrint& aCDFootPrint ) ;
189
191
192 void recurseNode(TracksAndShowers& final, const CDCandidate& cand) const;
193
194 // protected data members
195
196 private:
197 // Constructors and destructor
198 CDCandidate() ; // stop default
199 // private member functions
200 DecayChain::KinematicData* modifiableKinematicData() ;
201
202 // data members
203 DecayChain::KinematicData* m_kinematicDataPtr;
204
205 CDFootPrint m_footPrint ;
206
207} ;
208
210
211// inline function definitions
213{
215}
216
217#endif /* CLEODCHAIN_CDCANDIDATE_H */
virtual bool builtFromCDPhoton() const
virtual const EvtRecVeeVertex * navKshort() const
const CDFootPrint & footPrint() const
double energy() const
virtual bool builtFromTrack() const
void setKinematicData(const DecayChain::KinematicData &aKinematicData)
virtual const EvtRecTrack * photon() const
void setUserTag(int tag)
virtual bool builtFromCDDecay() const
virtual const EvtRecTrack * track() const
virtual const EvtRecVeeVertex * navLambda() const
virtual const EvtRecEtaToGG * navEta() const
virtual bool builtFromCDKs() const
virtual DecayChain::KinematicData * defaultKinematicData() const =0
CDCandidate & setP4(const HepLorentzVector &aMomentum)
CDCandidate(const CDFootPrint &aCDFootPrint)
CDCandidate(const CDCandidate &aOtherCDCandidate)
const Hep3Vector & momentum() const
int userTag() const
virtual bool builtFromCDEta() const
const CDCandidate & operator=(const CDCandidate &aOtherCDCandidate)
int charge() const
const HepLorentzVector & p4() const
virtual DBCandidate::Hypo hypo() const
virtual ~CDCandidate()
void recurseNode(TracksAndShowers &final, const CDCandidate &cand) const
bool overlap(const CDCandidate &aOtherCDCandidate) const
const DecayChain::KinematicData * kinematicData() const
double mass() const
std::pair< vector< const EvtRecTrack * >, vector< const EvtRecTrack * > > TracksAndShowers
virtual bool builtFromCDPi0() const
virtual const EvtRecPi0 * navPi0() const
virtual bool builtFromCDLambda() const
virtual const DecayEvidence & decay() const
void setCDFootPrint(const CDFootPrint &aCDFootPrint)
TracksAndShowers finalChildren() const