BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Event/DstEvent/include/DstEvent/DstExtTrack.h
Go to the documentation of this file.
1//
2// File: DstExtTrack.h
3// Author: L.L.Wang
4
5#ifndef DSTEXTTRACK_H
6#define DSTEXTTRACK_H
7
8#include <vector>
9
10#include "EventModel/EventModel.h"
11#include "GaudiKernel/ContainedObject.h"
12#include "GaudiKernel/ObjectVector.h"
13
14#include "CLHEP/Matrix/SymMatrix.h"
15#include "CLHEP/Matrix/Vector.h"
16#include "CLHEP/Vector/ThreeVector.h"
17// #include "ExtEvent/ExtMucHit.h"
18
19using namespace std;
20using namespace EventModel;
21
22using CLHEP::Hep3Vector;
23using CLHEP::HepSymMatrix;
24extern const CLID& CLID_DstExtTrack;
25
26class DstExtTrack : virtual public ContainedObject {
27public:
28 const CLID& clID() const { return DstExtTrack::classID(); }
29
30 static const CLID& classID() { return CLID_DstExtTrack; }
31
34
35 const int GetTrackId() const { return m_trackId; }
36 const int trackId() const { return m_trackId; }
37
38 // Get track extrapolation data @ Tof layer1.
39 // const Hep3Vector GetTof1Position() const;
40 // const Hep3Vector GetTof1Momentum() const;
41 // const string GetTof1VolumeName() const;
42 // const int GetTof1VolumeNumber() const;
43 // const double GetTof1() const;
44 // const double GetTof1Path() const;
45 // const double GetTof1PosSigmaAlongZ() const;
46 // const double GetTof1PosSigmaAlongT() const;
47 // const double GetTof1PosSigmaAlongX() const;
48 // const double GetTof1PosSigmaAlongY() const;
49 // const HepSymMatrix GetTof1ErrorMatrix() const;
50
51 const Hep3Vector tof1Position() const { return myTof1Position[myParticleType]; };
52 const Hep3Vector tof1Position( int parID ) const { return myTof1Position[parID]; };
53 const Hep3Vector tof1Momentum() const { return myTof1Momentum[myParticleType]; };
54 const Hep3Vector tof1Momentum( int parID ) const { return myTof1Momentum[parID]; };
55 const string tof1VolumeName() const { return myTof1VolumeName[myParticleType]; };
56 const string tof1VolumeName( int parID ) const { return myTof1VolumeName[parID]; };
57 const int tof1VolumeNumber() const { return myTof1VolumeNumber[myParticleType]; };
58 const int tof1VolumeNumber( int parID ) const { return myTof1VolumeNumber[parID]; };
59 const double tof1() const { return myTof1[myParticleType]; };
60 const double tof1( int parID ) const { return myTof1[parID]; };
61 const double tof1Path() const { return myTof1Path[myParticleType]; };
62 const double tof1Path( int parID ) const { return myTof1Path[parID]; };
63 const double tof1PosSigmaAlongZ() const { return myTof1PosSigmaAlongZ[myParticleType]; };
64 const double tof1PosSigmaAlongZ( int parID ) const { return myTof1PosSigmaAlongZ[parID]; };
65 const double tof1PosSigmaAlongT() const { return myTof1PosSigmaAlongT[myParticleType]; };
66 const double tof1PosSigmaAlongT( int parID ) const { return myTof1PosSigmaAlongT[parID]; };
67 const double tof1PosSigmaAlongX() const { return myTof1PosSigmaAlongX[myParticleType]; };
68 const double tof1PosSigmaAlongX( int parID ) const { return myTof1PosSigmaAlongX[parID]; };
69 const double tof1PosSigmaAlongY() const { return myTof1PosSigmaAlongY[myParticleType]; };
70 const double tof1PosSigmaAlongY( int parID ) const { return myTof1PosSigmaAlongY[parID]; };
71 const HepSymMatrix tof1ErrorMatrix() const { return myTof1ErrorMatrix[myParticleType]; };
72 const HepSymMatrix tof1ErrorMatrix( int parID ) const { return myTof1ErrorMatrix[parID]; };
73
74 // Get track extrapolation data @ Tof layer2.
75 // const Hep3Vector GetTof2Position() const;
76 // const Hep3Vector GetTof2Momentum() const;
77 // const string GetTof2VolumeName() const;
78 // const int GetTof2VolumeNumber() const;
79 // const double GetTof2() const;
80 // const double GetTof2Path() const;
81 // const double GetTof2PosSigmaAlongZ() const;
82 // const double GetTof2PosSigmaAlongT() const;
83 // const double GetTof2PosSigmaAlongX() const;
84 // const double GetTof2PosSigmaAlongY() const;
85 // const HepSymMatrix GetTof2ErrorMatrix() const;
86
87 const Hep3Vector tof2Position() const { return myTof2Position[myParticleType]; };
88 const Hep3Vector tof2Position( int parID ) const { return myTof2Position[parID]; };
89 const Hep3Vector tof2Momentum() const { return myTof2Momentum[myParticleType]; };
90 const Hep3Vector tof2Momentum( int parID ) const { return myTof2Momentum[parID]; };
91 const string tof2VolumeName() const { return myTof2VolumeName[myParticleType]; };
92 const string tof2VolumeName( int parID ) const { return myTof2VolumeName[parID]; };
93 const int tof2VolumeNumber() const { return myTof2VolumeNumber[myParticleType]; };
94 const int tof2VolumeNumber( int parID ) const { return myTof2VolumeNumber[parID]; };
95 const double tof2() const { return myTof2[myParticleType]; };
96 const double tof2( int parID ) const { return myTof2[parID]; };
97 const double tof2Path() const { return myTof2Path[myParticleType]; };
98 const double tof2Path( int parID ) const { return myTof2Path[parID]; };
99 const double tof2PosSigmaAlongZ() const { return myTof2PosSigmaAlongZ[myParticleType]; };
100 const double tof2PosSigmaAlongZ( int parID ) const { return myTof2PosSigmaAlongZ[parID]; };
101 const double tof2PosSigmaAlongT() const { return myTof2PosSigmaAlongT[myParticleType]; };
102 const double tof2PosSigmaAlongT( int parID ) const { return myTof2PosSigmaAlongT[parID]; };
103 const double tof2PosSigmaAlongX() const { return myTof2PosSigmaAlongX[myParticleType]; };
104 const double tof2PosSigmaAlongX( int parID ) const { return myTof2PosSigmaAlongX[parID]; };
105 const double tof2PosSigmaAlongY() const { return myTof2PosSigmaAlongY[myParticleType]; };
106 const double tof2PosSigmaAlongY( int parID ) const { return myTof2PosSigmaAlongY[parID]; };
107 const HepSymMatrix tof2ErrorMatrix() const { return myTof2ErrorMatrix[myParticleType]; };
108 const HepSymMatrix tof2ErrorMatrix( int parID ) const { return myTof2ErrorMatrix[parID]; };
109
110 // Get track extrapolation data @ EMC.
111 // const Hep3Vector GetEmcPosition() const;
112 // const Hep3Vector GetEmcMomentum() const;
113 // const string GetEmcVolumeName() const;
114 // const int GetEmcVolumeNumber() const;
115 // const double GetEmcPosSigmaAlongTheta() const;
116 // const double GetEmcPosSigmaAlongPhi() const;
117 // const HepSymMatrix GetEmcErrorMatrix() const;
118
119 const Hep3Vector emcPosition() const { return myEmcPosition[myParticleType]; };
120 const Hep3Vector emcPosition( int parID ) const { return myEmcPosition[parID]; };
121 const Hep3Vector emcMomentum() const { return myEmcMomentum[myParticleType]; };
122 const Hep3Vector emcMomentum( int parID ) const { return myEmcMomentum[parID]; };
123 const string emcVolumeName() const { return myEmcVolumeName[myParticleType]; };
124 const string emcVolumeName( int parID ) const { return myEmcVolumeName[parID]; };
125 const int emcVolumeNumber() const { return myEmcVolumeNumber[myParticleType]; };
126 const int emcVolumeNumber( int parID ) const { return myEmcVolumeNumber[parID]; };
127 const double emcPosSigmaAlongTheta() const {
128 return myEmcPosSigmaAlongTheta[myParticleType];
129 };
130 const double emcPosSigmaAlongTheta( int parID ) const {
131 return myEmcPosSigmaAlongTheta[parID];
132 };
133 const double emcPosSigmaAlongPhi() const { return myEmcPosSigmaAlongPhi[myParticleType]; };
134 const double emcPosSigmaAlongPhi( int parID ) const { return myEmcPosSigmaAlongPhi[parID]; };
135 const HepSymMatrix emcErrorMatrix() const { return myEmcErrorMatrix[myParticleType]; };
136 const HepSymMatrix emcErrorMatrix( int parID ) const { return myEmcErrorMatrix[parID]; };
137 const double emcPath() const { return myEmcPath[myParticleType]; };
138 const double emcPath( int parID ) const { return myEmcPath[parID]; };
139
140 // Get track extrapolation data @ MUC.
141 // const Hep3Vector GetMucPosition() const;
142 // const Hep3Vector GetMucMomentum() const;
143 // const string GetMucVolumeName() const;
144 // const int GetMucVolumeNumber() const;
145 // const double GetMucPosSigmaAlongZ() const;
146 // const double GetMucPosSigmaAlongT() const;
147 // const double GetMucPosSigmaAlongX() const;
148 // const double GetMucPosSigmaAlongY() const;
149 // const HepSymMatrix GetMucErrorMatrix() const;
150
151 const Hep3Vector mucPosition() const { return myMucPosition[myParticleType]; };
152 const Hep3Vector mucPosition( int parID ) const { return myMucPosition[parID]; };
153 const Hep3Vector mucMomentum() const { return myMucMomentum[myParticleType]; };
154 const Hep3Vector mucMomentum( int parID ) const { return myMucMomentum[parID]; };
155 const string mucVolumeName() const { return myMucVolumeName[myParticleType]; };
156 const string mucVolumeName( int parID ) const { return myMucVolumeName[parID]; };
157 const int mucVolumeNumber() const { return myMucVolumeNumber[myParticleType]; };
158 const int mucVolumeNumber( int parID ) const { return myMucVolumeNumber[parID]; };
159 const double mucPosSigmaAlongZ() const { return myMucPosSigmaAlongZ[myParticleType]; };
160 const double mucPosSigmaAlongZ( int parID ) const { return myMucPosSigmaAlongZ[parID]; };
161 const double mucPosSigmaAlongT() const { return myMucPosSigmaAlongT[myParticleType]; };
162 const double mucPosSigmaAlongT( int parID ) const { return myMucPosSigmaAlongT[parID]; };
163 const double mucPosSigmaAlongX() const { return myMucPosSigmaAlongX[myParticleType]; };
164 const double mucPosSigmaAlongX( int parID ) const { return myMucPosSigmaAlongX[parID]; };
165 const double mucPosSigmaAlongY() const { return myMucPosSigmaAlongY[myParticleType]; };
166 const double mucPosSigmaAlongY( int parID ) const { return myMucPosSigmaAlongY[parID]; };
167 const HepSymMatrix mucErrorMatrix() const { return myMucErrorMatrix[myParticleType]; };
168 const HepSymMatrix mucErrorMatrix( int parID ) const { return myMucErrorMatrix[parID]; };
169
170 //**** added by LI Chunhua
171 const double MucKalchi2() const { return myMucKalchi2[1]; };
172 const double MucKalchi2( int parID ) const { return myMucKalchi2[1]; }
173 const int MucKaldof() const { return myMucKaldof[1]; };
174 const int MucKaldof( int parID ) const { return myMucKaldof[1]; };
175 const double MucKaldepth() const { return myMucKaldepth[1]; };
176 const double MucKaldepth( int parID ) const { return myMucKaldepth[1]; };
177 const int MucKalbrLastLayer() const { return myMucKalbrLastLayer[1]; };
178 const int MucKalbrLastLayer( int parID ) const { return myMucKalbrLastLayer[1]; };
179 const int MucKalecLastLayer() const { return myMucKalecLastLayer[1]; };
180 const int MucKalecLastLayer( int parID ) const { return myMucKalecLastLayer[1]; };
181 const int MucKalnumHits() const { return myMucKalnumHits[1]; };
182 const int MucKalnumHits( int parID ) const { return myMucKalnumHits[1]; };
183 //***********************************************************
184
185 // Get ExtMucHitCol
186 // const ExtMucHitVec GetExtMucHitVec() const {return myExtMucHitVec;};
187 // const ExtMucHitVec extMucHitVec() const {return myExtMucHitVec;};
188
189 // set functions
190 void SetTrackId( int trackId ) { m_trackId = trackId; }
191 void SetParType( int aParType = 2 ) {
192 if ( aParType >= 0 && aParType <= 4 ) myParticleType = aParType;
193 else
194 {
195 cout << "DstExtTrack::warning: Invalid particle number: " << aParType << endl;
196 myParticleType = 2;
197 }
198 }
199
200 void SetTof1Data( Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName,
201 int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix,
202 double aZSigma = 0., double aTSigma = 0., double aXSigma = 0.,
203 double aYSigma = 0. );
204
205 void SetTof2Data( Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName,
206 int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix,
207 double aZSigma = 0., double aTSigma = 0., double aXSigma = 0.,
208 double aYSigma = 0. );
209
210 void SetEmcData( Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName,
211 int aVolumeNumber, double aThetaSigma, double aPhiSigma,
212 HepSymMatrix aErrorMatrix );
213
214 void SetEmcPath( double path ) { myEmcPath[myParticleType] = path; };
215
216 void SetMucData( Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName,
217 int aVolumeNumber, HepSymMatrix aErrorMatrix, double aZSigma = 0.,
218 double aTSigma = 0., double aXSigma = 0., double aYSigma = 0. );
219
220 //**** added by LI Chunhua
221 void SetMucKalData( double chi2, int dof, double depth, int brLastLay, int ecLastLay,
222 int nhits );
223
224 // void AddExtMucHit(ExtMucHit aExtMucHit) {myExtMucHitVec.push_back(aExtMucHit);}
225
226protected:
227 int myParticleType; // default particle type
228
229private:
230 int m_trackId; // Track ID wensp Add 2005-10-19
231 // Tof TrkExt data.
232 //
233 // Tof layer1:
234 vector<Hep3Vector> myTof1Position; // Position when the particle enters the TOF layer1.
235 vector<Hep3Vector> myTof1Momentum; // Momentum when the particle enters the TOF layer1.
236 vector<string> myTof1VolumeName; // Scintillator volume name
237 int myTof1VolumeNumber[5]; // Scintillator volume number
238 double myTof1[5]; // Time of flight
239 double myTof1Path[5]; // Path of flight
240 double myTof1PosSigmaAlongZ[5]; // Sigma Z
241 double myTof1PosSigmaAlongT[5]; // Sigma along Z x R
242 double myTof1PosSigmaAlongX[5]; // Sigma X
243 double myTof1PosSigmaAlongY[5]; // Sigma Y
244 vector<HepSymMatrix> myTof1ErrorMatrix; // Error matrix 6x6 (x,p)
245
246 // Tof layer2:
247 vector<Hep3Vector> myTof2Position; // Position when the particle enters the TOF layer2.
248 vector<Hep3Vector> myTof2Momentum; // Momentum when the particle enters the TOF layer2.
249 vector<string> myTof2VolumeName; // Scintillator volume name
250 int myTof2VolumeNumber[5]; // Scintillator volume number
251 double myTof2[5]; // Time of flight
252 double myTof2Path[5]; // Path of flight
253 double myTof2PosSigmaAlongZ[5]; // Sigma Z
254 double myTof2PosSigmaAlongT[5]; // Sigma along Z x R
255 double myTof2PosSigmaAlongX[5]; // Sigma X
256 double myTof2PosSigmaAlongY[5]; // Sigma Y
257 vector<HepSymMatrix> myTof2ErrorMatrix; // Error matrix 6x6 (x,p)
258
259 // Emc TrkExt data
260 vector<Hep3Vector> myEmcPosition;
261 vector<Hep3Vector> myEmcMomentum;
262 vector<string> myEmcVolumeName;
263 int myEmcVolumeNumber[5];
264 double myEmcPosSigmaAlongTheta[5];
265 double myEmcPosSigmaAlongPhi[5];
266 vector<HepSymMatrix> myEmcErrorMatrix;
267 double myEmcPath[5];
268
269 // Muc TrkExt data
270 vector<Hep3Vector> myMucPosition;
271 vector<Hep3Vector> myMucMomentum;
272 vector<string> myMucVolumeName;
273 int myMucVolumeNumber[5];
274 double myMucPosSigmaAlongZ[5];
275 double myMucPosSigmaAlongT[5];
276 double myMucPosSigmaAlongX[5];
277 double myMucPosSigmaAlongY[5];
278 vector<HepSymMatrix> myMucErrorMatrix;
279
280 //**** added by LI Chunhua
281 double myMucKalchi2[5];
282 int myMucKaldof[5];
283 double myMucKaldepth[5];
284 int myMucKalbrLastLayer[5];
285 int myMucKalecLastLayer[5];
286 int myMucKalnumHits[5];
287 //**********************
288
289 // MUC Hits collection
290 // ExtMucHitVec myExtMucHitVec;
291};
292
293typedef ObjectVector<DstExtTrack> DstExtTrackCol;
294
295#endif
const CLID & CLID_DstExtTrack
ObjectVector< DstExtTrack > DstExtTrackCol
const CLID & CLID_DstExtTrack
const double MucKaldepth(int parID) const
const HepSymMatrix mucErrorMatrix(int parID) const
const string tof1VolumeName(int parID) const
void SetTof1Data(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
const Hep3Vector tof1Position(int parID) const
const double tof2Path(int parID) const
const Hep3Vector tof1Momentum(int parID) const
const double MucKalchi2(int parID) const
const HepSymMatrix mucErrorMatrix() const
const double mucPosSigmaAlongT(int parID) const
const int MucKalnumHits(int parID) const
void SetEmcData(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aThetaSigma, double aPhiSigma, HepSymMatrix aErrorMatrix)
const double tof1PosSigmaAlongX(int parID) const
const Hep3Vector tof2Position(int parID) const
const double tof2PosSigmaAlongY(int parID) const
const HepSymMatrix tof1ErrorMatrix() const
const Hep3Vector mucMomentum(int parID) const
const Hep3Vector mucPosition(int parID) const
const double tof1Path(int parID) const
const Hep3Vector tof2Momentum(int parID) const
const double tof2PosSigmaAlongX(int parID) const
const double mucPosSigmaAlongZ(int parID) const
const int mucVolumeNumber(int parID) const
const double mucPosSigmaAlongY(int parID) const
const Hep3Vector emcMomentum(int parID) const
const double tof2(int parID) const
const double tof1PosSigmaAlongT(int parID) const
const double emcPosSigmaAlongTheta(int parID) const
const HepSymMatrix emcErrorMatrix() const
const double tof1PosSigmaAlongZ(int parID) const
void SetTof2Data(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
const double tof2PosSigmaAlongT(int parID) const
const int emcVolumeNumber(int parID) const
const double mucPosSigmaAlongX(int parID) const
const double tof2PosSigmaAlongZ(int parID) const
const double tof1PosSigmaAlongY(int parID) const
const HepSymMatrix tof1ErrorMatrix(int parID) const
const string mucVolumeName(int parID) const
const double emcPosSigmaAlongPhi(int parID) const
void SetMucData(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
const HepSymMatrix tof2ErrorMatrix(int parID) const
const int tof1VolumeNumber(int parID) const
const HepSymMatrix tof2ErrorMatrix() const
const int MucKalecLastLayer(int parID) const
const int MucKalbrLastLayer(int parID) const
const int tof2VolumeNumber(int parID) const
const HepSymMatrix emcErrorMatrix(int parID) const
void SetMucKalData(double chi2, int dof, double depth, int brLastLay, int ecLastLay, int nhits)
const Hep3Vector emcPosition(int parID) const
const double tof1(int parID) const
const string emcVolumeName(int parID) const
const string tof2VolumeName(int parID) const
const double emcPath(int parID) const