4#include "GaudiKernel/Algorithm.h"
5#include "GaudiKernel/NTuple.h"
6#include "GaudiKernel/INTupleSvc.h"
7#include "MdcGeomSvc/IMdcGeomSvc.h"
8#include "MdcGeomSvc/MdcGeoWire.h"
9#include "MdcGeomSvc/MdcGeoLayer.h"
10#include "RawDataProviderSvc/IRawDataProviderSvc.h"
11#include "RawDataProviderSvc/RawDataProviderSvc.h"
12#include "MagneticField/IMagneticFieldSvc.h"
21#include "CLHEP/Alist/AList.h"
22#include "MdcGeom/MdcDetector.h"
23#include "BField/BField.h"
24#include "MdcCalibFunSvc/MdcCalibFunSvc.h"
25#include "MdcUtilitySvc/MdcUtilitySvc.h"
26#include "MdcPrintSvc/MdcPrintSvc.h"
29#include "MdcHoughFinder/HoughHit.h"
30#include "MdcHoughFinder/HoughHitList.h"
31#include "MdcHoughFinder/HoughGlobal.h"
32#include "MdcHoughFinder/HoughMap.h"
33#include "MdcHoughFinder/HoughTrackList.h"
35#include "MdcRecEvent/RecMdcTrack.h"
36#include "MdcRecEvent/RecMdcHit.h"
37#include "HepPDT/ParticleDataTable.hh"
38#include "MdcTrkRecon/MdcTrack.h"
39#include "MdcTrkRecon/MdcTrackParams.h"
40#include "MdcTrkRecon/MdcTrackList.h"
41#include "TrkBase/TrkRecoTrk.h"
42#include "TrkFitter/TrkContextEv.h"
43#include "CgemGeomSvc/CgemGeomSvc.h"
44#include "CgemCalibFunSvc/CgemCalibFunSvc.h"
45#include "TrackUtil/Helix.h"
68 void Leastfit(vector<double>, vector<double>,
double&,
double&);
76 int judgeHit(
MdcTrackList& list , vector<MdcTrack*>& tracklist);
79 void printTrack(vector<MdcTrack*> vec_MdcTrack);
82 std::string m_pdtFile;
83 HepPDT::ParticleDataTable* m_particleTable;
84 std::map< int, const HepVector > g_tkParTruth;
98 std::string m_evtFile;
114 bool m_combineTracking;
115 int m_removeBadTrack;
116 double m_dropTrkDrCut;
117 double m_dropTrkDzCut;
118 double m_dropTrkPtCut;
119 double m_dropTrkChi2Cut;
139 double m_z0Cut_compareHough;
146 vector<double> m_cut_2D;
147 vector<double> m_cut_3D;
174 NTuple::Tuple* ntuple_hit;
175 NTuple::Item<int> m_hit_run;
176 NTuple::Item<int> m_hit_evt;
177 NTuple::Item<int> m_hit_nhit;
178 NTuple::Array<int> m_hit_hitid;
179 NTuple::Array<int> m_hit_layer;
180 NTuple::Array<int> m_hit_wire;
181 NTuple::Array<double> m_hit_x;
182 NTuple::Array<double> m_hit_y;
183 NTuple::Array<double> m_hit_z;
184 NTuple::Array<double> m_hit_driftdist;
185 NTuple::Array<double> m_hit_drifttime;
186 NTuple::Array<int> m_hit_flag;
187 NTuple::Array<double> m_hit_truth_x;
188 NTuple::Array<double> m_hit_truth_y;
189 NTuple::Array<double> m_hit_truth_z;
190 NTuple::Array<double> m_hit_truth_drift;
191 NTuple::Array<int> m_hit_truth_ambig;
193 NTuple::Tuple* ntuple_hot;
194 NTuple::Item<int> m_hot_run;
195 NTuple::Item<int> m_hot_evt;
196 NTuple::Item<int> m_hot_trk;
197 NTuple::Item<int> m_hot_nhot;
198 NTuple::Array<int> m_hot_hitid;
199 NTuple::Array<int> m_hot_layer;
200 NTuple::Array<int> m_hot_wire;
201 NTuple::Array<double> m_hot_x;
202 NTuple::Array<double> m_hot_y;
203 NTuple::Array<double> m_hot_z;
204 NTuple::Array<double> m_hot_x0;
205 NTuple::Array<double> m_hot_y0;
206 NTuple::Array<double> m_hot_z0;
207 NTuple::Array<double> m_hot_s0;
208 NTuple::Array<double> m_hot_x1;
209 NTuple::Array<double> m_hot_y1;
210 NTuple::Array<double> m_hot_z1;
211 NTuple::Array<double> m_hot_s1;
212 NTuple::Array<double> m_hot_drift;
213 NTuple::Array<int> m_hot_flag;
214 NTuple::Array<double> m_hot_deltaD;
215 NTuple::Array<double> m_hot_truth_x;
216 NTuple::Array<double> m_hot_truth_y;
217 NTuple::Array<double> m_hot_truth_z;
218 NTuple::Array<double> m_hot_truth_drift;
219 NTuple::Array<int> m_hot_truth_ambig;
221 NTuple::Tuple* ntuple_trk;
222 NTuple::Item<int> m_trk_run;
223 NTuple::Item<int> m_trk_evt;
224 NTuple::Item<int> m_trk_ntrk;
225 NTuple::Item<int> m_trk_size;
226 NTuple::Array<int> m_trk_trackId;
227 NTuple::Array<int> m_trk_charge;
228 NTuple::Array<double> m_trk_dr;
229 NTuple::Array<double> m_trk_phi0;
230 NTuple::Array<double> m_trk_kappa;
231 NTuple::Array<double> m_trk_dz;
232 NTuple::Array<double> m_trk_tanl;
233 NTuple::Array<double> m_trk_pxy;
234 NTuple::Array<double> m_trk_px;
235 NTuple::Array<double> m_trk_py;
236 NTuple::Array<double> m_trk_pz;
237 NTuple::Array<double> m_trk_p;
238 NTuple::Array<double> m_trk_theta;
239 NTuple::Array<double> m_trk_phi;
240 NTuple::Array<double> m_trk_x;
241 NTuple::Array<double> m_trk_y;
242 NTuple::Array<double> m_trk_z;
243 NTuple::Array<double> m_trk_r;
244 NTuple::Array<double> m_trk_chi2;
245 NTuple::Array<double> m_trk_fiTerm;
246 NTuple::Array<double> m_trk_matchChi2;
247 NTuple::Array<int> m_trk_nhit;
248 NTuple::Array<int> m_trk_ncluster;
249 NTuple::Array<int> m_trk_stat;
250 NTuple::Array<int> m_trk_ndof;
251 NTuple::Array<int> m_trk_nster;
252 NTuple::Array<int> m_trk_nlayer;
253 NTuple::Array<int> m_trk_firstLayer;
254 NTuple::Array<int> m_trk_lastLayer;
255 NTuple::Array<int> m_trk_nCgemXClusters;
256 NTuple::Array<int> m_trk_nCgemVClusters;
257 NTuple::Array<int> m_trk_nhop;
258 NTuple::Array<int> m_trk_nhot;
259 NTuple::Array<double> m_trk_Xc;
260 NTuple::Array<double> m_trk_Yc;
261 NTuple::Array<double> m_trk_R;
263 NTuple::Array<int> m_trk_truth_charge;
264 NTuple::Array<double> m_trk_truth_dr;
265 NTuple::Array<double> m_trk_truth_phi0;
266 NTuple::Array<double> m_trk_truth_kappa;
267 NTuple::Array<double> m_trk_truth_dz;
268 NTuple::Array<double> m_trk_truth_tanl;
269 NTuple::Array<double> m_trk_truth_pxy;
270 NTuple::Array<double> m_trk_truth_px;
271 NTuple::Array<double> m_trk_truth_py;
272 NTuple::Array<double> m_trk_truth_pz;
273 NTuple::Array<double> m_trk_truth_p;
274 NTuple::Array<double> m_trk_truth_theta;
275 NTuple::Array<double> m_trk_truth_phi;
276 NTuple::Array<double> m_trk_truth_x;
277 NTuple::Array<double> m_trk_truth_y;
278 NTuple::Array<double> m_trk_truth_z;
279 NTuple::Array<double> m_trk_truth_r;
280 NTuple::Array<double> m_trk_truth_cosTheta;
281 NTuple::Array<double> m_trk_truth_Xc;
282 NTuple::Array<double> m_trk_truth_Yc;
283 NTuple::Array<double> m_trk_truth_R;
std::vector< MdcDigi * > MdcDigiVec
ObjectVector< RecMdcHit > RecMdcHitCol
ObjectVector< RecMdcTrack > RecMdcTrackCol
bool more_pt(const HoughTrack *tracka, const HoughTrack *trackb)
HepVector bes2barbar(HepVector a)
HepVector barbar2bes(HepVector a)
MdcHoughFinder(const std::string &name, ISvcLocator *pSvcLocator)