MarlinTrkProcessors
2.4.1
|
=== Silicon Tracking Processor ===
Processor performing stand-alone pattern recognition in the vertex detector (VTX), forward tracking disks and SIT.
More...
#include <SiliconTracking_MarlinTrk.h>
Classes | |
struct | compare_TrackExtended |
Compare tracks according to their chi2/ndf. More... | |
class | TracksWithNHitsContainer |
A helper class to allow good code readability by accessing tracks with N hits. More... | |
Public Member Functions | |
virtual Processor * | newProcessor () |
virtual void | init () |
Initialization. | |
virtual void | processRunHeader (LCRunHeader *run) |
Run header processor. | |
virtual void | processEvent (LCEvent *evt) |
Event processor. | |
virtual void | check (LCEvent *evt) |
virtual void | end () |
Called after data processing for clean up. | |
Protected Member Functions | |
void | drawEvent () |
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 | |
int | InitialiseVTX (LCEvent *evt) |
int | InitialiseFTD (LCEvent *evt) |
void | ProcessOneSector (int iSectorPhi, int iSectorTheta) |
void | CleanUp () |
TrackExtended * | TestTriplet (TrackerHitExtended *outerHit, TrackerHitExtended *middleHit, TrackerHitExtended *innerHit, HelixClass &helix) |
int | BuildTrack (TrackerHitExtended *outerHit, TrackerHitExtended *middleHit, TrackerHitExtended *innerHit, HelixClass &helix, int innerlayer, int iPhiLow, int iPhiUp, int iTheta, int iThetaUp, TrackExtended *trackAR) |
void | Sorting (TrackExtendedVec &trackVec) |
void | CreateTrack (TrackExtended *trackAR) |
void | AttachRemainingVTXHitsSlow () |
void | AttachRemainingFTDHitsSlow () |
void | AttachRemainingVTXHitsFast () |
void | AttachRemainingFTDHitsFast () |
void | TrackingInFTD () |
int | BuildTrackFTD (TrackExtended *trackAR, int *nLR, int iS) |
int | AttachHitToTrack (TrackExtended *trackAR, TrackerHitExtended *hit, int iopt) |
void | FinalRefit (LCCollectionVec *trk_col, LCCollectionVec *rel_col) |
int | getDetectorID (TrackerHit *hit) |
int | getSideID (TrackerHit *hit) |
int | getLayerID (TrackerHit *hit) |
int | getModuleID (TrackerHit *hit) |
int | getSensorID (TrackerHit *hit) |
void | setupGearGeom (const gear::GearMgr *gearMgr) |
Protected Attributes | |
int | _nRun |
int | _nEvt |
EVENT::LCEvent * | _current_event |
int | _nDivisionsInPhi |
int | _nDivisionsInTheta |
int | _nLayers |
MarlinTrk::HelixFit * | _fastfitter |
MarlinTrk::IMarlinTrkSystem * | _trksystem |
pointer to the IMarlinTrkSystem instance | |
bool | _runMarlinTrkDiagnostics |
std::string | _MarlinTrkDiagnosticsName |
bool | _MSOn |
bool | _ElossOn |
bool | _SmoothOn |
float | _initialTrackError_d0 |
float | _initialTrackError_phi0 |
float | _initialTrackError_omega |
float | _initialTrackError_z0 |
float | _initialTrackError_tanL |
double | _maxChi2PerHit |
bool | _UseEventDisplay |
int | _detector_model_for_drawing |
std::vector< int > | _colours |
float | _helix_max_r |
bool | _createDiagnosticsHistograms |
DiagnosticsHistograms::Histograms * | _histos |
int | _ntriplets |
int | _ntriplets_good |
int | _ntriplets_2MCP |
int | _ntriplets_3MCP |
int | _ntriplets_1MCP_Bad |
int | _ntriplets_bad |
std::string | _colNameMCParticles |
input MCParticle collection and threshold used for Drawing | |
float | _MCpThreshold |
std::string | _VTXHitCollection |
std::string | _FTDPixelHitCollection |
std::string | _FTDSpacePointCollection |
std::string | _SITHitCollection |
std::string | _siTrkCollection |
std::vector< LCCollection * > | _colTrackerHits |
std::map< LCCollection *, std::string > | _colNamesTrackerHits |
std::vector < TrackerHitExtendedVec > | _sectors |
std::vector < TrackerHitExtendedVec > | _sectorsFTD |
TracksWithNHitsContainer | _tracksWithNHitsContainer |
float | _bField |
float | _chi2WRPhiTriplet |
float | _chi2WRPhiQuartet |
float | _chi2WRPhiSeptet |
float | _chi2WZTriplet |
float | _chi2WZQuartet |
float | _chi2WZSeptet |
float | _minDistCutAttach |
int | _minimalLayerToAttach |
double | _dPhi |
double | _dTheta |
double | _dPhiFTD |
std::vector< int > | _Combinations |
std::vector< int > | _CombinationsFTD |
float | _resolutionRPhiVTX |
float | _resolutionZVTX |
float | _resolutionRPhiFTD |
float | _resolutionZFTD |
float | _resolutionRPhiSIT |
float | _resolutionZSIT |
float | _phiCutForMerging |
float | _tanlambdaCutForMerging |
float | _angleCutForMerging |
int | _print |
int | _checkForDelta |
float | _minDistToDelta |
float | _distRPhi |
float | _distZ |
float | _chi2FitCut |
TrackExtendedVec | _trackImplVec |
float | _cutOnD0 |
float | _cutOnZ0 |
float | _cutOnOmega |
float | _cutOnPt |
int | _minimalHits |
int | _nHitsChi2 |
int | _attachFast |
int | _max_hits_per_sector |
int | _nTotalVTXHits |
int | _nTotalFTDHits |
int | _nTotalSITHits |
int | _useSIT |
std::string | _trkSystemName |
UTIL::BitField64 * | _encoder |
unsigned int | _nLayersVTX |
unsigned int | _nLayersSIT |
std::vector< float > | _zLayerFTD |
unsigned int | _nlayersFTD |
bool | _petalBasedFTDWithOverlaps |
int | _nPhiFTD |
int | _output_track_col_quality |
=== Silicon Tracking Processor ===
Processor performing stand-alone pattern recognition in the vertex detector (VTX), forward tracking disks and SIT.
The procedure consists of three steps :
1) Tracking in VTX and SIT ;
2) Tracking in FTD ;
3) Merging compatible track segments reconstructed in VTX and FTD
STEP 1 : TRACKING IN VTX and SIT
Algorithm starts with finding of hit triplets satisfying helix hypothesis
in three different layers. Two layers of SIT are effectively considered as outermost
layers of the vertex detector. To accelerate procedure, the 4-pi solid angle is divided in NDivisionsInTheta and NDivisionsInPhi sectors in cosQ and Phi, respectively. Triplets are looked for in 2x2 window of adjacent sectors. Once triplet is found, attempt is made to associate additional hits to track. Combinatin of hits is accepted for further analysis if the Chi2 of the fit is less than certain predefined threshold. All accepted combinations are sorted in ascending order of their Chi2. First track candidate in the sorted array is automatically accepted. The hits belonging to this track are marked as used, and track candidates sharing these hits are discarded. The procedure proceeds with increasing index of track candidate in the sorted array until all track candidate have been output or discarded.
STEP 2 : TRACKING IN FTD
In the next step tracking in FTD is performed. The strategy of tracking in the FTD is the same as used for tracking in the VTX+SIT.
STEP 3 : MERGING TRACK SEGMENTS FOUND IN FTD AND VTX+SIT
In the last step, track segments reconstructed in the FTD and VTX+SIT, belonging to the same track are identified and merged into one track. All possible pairings are tested for their compatibility. The number of pairings considered is Ntrk_VTX_SIT*Ntrk_FTD, where Ntrk_VTX_SIT is the number of track segments reconstructed in the first step in VTX+SIT (segments containing solely VTX and SIT hits) and Ntrk_FTD is the number of track segments reconstructed in the second step (segments containing solely FTD hits). Pair of segments is accepted for further examination if the angle between track segments and than certain specified threshold. Pairing satisfying this condition is subjected for addtitional test. The fit is performed on unified array of hits belonging to both segments. If the chi2 of the fit does not exceed predefined cut value two segments are unified into one track.
Processor requires collection of digitized vertex, sit and ftd tracker hits.
If such a collections with the user specified names do not exist processor takes no action.
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:
(Omega,Omega)
(Omega,TanLambda), (TanLambda,TanLambda)
(Omega,Phi), (TanLamda,Phi), (Phi,Phi)
(Omega,D0), (TanLambda,D0), (Phi,D0), (D0,D0)
(Omega,Z0), (TanLambda,Z0), (Phi,Z0), (D0,Z0), (Z0,Z0)
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 in track is the first element in this vector (Track::getSubdetectorHitNumbers()[0])
number of FTD hits in track is the second element in this vector (Track::getSubdetectorHitNumbers()[1])
number of SIT hits in track is the third element in this vector (Track::getSubdetectorHitNumbers()[2])
Output track collection has a name "SiTracks".
VTXHitCollectionName | name of input VTX TrackerHit collection (default parameter value : "VTXTrackerHits") |
FTDHitCollectionName | name of input FTD TrackerHit collection (default parameter value : "FTDTrackerHits") |
SITHitCollectionName | name of input SIT TrackerHit collection (default parameter value : "SITTrackerHits") |
SiTrackCollectionName | name of the output Silicon track collection (default parameter value : "SiTracks") |
LayerCombinations | combinations of layers used to search for hit triplets in VTX+SIT (default parameters : 6 4 3 6 4 2 6 3 2 5 4 3 5 4 2 5 3 2 4 3 2 4 3 1 4 2 1 3 2 1) Note that in the VTX+SIT system the first and the second layers of SIT have indicies nLayerVTX and nLayerVTX+1. Combination given above means that triplets are looked first in layers 6 4 3, and then in 6 4 2; 5 4 3; 6 3 2 etc. NOTE THAT LAYER INDEXING STARTS FROM 0. LAYER 0 is the innermost layer |
LayerCombinationsFTD | combinations of layers used to search for hit triplets in FTD (default parameters 6 5 4 5 4 3 5 4 2 5 4 1 5 3 2 5 3 1 5 2 1 4 3 2 4 3 1 4 3 0 4 2 1 4 2 0 4 1 0 3 2 1 3 2 0 3 1 0 2 1 0). NOTE THAT TRACKS IN FTD ARE SEARCHED ONLY IN ONE HEMISPHERE. TRACK IS NOT ALLOWED TO HAVE HITS BOTH IN BACKWARD AND FORWARD PARTS OF FTD SIMULTANEOUSLY. |
NDivisionsInPhi | Number of divisions in Phi for tracking in VTX+SIT (default value is 40) |
NDivisionsInTheta | Number of divisions in cosQ for tracking in VTX+SIT (default value is 40) |
NDivisionsInPhiFTD | Number of divisions in Phi for tracking in FTD (default value is 3) |
Chi2WRphiTriplet | weight on chi2 in R-Phi plane for track with 3 hits (default value is 1) |
Chi2WZTriplet | weight on chi2 in S-Z plane for track with 3 hits (default value is 0.5) |
Chi2WRphiQuartet | weight on chi2 in R-Phi plane to accept track with 4 hits (default value is 1) |
Chi2WZQuartet | weight on chi2 in S-Z plane for track with 4 hits (default value is 0.5) |
Chi2WRphiSeptet | weight on chi2 in R-Phi plane for track with 5 and more hits (default value is 1) |
Chi2WZSeptet | Cut on chi2 in S-Z plane for track with 5 and more hits (default value is 0.5) |
Chi2FitCut | Cut on chi2/ndf to accept track candidate (default value is 100.) |
AngleCutForMerging | cut on the angle between two track segments. If the angle is greater than this cut, segments are not allowed to be merged. (default value is 0.1) |
MinDistCutAttach | cut on the distance (in mm) from hit to the helix. This parameter is used to decide whether hit can be attached to the track. If the distance is less than cut value. The track is refitted with a given hit being added to the list of hits already assigned for the track. Additional hit is assigned if chi2 of the new fit has good chi2. (default value is 2 ) |
MinLayerToAttach | the minimal layer index to attach VTX hits to the found hit triplets (default value is -1) |
CutOnZ0 | cut on Z0 parameter of track (in mm). If abs(Z0) is greater than the cut value, track is discarded (used to suppress fake track rate in the presence of beam induced background hits) (default value is 100) |
CutOnD0 | cut on D0 parameter of track (in mm). If abs(D0) is greater than the cut value, track is discarded (used to suppress fake track rate in the presence of beam induced background hits) (default value is 100) |
CutOnPt | cut on Pt (GeV/c). If Pt is less than this cut, track is discarded (used to suppress fake track rate in the presence of beam induced background hits) (default value is 0.1) |
MinimalHits | minimal number of hits in track required (default value is 3) |
NHitsChi2 | Maximal number of hits for which a track with n hits is aways better than one with n-1 hits. For tracks with equal or more than NHitsChi2 the track with the lower ![]() |
FastAttachment | if this flag is set to 1, less accurate but fast procedure to merge additional hits to tracks is used if set to 0, a more accurate, but slower procedure is invoked (default value is 0) |
UseSIT | When this flag is set to 1, SIT is included in pattern recognition. When this flag is set to 0, SIT is excluded from the procedure of pattern recognition (default value is 1) |
|
protected |
Method for building up track in the VXD. Method starts from the found triplet and performs sequential attachment of hits in other layers, which have hits within the search window. Only searches inwards. Given that we know we are now jumping over layers due to the doublet nature of the VXD, we could optimise this to look for the hits in interleaving layers as well. Currently a fast fit is being done for each additional hit, it could be more efficient to try and use kaltest?
|
protected |
Method which creates Track out of TrackExtended objects. Checks for possible track splitting (separate track segments in VXD and FTD).
|
protected |
Sorting of Track Vector in ascending order of chi2/ndf