BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Event/BesDChain/include/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 "BesDChain/CDFootPrint.h" // CDFootPrint
104#include "BesDChain/DBCandidate.h"
105#include "DecayChain/Element/ReferenceCount.h" // superclass
106
107using CLHEP::Hep3Vector;
108using CLHEP::HepLorentzVector;
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 // friend classses and functions
125
126public:
127 // constants, enums and typedefs
129 typedef std::pair<vector<const EvtRecTrack*>, vector<const EvtRecTrack*>> TracksAndShowers;
130
131 // Constructors and destructor
132 virtual ~CDCandidate();
133
134 // assignment operator(s)
135 const CDCandidate& operator=( const CDCandidate& aOtherCDCandidate );
136
137 // member functions
138 void setUserTag( int tag );
139 CDCandidate& setP4( const HepLorentzVector& aMomentum );
140
141 // const member functions
142 int userTag() const;
143 double mass() const;
144 int charge() const;
145 double energy() const;
146 const Hep3Vector& momentum() const;
147 const HepLorentzVector& p4() const;
149#ifdef EXTEND
150 // for recover 4p after kinematic fit
151 void recover() const;
152#endif
153
155
156 inline virtual DBCandidate::Hypo hypo() const;
157
158 virtual bool builtFromTrack() const;
159 virtual const EvtRecTrack* track() const;
160 virtual bool builtFromCDPhoton() const;
161 virtual const EvtRecTrack* photon() const;
162 virtual bool builtFromCDPi0() const;
163 virtual const EvtRecPi0* navPi0() const;
164 virtual bool builtFromCDEta() const;
165 virtual const EvtRecEtaToGG* navEta() const;
166 virtual bool builtFromCDKs() const;
167 virtual const EvtRecVeeVertex* navKshort() const;
168 virtual bool builtFromCDLambda() const;
169 virtual const EvtRecVeeVertex* navLambda() const;
170 virtual bool builtFromCDDecay() const;
171 virtual const DecayEvidence& decay() const;
172
173 //
174 bool overlap( const CDCandidate& aOtherCDCandidate ) const;
175 const CDFootPrint& footPrint() const;
176
177 // static member functions
178
179protected:
180 // Constructors and destructor
181 CDCandidate( const CDCandidate& aOtherCDCandidate );
182 CDCandidate( const CDFootPrint& aCDFootPrint );
183
184 // protected member functions
185 void setKinematicData( const DecayChain::KinematicData& aKinematicData );
186 void setCDFootPrint( const CDFootPrint& aCDFootPrint );
187
189
190 void recurseNode( TracksAndShowers& final, const CDCandidate& cand ) const;
191
192 // protected data members
193
194private:
195 // Constructors and destructor
196 CDCandidate(); // stop default
197 // private member functions
198 DecayChain::KinematicData* modifiableKinematicData();
199
200 // data members
201 DecayChain::KinematicData* m_kinematicDataPtr;
202
203 CDFootPrint m_footPrint;
204};
205
207
208// inline function definitions
210
211#endif /* CLEODCHAIN_CDCANDIDATE_H */
const CDCandidate & FixedCDCandidate
const CDFootPrint & footPrint() const
double energy() const
void setKinematicData(const DecayChain::KinematicData &aKinematicData)
virtual bool builtFromCDPi0() const
void setUserTag(int tag)
virtual const DecayEvidence & decay() const
virtual bool builtFromCDEta() const
virtual const EvtRecTrack * photon() const
virtual DecayChain::KinematicData * defaultKinematicData() const =0
CDCandidate & setP4(const HepLorentzVector &aMomentum)
virtual bool builtFromCDLambda() const
virtual const EvtRecVeeVertex * navLambda() const
CDCandidate(const CDCandidate &aOtherCDCandidate)
virtual const EvtRecTrack * track() const
const Hep3Vector & momentum() const
int userTag() const
const CDCandidate & operator=(const CDCandidate &aOtherCDCandidate)
virtual bool builtFromCDPhoton() const
virtual bool builtFromTrack() const
int charge() const
const HepLorentzVector & p4() const
virtual const EvtRecVeeVertex * navKshort() const
TracksAndShowers finalChildren() const
virtual DBCandidate::Hypo hypo() const
const DecayChain::KinematicData * kinematicData() const
virtual bool builtFromCDDecay() const
virtual ~CDCandidate()
virtual bool builtFromCDKs() const
virtual const EvtRecPi0 * navPi0() const
void recurseNode(TracksAndShowers &final, const CDCandidate &cand) const
bool overlap(const CDCandidate &aOtherCDCandidate) const
virtual const EvtRecEtaToGG * navEta() const
double mass() const
std::pair< vector< const EvtRecTrack * >, vector< const EvtRecTrack * > > TracksAndShowers
void setCDFootPrint(const CDFootPrint &aCDFootPrint)