MarlinTrkProcessors
2.4.1
|
=== FPCCDFullLDCTracking_MarlinTrk Processor ===
More...
#include <FPCCDFullLDCTracking_MarlinTrk.h>
Public Member Functions | |
virtual Processor * | newProcessor () |
FPCCDFullLDCTracking_MarlinTrk () | |
virtual void | init () |
virtual void | processRunHeader (LCRunHeader *run) |
virtual void | processEvent (LCEvent *evt) |
virtual void | check (LCEvent *evt) |
virtual void | end () |
Protected Types | |
enum | MCPContributions { contVXD, contFTD, contSIT, contVXDFTD, contVXDSIT, contFTDSIT, contVXDFTDSIT, contBG, contSize } |
Protected Member Functions | |
void | prepareVectors (LCEvent *evt) |
void | CleanUp () |
void | MergeTPCandSiTracks () |
void | MergeTPCandSiTracksII () |
TrackExtended * | CombineTracks (TrackExtended *tpcTrk, TrackExtended *siTrk, float maxAllowedOutliers, bool testCombinationOnly) |
void | Sorting (TrackExtendedVec &trackVec) |
void | SelectCombinedTracks () |
void | AddNotCombinedTracks () |
void | CheckTracks () |
void | AddNotAssignedHits () |
void | RemoveSplitTracks () |
void | AddTrackColToEvt (LCEvent *evt, TrackExtendedVec &trkVec, std::string TrkColName) |
float | CompareTrk (TrackExtended *first, TrackExtended *second, float d0Cut, float z0Cut, int iopt) |
float | CompareTrkII (TrackExtended *first, TrackExtended *second, float d0Cut, float z0Cut, int iopt, float &Angle) |
float | CompareTrkIII (TrackExtended *first, TrackExtended *second, float d0Cut, float z0Cut, int iopt, float &Angle) |
void | SortingTrackHitPairs (TrackHitPairVec &trackHitPairVec) |
void | AssignSiHitsToTracks (TrackerHitExtendedVec hitVec, float dcut) |
void | AssignTPCHitsToTracks (TrackerHitExtendedVec hitVec, float dcut) |
void | AssignOuterHitsToTracks (TrackerHitExtendedVec hitVec, float dcut, int refit) |
void | CreateExtrapolations () |
void | CleanUpExtrapolations () |
HelixClass * | GetExtrapolationHelix (TrackExtended *track) |
void | PrintOutMerging (TrackExtended *firstTrackExt, TrackExtended *secondTrackExt, int iopt) |
void | GeneralSorting (int *index, float *val, int direct, int nVal) |
int | SegmentRadialOverlap (TrackExtended *pTracki, TrackExtended *pTrackj) |
bool | VetoMerge (TrackExtended *firstTrackExt, TrackExtended *secondTrackExt) |
int | getDetectorID (TrackerHit *hit) |
int | getSideID (TrackerHit *hit) |
int | getLayerID (TrackerHit *hit) |
int | getModuleID (TrackerHit *hit) |
int | getSensorID (TrackerHit *hit) |
int | getDetectorID (SimTrackerHit *hit) |
int | getSideID (SimTrackerHit *hit) |
int | getLayerID (SimTrackerHit *hit) |
int | getModuleID (SimTrackerHit *hit) |
int | getSensorID (SimTrackerHit *hit) |
void | setupGearGeom (const gear::GearMgr *gearMgr) |
IntVec | getNHitsInSubDet (SimTrackerHitVec simvec) |
LCCollection * | GetCollection (LCEvent *evt, std::string colName) |
helper function to get collection using try catch block | |
LCRelationNavigator * | GetRelations (LCEvent *evt, std::string RelName) |
helper function to get relations using try catch block | |
MCPMap | LoadMCPMap (int mode) |
Protected Attributes | |
int | _nRun |
int | _nEvt |
MarlinTrk::HelixFit * | _fastfitter |
MarlinTrk::IMarlinTrkSystem * | _trksystem |
pointer to the IMarlinTrkSystem instance | |
bool | _MSOn |
bool | _ElossOn |
bool | _SmoothOn |
std::string | _TPCTrackCollection |
std::string | _SiTrackCollection |
std::string | _TPCTrackMCPCollName |
std::string | _SiTrackMCPCollName |
std::string | _VTXTrackerHitCollection |
std::string | _SITTrackerHitCollection |
std::string | _SETTrackerHitCollection |
std::string | _FTDPixelHitCollection |
std::string | _FTDSpacePointCollection |
std::string | _TPCTrackerHitCollection |
std::string | _ETDTrackerHitCollection |
std::string | _LDCTrackCollection |
TrackExtendedVec | _allSiTracks |
TrackExtendedVec | _allTPCTracks |
TrackExtendedVec | _allCombinedTracks |
TrackExtendedVec | _allNonCombinedTPCTracks |
TrackExtendedVec | _allNonCombinedSiTracks |
TrackExtendedVec | _trkImplVec |
TrackerHitExtendedVec | _allTPCHits |
TrackerHitExtendedVec | _allVTXHits |
TrackerHitExtendedVec | _allFTDHits |
TrackerHitExtendedVec | _allSITHits |
TrackerHitExtendedVec | _allSETHits |
TrackerHitExtendedVec | _allETDHits |
float | PI |
float | PIOVER2 |
float | TWOPI |
float | _bField |
float | _chi2PrefitCut |
float | _chi2FitCut |
int | _debug |
float | _dPCutForMerging |
float | _d0CutForMerging |
float | _z0CutForMerging |
float | _dOmegaForMerging |
float | _angleForMerging |
int | _forceMerging |
float | _dPCutForForcedMerging |
float | _d0CutForForcedMerging |
float | _z0CutForForcedMerging |
float | _dOmegaForForcedMerging |
float | _angleForForcedMerging |
int | _mergeTPCSegments |
float | _dPCutToMergeTPC |
float | _PtCutToMergeTPC |
float | _d0CutToMergeTPC |
float | _z0CutToMergeTPC |
float | _cosThetaCutHighPtMerge |
float | _cosThetaCutSoftHighPtMerge |
float | _momDiffCutHighPtMerge |
float | _momDiffCutSoftHighPtMerge |
float | _hitDistanceCutHighPtMerge |
float | _maxHitDistanceCutHighPtMerge |
float | _maxFractionOfOutliersCutHighPtMerge |
float | _vetoMergeMomentumCut |
float | _initialTrackError_d0 |
float | _initialTrackError_phi0 |
float | _initialTrackError_omega |
float | _initialTrackError_z0 |
float | _initialTrackError_tanL |
double | _maxChi2PerHit |
double | _minChi2ProbForSiliconTracks |
double | _maxChi2ForSiliconTracks |
bool | _useMaxChi2ReqForSiTrk |
float | _maxAllowedPercentageOfOutliersForTrackCombination |
int | _maxAllowedSiHitRejectionsForTrackCombination |
bool | _runMarlinTrkDiagnostics |
std::string | _MarlinTrkDiagnosticsName |
int | _nHitsExtrapolation |
int | _cutOnTPCHits |
int | _cutOnSiHits |
int | _assignVTXHits |
int | _assignFTDHits |
int | _assignSITHits |
int | _assignTPCHits |
int | _assignSETHits |
int | _assignETDHits |
float | _distCutForVTXHits |
float | _distCutForFTDHits |
float | _distCutForSITHits |
float | _distCutForTPCHits |
float | _distCutForSETHits |
float | _distCutForETDHits |
float | _d0TrkCut |
float | _z0TrkCut |
int | _forbidOverlapInZTPC |
int | _forbidOverlapInZComb |
LCEvent * | _evt |
std::map< TrackExtended *, HelixClass * > | _trackExtrapolatedHelix |
std::set< TrackExtended * > | _candidateCombinedTracks |
UTIL::BitField64 * | _encoder |
double | _tpc_inner_r |
double | _tpc_outer_r |
double | _tpc_pad_height |
int | _tpc_nrows |
unsigned int | _nLayersVTX |
unsigned int | _nLayersSIT |
unsigned int | _nLayersSET |
std::vector< float > | _zLayerFTD |
unsigned int | _nLayersFTD |
int | _nPhiFTD |
bool | _petalBasedFTDWithOverlaps |
GetPurityUtil * | _purityUtil |
moriUTIL * | _moriUtil |
MCPMap | _mcpMapSi |
MCPMap | _mcpMapFull |
std::vector < LCRelationNavigator * > | _naviVecSi |
std::vector < LCRelationNavigator * > | _naviVecFull |
std::string | _colNameVXDTrackerHitRelations |
std::string | _colNameSITSpacePointRelations |
std::string | _colNameFTDSpacePointRelations |
std::string | _colNameFTDPixelTrackerHitRelations |
std::string | _colNameTPCTrackerHitRelations |
std::string | _colNameSETSpacePointRelations |
LCRelationNavigator * | _navVXD |
LCRelationNavigator * | _navSIT |
LCRelationNavigator * | _navFTDsp |
LCRelationNavigator * | _navFTDpix |
LCRelationNavigator * | _navTPC |
LCRelationNavigator * | _navSET |
std::string | _colNameVXDSimHit |
std::string | _colNameSITSimHit |
std::string | _colNameFTDspSimHit |
std::string | _colNameFTDpixSimHit |
std::string | _colNameTPCSimHit |
std::string | _colNameSETSimHit |
LCCollection * | _simVXD |
LCCollection * | _simSIT |
LCCollection * | _simFTDsp |
LCCollection * | _simFTDpix |
LCCollection * | _simTPC |
LCCollection * | _simSET |
bool | _mydebug |
bool | _mydebugPrintMCP |
bool | _FinalTrackCut_strategyA |
std::map< MCParticle *, SimTrackerHitVec > | _mcpVXD |
std::map< MCParticle *, SimTrackerHitVec > | _mcpVXDFTD |
std::map< MCParticle *, SimTrackerHitVec > | _mcpVXDSIT |
std::map< MCParticle *, SimTrackerHitVec > | _mcpVXDFTDSIT |
std::map< MCParticle *, SimTrackerHitVec > | _mcpFTD |
std::map< MCParticle *, SimTrackerHitVec > | _mcpFTDSIT |
std::map< MCParticle *, SimTrackerHitVec > | _mcpSIT |
=== FPCCDFullLDCTracking_MarlinTrk Processor ===
This processor is based on FullLDCTracking_MarlinTrk Processor (author: Steve Apline).
Please use this processor with FPCCDSiliconTracking_MarlinTrk, then tracking performance is improved.
As I said in FPCCDSiliconTracking_MarlinTrk.h, users can use CMOS VXD Simulator with these tracking code in spite of the name FPCCD~.
There are only two differences between FPCCDFullLDCTracking_MarlinTrk and FullLDCTracking_MarlinTrk.
The one is the requirement of registering silicon tracks in this processor.
If useMaxChi2RequirementForSiTrk : false, then the requirement requires
a threshold of probability of track (old requirement).
If true, it does chi2/ndf (new requirement).
The reason that I added new one is that good reconstructed low Pt tracks
tend to have relatively higher probability than high Pt tracks.
For saving those tracks, it is more effective to use the threshold of chi2/ndf.
The other is the strategy for reducing pair-BG tracks.
If FinalTrackCut_strategyA is true, then at last stage of this processor,
tracks seemed to be pair-BG tracks are discarded by requiring
SIT htis >= 1 || TPC hits >= 1 || abs(costheta) > 0.9
About this track requirement, please see
https://agenda.linearcollider.org/getFile.py/access?contribId=5&resId=0&materialId=slides&confId=6294
The following sentence is the copy of FullLDCTracking_MarlinTrk.
Processor performing track finding procedure in the entire LDC detector by linking track segments found by the SiliconTracking module in the silicon detectors and by the LEPTracking module in TPC.
Processor requires collection of digitized vertex, sit, ftd, set, etd & tpc tracker hits and also the collections of tracks found in the silicon detectors and in TPC.
Processor produces an LCIO collection of the Tracks. Each track is characterised by five parameters : Omega (signed curvuture), Tan(lambda) where lambda is the dip angle, Phi (azimuthal angle @ point of closest approach), D0 (signed impact parameter), Z0 (displacement along z axis at the point of closest approach to IP). Covariance matrix for these parameters is also provided. Only lower left corner of the covariance matrix is stored. The sequence of the covariance matrix elements assigned to track is the following:
(D0,D0)
(Phi,D0), (Phi,Phi)
(Omega,D0), (Omega,Phi), (Omega,Omega)
(Z0,D0), (Z0,Phi), (Z0,Omega), (Z0,Z0)
(TanL,D0), (TanL,Phi), (TanL,Omega), (TanL,Z0), (TanL,TanL)
The number of hits in the different subdetectors associated with each track can be accessed via method Track::getSubdetectorHitNumbers(). This method returns vector of integers :
number of VTX hits used in the track fit is the 1st element in this vector (Track::getSubdetectorHitNumbers()[0])
number of FTD hits used in the track fit is the 2nd element in this vector (Track::getSubdetectorHitNumbers()[1])
number of SIT hits used in the track fit is the 3d element in this vector (Track::getSubdetectorHitNumbers()[2])
number of TPC hits used in the track fit is the 4th element in this vector (Track::getSubdetectorHitNumbers()[3])
number of SET hits used in the track fit is the 5th element in this vector (Track::getSubdetectorHitNumbers()[4])
number of ETD hits used in the track fit is the 6th element in this vector (Track::getSubdetectorHitNumbers()[5])
total number of VTX hits in track is the 7th element in this vector (Track::getSubdetectorHitNumbers()[6])
total number of FTD hits in track is the 8th element in this vector (Track::getSubdetectorHitNumbers()[7])
total number of SIT hits in track is the 9th element in this vector (Track::getSubdetectorHitNumbers()[8])
total number of TPC hits in track is the 10th element in this vector (Track::getSubdetectorHitNumbers()[9])
total number of SET hits in track is the 11th element in this vector (Track::getSubdetectorHitNumbers()[10])
total number of ETD hits in track is the 12th element in this vector (Track::getSubdetectorHitNumbers()[11])
Output track collection has by default a name "LDCTracks".
VTXHitCollection | name of input VTX TrackerHit collection (default parameter value : "VTXTrackerHits") |
FTDPixelHitCollectionName | name of input FTD Pixel TrackerHit collection (default parameter value : "FTDPixelTrackerHits") |
FTDSpacePointCollectionName | name of input FTD Space Point TrackerHit collection (default parameter value : "FTDSpacePoints") |
SITHitCollection | name of input SIT TrackerHit collection (default parameter value : "SITTrackerHits") |
TPCHitCollection | name of input TPC TrackerHit collection (default parameter value : "TPCTrackerHits") |
SETHitCollection | name of input SET TrackerHit collection (default parameter value : "SETTrackerHits") |
ETDHitCollection | name of input ETD TrackerHit collection (default parameter value : "ETDTrackerHits") |
TPCTracks | collection name of TPC tracks (default parameter value : "TPCTracks") |
TPCTracksMCPRelColl | Name of input TPC track to MC particle relation collection (default parameter value : "TPCTracksMCP") |
SiTracks | collection name of Si tracks (default parameter value : "SiTracks") |
SiTracksMCPRelColl | Name of input Si track to MC particle relation collection (default parameter value : "SiTracksMCP") |
LDCTrackCollection | name of the output LDC track collection (default parameter value : "LDCTracks") |
Chi2FitCut | cut on the Chi2/Ndf of the track fit (default parameter value : 100.0) |
Chi2PrefitCut | cut on the prefit Chi2 of the track candidate, prefit is done with the simple helix hypothesis (default parameter value : 1e+5) |
AngleCutForMerging | cut on opening angle between particle momentum reconstructed with TPC and momentum reconstructed with the Silicon detectors. If the opening angle is smaller that this cut the track segment in Silicon trackers and in TPC are tested for their compatibility (default parameter value : 0.10) |
OmegaCutForMerging | cut on the relative difference in the track Omega parameter reconstructed with TPC and with Si detectors. If the relative difference is smaller than this cut, the track segments in TPC and Si are tested for their compatibility (default parameter value : 0.25) |
D0CutForMerging | Upper cutoff on the difference in D0 [mm] to allow for merging of the Si and TPC segments (default parameter value : 500) |
Z0CutForMerging | Upper cutoff on the difference in Z0 [mm] to allow for merging of the Si and TPC segments (default parameter value : 1000) |
Debug | flag to allow for printout of debug information, if set to 1 debugging printout is activated (default parameter value : 1) |
ForceSiTPCMerging | This flag steers merging of Si and TPC track segments. If ForceMerging=1 Si and TPC track segments are forced to be merged if the opening angle between Si track momentum and TPC track momentum is less than AngleCutForForcedMerging (see below) and difference in tracks parameters Omega is less than OmegaCutForForcedMerging (see below) (default parameter value : 0) |
AngleCutForForcedMerging | cut on opening angle between Si track momentum and TPC track momentum. Used to steer forced merging of Si and TPC track segments. (default parameter value : 0.05) |
OmegaCutForForcedMerging | cut on the difference between Si and TPC tracks parameter Omega. Used to steer forced merging of Si and TPC track segments. Relative errors are compared. (default parameter value : 0.15) |
D0CutForForcedMerging | Upper cutoff on the difference in D0 to allow for forced merging of the Si and TPC segments (default parameter value : 50) |
Z0CutForForcedMerging | Upper cutoff on the difference in Z0 to allow for forced merging of the Si and TPC segments (default parameter value : 200) |
ForceTPCSegmentsMerging | If this flag is set to 1, the code attempts to merge TPC segments from the low pt splitted loopers (default parameter value : 1) |
D0CutToMergeTPCSegments | cut on the difference in the track parameter d0 [mm] to allow for merging TPC segments (default parameter value : 100) |
Z0CutToMergeTPCSegments | cut on the difference in the track parameter z0 [mm] to allow for merging TPC segments (default parameter value : 5000) |
DeltaPCutToMergeTPCSegments | cut on the magnitude [GeV/c] of the vectorial difference of the momentum vectors, associated with TPC segments, for the TPC segment's merging procedure (default parameter value : 0.1) |
PtCutToMergeTPCSegments | lower cutoff on Pt of the TPC segments of the looping track for the merging procedure. If transverse momentum of the segments is less than cutoff the segments are allowed to be merged. (default parameter value : 1.2) |
AssignTPCHits | If this flag is set to 1, the code attempts to assign left-over TPC hits to the accepted track candidates. No track refit is done in case when hit is assigned to the existing track (default parameter value : 1) |
AssignETDHits | If this flag is set to 1, the code attempts to assign ETD hits to the accepted track candidates. No track refit is done in case when hit is assigned to the existing track (default parameter value : 1) |
AssignVTXHits | If this flag is set to 1, the code attempts to assign left-over VTX hits to the accepted track candidates. Track refit is done in case when hit is assigned to the existing track (default parameter value : 1) |
AssignFTDHits | If this flag is set to 1, the code attempts to assign left-over FTD hits to the accepted track candidates. Track refit is done in case when hit is assigned to the existing track (default parameter value : 1) |
AssignSITHits | If this flag is set to 1, the code attempts to assign left-over SIT hits to the accepted track candidates. Track refit is done in case when hit is assigned to the existing track (default parameter value : 1) |
AssignSETHits | If this flag is set to 1, the code attempts to assign SET hits to the accepted track candidates. Track refit is done in case when hit is assigned to the existing track (default parameter value : 1) |
TPCHitToTrackDistance | Cut on the distance between left-over TPC hit and the track helix to allow for assignment of the hit with a given track (default parameter value : 15.0) |
VTXHitToTrackDistance | Cut on the distance between left-over VTX hit and the track helix to allow for assignment of the hit with a given track (default parameter value : 1.5) |
FTDHitToTrackDistance | Cut on the distance between left-over FTD hit and the track helix to allow for assignment of the hit with a given track (default parameter value : 2.0) |
SITHitToTrackDistance | Cut on the distance between left-over SIT hit and the track helix to allow for assignment of the hit with a given track (default parameter value : 2.0) |
SETHitToTrackDistance | Cut on the distance between SET hit and the track helix to allow for assignment of the hit with a given track (default parameter value : 2.0) |
ETDHitToTrackDistance | Cut on the distance between ETD hit and the track helix to allow for assignment of the hit with a given track (default parameter value : 10.0) |
NHitsExtrapolation | Number of the last track hits for extrapolating helix to the outer tracking detectors (SET, ETD) (default parameter value : 35) |
CutOnTPCHits | minimal number of TPC hits, used in the track fit, which is required for tracks which have no hits from the Si detectors (default parameter value : 35) |
CutOnTrackD0 | cut on the d0 parameter of the track. If the d0 parameter is greater that this cut, track is rejected (default parameter value : 500) |
CutOnTrackZ0 | cut on the z0 parameter of the track. If the z0 parameter is greater that this cut, track is rejected (default parameter value : 500) |
ForbidOverlapInZTPC | If this flag is set to 1 then merging of the TPC semiloops is forbiden for segment overlapping in z (default parameter value : 0) |
ForbidOverlapInZComb | If this flag is set to 1 then merging of left-over TPC semiloop and combined Si-TPC track is their segments overlap in z (default parameter value : 0) |
cosThetaCutHighPtMerge | cut on cos theta between the two momentum vectors when considering merger of high Pt tracks (default is 0.99) |
cosThetaCutSoftHighPtMerge | cut on the cos theta between the two momentum vectors when considering merger of high Pt tracks for softer dp/p cut (default is 0.998) |
momDiffCutHighPtMerge | cut on dp/p when considering merger of high Pt tracks (default is 0.01 [1/GeV]) |
momDiffCutSoftHighPtMerge | softer cut on dp/p when considering merger of high Pt tracks (default is 0.25 [1/GeV]) |
hitDistanceCutHighPtMerge | cut on 3D distance between hit and helix extrapolation when considering merger of high Pt tracks (default is 25.0 [mm]) |
maxHitDistanceCutHighPtMerge | cut for max 3D distance between any hit and helix extrapolation when considering merger of high Pt tracks (default is 50.0 [mm]) |
maxFractionOfOutliersCutHighPtMerge | cut on maximum fraction of outliers when considering merger of high Pt tracks (default is 0.95 ) |
FPCCDFullLDCTracking_MarlinTrk::FPCCDFullLDCTracking_MarlinTrk | ( | ) |
Addition by Mori//////////////////////////////
|
protected |
std::cout << iH << " hit is not assigned : distance to closest track = " << minDist << std::endl; }
|
protected |
Sorting of index vector in ascending (0) /descending (!=0) order of val