4 from AthenaConfiguration.Enums 
import FlagEnum
 
    5 from TrkConfig.TrkConfigFlags 
import PrimaryPassConfig
 
    9     SumPt2Sorting = 
'SumPt2Sorting' 
   10     SumPtSorting = 
'SumPtSorting' 
   11     JetWeightedSorting = 
'JetWeightedSorting' 
   12     GNNSorting = 
'GNNSorting' 
   16     IVF = 
'IterativeFinding' 
   17     FastIVF = 
'FastIterativeFinding' 
   18     ActsGaussAMVF = 
'ActsGaussAdaptiveMultiFinding' 
   20     ExperimentalActsIVF = 
'ExperimentalActsIterativeFinding' 
   21     ActsGridDensity = 
'ActsGridDensity' 
   25     from AthenaConfiguration.AthConfigFlags 
import AthConfigFlags
 
   26     flags = AthConfigFlags()
 
   28     flags.addFlag(
"maxAbsEta", 9999.0)
 
   29     flags.addFlag(
"minNTrtHits", 0)
 
   30     flags.addFlag(
"maxNPixelHoles", 1)
 
   31     flags.addFlag(
"maxZ0", 1000.0 * Units.mm)
 
   32     flags.addFlag(
"maxZ0SinTheta", 1000.0 * Units.mm)
 
   33     flags.addFlag(
"minNInnermostLayerHits", 0)
 
   35     flags.addFlag(
"doMaxTracksCut", 
lambda pcf:
 
   36                   not(pcf.Tracking.PriVertex.useBeamConstraint 
or 
   37                       pcf.Tracking.PrimaryPassConfig 
is (
 
   38                           PrimaryPassConfig.HeavyIon)))    
 
   39     flags.addFlag(
"maxTracks", 3000)
 
   40     flags.addFlag(
"maxVertices", 
lambda pcf:
 
   41                   1 
if pcf.Tracking.PrimaryPassConfig 
in [
 
   42                       PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon]
 
   49             return VertexSetup.FastIVF
 
   50         elif pcf.Tracking.PrimaryPassConfig 
is PrimaryPassConfig.VtxLumiHeavyIon:
 
   51             return VertexSetup.FastIVF
 
   52         elif (pcf.Tracking.doMinBias 
or 
   53               pcf.Tracking.doLowMu 
or 
   54               pcf.Tracking.PrimaryPassConfig 
in [
 
   55                   PrimaryPassConfig.VtxLumi,
 
   56                   PrimaryPassConfig.VtxBeamSpot,
 
   57                   PrimaryPassConfig.HighPileup]):
 
   58             return VertexSetup.IVF
 
   60             return VertexSetup.ActsGaussAMVF
 
   62     flags.addFlag(
"setup", vertexSetup, type=VertexSetup)
 
   65     flags.addFlag(
"sortingSetup", VertexSortingSetup.SumPt2Sorting, type=VertexSortingSetup)
 
   66     flags.addFlag(
"useBeamConstraint", 
lambda pcf:
 
   67                   not(pcf.Tracking.PrimaryPassConfig 
in [
 
   68                       PrimaryPassConfig.VtxLumi,
 
   69                       PrimaryPassConfig.VtxBeamSpot]))
 
   72         if pcf.Detector.GeometryITk:
 
   75             if not pcf.Tracking.PriVertex.useBeamConstraint:
 
   76                 return 10.0 * Units.mm
 
   77             elif pcf.Tracking.PrimaryPassConfig 
is PrimaryPassConfig.VtxLumiHeavyIon:
 
   78                 return 10.0 * Units.mm
 
   82     flags.addFlag(
"maxD0", maxD0)
 
   85         if pcf.Detector.GeometryITk:
 
   86             return 900.0 * Units.MeV
 
   88             if pcf.Tracking.doMinBias 
or pcf.Tracking.doLowPt:
 
   89                 return 100.0 * Units.MeV
 
   90             elif pcf.Reco.EnableHI 
or pcf.Tracking.doLowMu \
 
   91                     or pcf.Tracking.PrimaryPassConfig 
is PrimaryPassConfig.VtxLumiHeavyIon:
 
   92                 return 400.0 * Units.MeV
 
   94                 return 500.0 * Units.MeV
 
   96     flags.addFlag(
"minPt", minPt)
 
   99         if pcf.Detector.GeometryITk:
 
  100             return 0.35 * Units.mm
 
  102             if pcf.Tracking.doLowPt:
 
  103                 return 0.9 * Units.mm
 
  105                 return 5.0 * Units.mm
 
  107     flags.addFlag(
"maxSigmaD0", maxSigmaD0)
 
  109     idflags = { 
"maxSigmaZ0SinTheta" : 10.0 * Units.mm,
 
  115     itkflags = {
"maxSigmaZ0SinTheta" : 2.5 * Units.mm,
 
  119                 "maxZinterval"       : 0.5}
 
  124         flags.addFlag(k, 
lambda pcf, a=idflags[k], b=itkflags[k]:
 
  125                       a 
if pcf.Detector.GeometryID 
else b)
 
  127     flags.addFlag(
"gridMainGridSize", 20)
 
  128     flags.addFlag(
"gridTrkGridSize", 10)
 
  129     flags.addFlag(
"gridUseHighestSumZPosition", 
False)
 
  130     flags.addFlag(
"gridMaxD0Significance", 3.5)
 
  131     flags.addFlag(
"gridMaxZ0Significance", 12.0)