Commit e2b08657 authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'refactor/hole_search_use_bounds_check' into 'master'

Adapt InDetTrackHoleSearch to use InDetBoundaryCheckTool

See merge request !35171
parents fa404f92 53fe66cb
......@@ -228,14 +228,20 @@ InDetPrdAssociationTool = InDet__InDetPRD_AssociationToolGangedPixels(name
ToolSvc += InDetPrdAssociationTool
if InDetFlags.doPrintConfigurables:
printfunc ( InDetPrdAssociationTool)
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
InDetBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="InDetBoundaryCheckTool",
UsePixel=DetFlags.haveRIO.pixel_on(),
UseSCT=DetFlags.haveRIO.SCT_on()
)
ToolSvc += InDetBoundaryCheckTool
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool",
Extrapolator = InDetExtrapolator,
usePixel = DetFlags.haveRIO.pixel_on(),
useSCT = DetFlags.haveRIO.SCT_on())
InDetHoleSearchTool.SctSummaryTool = None
BoundaryCheckTool=InDetBoundaryCheckTool)
ToolSvc += InDetHoleSearchTool
if InDetFlags.doPrintConfigurables:
printfunc ( InDetHoleSearchTool)
......
......@@ -839,6 +839,27 @@ def_InDetSCT_ConditionsSummaryTool=None
def getInDetSCT_ConditionsSummaryTool() :
return def_InDetSCT_ConditionsSummaryTool
@makePublicTool
def getInDetBoundaryCheckTool(name="InDetBoundarySearchTool", **kwargs):
the_name = makeName(name, kwargs)
from AthenaCommon.DetFlags import DetFlags
from InDetRecExample.InDetJobProperties import InDetFlags
if 'SctSummaryTool' not in kwargs :
kwargs = setDefaults( kwargs, SctSummaryTool = getInDetSCT_ConditionsSummaryTool() if DetFlags.haveRIO.SCT_on() else None)
if 'PixelLayerTool' not in kwargs :
kwargs = setDefaults( kwargs, PixelLayerTool = getInDetTestPixelLayerTool())
kwargs = setDefaults(
kwargs,
UsePixel=DetFlags.haveRIO.pixel_on(),
UseSCT=DetFlags.haveRIO.SCT_on(),
)
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
return InDet__InDetBoundaryCheckTool(name=the_name, **kwargs)
@makePublicTool
def getInDetHoleSearchTool(name = 'InDetHoleSearchTool', **kwargs) :
the_name = makeName( name, kwargs)
......@@ -848,18 +869,13 @@ def getInDetHoleSearchTool(name = 'InDetHoleSearchTool', **kwargs) :
if 'Extrapolator' not in kwargs :
kwargs = setDefaults( kwargs, Extrapolator = getInDetExtrapolator())
if 'SctSummaryTool' not in kwargs :
kwargs = setDefaults( kwargs, SctSummaryTool = getInDetSCT_ConditionsSummaryTool() if DetFlags.haveRIO.SCT_on() else None)
if 'PixelLayerTool' not in kwargs :
kwargs = setDefaults( kwargs, PixelLayerTool = getInDetTestPixelLayerTool())
if 'BoundaryCheckTool' not in kwargs :
kwargs = setDefaults( kwargs, BoundaryCheckTool= getInDetBoundaryCheckTool())
if InDetFlags.doCosmics :
kwargs = setDefaults( kwargs, Cosmics = True)
kwargs = setDefaults( kwargs,
usePixel = DetFlags.haveRIO.pixel_on(),
useSCT = DetFlags.haveRIO.SCT_on(),
CountDeadModulesAfterLastHit = True)
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
......
......@@ -664,6 +664,16 @@ if InDetTrigFlags.loadSummaryTool():
if (InDetTrigFlags.doPrintConfigurables()):
print ( InDetTrigTestPixelLayerTool)
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
InDetTrigBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="InDetTrigBoundaryCheckTool",
UsePixel=DetFlags.haveRIO.pixel_on(),
UseSCT=DetFlags.haveRIO.SCT_on(),
SctSummaryTool = InDetTrigSCTConditionsSummaryTool,
PixelLayerTool=InDetTrigTestPixelLayerTool
)
ToolSvc += InDetTrigBoundaryCheckTool
#
# Loading Configurable HoleSearchTool
......@@ -672,10 +682,7 @@ if InDetTrigFlags.loadSummaryTool():
InDetTrigHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetTrigHoleSearchTool",
Extrapolator = InDetTrigExtrapolator,
usePixel = DetFlags.haveRIO.pixel_on(),
useSCT = DetFlags.haveRIO.SCT_on(),
SctSummaryTool = InDetTrigSCTConditionsSummaryTool,
PixelLayerTool=InDetTrigTestPixelLayerTool,
BoundaryCheckTool=InDetTrigBoundaryCheckTool
)
#Commissioning = InDetTrigFlags.doCommissioning()) #renamed
InDetTrigHoleSearchTool.CountDeadModulesAfterLastHit = True
......
......@@ -75,12 +75,17 @@ def TrackSummaryToolWorkaround(flags):
CheckDeadRegions=True,
CheckDisabledFEs=True)
result.addPublicTool(InDetTestPixelLayerTool)
InDetBoundaryCheckTool = CompFactory.InDet.InDetBoundaryCheckTool(
name="InDetBoundaryCheckTool",
UsePixel=flags.Detector.GeometryPixel,
UseSCT=flags.Detector.GeometrySCT,
PixelLayerTool=InDetTestPixelLayerTool
)
result.addPublicTool(InDetBoundaryCheckTool)
InDetHoleSearchTool = CompFactory.InDet.InDetTrackHoleSearchTool(name = "InDetHoleSearchTool",
Extrapolator = InDetExtrapolator,
usePixel = flags.Detector.GeometryPixel,
useSCT = flags.Detector.GeometrySCT,
CountDeadModulesAfterLastHit = True,
PixelLayerTool = InDetTestPixelLayerTool)
BoundaryCheckTool=InDetBoundaryCheckTool)
result.addPublicTool(InDetHoleSearchTool)
InDetPrdAssociationTool = CompFactory.InDet.InDetPRD_AssociationToolGangedPixels(name = "InDetPrdAssociationTool",
PixelClusterAmbiguitiesMapName = "PixelClusterAmbiguitiesMap",
......
......@@ -143,14 +143,22 @@ InDetSCT_FlaggedConditionTool = sct_FlaggedConditionToolSetup.getTool()
SCTHitEffMonTool.FlaggedConditionTool = InDetSCT_FlaggedConditionTool
SCTHitEffMonTool.ChronoTime = False
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
SCT_MonBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="SCT_MonBoundaryCheckTool",
SctSummaryTool=SCT_MonConditionsSummaryTool
)
ToolSvc += SCT_MonBoundaryCheckTool
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
SCT_MonHoleSearch = InDet__InDetTrackHoleSearchTool(name ="SCT_MonHoleSearch",
Extrapolator = InDetExtrapolator,
ExtendedListOfHoles = True,
Cosmics =InDetFlags.doCosmics(),
SctSummaryTool=SCT_MonConditionsSummaryTool)
BoundaryCheckTool=SCT_MonBoundaryCheckTool)
ToolSvc += SCT_MonHoleSearch
if (InDetFlags.doPrintConfigurables()):
print SCT_MonHoleSearch
......
......@@ -66,15 +66,15 @@ namespace InDet {
const AtlasDetectorID *m_atlasId;
/** eta and phi tolerances **/
Gaudi::Property<double> m_etaTol = 3.0;
Gaudi::Property<double> m_phiTol = 3.0;
Gaudi::Property<double> m_etaTol{this, "ToleranceEta", 3.0};
Gaudi::Property<double> m_phiTol{this, "TolerancePhi", 3.0};
/** Control usage of pixel and SCT info */
Gaudi::Property<bool> m_usePixel;
Gaudi::Property<bool> m_useSCT;
Gaudi::Property<bool> m_usePixel{this, "UsePixel", true};
Gaudi::Property<bool> m_useSCT{this, "UseSCT", true};
/** Control check of bad SCT chip (should be false for ITk Strip) */
Gaudi::Property<bool> m_checkBadSCT;
Gaudi::Property<bool> m_checkBadSCT{this, "CheckBadSCT", true};
};
}
......
......@@ -13,6 +13,7 @@
#include "GaudiKernel/ToolHandle.h"
#include "GaudiKernel/ServiceHandle.h"
#include "TrkToolInterfaces/ITrackHoleSearchTool.h"
#include "TrkToolInterfaces/IBoundaryCheckTool.h"
#include "TrkEventPrimitives/ParticleHypothesis.h"
#include "InDetConditionsSummaryService/IInDetConditionsTool.h"
#include "TrkParameters/TrackParameters.h"
......@@ -111,33 +112,22 @@ namespace InDet
/** Pointer to Extrapolator AlgTool*/
ToolHandle< Trk::IExtrapolator > m_extrapolator;
/** Handles to IConditionsSummaryTools for Pixels and SCT*/
ToolHandle <IInDetConditionsTool> m_sctCondSummaryTool{this, "SctSummaryTool", "SCT_ConditionsSummaryTool/InDetSCT_ConditionsSummaryTool", "Tool to retrieve SCT Conditions summary"};
ToolHandle< IInDetTestPixelLayerTool > m_pixelLayerTool;
/** Handle for IGeoModelSvc to retrieve geo model information */
ServiceHandle<IGeoModelSvc> m_geoModelSvc;
ToolHandle<Trk::IBoundaryCheckTool> m_boundaryCheckTool {
this,
"BoundaryCheckTool",
"InDet::InDetBoundaryCheckTool",
"Boundary checking tool for detector sensitivities"
};
/** Configure outwards hole search */
bool m_extendedListOfHoles,m_cosmic;
/** Control usage of pixel, SCT and TRT info */
bool m_usepix, m_usesct;
/** Control check of bad SCT chip (should be false for ITk Strip) */
bool m_checkBadSCTChip;
/** Min number of hits **/
int m_minSiHits;
/* searching for dead modules after the last measurement (needed for robustness of SW)*/
bool m_countDeadModulesAfterLastHit;
/** eta and phi tolerances **/
float m_etatol, m_phitol;
/** number of warnings printed when no track parameters available **/
mutable std::atomic_int m_warning;
......@@ -169,19 +159,10 @@ namespace InDet
*/
const Trk::TrackStateOnSurface* createHoleTSOS(const Trk::TrackParameters* trackPar) const;
/** This method returns true, if the detector element the input parameters correspond to is sensitive detector material,
otherwise it returns false.
*/
bool isSensitive(const Trk::TrackParameters* parameters, bool &isgood) const ;
/** This Method creates a new Track from the TSOS of the input track combined with the TSOS from listOfHoles
*/
const Trk::Track* addHolesToTrack(const Trk::Track& oldTrack,
std::vector<const Trk::TrackStateOnSurface*>* listOfHoles) const;
/** This method checks the SCT ABCD chip and SCT strip where the track passes through is bad or not */
bool isBadSCTChipStrip(const Identifier& waferId, const Trk::TrackParameters& parameters, const InDetDD::SiDetectorElement& siElement) const;
};
} // end of namespace
......
......@@ -36,27 +36,15 @@ InDet::InDetTrackHoleSearchTool::InDetTrackHoleSearchTool(const std::string& t,
AthAlgTool(t,n,p),
m_atlasId(nullptr),
m_extrapolator("Trk::Extrapolator"),
m_pixelLayerTool("InDet::InDetTestPixelLayerTool"),
m_geoModelSvc("GeoModelSvc", n),
m_extendedListOfHoles(false),
m_cosmic(false),
m_usepix(true),
m_usesct(true),
m_checkBadSCTChip(true),
m_warning(0) {
declareInterface<ITrackHoleSearchTool>(this);
declareProperty("Extrapolator" , m_extrapolator);
declareProperty("PixelLayerTool" , m_pixelLayerTool);
declareProperty("GeoModelService" , m_geoModelSvc);
declareProperty("ExtendedListOfHoles" , m_extendedListOfHoles = false);
declareProperty("Cosmics" , m_cosmic);
declareProperty("usePixel" , m_usepix);
declareProperty("useSCT" , m_usesct);
declareProperty("checkBadSCTChip" , m_checkBadSCTChip);
declareProperty("minSiHits" , m_minSiHits = 3);
declareProperty("CountDeadModulesAfterLastHit", m_countDeadModulesAfterLastHit = true);
declareProperty("phitol" , m_phitol = 3.);
declareProperty("etatol" , m_etatol = 3.);
}
//================ Destructor =================================================
......@@ -75,30 +63,6 @@ StatusCode InDet::InDetTrackHoleSearchTool::initialize() {
ATH_CHECK(m_extrapolator.retrieve());
ATH_MSG_INFO("Retrieved tool " << m_extrapolator);
if (m_usepix) {
// Get InDetPixelLayerTool from ToolService
ATH_CHECK(m_pixelLayerTool.retrieve());
ATH_MSG_INFO("Retrieved tool " << m_pixelLayerTool);
}
if (m_usesct) {
// Get SctConditionsSummaryTool
ATH_CHECK(m_sctCondSummaryTool.retrieve());
ATH_MSG_INFO("Retrieved tool " << m_sctCondSummaryTool);
} else {
m_sctCondSummaryTool.disable();
}
if (m_checkBadSCTChip) {
// Check if ITk Strip is used because isBadSCTChipStrip method is valid only for SCT.
ATH_CHECK(m_geoModelSvc.retrieve());
if (m_geoModelSvc->geoConfig()==GeoModel::GEO_RUN4 or
m_geoModelSvc->geoConfig()==GeoModel::GEO_ITk) {
ATH_MSG_WARNING("Since ITk Strip is used, m_checkBadSCTChip is turned off.");
m_checkBadSCTChip = false;
}
}
if (m_extendedListOfHoles) ATH_MSG_INFO("Search for extended list of holes ");
ATH_MSG_INFO("initialize() successful in " << name());
......@@ -628,24 +592,24 @@ void InDet::InDetTrackHoleSearchTool::performHoleSearchStepWise(std::map<const I
std::map<const Identifier, const Trk::TrackStateOnSurface*>::iterator iTSOS = mapOfHits.find(id);
if (iTSOS == mapOfHits.end()) {
bool isgood = true;
if (!isSensitive(nextParameters, isgood)) {
if (isgood) ATH_MSG_VERBOSE("Extrapolation not in sensitive area, ignore and continue");
if (!isgood) {
switch (m_boundaryCheckTool->boundaryCheck(*nextParameters)) {
case Trk::BoundaryCheckResult::DeadElement:
if (m_atlasId->is_pixel(id)) {
ATH_MSG_VERBOSE("Found element is a dead pixel module, add it to the list and continue");
++PixelDead;
} else if (m_atlasId->is_sct(id)) {
ATH_MSG_VERBOSE("Found element is a dead SCT module, add it to the list and continue");
++SctDead;
}
}
continue;
}
case Trk::BoundaryCheckResult::Insensitive:
case Trk::BoundaryCheckResult::Error:
continue;
case Trk::BoundaryCheckResult::Candidate:
break;
}
// increment tmp counters only if this detElement should be considered for a proper holesearch
// this info is the boolean in the (mapOfPredictions->second).second
if (((it->second).second)) {
......@@ -741,112 +705,6 @@ void InDet::InDetTrackHoleSearchTool::performHoleSearchStepWise(std::map<const I
return;
}
// ====================================================================================================================
bool InDet::InDetTrackHoleSearchTool::isSensitive(const Trk::TrackParameters* parameters, bool &isgood) const {
// do strict boundary check for SCT and Pixels to make sure we are in active area
if (!parameters ||
!parameters->associatedSurface().associatedDetectorElement()) return false;
const InDetDD::SiDetectorElement* siElement =
dynamic_cast<const InDetDD::SiDetectorElement*> (parameters->associatedSurface().associatedDetectorElement());
if (siElement == nullptr) {
// ------- in dubio pro reo --> return false (is assumed insensitive)
ATH_MSG_DEBUG("TrackParameters do not belong to a Si Element");
return false;
}
double phitol;
double etatol;
if (parameters->covariance()) {
phitol = m_phitol * sqrt((*parameters->covariance())(Trk::locX,Trk::locX));
etatol = m_etatol * sqrt((*parameters->covariance())(Trk::locY,Trk::locY));
} else {
phitol = 2.5;
etatol = 5.0;
}
// not on bond gap within tolerance
if (siElement->nearBondGap(parameters->localPosition(), etatol)) {
ATH_MSG_VERBOSE("---> extrapolation on bond gap within " << etatol << ", return");
return false;
}
bool isActiveElement = true;
// inside detector within tolerance
InDetDD::SiIntersect siIn = siElement->inDetector(parameters->localPosition(), phitol, etatol);
if (!siIn.in()) {
ATH_MSG_VERBOSE("---> extrapolation not inside (active?) det"
<< "ector within "<<phitol<<" "<<etatol<<", but check for dead module anyway");
isActiveElement=false;
}
// errors might be too big (especially for track seeds or short tracks)
// check for dead modules if extrapolation with smaller errors are in active detector (2.5 5.)
if (!isActiveElement) {
if (phitol>2.5 || etatol>5) {
siIn = siElement->inDetector(parameters->localPosition(), 2.5, 5.);
if (!siIn.in()) {
ATH_MSG_VERBOSE("extrapolation too close to inactive detector; abort search for dead module");
return false;
}
} else {
ATH_MSG_VERBOSE("extrapolation precise enough and too close to inactive detector; abort search for dead module");
return false;
}
}
Identifier id = siElement->identify();
IdentifierHash idHash = siElement->identifyHash();
// check if it is a dead module using conditions services !
if (m_atlasId->is_pixel(id)) {
if (m_usepix) {
ATH_MSG_VERBOSE("Found element is a Pixel module without a hit, see if it might be dead");
isgood=m_pixelLayerTool->expectHit(parameters);
if (isgood) {
// this detElement is only cosidered as hole if the extrapolation of
// the track plus its error hits the active material
if (isActiveElement) {
ATH_MSG_VERBOSE("Pixel module is good, this is a hole canditate !");
return true;
}
} else {
ATH_MSG_VERBOSE("Track is hitting a bad Pixel module, this is not a hole candidate!");
return false;
}
}
} else if (m_atlasId->is_sct(id)) {
if (m_usesct) {
ATH_MSG_VERBOSE("Found element is a SCT module without a hit, see if it might be dead");
isgood=m_sctCondSummaryTool->isGood(idHash);
if (isgood) {
// this detElement is only cosidered as hole if the extrapolation of
// the track plus its error hits the active material
if (isActiveElement) {
if (m_checkBadSCTChip and isBadSCTChipStrip(id, *parameters, *siElement)) {
ATH_MSG_VERBOSE("Track is hiting a bad SCT chip, this is not a hole candidate!");
isgood = false;
return false;
}
ATH_MSG_VERBOSE("SCT module is good, this is a hole candidate !");
return true;
}
} else {
ATH_MSG_VERBOSE("Track is hiting a bad SCT module, this is not a hole candidate!");
return false;
}
}
} else {
ATH_MSG_WARNING("unknown identifier type, this should not happen !");
return false;
}
// the extrapolation of the track plus its error might not
// be inside the active detector for a good module
return false;
}
// ====================================================================================================================
const Trk::TrackStateOnSurface* InDet::InDetTrackHoleSearchTool::createHoleTSOS(const Trk::TrackParameters* trackPar) const {
std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
......@@ -910,32 +768,3 @@ const Trk::Track* InDet::InDetTrackHoleSearchTool::addHolesToTrack(const Trk::T
return newTrack;
}
// ====================================================================================================================
bool InDet::InDetTrackHoleSearchTool::isBadSCTChipStrip(const Identifier& waferId,
const Trk::TrackParameters& parameters,
const InDetDD::SiDetectorElement& siElement) const {
// Check if the track passes through a bad SCT ABCD chip or a bad SCT strip.
// A chip and a strip are determined by the extrapolated position.
// Algorithm is based on InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTHitEffMonTool.cxx
// Check the input.
if (not m_atlasId->is_sct(waferId)) {
ATH_MSG_WARNING(waferId << " is not an SCT Identifier");
return true;
}
// Get strip id from local position.
// Due to the limited position resolution, we may pick up a neighboring strip...
const Amg::Vector2D localPos(parameters.localPosition());
const Identifier stripIdentifier(siElement.identifierOfPosition(localPos));
if (not m_atlasId->is_sct(stripIdentifier)) {
ATH_MSG_WARNING(stripIdentifier << " is not an SCT Identifier");
return true;
}
// The extrapolated position is on a bad chip.
if (not m_sctCondSummaryTool->isGood(stripIdentifier, InDetConditions::SCT_CHIP)) return true;
// The extrapolated position is on a bad strip. (We may need to check neighboring strips.)
if (not m_sctCondSummaryTool->isGood(stripIdentifier, InDetConditions::SCT_STRIP)) return true;
return false;
}
......@@ -67,8 +67,14 @@ ToolSvc += tool2
monMan.AthenaMonTools += [tool1, tool2]
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
InDetBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="InDetBoundaryCheckTool"
)
ToolSvc += InDetBoundaryCheckTool
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool", Extrapolator = InDetExtrapolator, usePixel = True, useSCT= True, CountDeadModulesAfterLastHit = True)
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool", Extrapolator = InDetExtrapolator, BoundaryCheckTool=InDetBoundaryCheckTool, CountDeadModulesAfterLastHit = True)
ToolSvc += InDetHoleSearchTool
print InDetHoleSearchTool
......
......@@ -100,8 +100,14 @@ ToolSvc += tool2
monMan.AthenaMonTools += [tool2]
#monMan.AthenaMonTools += [truthSelection]
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
InDetBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="InDetBoundaryCheckTool"
)
ToolSvc += InDetBoundaryCheckTool
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool", Extrapolator = InDetExtrapolator,usePixel = True,useSCT= True,CountDeadModulesAfterLastHit = True)
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool", Extrapolator = InDetExtrapolator, BoundaryCheckTool=InDetBoundaryCheckTool, CountDeadModulesAfterLastHit = True)
ToolSvc += InDetHoleSearchTool
print InDetHoleSearchTool
......
......@@ -104,8 +104,14 @@ print tool1
monMan.AthenaMonTools += [tool1]
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
InDetBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="InDetBoundaryCheckTool"
)
ToolSvc += InDetBoundaryCheckTool
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool", Extrapolator = InDetExtrapolator, usePixel = True, useSCT= True, CountDeadModulesAfterLastHit = True)
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool", Extrapolator = InDetExtrapolator, BoundaryCheckTool=InDetBoundaryCheckTool, CountDeadModulesAfterLastHit = True)
ToolSvc += InDetHoleSearchTool
print InDetHoleSearchTool
......
......@@ -222,13 +222,20 @@ InDetPrdAssociationTool = InDet__InDetPRD_AssociationToolGangedPixels(name
PixelClusterAmbiguitiesMapName = InDetKeys.GangedPixelMap())
ToolSvc += InDetPrdAssociationTool
if InDetFlags.doPrintConfigurables: print InDetPrdAssociationTool
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
InDetBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
name="InDetBoundaryCheckTool",
UsePixel=DetFlags.haveRIO.pixel_on(),
UseSCT=DetFlags.haveRIO.SCT_on(),
SctSummaryTool=None
)
ToolSvc += InDetBoundaryCheckTool
from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool
InDetHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetHoleSearchTool",
Extrapolator = InDetExtrapolator,
usePixel = DetFlags.haveRIO.pixel_on(),
useSCT = DetFlags.haveRIO.SCT_on())
InDetHoleSearchTool.SctSummaryTool = None
BoundaryCheckTool=InDetBoundaryCheckTool)
ToolSvc += InDetHoleSearchTool
if InDetFlags.doPrintConfigurables: print InDetHoleSearchTool
......
......@@ -44,12 +44,19 @@ CountDeadModulesAfterLastHit=False
from InDetRecExample.InDetJobProperties import InDetFlags
from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool