MarlinTrkProcessors  2.4.1
FullLDCTracking_MarlinTrk.h
1 #ifndef FULLLDCTRACKING_H
2 #define FULLLDCTRACKING_H 1
3 
4 #include "marlin/Processor.h"
5 #include <marlin/Global.h>
6 #include "lcio.h"
7 #include <string>
8 #include "ClusterExtended.h"
9 #include "TrackExtended.h"
10 #include "TrackerHitExtended.h"
11 #include "TrackHitPair.h"
12 #include "HelixClass.h"
13 #include "ClusterShapes.h"
14 #include "GroupTracks.h"
15 //#include "../../BrahmsTracking/include/MarlinTrackFit.h"
16 #include <map>
17 #include <set>
18 
19 #include "MarlinTrk/IMarlinTrack.h"
20 
21 #include <UTIL/BitField64.h>
22 #include <UTIL/ILDConf.h>
23 
24 using namespace lcio ;
25 using namespace marlin ;
26 
27 //class gear::GearMgr ;
28 
29 namespace MarlinTrk {
30  class HelixFit;
31  class IMarlinTrkSystem ;
32 }
33 
34 
254 class FullLDCTracking_MarlinTrk : public Processor {
255 
256 public:
257 
258  virtual Processor* newProcessor() { return new FullLDCTracking_MarlinTrk ; }
260  virtual void init() ;
261  virtual void processRunHeader( LCRunHeader* run ) ;
262  virtual void processEvent( LCEvent * evt ) ;
263  virtual void check( LCEvent * evt ) ;
264  virtual void end() ;
265 
266 protected:
267 
268  void prepareVectors( LCEvent * evt );
269  void CleanUp();
270  void MergeTPCandSiTracks();
271  void MergeTPCandSiTracksII();
272 
273  TrackExtended * CombineTracks(TrackExtended * tpcTrk, TrackExtended * siTrk, float maxAllowedOutliers ,bool testCombinationOnly );
274 
275 // TrackExtended * TrialCombineTracks(TrackExtended * tpcTrk, TrackExtended * siTrk);
276 
277  void Sorting(TrackExtendedVec & trackVec);
278  void SelectCombinedTracks();
279  void AddNotCombinedTracks();
280  void CheckTracks();
281  void AddNotAssignedHits();
282  void RemoveSplitTracks();
283  void AddTrackColToEvt(LCEvent * evt, TrackExtendedVec & trkVec,
284  std::string TrkColName);
285  float CompareTrk(TrackExtended * first, TrackExtended * second,
286  float d0Cut, float z0Cut, int iopt);
287 
288  float CompareTrkII(TrackExtended * first, TrackExtended * second,
289  float d0Cut, float z0Cut, int iopt, float &Angle);
290  float CompareTrkIII(TrackExtended * first, TrackExtended * second,
291  float d0Cut, float z0Cut, int iopt, float &Angle);
292 
293  void SortingTrackHitPairs(TrackHitPairVec & trackHitPairVec);
294 
295  void AssignSiHitsToTracks(TrackerHitExtendedVec hitVec,
296  float dcut);
297 
298  void AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec,
299  float dcut);
300 
301  void AssignOuterHitsToTracks(TrackerHitExtendedVec hitVec, float dcut, int refit);
302 
303  void CreateExtrapolations();
304 
305  void CleanUpExtrapolations();
306 
307  HelixClass * GetExtrapolationHelix(TrackExtended * track);
308 
309  void PrintOutMerging(TrackExtended * firstTrackExt, TrackExtended * secondTrackExt,
310  int iopt);
311 
312  void GeneralSorting(int * index, float * val, int direct, int nVal);
313 
314  int SegmentRadialOverlap(TrackExtended* pTracki, TrackExtended* pTrackj);
315  bool VetoMerge(TrackExtended* firstTrackExt, TrackExtended* secondTrackExt);
316 
317  int _nRun ;
318  int _nEvt ;
319 
320  MarlinTrk::HelixFit* _fastfitter;
321 
324  MarlinTrk::IMarlinTrkSystem* _trksystem ;
325  std::string _trkSystemName ;
326 
327  bool _MSOn, _ElossOn, _SmoothOn ;
328 
329  std::string _TPCTrackCollection;
330  std::string _SiTrackCollection;
331  std::string _TPCTrackMCPCollName;
332  std::string _SiTrackMCPCollName;
333 
334  std::string _VTXTrackerHitCollection;
335  std::string _SITTrackerHitCollection;
336  std::string _SETTrackerHitCollection;
337  std::string _FTDPixelHitCollection;
338  std::string _FTDSpacePointCollection;
339  std::string _TPCTrackerHitCollection;
340  std::string _ETDTrackerHitCollection;
341 
342  std::string _LDCTrackCollection;
343 
344 
345  TrackExtendedVec _allSiTracks;
346  TrackExtendedVec _allTPCTracks;
347  TrackExtendedVec _allCombinedTracks;
348  TrackExtendedVec _allNonCombinedTPCTracks;
349  TrackExtendedVec _allNonCombinedSiTracks;
350  TrackExtendedVec _trkImplVec;
351  TrackerHitExtendedVec _allTPCHits;
352  TrackerHitExtendedVec _allVTXHits;
353  TrackerHitExtendedVec _allFTDHits;
354  TrackerHitExtendedVec _allSITHits;
355  TrackerHitExtendedVec _allSETHits;
356  TrackerHitExtendedVec _allETDHits;
357 
358  float PI, PIOVER2, TWOPI;
359 
360  float _bField;
361  float _chi2PrefitCut;
362  float _chi2FitCut;
363 
364  int _debug;
365 
366  float _dPCutForMerging;
367  float _d0CutForMerging;
368  float _z0CutForMerging;
369  float _dOmegaForMerging;
370  float _angleForMerging;
371 
372 
373  int _forceMerging;
374  float _dPCutForForcedMerging;
375  float _d0CutForForcedMerging;
376  float _z0CutForForcedMerging;
377  float _dOmegaForForcedMerging;
378  float _angleForForcedMerging;
379 
380 
381  int _mergeTPCSegments;
382  float _dPCutToMergeTPC;
383  float _PtCutToMergeTPC;
384  float _d0CutToMergeTPC;
385  float _z0CutToMergeTPC;
386 
387  float _cosThetaCutHighPtMerge;
388  float _cosThetaCutSoftHighPtMerge;
389  float _momDiffCutHighPtMerge;
390  float _momDiffCutSoftHighPtMerge;
391  float _hitDistanceCutHighPtMerge;
392  float _maxHitDistanceCutHighPtMerge;
393  float _maxFractionOfOutliersCutHighPtMerge;
394 
395  float _vetoMergeMomentumCut;
396 
397  float _initialTrackError_d0;
398  float _initialTrackError_phi0;
399  float _initialTrackError_omega;
400  float _initialTrackError_z0;
401  float _initialTrackError_tanL;
402 
403  double _maxChi2PerHit;
404  double _minChi2ProbForSiliconTracks;
405  float _maxAllowedPercentageOfOutliersForTrackCombination;
406  int _maxAllowedSiHitRejectionsForTrackCombination;
407 
408  bool _runMarlinTrkDiagnostics;
409  std::string _MarlinTrkDiagnosticsName;
410 
411  int _nHitsExtrapolation;
412 
413  int _cutOnTPCHits;
414  int _cutOnSiHits;
415 
416 
417  int _assignVTXHits,_assignFTDHits,_assignSITHits,_assignTPCHits;
418 
419  int _assignSETHits, _assignETDHits;
420 
421  float _distCutForVTXHits,_distCutForFTDHits,_distCutForSITHits,_distCutForTPCHits;
422 
423  float _distCutForSETHits, _distCutForETDHits;
424 
425 
426  float _d0TrkCut,_z0TrkCut;
427 
428  int _forbidOverlapInZTPC,_forbidOverlapInZComb;
429 
430  float _energyLossErrorTPC;
431 
432  LCEvent * _evt;
433 
434  std::map<TrackExtended*,HelixClass*> _trackExtrapolatedHelix;
435  std::set<TrackExtended*> _candidateCombinedTracks;
436 
437  UTIL::BitField64* _encoder;
438  int getDetectorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0()); return (*_encoder)[lcio::ILDCellID0::subdet]; }
439  int getSideID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0()); return (*_encoder)[lcio::ILDCellID0::side]; };
440  int getLayerID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0()); return (*_encoder)[lcio::ILDCellID0::layer]; };
441  int getModuleID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0()); return (*_encoder)[lcio::ILDCellID0::module]; };
442  int getSensorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0()); return (*_encoder)[lcio::ILDCellID0::sensor]; };
443 
444 
445  void setupGearGeom( const gear::GearMgr* gearMgr ) ;
446 
447  double _tpc_inner_r;
448  double _tpc_outer_r;
449  double _tpc_pad_height;
450  int _tpc_nrows;
451 
452 // struct VXD_Layer {
453 // int nLadders;
454 // double phi0;
455 // double dphi;
456 // double senRMin;
457 // double supRMin;
458 // double length;
459 // double width;
460 // double offset;
461 // double senThickness;
462 // double supThickness;
463 // };
464 // std::vector<VXD_Layer> _VXDgeo;
465 
466  unsigned int _nLayersVTX;
467 
468 // struct SIT_Layer {
469 // int nLadders;
470 // double phi0;
471 // double dphi;
472 // double senRMin;
473 // double supRMin;
474 // double length;
475 // double width;
476 // double offset;
477 // double senThickness;
478 // double supThickness;
479 // };
480 // std::vector<SIT_Layer> _SITgeo;
481 
482  unsigned int _nLayersSIT;
483 
484  unsigned int _nLayersSET;
485 
486 
487 // struct FTD_Disk {
488 // int nPetals;
489 // double phi0;
490 // double dphi;
491 //
492 // double alpha;
493 // double rInner;
494 // double height;
495 // double innerBaseLength;
496 // double outerBaseLength;
497 // double senThickness;
498 // double supThickness;
499 //
500 // double senZPos_even_petal1;
501 // double senZPos_even_petal2;
502 // double senZPos_even_petal3;
503 // double senZPos_even_petal4;
504 //
505 // double supZPos_even_petal1;
506 // double supZPos_even_petal2;
507 // double supZPos_even_petal3;
508 // double supZPos_even_petal4;
509 //
510 // double senZPos_odd_petal1;
511 // double senZPos_odd_petal2;
512 // double senZPos_odd_petal3;
513 // double senZPos_odd_petal4;
514 //
515 // double supZPos_odd_petal1;
516 // double supZPos_odd_petal2;
517 // double supZPos_odd_petal3;
518 // double supZPos_odd_petal4;
519 //
520 //
521 //
522 // };
523 //
524 // std::vector<FTD_Disk> _FTDgeo;
525  std::vector<float> _zLayerFTD;
526 
527  unsigned int _nLayersFTD;
528  int _nPhiFTD;
529  bool _petalBasedFTDWithOverlaps;
530 
531 } ;
532 
533 #endif
534 
535 
536 
MarlinTrk::IMarlinTrkSystem * _trksystem
pointer to the IMarlinTrkSystem instance
Definition: FullLDCTracking_MarlinTrk.h:324
=== FullLDCTracking_MarlinTrk Processor === Processor performing track finding procedure in the ent...
Definition: FullLDCTracking_MarlinTrk.h:254