|
ATLAS Offline Software
|
#include <InDetDenseEnvAmbiTrackSelectionTool.h>
|
Trk::Track * | createSubTrack (const std::vector< const Trk::TrackStateOnSurface * > &tsos, const Trk::Track *track) const |
| method to create a new track from a vector of TSOS's More...
|
|
void | fillTrackDetails (const Trk::Track *ptrTrack, Trk::ClusterSplitProbabilityContainer &splitProbContainer, const Trk::PRDtoTrackMap &prd_to_track_map, TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails) const |
| Fill the two structs TrackHitDetails & TSoS_Details full of information. More...
|
|
void | decideWhichHitsToKeep (const Trk::Track *, const Trk::TrackScore score, Trk::ClusterSplitProbabilityContainer &splitProbContainer, Trk::PRDtoTrackMap &prd_to_track_map, TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, CacheEntry *ent, int trackId) const |
| Determine which hits to keep on this track Look at the hits on track and decided if they should be kept on the track or rejected. More...
|
|
bool | performConversionCheck (const Trk::Track *ptrTrack, Trk::PRDtoTrackMap &prd_to_track_map, TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails) const |
| Specific logic for identifing conversions with the goal of passing those tracks through to the final collection with as little loss as possible. More...
|
|
bool | performHadDecayCheck (const Trk::Track *ptrTrack, Trk::PRDtoTrackMap &prd_to_track_map, TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails) const |
| Specific logic for identifing boosted light particle decays in jet topologies (tau and b), with the goal of passing those tracks through to the final collection with as little loss as possible. More...
|
|
void | updateSharedForCollimated (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails) const |
| Handle update of the shared hit counts if either a conversion or a dense hadronic decay was identified using one of the methods above. More...
|
|
void | setPixelClusterSplitInformation (TSoS_Details &tsosDetails, Trk::ClusterSplitProbabilityContainer &clusterSplitProbMap) const |
| Update the pixel clusters split information. More...
|
|
bool | inHadronicROI (const Trk::Track *ptrTrack) const |
| Does track pass criteria for hadronic ROI? More...
|
|
bool | isHadCaloCompatible (const Trk::TrackParameters &Tp) const |
| Check if the cluster is compatible with a hadronic cluster. More...
|
|
bool | isEmCaloCompatible (const Trk::TrackParameters &Tp) const |
| Check if the cluster is compatible with a EM cluster. More...
|
|
bool | checkOtherTracksValidity (TSoS_Details &tsosDetails, int index, Trk::ClusterSplitProbabilityContainer &splitProbContainer, Trk::PRDtoTrackMap &prd_to_track_map, int &maxiShared, int &maxOtherNPixel, bool &maxOtherHasIBL, CacheEntry *ent) const |
| Returns true if accepted tracks remain about thresholds, false otherwise maxiShared = max number of shared modules on an accepted shared track which has maxOtherNPixel pixel hits and blayer hit if maxOtherHasIBL is true. More...
|
|
std::pair< const Trk::TrackParameters *, const Trk::TrackParameters * > | getOverlapTrackParameters (int n, const Trk::Track *track1, const Trk::Track *track2, const Trk::PRDtoTrackMap &prd_to_track_map, int splitSharedPix) const |
| Returns the Trackparameters of the two tracks on the n'th TrackStateOnSurface of the first track. More...
|
|
bool | isNearbyTrackCandidate (const Trk::TrackParameters *paraA, const Trk::TrackParameters *paraB) const |
| Check if two sets of track paremeters are compatible with being from a the same low mass particle decay. More...
|
|
bool | clusCanBeSplit (float splitProb1, float splitProb2) const |
| Simple helper functions to tell is cluster is split. More...
|
|
bool | isTwoPartClus (float splitProb1, float splitProb2) const |
|
bool | isMultiPartClus (float splitProb2) const |
|
|
static void | newEvent (CacheEntry *ent) |
| Fill hadronic & EM cluster map. More...
|
|
static void | rejectHitOverUse (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, int index) |
|
static void | rejectHit (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, int index) |
|
static void | rejectSharedHit (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, int index) |
|
static void | rejectSharedHitInvalid (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, int index) |
|
static void | sharedToSplitPix (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, int index) |
|
static void | addSharedHit (TrackHitDetails &trackHitDetails, TSoS_Details &tsosDetails, int index) |
|
static void | increaseSharedHitCounters (TrackHitDetails &trackHitDetails, bool isPix, bool isSCT) |
|
static void | decreaseSharedHitCounters (TrackHitDetails &trackHitDetails, bool isPix, bool isSCT) |
|
|
std::mutex | m_mutex |
|
SG::SlotSpecificObj< CacheEntry > m_cache | ATLAS_THREAD_SAFE |
|
PublicToolHandle< ITrtDriftCircleCutTool > | m_selectortool {this, "DriftCircleCutTool", "InDet::InDetTrtDriftCircleCutTool"} |
| TRT minimum number of drift circles tool- returns allowed minimum number of TRT drift circles. More...
|
|
ServiceHandle< IInDetEtaDependentCutsSvc > | m_etaDependentCutsSvc {this, "InDetEtaDependentCutsSvc", ""} |
| ITk eta-dependet cuts. More...
|
|
const SiliconID * | m_detID {nullptr} |
| atlas id helper More...
|
|
ToolHandle< Trk::IPRDtoTrackMapTool > | m_assoTool {this, "AssociationTool", "InDet::InDetPRDtoTrackMapToolGangedPixels" } |
|
PublicToolHandle< Trk::ITrkObserverTool > | m_observerTool {this, "ObserverTool", "", "track observer within ambiguity solver"} |
| Observer tool This tool is used to observe the tracks and their 'score'. More...
|
|
IntegerProperty | m_minHits {this, "minHits", 5, "Min Number of hits on track"} |
| some cut values More...
|
|
IntegerProperty | m_minTRT_Hits {this, "minTRTHits", 0, "Min Number of TRT hits on track"} |
|
IntegerProperty | m_maxSharedModules {this, "maxShared", 1, "Max number of shared modules"} |
|
IntegerProperty | m_maxTracksPerPRD {this, "maxTracksPerSharedPRD", 2, "Max number of tracks per hit. When NN is used, other flags set the limits."} |
|
IntegerProperty | m_minNotSharedHits {this, "minNotShared", 6, "Min number of non shared hits"} |
|
FloatProperty | m_minScoreShareTracks {this, "minScoreShareTracks", 0.0, "Min track score to alow it to share hits"} |
|
BooleanProperty | m_cosmics {this, "Cosmics", false, "Trying to reco cosmics?"} |
|
BooleanProperty | m_parameterization {this, "UseParameterization", true, "Use table of min number DCs"} |
|
BooleanProperty | m_doPixelClusterSplitting {this, "doPixelSplitting", false, "Split pixel clusters"} |
|
FloatProperty | m_sharedProbCut {this, "sharedProbCut", 0.3, "Min split prob to break a cluster into two parts"} |
|
FloatProperty | m_sharedProbCut2 {this, "sharedProbCut2", 0.3, "Min split prob to break a clsuter into three parts"} |
|
FloatProperty | m_minTrackChi2ForSharedHits {this, "minTrackChi2ForSharedHits", 3, "Min track chi2 to split share hits"} |
|
IntegerProperty | m_minUniqueSCTHits {this, "minUniqueSCTHits", 2, "Min number of hits in the SCT that we need before we allow hit sharing in the SCT"} |
|
IntegerProperty | m_minSiHitsToAllowSplitting {this, "minSiHitsToAllowSplitting", 9, "Min number of hits before we allow split sharing of hits"} |
|
IntegerProperty | m_maxPixOnePartCluster {this, "maxPixOnePartCluster", 2, "Max number of tracks that can be associated to a 1 particle cluster"} |
|
IntegerProperty | m_maxPixTwoPartCluster {this, "maxPixTwoPartCluster", 2, "Max number of tracks that can be associated to a 2 particle cluster"} |
|
IntegerProperty | m_maxPixMultiCluster {this, "maxPixMultiCluster", 4, "Max number of tracks that can be associated to a >= 3 particle cluster"} |
|
BooleanProperty | m_shareSplitHits {this, "shareSplitHits", false, "Allow shared hits to be shared on 1 more track"} |
|
IntegerProperty | m_minPixHitAccepted {this, "minPixHitAccepted", 2, "Min number of pixel hits needed to be allowed to push accepted tracks over shared module limits"} |
|
BooleanProperty | m_useHClusSeed {this, "doHadCaloSeed", false} |
|
BooleanProperty | m_skipAmbiInROI {this, "doSkipAmbiInROI", false} |
|
FloatProperty | m_minPtSplit {this, "minPtSplit", 0.} |
|
FloatProperty | m_minPtBjetROI {this, "minPtBjetROI", 15000., "in MeV"} |
|
FloatProperty | m_phiWidth {this, "phiWidth", 0.2} |
|
FloatProperty | m_etaWidth {this, "etaWidth", 0.2} |
|
SG::ReadHandleKey< ROIPhiRZContainer > | m_inputHadClusterContainerName {this, "HadROIPhiRZContainer", ""} |
|
BooleanProperty | m_useEmClusSeed {this, "doEmCaloSeed", false} |
|
FloatProperty | m_phiWidthEm {this, "phiWidthEM", 0.05} |
|
FloatProperty | m_etaWidthEm {this, "etaWidthEM", 0.05} |
|
SG::ReadHandleKey< ROIPhiRZContainer > | m_inputEmClusterContainerName {this, "EMROIPhiRZContainer", ""} |
|
BooleanProperty | m_doPairSelection {this, "doPairSelection", true} |
|
FloatProperty | m_minPairTrackPt {this, "minPairTrackPt", 1000., "In MeV"} |
|
BooleanProperty | m_monitorTracks {this, "MonitorAmbiguitySolving", false, "to track observeration/monitoring (default is false)"} |
|
This tool cross checks the hits on a track with the hits already stored in a PRD_AssociationTool. Shared hits are allowed to some extent und under certain conditions (e.g. the track score is high enough), additional shared hits are removed if necessary. This tool does not delete any tracks. If the client is going to discard tracks entered into this tool, the tracks have to be deleted by this client.
Definition at line 60 of file InDetDenseEnvAmbiTrackSelectionTool.h.
◆ TsosTypes
◆ InDetDenseEnvAmbiTrackSelectionTool()
InDet::InDetDenseEnvAmbiTrackSelectionTool::InDetDenseEnvAmbiTrackSelectionTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetDenseEnvAmbiTrackSelectionTool()
virtual InDet::InDetDenseEnvAmbiTrackSelectionTool::~InDetDenseEnvAmbiTrackSelectionTool |
( |
| ) |
|
|
virtualdefault |
◆ addSharedHit()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::addSharedHit |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails, |
|
|
int |
index |
|
) |
| |
|
inlinestaticprivate |
◆ checkOtherTracksValidity()
Returns true if accepted tracks remain about thresholds, false otherwise maxiShared = max number of shared modules on an accepted shared track which has maxOtherNPixel pixel hits and blayer hit if maxOtherHasIBL is true.
Definition at line 354 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
367 ATH_MSG_WARNING(
"Calling checkOtherTracksValidity with a hit that is not shared!");
375 int numberOfTracksWithThisPrd = tsosDetails.m_hitIsShared[
index];
382 bool otherwillFailMinHits =
false;
383 bool otherwillFailSCTuniqueHits =
false;
391 bool iHasBlayer =
false;
398 auto currentHitsSharedTracks = tsosDetails.m_tracksSharingHit.equal_range(
index);
399 for (
auto track = currentHitsSharedTracks.first;
track != currentHitsSharedTracks.second; ++
track ){
409 std::vector< const Trk::PrepRawData* > prdsToCheck =
m_assoTool->getPrdsOnTrack(prd_to_track_map, *(
track->second));
412 bool isSplitPixel(
false);
438 iSharedMod += isPixel ? 2 : 1;
441 }
else if ( prd_to_track_map.
isShared( *prdToCheck ) ) {
442 iSharedMod += isSplitPixel ? 0 : isPixel ? 2 : 1;
453 ATH_MSG_VERBOSE(
"Track " <<
track->second <<
" will has " << iNotShared <<
" unique hits and " << iSctUnique <<
" unique SCT hits.");
456 if ( iNotShared < ent->m_minNotShared ) otherwillFailMinHits =
true;
458 if ( iSCT > iSctUnique && iSctUnique <
m_minUniqueSCTHits ) otherwillFailSCTuniqueHits =
true;
462 if ( iSharedMod > maxiShared){
463 maxiShared = iSharedMod;
464 maxOtherNPixel = iPixel;
465 maxOtherHasIBL = iHasBlayer;
468 return !( otherwillFailMinHits || otherwillFailSCTuniqueHits );
◆ clusCanBeSplit()
bool InDet::InDetDenseEnvAmbiTrackSelectionTool::clusCanBeSplit |
( |
float |
splitProb1, |
|
|
float |
splitProb2 |
|
) |
| const |
|
inlineprivate |
◆ createSubTrack()
method to create a new track from a vector of TSOS's
Definition at line 1421 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
1423 std::vector<const Trk::TrackStateOnSurface*>::const_iterator tsosit=tsos.begin();
1425 for (;tsosit!=tsos.end();++tsosit){
1433 auto vecTsos = std::make_unique<Trk::TrackStates>();
1438 vecTsos->push_back(newTsos);
1442 info.addPatternRecoAndProperties(
track->info());
1445 info.addPatternReco(newInfo);
◆ decideWhichHitsToKeep()
Determine which hits to keep on this track Look at the hits on track and decided if they should be kept on the track or rejected.
The decision focuses on the track in question and how often clusters are used Within getCleanedOutTrack (from which this is called), accepted tracks are checked to see if they are pushed over limits
Definition at line 666 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
677 trackHitDetails.m_trkCouldBeAccepted =
true;
680 trackHitDetails.m_passHadronicROI =
false;
682 trackHitDetails.m_passHadronicROI =
true;
693 bool recoverSharedHits(
true);
702 recoverSharedHits =
false;
705 if(trackHitDetails.m_numPixelHoles>1) { recoverSharedHits =
false; }
720 trackHitDetails.m_trkCouldBeAccepted =
false;
729 if ( tsosDetails.m_detType[
index] == 3 ) {
730 ++trackHitDetails.m_numTRT_Unused;
732 ++trackHitDetails.m_numUnused;
733 if ( tsosDetails.m_detType[
index] == 2 ) { ++trackHitDetails.m_numSCT_Unused; }
755 if( tsosDetails.m_hitIsShared[
index]>0 ) {
764 if(trackHitDetails.m_isPatternTrack) {
772 ++trackHitDetails.m_numUnused;
773 if( tsosDetails.m_detType[
index]%10 == 2 ) { ++trackHitDetails.m_numSCT_Unused; }
779 ATH_MSG_DEBUG( Form(
"---> Prd is outlier on a fitted track and is unused, %d",
index) );
813 int indexPreviousMeasurement = tsosDetails.findIndexOfPreviousMeasurement(
index);
814 if (indexPreviousMeasurement > 0 ) {
815 ATH_MSG_VERBOSE (
"--> Previous Measurement was at : " << indexPreviousMeasurement
816 <<
" and was a: " << tsosDetails.m_type[indexPreviousMeasurement]
817 <<
" with splitprob1 " << tsosDetails.m_splitProb1[indexPreviousMeasurement]
818 <<
" and splitprob2 " << tsosDetails.m_splitProb2[indexPreviousMeasurement]);
825 if ( indexPreviousMeasurement >= 0 &&
826 tsosDetails.m_type[indexPreviousMeasurement] ==
SharedHit &&
831 bool sharedbetweenthesametracks =
false;
832 auto previousHitsSharedTracks = tsosDetails.m_tracksSharingHit.equal_range(indexPreviousMeasurement);
833 auto currentHitsSharedTracks = tsosDetails.m_tracksSharingHit.equal_range(
index);
834 for (
auto iteratorP = previousHitsSharedTracks.first;
835 iteratorP != previousHitsSharedTracks.second; ++iteratorP) {
836 for (
auto iteratorC = currentHitsSharedTracks.first;
837 iteratorC != currentHitsSharedTracks.second; ++iteratorC) {
838 if ( iteratorC->second == iteratorP->second){
839 sharedbetweenthesametracks =
true;
843 if (sharedbetweenthesametracks)
break;
845 if (sharedbetweenthesametracks){
861 ATH_MSG_VERBOSE (
"---> Pixel cluster is to be split shared with another track: Split Prob1 " << tsosDetails.m_splitProb1[
index] );
863 ++trackHitDetails.m_numSplitSharedPix;
869 ATH_MSG_VERBOSE (
"---> Pixel cluster is split, but must be called shared to stay on this track!");
873 ATH_MSG_VERBOSE (
"---> Pixel split but shared between too many tracks -- will be removed from the track!!!");
887 ATH_MSG_VERBOSE (
"---> Pixel cluster is to be split shared with another track: Split Prob2 " << tsosDetails.m_splitProb2[
index] );
889 ++trackHitDetails.m_numSplitSharedPix;
895 ATH_MSG_VERBOSE (
"---> Pixel cluster is split, but must be called shared to stay on this track!");
899 ATH_MSG_VERBOSE (
"---> Pixel split but shared between too many tracks -- will be removed from the track!!!");
909 ATH_MSG_VERBOSE(
"---> Pixel cluster is not compatible with being shared (splitProb1 = "
910 << tsosDetails.m_splitProb1[
index] <<
"), (splitProb2 = "
911 << tsosDetails.m_splitProb2[
index] <<
") , reject shared hit !!!");
917 ATH_MSG_DEBUG (
"reject track; Too many hits shared - we have to remove at least one PRD");
927 if( tsosDetails.m_hitIsShared[
index] == 0 ) {
928 ATH_MSG_ERROR(
"A hit is not shared but is where only shared hits should be");
933 ATH_MSG_VERBOSE (
"---> Shared hit, but good track, let's enter hit in the list and try to keep it !");
938 ATH_MSG_DEBUG (
"reject track; Too many hits shared - we have to remove at least one PRD");
945 ATH_MSG_ERROR(
"Reached end of TSOS loop without a decision." );
963 trackHitDetails.m_passConversionSel =
false;
966 prd_to_track_map, trackHitDetails, tsosDetails);
976 if (
m_useHClusSeed && !trackHitDetails.m_passConversionSel && trackHitDetails.m_passHadronicROI &&
979 prd_to_track_map, trackHitDetails, tsosDetails);
990 if ( trackHitDetails.m_numSCT_Unused != trackHitDetails.m_numSCTHits &&
1004 if ( !trackHitDetails.m_isPatternTrack && trackHitDetails.m_numShared > 0) {
1005 double trackchi2 = 0;
1012 ATH_MSG_DEBUG (
"Shared hits, we have a bad chi2 track, mark it as bad !");
1034 int newNumWeightedShared = 0;
1035 bool firstMeasurement(
true);
1036 trackHitDetails.m_firstPixIsShared =
false;
1038 trackHitDetails.m_thisHasIBLHit =
false;
1051 int maxiShared = -1;
1052 int maxOtherNPixel = 0;
1053 bool maxOtherHasIBL =
false;
1055 splitProbContainer, prd_to_track_map, maxiShared, maxOtherNPixel,
1056 maxOtherHasIBL, ent);
1058 if (!otherPassMinUniqueHits) {
1059 ATH_MSG_DEBUG (
"reject track; Tracks shared hits does not leave enough unique hits on accepted track");
1072 if( maxiShared >= ent->m_maxSharedModules ){
1075 if( (tsosDetails.m_detType[
index] % 10 == 1) && firstMeasurement ) {
1076 ATH_MSG_DEBUG (
"reject track; Tracks shared hits pushes accepted track above shared module limit");
1084 if( trackHitDetails.m_firstPixIsShared ) {
1085 ATH_MSG_DEBUG (
"reject track; Tracks shared hits pushes accepted track above shared module limit");
1109 if( tsosDetails.m_detType[
index] == 11 && !maxOtherHasIBL ) {
1110 ATH_MSG_VERBOSE (
"---> Remove shared IBL as MaxShared accepted does not have an IBL hit");
1118 if(tsosDetails.m_detType[
index] == 1 && (trackHitDetails.m_thisHasIBLHit != maxOtherHasIBL) ) {
1119 ATH_MSG_VERBOSE (
"---> Only allow shared pixel if candidate and accepted have same IBL hit content");
1129 newNumWeightedShared += (tsosDetails.m_detType[
index]%10== 1 ? 2 : 1);
1131 if (newNumWeightedShared >= ent->m_maxSharedModules) {
1133 << newNumWeightedShared <<
"\t" << ent->m_maxSharedModules);
1134 newNumWeightedShared -= (tsosDetails.m_detType[
index]%10== 1 ? 2 : 1);
1144 if( tsosDetails.m_detType[
index] % 10 == 1 ) {
1145 if (firstMeasurement) {
1146 trackHitDetails.m_firstPixIsShared =
true;
1148 if (tsosDetails.m_detType[
index] == 11 ){
1149 trackHitDetails.m_hasSharedIBLHit =
true;
1150 }
else if ( tsosDetails.m_detType[
index] == 1 ){
1151 trackHitDetails.m_hasSharedPixel =
true;
1157 if (tsosDetails.m_detType[
index] == 11 ){
1158 trackHitDetails.m_thisHasIBLHit =
true;
1160 if (firstMeasurement && tsosDetails.m_type[
index] !=
OtherTsos){ firstMeasurement =
false; }
1166 trackHitDetails.dumpInfo();
1171 float splitProbAvg1 = -2;
1172 if (!tsosDetails.m_splitProb1.empty()){
1173 splitProbAvg1 =
std::accumulate(tsosDetails.m_splitProb1.begin(), tsosDetails.m_splitProb1.end(), 0.0) / tsosDetails.m_splitProb1.size();
1175 float splitProbAvg2 = -2;
1176 if (!tsosDetails.m_splitProb2.empty()){
1177 splitProbAvg2 =
std::accumulate(tsosDetails.m_splitProb2.begin(), tsosDetails.m_splitProb2.end(), 0.0) / tsosDetails.m_splitProb2.size();
1180 trackHitDetails.m_numPixelHoles,
1181 trackHitDetails.m_numSCTHoles,
1182 trackHitDetails.m_numSplitSharedPix,
1183 trackHitDetails.m_numSplitSharedSCT,
1186 trackHitDetails.m_numShared,
1187 trackHitDetails.m_isPatternTrack,
1188 trackHitDetails.totalSiHits(),
1189 trackHitDetails.m_passHadronicROI,
1190 trackHitDetails.m_thisHasIBLHit,
1191 trackHitDetails.m_hasSharedIBLHit,
1192 trackHitDetails.m_hasSharedPixel,
1193 trackHitDetails.m_firstPixIsShared,
1194 trackHitDetails.m_numPixelDeadSensor,
1195 trackHitDetails.m_numSCTDeadSensor,
1196 trackHitDetails.m_numPixelHits,
1197 trackHitDetails.m_numSCTHits,
1198 trackHitDetails.m_numUnused,
1199 trackHitDetails.m_numTRT_Unused,
1200 trackHitDetails.m_numSCT_Unused,
1201 trackHitDetails.m_numPseudo,
1204 trackHitDetails.m_numWeightedShared);
◆ decreaseSharedHitCounters()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::decreaseSharedHitCounters |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
bool |
isPix, |
|
|
bool |
isSCT |
|
) |
| |
|
inlinestaticprivate |
◆ fillTrackDetails()
Fill the two structs TrackHitDetails & TSoS_Details full of information.
Definition at line 473 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
482 ATH_MSG_DEBUG (
"Study new Track "<< ptrTrack<<
"\t , it has "<<tsos->
size()<<
"\t track states");
487 if (trackHitDetails.m_isPatternTrack) {
504 ATH_MSG_WARNING(
"Did not find track summary. Some cuts will be less efficienct!");
510 if (trackHitDetails.m_numPixelDeadSensor == -1) trackHitDetails.m_numPixelDeadSensor = 0;
511 if (trackHitDetails.m_numSCTDeadSensor == -1) trackHitDetails.m_numSCTDeadSensor = 0;
512 ATH_MSG_VERBOSE (
"--- Number of dead si sensors: " << trackHitDetails.m_numPixelDeadSensor + trackHitDetails.m_numSCTDeadSensor);
522 for (
int index = 0 ; iTsos != iTsosEnd ; ++iTsos, ++
index) {
540 ++trackHitDetails.m_numPseudo;
542 ATH_MSG_WARNING ( Form(
"---> Measurement is not a pseudo measurment, not yet supported! %2d",
index));
549 tsosDetails.m_RIO[
index] = rot;
563 tsosDetails.m_detType[
index] = isTRT * 3 + isSCT * 2 + isPixel * 1 +
isIBL * 10;
566 if (
isIBL && (!isoutlier || trackHitDetails.m_isPatternTrack ) ) {
567 trackHitDetails.m_thisHasIBLHit =
true;
573 ATH_MSG_WARNING (
"---> Cluster is not from pixels; should not happen !");
612 if(isUsed) { tsosDetails.m_hitIsShared[
index] = 1; }
643 tsosDetails.m_hitIsShared[
index] = numberOfTracksWithThisPrd;
647 Trk::PRDtoTrackMap::PrepRawDataTrackMap::const_iterator mapIt =
range.first;
648 Trk::PRDtoTrackMap::PrepRawDataTrackMap::const_iterator mapItEnd =
range.second;
650 for ( ;mapIt!=mapItEnd; ++mapIt) {
651 tsosDetails.m_overlappingTracks.insert( std::pair<const Trk::Track*, int >(mapIt->second,
index) );
652 tsosDetails.m_tracksSharingHit.insert(std::pair< int, const Trk::Track* >(
index, mapIt->second ) );
655 ATH_MSG_VERBOSE (
"-----> Mark this hits as shared -- Try and recover later!");
◆ finalize()
StatusCode InDet::InDetDenseEnvAmbiTrackSelectionTool::finalize |
( |
| ) |
|
|
overridevirtual |
◆ getCleanedOutTrack()
Decide what to do with a candidate track.
- count and characterize hits on track
- not those which are used too often (decideWhichHitsToKeep)
- accept the track as is, remove hits and make a subtrack, or reject track
- track candidate are also checked against accepted tracks to ensure accepted tracks are not pushed over threshold
Definition at line 74 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
86 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
true);
91 double trackEta = ptrTrack->trackParameters()->front()->eta();
94 cache.m_maxSharedModules = 2*maxSharedModules+1;
107 if (expected > nCutTRT) nCutTRT = expected;
112 ATH_MSG_DEBUG (
"Study new Track "<< ptrTrack<<
"\t , it has "<<tsos->
size()<<
"\t track states");
116 TrackHitDetails trackHitDetails;
119 TSoS_Details tsosDetails(tsos->
size());
122 fillTrackDetails( ptrTrack, splitProbContainer, prd_to_track_map, trackHitDetails, tsosDetails);
127 decideWhichHitsToKeep( ptrTrack,
score, splitProbContainer, prd_to_track_map, trackHitDetails, tsosDetails, &cache, trackId );
129 ATH_MSG_DEBUG (
"decideWhichHitsToKeep " << trackHitDetails.m_trkCouldBeAccepted );
135 ATH_MSG_DEBUG (
"totalSiHits " << trackHitDetails.totalSiHits());
136 ATH_MSG_DEBUG (
"totalUniqueSiHits " << trackHitDetails.totalUniqueSiHits());
155 bool passBasicCuts(
true);
156 if( trackHitDetails.totalSiHits() <
m_minHits ) {
157 passBasicCuts =
false;
162 if( trackHitDetails.m_numTRT_Unused < nCutTRT ) {
163 passBasicCuts =
false;
168 if( trackHitDetails.totalUniqueSiHits() < cache.m_minNotShared ) {
169 passBasicCuts =
false;
174 if( !passBasicCuts ) {
176 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
false);
203 bool noSharedHits( trackHitDetails.m_numShared == 0 );
207 bool passSharedModulesCut( trackHitDetails.m_numWeightedShared < cache.m_maxSharedModules );
220 if( trackHitDetails.m_trkCouldBeAccepted &&
221 ( noSharedHits || (passSharedModulesCut && passScoreCut) ) ) {
222 ATH_MSG_DEBUG (
"=> Suggest to keep track with "<<trackHitDetails.m_numShared<<
" shared hits !");
226 if (!trackHitDetails.m_isPatternTrack){
233 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
true);
238 else if ( passScoreCut ) {
242 ATH_MSG_DEBUG (
"=> Cosmics, accept input track even with shared hits");
246 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
true);
265 std::vector<const Trk::TrackStateOnSurface*> newTSOS;
271 for (
int index = 0 ; iTsos != iTsosEnd ; ++iTsos,++
index ) {
282 newTSOS.push_back(*iTsos);
289 if ( newTSOS.size() <= 3 ) {
291 ATH_MSG_DEBUG (
"reject track; Too few hits, reject track with shared hits");
295 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
false);
299 if ( newTSOS.size() == tsos->
size() ) {
303 if (!trackHitDetails.m_isPatternTrack){
306 ATH_MSG_DEBUG (
"reject track; maybe track was mark as rejected, but we recoverd it so no rejection");
310 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
true);
320 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
false);
324 info.addPatternRecoAndProperties(ptrTrack->info());
327 info.addPatternReco(newInfo);
330 ATH_MSG_DEBUG (
"=> Successfully created subtrack with shared hits recovered !");
335 return std::make_tuple(newTrack,
false);
345 return std::make_tuple(
static_cast<Trk::Track *
>(
nullptr),
false);
◆ getOverlapTrackParameters()
Returns the Trackparameters of the two tracks on the n'th TrackStateOnSurface of the first track.
Definition at line 1516 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
1522 auto returnPair = std::make_pair<const Trk::TrackParameters*,const Trk::TrackParameters*>(0,0);
1530 auto firstTsos = track1tsos->
begin();
1532 const auto *firstMeas = (*firstTsos)->measurementOnTrack();
1545 if ( !prd_to_track_map.
isUsed(*(firstRot->prepRawData()))){
1556 auto iTsos = track2tsos->
begin();
1557 auto iTsosEnd = track2tsos->
end();
1558 int measurementsBeforeShared = 0;
1559 for (; iTsos != iTsosEnd ; ++iTsos) {
1562 if (measurementsBeforeShared > 1 + splitSharedPix ){
1563 ATH_MSG_DEBUG(
"Too many hits to before shared hit -- unlikely they are from the same thing");
1568 const auto *meas = (*iTsos)->measurementOnTrack();
1580 if (rot->
prepRawData() != firstRot->prepRawData()){
1581 ++measurementsBeforeShared;
1585 if (!(*iTsos)->trackParameters()){
1590 returnPair.second = (*iTsos)->trackParameters();
1591 ATH_MSG_DEBUG(
"Success! track parameters for accepted track " << returnPair.second );
1600 if (!(*firstTsos)->trackParameters()){
1605 returnPair.first = (*firstTsos)->trackParameters();
1608 ATH_MSG_DEBUG(
"Success! track parameters for both tracks " << returnPair.first<<
" " << returnPair.second );
◆ increaseSharedHitCounters()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::increaseSharedHitCounters |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
bool |
isPix, |
|
|
bool |
isSCT |
|
) |
| |
|
inlinestaticprivate |
◆ inHadronicROI()
bool InDet::InDetDenseEnvAmbiTrackSelectionTool::inHadronicROI |
( |
const Trk::Track * |
ptrTrack | ) |
const |
|
private |
◆ initialize()
StatusCode InDet::InDetDenseEnvAmbiTrackSelectionTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ isEmCaloCompatible()
◆ isHadCaloCompatible()
◆ isMultiPartClus()
bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isMultiPartClus |
( |
float |
splitProb2 | ) |
const |
|
inlineprivate |
◆ isNearbyTrackCandidate()
Check if two sets of track paremeters are compatible with being from a the same low mass particle decay.
It is assumed that the track parmeters are on the same surface.
◆ isTwoPartClus()
bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isTwoPartClus |
( |
float |
splitProb1, |
|
|
float |
splitProb2 |
|
) |
| const |
|
inlineprivate |
◆ newEvent()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::newEvent |
( |
CacheEntry * |
ent | ) |
|
|
staticprivate |
◆ performConversionCheck()
Specific logic for identifing conversions with the goal of passing those tracks through to the final collection with as little loss as possible.
Definition at line 1212 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
1221 if ( trackHitDetails.m_numPixelHoles + trackHitDetails.m_numSCTHoles >= 2) {
return false; }
1224 const Trk::Track* mostOverlappingTrack(
nullptr);
1225 int mostOverlappingNumberOfHits(0);
1226 int indexOfFirstOverlappingHit(0);
1228 end = tsosDetails.m_overlappingTracks.end();
it !=
end;
1229 it = tsosDetails.m_overlappingTracks.upper_bound(
it->first) ) {
1230 int numberOfHitsSharedWithThisTrack =
std::distance(
it, tsosDetails.m_overlappingTracks.upper_bound(
it->first));
1231 ATH_MSG_DEBUG(
it->first <<
" shares " << numberOfHitsSharedWithThisTrack <<
" hits with this track " );
1232 if (mostOverlappingNumberOfHits < numberOfHitsSharedWithThisTrack){
1233 mostOverlappingNumberOfHits = numberOfHitsSharedWithThisTrack;
1234 mostOverlappingTrack =
it->first;
1235 indexOfFirstOverlappingHit =
it->second;
1239 if(!mostOverlappingTrack) {
return false; }
1242 if(mostOverlappingNumberOfHits < 2) {
return false; }
1243 if(mostOverlappingNumberOfHits < trackHitDetails.m_numShared) {
return false; }
1247 auto tpPair =
getOverlapTrackParameters(indexOfFirstOverlappingHit, ptrTrack, mostOverlappingTrack, prd_to_track_map, trackHitDetails.m_numSplitSharedPix );
1250 if (tpPair.first && tpPair.second) {
1265 else if ( trackHitDetails.m_isPatternTrack ) {
1269 ATH_MSG_DEBUG (
"Possible photon conversion - for pattern track");
1276 ATH_MSG_DEBUG (
"Number of unused SCT hits: " << trackHitDetails.m_numSCT_Unused);
1278 trackHitDetails.dumpInfo();
1280 ATH_MSG_DEBUG (
"Track "<< mostOverlappingTrack <<
" shares " << mostOverlappingNumberOfHits );
◆ performHadDecayCheck()
Specific logic for identifing boosted light particle decays in jet topologies (tau and b), with the goal of passing those tracks through to the final collection with as little loss as possible.
Definition at line 1293 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
1302 if ( trackHitDetails.m_numPixelHoles + trackHitDetails.m_numSCTHoles >= 2) {
return false; }
1305 const Trk::Track* mostOverlappingTrack(
nullptr);
1306 int mostOverlappingNumberOfHits(0);
1307 int indexOfFirstOverlappingHit(0);
1309 end = tsosDetails.m_overlappingTracks.end();
it !=
end;
1310 it = tsosDetails.m_overlappingTracks.upper_bound(
it->first) ) {
1311 int numberOfHitsSharedWithThisTrack =
std::distance(
it, tsosDetails.m_overlappingTracks.upper_bound(
it->first));
1312 ATH_MSG_DEBUG(
it->first <<
" shares " << numberOfHitsSharedWithThisTrack <<
" hits with this track " );
1313 if (mostOverlappingNumberOfHits < numberOfHitsSharedWithThisTrack){
1314 mostOverlappingNumberOfHits = numberOfHitsSharedWithThisTrack;
1315 mostOverlappingTrack =
it->first;
1316 indexOfFirstOverlappingHit =
it->second;
1320 if(!mostOverlappingTrack) {
return false; }
1323 if(mostOverlappingNumberOfHits < 2) {
return false; }
1324 if(mostOverlappingNumberOfHits < trackHitDetails.m_numShared) {
return false; }
1328 auto tpPair =
getOverlapTrackParameters(indexOfFirstOverlappingHit, ptrTrack, mostOverlappingTrack, prd_to_track_map, trackHitDetails.m_numSplitSharedPix );
1331 if (tpPair.first && tpPair.second) {
1344 else if ( trackHitDetails.m_isPatternTrack ) {
1348 ATH_MSG_DEBUG (
"Possible boosted decay - for pattern track");
1355 ATH_MSG_DEBUG (
"Number of unused SCT hits: " << trackHitDetails.m_numSCT_Unused);
1357 trackHitDetails.dumpInfo();
1359 ATH_MSG_DEBUG (
"Track "<< mostOverlappingTrack <<
" shares " << mostOverlappingNumberOfHits );
◆ rejectHit()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::rejectHit |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails, |
|
|
int |
index |
|
) |
| |
|
inlinestaticprivate |
◆ rejectHitOverUse()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::rejectHitOverUse |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails, |
|
|
int |
index |
|
) |
| |
|
inlinestaticprivate |
◆ rejectSharedHit()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::rejectSharedHit |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails, |
|
|
int |
index |
|
) |
| |
|
inlinestaticprivate |
◆ rejectSharedHitInvalid()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::rejectSharedHitInvalid |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails, |
|
|
int |
index |
|
) |
| |
|
inlinestaticprivate |
◆ setPixelClusterSplitInformation()
◆ sharedToSplitPix()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::sharedToSplitPix |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails, |
|
|
int |
index |
|
) |
| |
|
inlinestaticprivate |
◆ updateSharedForCollimated()
void InDet::InDetDenseEnvAmbiTrackSelectionTool::updateSharedForCollimated |
( |
TrackHitDetails & |
trackHitDetails, |
|
|
TSoS_Details & |
tsosDetails |
|
) |
| const |
|
private |
Handle update of the shared hit counts if either a conversion or a dense hadronic decay was identified using one of the methods above.
Definition at line 1366 of file InDetDenseEnvAmbiTrackSelectionTool.cxx.
1371 trackHitDetails.m_numSplitSharedPix = 0;
1372 trackHitDetails.m_numSplitSharedSCT = 0;
1373 trackHitDetails.m_numShared = 0;
1374 trackHitDetails.m_numSCT_Shared = 0;
1375 trackHitDetails.m_numWeightedShared = 0;
1377 trackHitDetails.m_hasSharedIBLHit =
false;
1378 trackHitDetails.m_hasSharedPixel =
false;
1381 int noUpdatedPixels = 0;
1385 if ( noUpdatedPixels < 1 && tsosDetails.m_detType[
index]==1 && tsosDetails.m_type[
index] ==
SharedHit ){
1391 ++trackHitDetails.m_numSplitSharedPix;
1399 ++trackHitDetails.m_numSplitSharedSCT;
1407 (tsosDetails.m_detType[
index]%10 == 1),
1408 (tsosDetails.m_detType[
index]%10 == 2) );
1411 if (tsosDetails.m_detType[
index] == 11){
1412 trackHitDetails.m_hasSharedIBLHit =
true;
1413 }
else if ( tsosDetails.m_detType[
index] == 1 ){
1414 trackHitDetails.m_hasSharedPixel =
true;
◆ ATLAS_THREAD_SAFE
◆ m_assoTool
◆ m_cosmics
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_cosmics {this, "Cosmics", false, "Trying to reco cosmics?"} |
|
private |
◆ m_detID
const SiliconID* InDet::InDetDenseEnvAmbiTrackSelectionTool::m_detID {nullptr} |
|
private |
◆ m_doPairSelection
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_doPairSelection {this, "doPairSelection", true} |
|
private |
◆ m_doPixelClusterSplitting
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_doPixelClusterSplitting {this, "doPixelSplitting", false, "Split pixel clusters"} |
|
private |
◆ m_etaDependentCutsSvc
◆ m_etaWidth
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_etaWidth {this, "etaWidth", 0.2} |
|
private |
◆ m_etaWidthEm
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_etaWidthEm {this, "etaWidthEM", 0.05} |
|
private |
◆ m_inputEmClusterContainerName
◆ m_inputHadClusterContainerName
◆ m_maxPixMultiCluster
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_maxPixMultiCluster {this, "maxPixMultiCluster", 4, "Max number of tracks that can be associated to a >= 3 particle cluster"} |
|
private |
◆ m_maxPixOnePartCluster
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_maxPixOnePartCluster {this, "maxPixOnePartCluster", 2, "Max number of tracks that can be associated to a 1 particle cluster"} |
|
private |
◆ m_maxPixTwoPartCluster
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_maxPixTwoPartCluster {this, "maxPixTwoPartCluster", 2, "Max number of tracks that can be associated to a 2 particle cluster"} |
|
private |
◆ m_maxSharedModules
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_maxSharedModules {this, "maxShared", 1, "Max number of shared modules"} |
|
private |
◆ m_maxTracksPerPRD
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_maxTracksPerPRD {this, "maxTracksPerSharedPRD", 2, "Max number of tracks per hit. When NN is used, other flags set the limits."} |
|
private |
◆ m_minHits
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minHits {this, "minHits", 5, "Min Number of hits on track"} |
|
private |
◆ m_minNotSharedHits
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minNotSharedHits {this, "minNotShared", 6, "Min number of non shared hits"} |
|
private |
◆ m_minPairTrackPt
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minPairTrackPt {this, "minPairTrackPt", 1000., "In MeV"} |
|
private |
◆ m_minPixHitAccepted
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minPixHitAccepted {this, "minPixHitAccepted", 2, "Min number of pixel hits needed to be allowed to push accepted tracks over shared module limits"} |
|
private |
◆ m_minPtBjetROI
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minPtBjetROI {this, "minPtBjetROI", 15000., "in MeV"} |
|
private |
◆ m_minPtSplit
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minPtSplit {this, "minPtSplit", 0.} |
|
private |
◆ m_minScoreShareTracks
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minScoreShareTracks {this, "minScoreShareTracks", 0.0, "Min track score to alow it to share hits"} |
|
private |
◆ m_minSiHitsToAllowSplitting
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minSiHitsToAllowSplitting {this, "minSiHitsToAllowSplitting", 9, "Min number of hits before we allow split sharing of hits"} |
|
private |
◆ m_minTrackChi2ForSharedHits
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minTrackChi2ForSharedHits {this, "minTrackChi2ForSharedHits", 3, "Min track chi2 to split share hits"} |
|
private |
◆ m_minTRT_Hits
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minTRT_Hits {this, "minTRTHits", 0, "Min Number of TRT hits on track"} |
|
private |
◆ m_minUniqueSCTHits
IntegerProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_minUniqueSCTHits {this, "minUniqueSCTHits", 2, "Min number of hits in the SCT that we need before we allow hit sharing in the SCT"} |
|
private |
◆ m_monitorTracks
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_monitorTracks {this, "MonitorAmbiguitySolving", false, "to track observeration/monitoring (default is false)"} |
|
private |
◆ m_mutex
std::mutex InDet::InDetDenseEnvAmbiTrackSelectionTool::m_mutex |
|
mutableprivate |
◆ m_observerTool
PublicToolHandle<Trk::ITrkObserverTool> InDet::InDetDenseEnvAmbiTrackSelectionTool::m_observerTool {this, "ObserverTool", "", "track observer within ambiguity solver"} |
|
private |
◆ m_parameterization
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_parameterization {this, "UseParameterization", true, "Use table of min number DCs"} |
|
private |
◆ m_phiWidth
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_phiWidth {this, "phiWidth", 0.2} |
|
private |
◆ m_phiWidthEm
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_phiWidthEm {this, "phiWidthEM", 0.05} |
|
private |
◆ m_selectortool
◆ m_sharedProbCut
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_sharedProbCut {this, "sharedProbCut", 0.3, "Min split prob to break a cluster into two parts"} |
|
private |
◆ m_sharedProbCut2
FloatProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_sharedProbCut2 {this, "sharedProbCut2", 0.3, "Min split prob to break a clsuter into three parts"} |
|
private |
◆ m_shareSplitHits
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_shareSplitHits {this, "shareSplitHits", false, "Allow shared hits to be shared on 1 more track"} |
|
private |
◆ m_skipAmbiInROI
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_skipAmbiInROI {this, "doSkipAmbiInROI", false} |
|
private |
◆ m_useEmClusSeed
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_useEmClusSeed {this, "doEmCaloSeed", false} |
|
private |
◆ m_useHClusSeed
BooleanProperty InDet::InDetDenseEnvAmbiTrackSelectionTool::m_useHClusSeed {this, "doHadCaloSeed", false} |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
bool is_pixel(Identifier id) const
@ numberOfPixelHits
number of pixel layers on track with absence of hits
@ subtrackCreatedWithRecoveredShared
Contains information about the 'fitter' of this track.
Const iterator class for DataVector/DataList.
const FitQuality * fitQuality() const
return a pointer to the fit quality const-overload
@ sharedPixelSharedWithDifferentIBLTrack
@ tooManySharedNonRecoverable
PrepRawDataTrackMapRange onTracks(const PrepRawData &prd)
get the Tracks associated with this PrepRawData.
bool is_sct(Identifier id) const
const Amg::Vector3D & position() const
Access method for the position.
@ numberOfSCTDeadSensors
number of TRT hits
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
const TrackInfo & info() const
Returns a const ref to info of a const tracks.
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
@ sharedHitsNotEnoughUniqueHits
virtual bool type(PrepRawDataType type) const =0
Interface method checking the type.
@ pixelSplitButTooManyShared3Ptc
@ tooManySharedRecoverable
bool is_trt(Identifier id) const
#define ATH_MSG_VERBOSE(x)
@ InDetAmbiTrackSelectionTool
Added because of compilation problems.
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
bool is_blayer(const Identifier &id) const
Test for pixle b-layer - generic, i.e. works for EITHER pixel or sct id.
@ firstHitSharedAndExtraShared
void addPatternReco(const TrackInfo &)
A method adding just pattern recognition info without adding the actual properties.
@ pixelSplitButTooManyShared2Ptc
@ tooManySharedAfterIncreasingShared
@ numberOfSCTHits
number of SCT holes
@ numberOfPixelDeadSensors
number of pixel hits with broad errors (width/sqrt(12))
virtual bool type(MeasurementBaseType::Type type) const =0
Interface method checking the type.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
void setSplit(bool split)
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
bool isIBL(uint32_t robId)
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.
const Perigee * perigeeParameters() const
return Perigee.
represents the track state (measurement, material, fit parameters and quality) at a surface.
A summary of the information contained by a track.
bool is_indet(Identifier id) const
@ sharedHitsNotEnoughUniqueSiHits
@ firstHitSharedAndPixIBL
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
bool isTooBigToBeSplit() const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const Amg::Vector3D & momentum() const
Access method for the momentum.
#define ATH_MSG_WARNING(x)
const Trk::TrackSummary * trackSummary() const
Returns a pointer to the const Trk::TrackSummary owned by this const track (could be nullptr)
Identifier identify() const
return the identifier -extends MeasurementBase
@ PseudoMeasurementOnTrack
double chiSquared() const
returns the of the overall track fit
double eta() const
Access method for pseudorapidity - from momentum.
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
float splitProbability1() const
const ProbabilityInfo & splitProbability(const PrepRawData *cluster) const
void setPatternRecognitionInfo(const TrackPatternRecoInfo &patternReco)
Method setting the pattern recognition algorithm.
int get(const SummaryType &type) const
returns the summary information for the passed SummaryType.
const TrackFitter & trackFitter() const
Access methods for track fitter.
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
size_type size() const noexcept
Returns the number of elements in the collection.
bool isShared(const PrepRawData &prd) const
does this PRD belong to more than one track?
float splitProbability2() const
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
std::pair< PrepRawDataTrackMap::const_iterator, PrepRawDataTrackMap::const_iterator > ConstPrepRawDataTrackMapRange
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
@ sharedIBLSharedWithNoIBLTrack
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
@ Unknown
Track fitter not defined.