25 HoughFinder(
const std::string& name, ISvcLocator* pSvcLocator);
49 int checkHot(vector<HoughTrack>& trackVector);
50 int checkTrack(vector<HoughTrack>& trackVector);
51 void clearTrack(vector<HoughTrack>& trackVector);
61 vector<HoughTrack>::iterator
getHoughTrkIt(vector<HoughTrack>& houghTrkList,
int trkId);
83 std::string m_pdtFile;
91 int m_totEvtProcessed;
103 double m_driftTimeUpLimit;
106 double m_shareHitRate;
113 double m_chi2CutHits;
116 int m_findPeakMethod;
118 int m_removeNOuterHits;
150 RecCgemClusterCol::iterator m_recCgemClusterColBegin;
153 vector<MdcHit*> m_mdcHitCol;
154 vector<HoughHit> m_mcHitCol;
155 vector<HoughHit> m_houghHitList;
156 vector<HoughTrack> m_mcTrackCol;
157 vector<HoughTrack> m_houghTrackList;
159 vector<HoughHit*> m_XHoughHitList;
160 vector<HoughHit*> m_VHoughHitList;
161 vector<HoughHit*> m_VHoughHitListOnSZmap;
162 int m_nVClusterOnSZmap;
164 unordered_set<HoughHit*> m_HoughHitSet;
167 std::string m_evtFile;
173 double m_XGapFractionCutHough;
174 double m_XGapFractionCutFit;
176 TH2D m_roughRhoThetaMap;
177 vector<int> m_triedCellInRoughMap;
178 TH2D m_fineRhoThetaMap;
181 void getWeightedPeak(TH2D& h,
double& x_peak,
double& y_peak,
double& x_weight,
double& y_weight,
int x_ext=2,
int y_ext=1);
182 void getLocalPeaks(TH2D& h,
int minCut=3);
185 int nFineBinTheta(
double rho);
186 int nFineBinRho(
double rho);
187 TGraph* m_cut1_cgem, *m_cut2_cgem;
188 TGraph* m_cut1_ODC1, *m_cut2_ODC1;
189 TGraph* m_cut1_ODC2, *m_cut2_ODC2;
190 void XhitCutWindow(
double rho,
int ilayer,
double charge,
double& cut1,
double &cut2);
200 TH2D m_roughTanlDzMap;
201 TH2D m_fineTanlDzMap;
202 int associateVHits();
205 int nFineBinTanl(
double tanl);
206 int nFineBinDz(
double tanl);
207 void XVhitCutWindow(
double tanl,
int ilayer,
double charge,
double& cut1,
double &cut2);
212 double m_circle_chiCut;
216 int dumpHoughTrack();
217 int dumpHoughEvent();
222 NTuple::Tuple* ntuple_hit;
223 NTuple::Item<int> m_hit_run;
224 NTuple::Item<int> m_hit_event;
225 NTuple::Item<int> m_hit_nhit;
227 NTuple::Array<int> m_hit_hitID;
228 NTuple::Array<int> m_hit_hitType;
229 NTuple::Array<int> m_hit_layer;
230 NTuple::Array<int> m_hit_wire;
231 NTuple::Array<int> m_hit_flag;
232 NTuple::Array<int> m_hit_halfCircle;
233 NTuple::Array<double> m_hit_x;
234 NTuple::Array<double> m_hit_y;
235 NTuple::Array<double> m_hit_z;
236 NTuple::Array<double> m_hit_drift;
238 NTuple::Array<int> m_mcHit_hitID;
239 NTuple::Array<int> m_mcHit_hitType;
240 NTuple::Array<int> m_mcHit_layer;
241 NTuple::Array<int> m_mcHit_wire;
242 NTuple::Array<int> m_mcHit_flag;
243 NTuple::Array<int> m_mcHit_halfCircle;
244 NTuple::Array<double> m_mcHit_x;
245 NTuple::Array<double> m_mcHit_y;
246 NTuple::Array<double> m_mcHit_z;
247 NTuple::Array<double> m_mcHit_drift;
251 NTuple::Tuple* ntuple_track;
252 NTuple::Item<int> m_trk_run;
253 NTuple::Item<int> m_trk_event;
254 NTuple::Item<int> m_trk_nTrack;
255 NTuple::Item<int> m_trk_trackID;
256 NTuple::Item<int> m_trk_charge;
257 NTuple::Item<int> m_trk_flag;
258 NTuple::Item<double> m_trk_angle;
259 NTuple::Item<double> m_trk_rho;
260 NTuple::Item<double> m_trk_dAngle;
261 NTuple::Item<double> m_trk_dRho;
262 NTuple::Item<double> m_trk_dTanl;
263 NTuple::Item<double> m_trk_dDz;
264 NTuple::Item<double> m_trk_Xc;
265 NTuple::Item<double> m_trk_Yc;
266 NTuple::Item<double> m_trk_R;
267 NTuple::Item<double> m_trk_dr;
268 NTuple::Item<double> m_trk_phi0;
269 NTuple::Item<double> m_trk_kappa;
270 NTuple::Item<double> m_trk_dz;
271 NTuple::Item<double> m_trk_tanl;
272 NTuple::Item<double> m_trk_pxy;
273 NTuple::Item<double> m_trk_px;
274 NTuple::Item<double> m_trk_py;
275 NTuple::Item<double> m_trk_pz;
276 NTuple::Item<double> m_trk_p;
277 NTuple::Item<double> m_trk_phi;
278 NTuple::Item<double> m_trk_theta;
279 NTuple::Item<double> m_trk_cosTheta;
280 NTuple::Item<double> m_trk_vx;
281 NTuple::Item<double> m_trk_vy;
282 NTuple::Item<double> m_trk_vz;
283 NTuple::Item<double> m_trk_vr;
284 NTuple::Item<double> m_trk_chi2;
285 NTuple::Item<double> m_trk_fiTerm;
286 NTuple::Item<int> m_trk_nhit;
287 NTuple::Item<int> m_trk_ncluster;
288 NTuple::Item<int> m_trk_stat;
289 NTuple::Item<int> m_trk_ndof;
290 NTuple::Item<int> m_trk_nster;
291 NTuple::Item<int> m_trk_nlayer;
292 NTuple::Item<int> m_trk_firstLayer;
293 NTuple::Item<int> m_trk_lastLayer;
294 NTuple::Item<int> m_trk_nCgemXClusters;
295 NTuple::Item<int> m_trk_nCgemVClusters;
296 NTuple::Item<int> m_trk_nHot;
298 NTuple::Array<int> m_hot_hitID;
299 NTuple::Array<int> m_hot_hitType;
300 NTuple::Array<int> m_hot_layer;
301 NTuple::Array<int> m_hot_wire;
302 NTuple::Array<int> m_hot_flag;
303 NTuple::Array<int> m_hot_halfCircle;
304 NTuple::Array<double> m_hot_x;
305 NTuple::Array<double> m_hot_y;
306 NTuple::Array<double> m_hot_z;
307 NTuple::Array<double> m_hot_drift;
308 NTuple::Array<double> m_hot_residual;
310 NTuple::Array<int> m_mcHot_hitID;
311 NTuple::Array<int> m_mcHot_hitType;
312 NTuple::Array<int> m_mcHot_layer;
313 NTuple::Array<int> m_mcHot_wire;
314 NTuple::Array<int> m_mcHot_flag;
315 NTuple::Array<int> m_mcHot_halfCircle;
316 NTuple::Array<double> m_mcHot_x;
317 NTuple::Array<double> m_mcHot_y;
318 NTuple::Array<double> m_mcHot_z;
319 NTuple::Array<double> m_mcHot_drift;
321 NTuple::Item<int> m_mcTrk_trackID;
322 NTuple::Item<int> m_mcTrk_charge;
323 NTuple::Item<int> m_mcTrk_flag;
324 NTuple::Item<double> m_mcTrk_angle;
325 NTuple::Item<double> m_mcTrk_rho;
326 NTuple::Item<double> m_mcTrk_dAngle;
327 NTuple::Item<double> m_mcTrk_dRho;
328 NTuple::Item<double> m_mcTrk_dTanl;
329 NTuple::Item<double> m_mcTrk_dDz;
330 NTuple::Item<double> m_mcTrk_Xc;
331 NTuple::Item<double> m_mcTrk_Yc;
332 NTuple::Item<double> m_mcTrk_R;
333 NTuple::Item<double> m_mcTrk_dr;
334 NTuple::Item<double> m_mcTrk_phi0;
335 NTuple::Item<double> m_mcTrk_kappa;
336 NTuple::Item<double> m_mcTrk_dz;
337 NTuple::Item<double> m_mcTrk_tanl;
338 NTuple::Item<double> m_mcTrk_pxy;
339 NTuple::Item<double> m_mcTrk_px;
340 NTuple::Item<double> m_mcTrk_py;
341 NTuple::Item<double> m_mcTrk_pz;
342 NTuple::Item<double> m_mcTrk_p;
343 NTuple::Item<double> m_mcTrk_phi;
344 NTuple::Item<double> m_mcTrk_theta;
345 NTuple::Item<double> m_mcTrk_cosTheta;
346 NTuple::Item<double> m_mcTrk_vx;
347 NTuple::Item<double> m_mcTrk_vy;
348 NTuple::Item<double> m_mcTrk_vz;
349 NTuple::Item<double> m_mcTrk_vr;
350 NTuple::Item<double> m_mcTrk_chi2;
351 NTuple::Item<double> m_mcTrk_fiTerm;
352 NTuple::Item<int> m_mcTrk_nhit;
353 NTuple::Item<int> m_mcTrk_ncluster;
354 NTuple::Item<int> m_mcTrk_stat;
355 NTuple::Item<int> m_mcTrk_ndof;
356 NTuple::Item<int> m_mcTrk_nster;
357 NTuple::Item<int> m_mcTrk_nlayer;
358 NTuple::Item<int> m_mcTrk_firstLayer;
359 NTuple::Item<int> m_mcTrk_lastLayer;
360 NTuple::Item<int> m_mcTrk_nCgemXClusters;
361 NTuple::Item<int> m_mcTrk_nCgemVClusters;
362 NTuple::Item<int> m_mcTrk_nHot;
364 NTuple::Array<int> m_mcTrkHot_hitID;
365 NTuple::Array<int> m_mcTrkHot_hitType;
366 NTuple::Array<int> m_mcTrkHot_layer;
367 NTuple::Array<int> m_mcTrkHot_wire;
368 NTuple::Array<int> m_mcTrkHot_flag;
369 NTuple::Array<int> m_mcTrkHot_halfCircle;
370 NTuple::Array<double> m_mcTrkHot_x;
371 NTuple::Array<double> m_mcTrkHot_y;
372 NTuple::Array<double> m_mcTrkHot_z;
373 NTuple::Array<double> m_mcTrkHot_drift;
377 NTuple::Tuple* ntuple_event;
378 NTuple::Item<int> m_evt_run;
379 NTuple::Item<int> m_evt_event;
380 NTuple::Item<int> m_evt_nXCluster;
381 NTuple::Item<int> m_evt_nVCluster;
382 NTuple::Item<int> m_evt_nXVCluster;
383 NTuple::Item<int> m_evt_nCGEMCluster;
384 NTuple::Item<int> m_evt_nAxialHit;
385 NTuple::Item<int> m_evt_nStereoHit;
386 NTuple::Item<int> m_evt_nODCHit;
387 NTuple::Item<int> m_evt_nHit;
388 NTuple::Item<int> m_evt_nTrack;
390 NTuple::Array<int> m_evtTrk_trackID;
391 NTuple::Array<int> m_evtTrk_charge;
392 NTuple::Array<int> m_evtTrk_flag;
393 NTuple::Array<double> m_evtTrk_angle;
394 NTuple::Array<double> m_evtTrk_rho;
395 NTuple::Array<double> m_evtTrk_dAngle;
396 NTuple::Array<double> m_evtTrk_dRho;
397 NTuple::Array<double> m_evtTrk_dTanl;
398 NTuple::Array<double> m_evtTrk_dDz;
399 NTuple::Array<double> m_evtTrk_Xc;
400 NTuple::Array<double> m_evtTrk_Yc;
401 NTuple::Array<double> m_evtTrk_R;
402 NTuple::Array<double> m_evtTrk_dr;
403 NTuple::Array<double> m_evtTrk_phi0;
404 NTuple::Array<double> m_evtTrk_kappa;
405 NTuple::Array<double> m_evtTrk_dz;
406 NTuple::Array<double> m_evtTrk_tanl;
407 NTuple::Array<double> m_evtTrk_pxy;
408 NTuple::Array<double> m_evtTrk_px;
409 NTuple::Array<double> m_evtTrk_py;
410 NTuple::Array<double> m_evtTrk_pz;
411 NTuple::Array<double> m_evtTrk_p;
412 NTuple::Array<double> m_evtTrk_phi;
413 NTuple::Array<double> m_evtTrk_theta;
414 NTuple::Array<double> m_evtTrk_cosTheta;
415 NTuple::Array<double> m_evtTrk_vx;
416 NTuple::Array<double> m_evtTrk_vy;
417 NTuple::Array<double> m_evtTrk_vz;
418 NTuple::Array<double> m_evtTrk_vr;
419 NTuple::Array<double> m_evtTrk_chi2;
420 NTuple::Array<double> m_evtTrk_fiTerm;
421 NTuple::Array<int> m_evtTrk_nhit;
422 NTuple::Array<int> m_evtTrk_ncluster;
423 NTuple::Array<int> m_evtTrk_stat;
424 NTuple::Array<int> m_evtTrk_ndof;
425 NTuple::Array<int> m_evtTrk_nster;
426 NTuple::Array<int> m_evtTrk_nlayer;
427 NTuple::Array<int> m_evtTrk_firstLayer;
428 NTuple::Array<int> m_evtTrk_lastLayer;
429 NTuple::Array<int> m_evtTrk_nCgemXClusters;
430 NTuple::Array<int> m_evtTrk_nCgemVClusters;
432 NTuple::Array<int> m_mcEvtTrk_trackID;
433 NTuple::Array<int> m_mcEvtTrk_charge;
434 NTuple::Array<int> m_mcEvtTrk_flag;
435 NTuple::Array<double> m_mcEvtTrk_angle;
436 NTuple::Array<double> m_mcEvtTrk_rho;
437 NTuple::Array<double> m_mcEvtTrk_dAngle;
438 NTuple::Array<double> m_mcEvtTrk_dRho;
439 NTuple::Array<double> m_mcEvtTrk_dTanl;
440 NTuple::Array<double> m_mcEvtTrk_dDz;
441 NTuple::Array<double> m_mcEvtTrk_Xc;
442 NTuple::Array<double> m_mcEvtTrk_Yc;
443 NTuple::Array<double> m_mcEvtTrk_R;
444 NTuple::Array<double> m_mcEvtTrk_dr;
445 NTuple::Array<double> m_mcEvtTrk_phi0;
446 NTuple::Array<double> m_mcEvtTrk_kappa;
447 NTuple::Array<double> m_mcEvtTrk_dz;
448 NTuple::Array<double> m_mcEvtTrk_tanl;
449 NTuple::Array<double> m_mcEvtTrk_pxy;
450 NTuple::Array<double> m_mcEvtTrk_px;
451 NTuple::Array<double> m_mcEvtTrk_py;
452 NTuple::Array<double> m_mcEvtTrk_pz;
453 NTuple::Array<double> m_mcEvtTrk_p;
454 NTuple::Array<double> m_mcEvtTrk_phi;
455 NTuple::Array<double> m_mcEvtTrk_theta;
456 NTuple::Array<double> m_mcEvtTrk_cosTheta;
457 NTuple::Array<double> m_mcEvtTrk_vx;
458 NTuple::Array<double> m_mcEvtTrk_vy;
459 NTuple::Array<double> m_mcEvtTrk_vz;
460 NTuple::Array<double> m_mcEvtTrk_vr;
461 NTuple::Array<double> m_mcEvtTrk_chi2;
462 NTuple::Array<double> m_mcEvtTrk_fiTerm;
463 NTuple::Array<int> m_mcEvtTrk_nhit;
464 NTuple::Array<int> m_mcEvtTrk_ncluster;
465 NTuple::Array<int> m_mcEvtTrk_stat;
466 NTuple::Array<int> m_mcEvtTrk_ndof;
467 NTuple::Array<int> m_mcEvtTrk_nster;
468 NTuple::Array<int> m_mcEvtTrk_nlayer;
469 NTuple::Array<int> m_mcEvtTrk_firstLayer;
470 NTuple::Array<int> m_mcEvtTrk_lastLayer;
471 NTuple::Array<int> m_mcEvtTrk_nCgemXClusters;
472 NTuple::Array<int> m_mcEvtTrk_nCgemVClusters;