Skip to content
Snippets Groups Projects

Document Si track extension - first batch

Merged Maximilian Emanuel Goblirsch-Kolb requested to merge docTrackMaker into master
All threads resolved!
1 file
+ 20
5
Compare changes
  • Side-by-side
  • Inline
@@ -670,7 +670,9 @@ std::list<Trk::Track*> InDet::SiTrackMaker_xk::getTracks
@@ -670,7 +670,9 @@ std::list<Trk::Track*> InDet::SiTrackMaker_xk::getTracks
const Trk::TrackParameters* Tp = nullptr;
const Trk::TrackParameters* Tp = nullptr;
if (data.dbm()) Tp = getAtaPlaneDBM(fieldCache, data, Sp);
if (data.dbm()) Tp = getAtaPlaneDBM(fieldCache, data, Sp);
else Tp = getAtaPlane(fieldCache, data, false, Sp);
else Tp = getAtaPlane(fieldCache, data, false, Sp);
/// if we failed to get the initial parameters, we bail out
/// if we failed to get the initial parameters, we bail out.
 
/// Can happen in certain pathological cases (e.g. malformed strip hits),
 
/// or if we would be running with calo-ROI strip seeds (we aren't)
if (!Tp) {
if (!Tp) {
++data.summaryStatAll()[kTotalNoTrackPar][K];
++data.summaryStatAll()[kTotalNoTrackPar][K];
return tracks;
return tracks;
@@ -686,42 +688,55 @@ std::list<Trk::Track*> InDet::SiTrackMaker_xk::getTracks
@@ -686,42 +688,55 @@ std::list<Trk::Track*> InDet::SiTrackMaker_xk::getTracks
if (!m_cosmicTrack) m_roadmaker->detElementsRoad(ctx, fieldCache, *Tp,Trk::alongMomentum, DE);
if (!m_cosmicTrack) m_roadmaker->detElementsRoad(ctx, fieldCache, *Tp,Trk::alongMomentum, DE);
else m_roadmaker->detElementsRoad(ctx, fieldCache, *Tp,Trk::oppositeMomentum,DE);
else m_roadmaker->detElementsRoad(ctx, fieldCache, *Tp,Trk::oppositeMomentum,DE);
 
/// if we don't use all of pix and SCT, filter our list, erasing any that don't fit our requirements
if (!data.pix() || !data.sct() || data.dbm()) detectorElementsSelection(data, DE);
if (!data.pix() || !data.sct() || data.dbm()) detectorElementsSelection(data, DE);
 
/// if we did not find sufficient detector elements to fulfill the minimum cluster requirement,
 
/// bail out. We will not be able to build a track satisfying the cuts.
if ( static_cast<int>(DE.size()) < m_nclusmin) {
if ( static_cast<int>(DE.size()) < m_nclusmin) {
delete Tp;
delete Tp;
return tracks;
return tracks;
}
}
 
/// update statistics tables - we have sufficient detector elements to have a chance of finding a track!
data.summaryStatAll()[kDESize][K] += double(DE.size());
data.summaryStatAll()[kDESize][K] += double(DE.size());
++data.summaryStatAll()[kTotalUsedSeeds][K];
++data.summaryStatAll()[kTotalUsedSeeds][K];
 
/// prepare a list of global positions
std::list<Amg::Vector3D> Gp;
std::list<Amg::Vector3D> Gp;
 
/// update another counter
++data.summaryStatUsedInTrack()[kUsedSeedsEta][K][r];
++data.summaryStatUsedInTrack()[kUsedSeedsEta][K][r];
// Find possible list of tracks using space points space points information
/// Find possible list of tracks using space points space points information
//
///
if (!m_useBremModel) {
if (!m_useBremModel) {
tracks = m_tracksfinder->getTracks (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack());
tracks = m_tracksfinder->getTracks (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack());
} else if (!m_useCaloSeeds) {
} else if (!m_useCaloSeeds) {
++data.summaryStatAll()[kTotalBremSeeds][K];
++data.summaryStatAll()[kTotalBremSeeds][K];
tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), false);
tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), false);
} else if (isCaloCompatible(data)) {
}
 
/// Note: The branch below is the one taken in ATLAS default inside-out tracking for run-3
 
else if (isCaloCompatible(data)) {
++data.summaryStatAll()[kTotalBremSeeds][K];
++data.summaryStatAll()[kTotalBremSeeds][K];
tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), true);
tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), true);
} else {
} else {
tracks = m_tracksfinder->getTracks (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack());
tracks = m_tracksfinder->getTracks (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack());
}
}
std::array<bool,SiCombinatorialTrackFinderData_xk::kNCombStats> inf{0,0,0,0,0,0}; m_tracksfinder->fillStatistic(data.combinatorialData(),inf);
/// update stat tables
 
std::array<bool,SiCombinatorialTrackFinderData_xk::kNCombStats> inf{0,0,0,0,0,0};
 
m_tracksfinder->fillStatistic(data.combinatorialData(),inf);
for (size_t p =0; p<inf.size(); ++p){
for (size_t p =0; p<inf.size(); ++p){
if(inf[p]) ++data.summaryStatAll()[m_indexToEnum[p]][K];
if(inf[p]) ++data.summaryStatAll()[m_indexToEnum[p]][K];
}
}
 
/// update the cluster-track-map to allow to filter any
 
/// upcoming seeds with hits that are already taken
if (m_seedsfilter) {
if (m_seedsfilter) {
std::list<Trk::Track*>::iterator t = tracks.begin();
std::list<Trk::Track*>::iterator t = tracks.begin();
while (t!=tracks.end()) {
while (t!=tracks.end()) {
 
/// require sufficient free clusters on track
if (!isNewTrack(data, *t)) {
if (!isNewTrack(data, *t)) {
delete (*t);
delete (*t);
tracks.erase(t++);
tracks.erase(t++);
Loading