3 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
    4 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
    8                                   name: str = 
"ActsSeedToTrackAnalysisAlg",
 
    9                                   **kwargs) -> ComponentAccumulator:
 
   11     kwargs.setdefault(
"InputSeedCollection", 
"")
 
   12     kwargs.setdefault(
"InputTrackParamsCollection", 
"")
 
   13     kwargs.setdefault(
"InputDestinyCollection", 
"")
 
   15     if flags.Tracking.doTruth:
 
   16         if flags.Detector.EnableITkPixel:
 
   17             kwargs.setdefault(
"PixelTruthAssociationMap", 
"ITkPixelClustersToTruthParticles")
 
   18         if flags.Detector.EnableITkStrip:
 
   19             kwargs.setdefault(
"StripTruthAssociationMap", 
"ITkStripClustersToTruthParticles")
 
   21     from AthenaMonitoring 
import AthMonitorCfgHelper
 
   22     helper = AthMonitorCfgHelper(flags, kwargs[
'InputDestinyCollection'] + 
'AnalysisAlgCfg')
 
   24     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedToTrackAnalysisAlg, name, **kwargs)
 
   25     destinyTypes = [
'UNKNOWN', 
'SUCCEED', 
'DUPLICATE', 
'FAILURE', 
'INCLUSIVE']
 
   26     nTypes = len(destinyTypes)
 
   28     histoPath = f
'/ActsAnalysis/{kwargs["InputDestinyCollection"]}' 
   30     seedVars = helper.addArray([nTypes], monitoringAlgorithm, 
'seedVars', topPath=histoPath)
 
   32     for postfix, tool 
in seedVars.Tools.items():
 
   33         layer = destinyTypes[ 
int(postfix.split(
"_")[1]) ]
 
   34         tool.defineHistogram(f
"eta,bottomR;Eta_Vs_bottomR_{layer}", title=f
"Bottom R vs Eta for {layer}", type=
'TH2F', path=
'2D',
 
   35                              xbins=50, xmin=-4.5, xmax=4.5,
 
   36                              ybins=320, ymin=0, ymax=320)        
 
   37         tool.defineHistogram(f
"eta,middleR;Eta_Vs_middleR_{layer}", title=f
"Middle R vs Eta for {layer}", type=
'TH2F', path=
'2D',
 
   38                              xbins=50, xmin=-4.5, xmax=4.5,
 
   39                              ybins=320, ymin=0, ymax=320)
 
   40         tool.defineHistogram(f
"eta,topR;Eta_Vs_topR_{layer}", title=f
"Top R vs Eta for {layer}", type=
'TH2F', path=
'2D',
 
   41                              xbins=50, xmin=-4.5, xmax=4.5,
 
   42                              ybins=320, ymin=0, ymax=320)
 
   44         tool.defineHistogram(f
"deltaR_BT,deltaR_BM;DeltaR_BT_vs_Delta_BM_{layer}", title=f
"Delta Radius BT vs BM for {layer}", type=
'TH2F', path=
'2D',
 
   45                              xbins=320, xmin=0, xmax=320,
 
   46                              ybins=320, ymin=0, ymax=320)
 
   47         tool.defineHistogram(f
"deltaR_BT,deltaR_MT;DeltaR_BT_vs_Delta_MT_{layer}", title=f
"Delta Radius BT vs MT for {layer}", type=
'TH2F', path=
'2D',
 
   48                              xbins=320, xmin=0, xmax=320,
 
   49                              ybins=320, ymin=0, ymax=320)
 
   50         tool.defineHistogram(f
"deltaR_BM,deltaR_MT;DeltaR_BM_vs_Delta_MT_{layer}", title=f
"Delta Radius MB vs MT for {layer}", type=
'TH2F', path=
'2D',
 
   51                              xbins=320, xmin=0, xmax=320,
 
   52                              ybins=320, ymin=0, ymax=320)
 
   54         tool.defineHistogram(f
"bottomZ,bottomR;BottomZR_{layer}", title=f
"Bottom SP ZR for {layer}", type=
'TH2F', path=
'2D',
 
   55                              xbins=12000, xmin=-3000, xmax=3000,
 
   56                              ybins=1000, ymin=0, ymax=320)
 
   57         tool.defineHistogram(f
"middleZ,middleR;MiddleZR_{layer}", title=f
"Middle SP ZR for {layer}", type=
'TH2F', path=
'2D',
 
   58                              xbins=12000, xmin=-3000, xmax=3000,
 
   59                              ybins=1000, ymin=0, ymax=320)
 
   60         tool.defineHistogram(f
"topZ,topR;TopZR_{layer}", title=f
"Top SP ZR for {layer}", type=
'TH2F', path=
'2D',
 
   61                              xbins=12000, xmin=-3000, xmax=3000,
 
   62                              ybins=1000, ymin=0, ymax=320)
 
   64         tool.defineHistogram(f
"cotTheta_BM;cotTheta_BM_{layer}", title=f
"CotTheta bottom-middle for {layer}", type=
'TH1F', path=
'SPVars',
 
   65                              xbins=80, xmin=0, xmax=40,
 
   66                              ybins=80, ymin=0, ymax=40)
 
   67         tool.defineHistogram(f
"cotTheta_MT;cotTheta_MR_{layer}", title=f
"CotTheta middle-top for {layer}", type=
'TH1F', path=
'SPVars',
 
   68                              xbins=80, xmin=0, xmax=40,
 
   69                              ybins=80, ymin=0, ymax=40)
 
   70         tool.defineHistogram(f
"cotTheta_BM;cotTheta_BT_{layer}", title=f
"CotTheta bottom-top for {layer}", type=
'TH1F', path=
'SPVars',
 
   71                              xbins=80, xmin=0, xmax=40,
 
   72                              ybins=80, ymin=0, ymax=40)
 
   74         tool.defineHistogram(f
"deltaCotTheta_BM_MT;deltaCotTheta_BM_MT_{layer}", title=f
"Delta CotTheta bottom-top vs middle-top for {layer}", type=
'TH1F', path=
'SPVars',
 
   75                              xbins=80, xmin=-2, xmax=2,
 
   76                              ybins=80, ymin=-2, ymax=2)
 
   79         tool.defineHistogram(f
"bottomR,quality;Quality_vs_BottomR_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
 
   80                              xbins=320, xmin=0, xmax=320,
 
   81                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
   82         tool.defineHistogram(f
"middleR,quality;Quality_vs_MiddleR_{layer}", title=f
"Seed Middle Radius Vs Quality for {layer};Middle SP radius;Quality", type=
'TH2F', path=
'Quality',
 
   83                              xbins=320, xmin=0, xmax=320,
 
   84                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
   85         tool.defineHistogram(f
"topR,quality;Quality_vs_TopR_{layer}", title=f
"Seed Top Radius Vs Quality for {layer};Top SP radius;Quality", type=
'TH2F', path=
'Quality',
 
   86                              xbins=320, xmin=0, xmax=320,
 
   87                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
   89         tool.defineHistogram(f
"deltaR_BT,quality;Quality_vs_deltaR_BT_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
 
   90                              xbins=320, xmin=0, xmax=320,
 
   91                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
   92         tool.defineHistogram(f
"deltaR_BM,quality;Quality_vs_deltaR_BM_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
 
   93                              xbins=320, xmin=0, xmax=320,
 
   94                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
   95         tool.defineHistogram(f
"deltaR_MT,quality;Quality_vs_deltaR_MT_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
 
   96                              xbins=320, xmin=0, xmax=320,
 
   97                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
   99         tool.defineHistogram(f
"bottomR,truthProb;Truth_Probability_vs_bottomR_{layer}", title=f
"bottom R vs truth prob. for {layer};R;Truth Prob.", type=
'TH2F', path=
'Quality',
 
  100                              xbins=320, xmin=0, xmax=320,
 
  101                              ybins=12, ymin=0, ymax=1.2)
 
  102         tool.defineHistogram(f
"middleR,truthProb;Truth_Probability_vs_middleR_{layer}", title=f
"middle R vs truth prob. for {layer};R;Truth Prob.", type=
'TH2F', path=
'Quality',
 
  103                              xbins=320, xmin=0, xmax=320,
 
  104                              ybins=12, ymin=0, ymax=1.2)
 
  105         tool.defineHistogram(f
"topR,truthProb;Truth_Probability_vs_topR_{layer}", title=f
"top R vs truth prob. for {layer};R;Truth Prob.", type=
'TH2F', path=
'Quality',
 
  106                              xbins=320, xmin=0, xmax=320,
 
  107                              ybins=12, ymin=0, ymax=1.2)
 
  109         tool.defineHistogram(f
"vtxZ,quality;Quality_vs_vtxZ_{layer}", title=f
"Seed Vtxz Vs Quality for {layer};vtx Z;Quality", type=
'TH2F', path=
'Quality',
 
  110                              xbins=100, xmin=-200, xmax=200,
 
  111                              ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
 
  113         tool.defineHistogram(f
"truthProb;Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH1F", path=
'Quality',
 
  114                              xbins=12, xmin=0, xmax=1.2)
 
  115         tool.defineHistogram(f
"eta,truthProb;Truth_Probability_vs_Eta_{layer}", title=f
"Seed Truth Probability VS Eta for {layer}", type=
"TH2F", path=
'Quality',
 
  116                              xbins=50, xmin=-4.5, xmax=4.5,
 
  117                              ybins=12, ymin=0, ymax=1.2)
 
  118         tool.defineHistogram(f
"quality,truthProb;Truth_Probability_vs_Quality_{layer}", title=f
"Seed Truth Probability VS Eta for {layer}", type=
"TH2F", path=
'Quality',
 
  119                              xbins=1000, xmin=-rangeQuality, xmax=rangeQuality,
 
  120                              ybins=12, ymin=0, ymax=1.2)
 
  122         tool.defineHistogram(f
"deltaR_BT,truthProb;deltaR_BT_vs_Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH2F", path=
'Quality',
 
  123                              xbins=320, xmin=0, xmax=320,
 
  124                              ybins=12, ymin=0, ymax=1.2)
 
  125         tool.defineHistogram(f
"deltaR_BM,truthProb;deltaR_BM_vs_Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH2F", path=
'Quality',
 
  126                              xbins=320, xmin=0, xmax=320,
 
  127                              ybins=12, ymin=0, ymax=1.2)
 
  128         tool.defineHistogram(f
"deltaR_MT,truthProb;deltaR_MT_vs_Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH2F", path=
'Quality',
 
  129                              xbins=320, xmin=0, xmax=320,
 
  130                              ybins=12, ymin=0, ymax=1.2)
 
  132         tool.defineHistogram(f
"eta;Eta_{layer}", title=f
"Eta for {layer}", type=
'TH1F', path=
'SeedVars',
 
  133                              xbins=50, xmin=-4.5, xmax=4.5)
 
  134         tool.defineHistogram(f
"pt;Pt_{layer}", title=f
"Pt for {layer}", type=
'TH1F', path=
'SeedVars',
 
  135                              xbins=100, xmin=0, xmax=100)
 
  136         tool.defineHistogram(f
"quality;Quality_{layer}", title=f
"Quality for {layer}", type=
'TH1F', path=
'SeedVars',
 
  137                              xbins=1000, xmin=-rangeQuality, xmax=rangeQuality)
 
  138         tool.defineHistogram(f
"vtxZ;VtxZ_{layer}", title=f
"Vtx Z for {layer}", type=
'TH1F', path=
'SeedVars',
 
  139                              xbins=100, xmin=-200, xmax=200)
 
  141         tool.defineHistogram(f
"bottomX;BottomX_{layer}", title=f
"Bottom X for {layer}", type=
'TH1F', path=
'SPVars',
 
  142                              xbins=320, xmin=-320, xmax=320)
 
  143         tool.defineHistogram(f
"bottomY;BottomY_{layer}", title=f
"Bottom Y for {layer}", type=
'TH1F', path=
'SPVars',
 
  144                              xbins=320, xmin=-320, xmax=320)
 
  145         tool.defineHistogram(f
"bottomZ;BottomZ_{layer}", title=f
"Bottom Z for {layer}", type=
'TH1F', path=
'SPVars',
 
  146                              xbins=500, xmin=-3000, xmax=3000)
 
  147         tool.defineHistogram(f
"bottomR;BottomR_{layer}", title=f
"Bottom Radius for {layer}", type=
'TH1F', path=
'SPVars',
 
  148                              xbins=320, xmin=0, xmax=320)
 
  150         tool.defineHistogram(f
"middleX;MiddleX_{layer}", title=f
"Middle X for {layer}", type=
'TH1F', path=
'SPVars',
 
  151                              xbins=320, xmin=-320, xmax=320)
 
  152         tool.defineHistogram(f
"middleY;MiddleY_{layer}", title=f
"Middle Y for {layer}", type=
'TH1F', path=
'SPVars',
 
  153                              xbins=320, xmin=-320, xmax=320)
 
  154         tool.defineHistogram(f
"middleZ;MiddleZ_{layer}", title=f
"Middle Z for {layer}", type=
'TH1F', path=
'SPVars',
 
  155                              xbins=500, xmin=-3000, xmax=3000)
 
  156         tool.defineHistogram(f
"middleR;MiddleR_{layer}", title=f
"Middle Radius for {layer}", type=
'TH1F', path=
'SPVars',
 
  157                              xbins=320, xmin=0, xmax=320)
 
  159         tool.defineHistogram(f
"topX;TopX_{layer}", title=f
"Top X for {layer}", type=
'TH1F', path=
'SPVars',
 
  160                              xbins=320, xmin=-320, xmax=320)
 
  161         tool.defineHistogram(f
"topY;TopY_{layer}", title=f
"Top Y for {layer}", type=
'TH1F', path=
'SPVars',
 
  162                              xbins=320, xmin=-320, xmax=320)
 
  163         tool.defineHistogram(f
"topZ;TopZ_{layer}", title=f
"Top Z for {layer}", type=
'TH1F', path=
'SPVars',
 
  164                              xbins=500, xmin=-3000, xmax=3000)
 
  165         tool.defineHistogram(f
"topR;TopR_{layer}", title=f
"Top Radius for {layer}", type=
'TH1F', path=
'SPVars',
 
  166                              xbins=320, xmin=0, xmax=320)
 
  168         tool.defineHistogram(f
"deltaR_BT;DeltaR_BT_{layer}", title=f
"Delta Radius between Bottom and Top for {layer}", type=
'TH1F', path=
'SPVars',
 
  169                              xbins=320, xmin=0, xmax=320)
 
  170         tool.defineHistogram(f
"deltaR_BM;DeltaR_BM_{layer}", title=f
"Delta Radius between Bottom and Middle for {layer}", type=
'TH1F', path=
'SPVars',
 
  171                              xbins=320, xmin=0, xmax=320)
 
  172         tool.defineHistogram(f
"deltaR_MT;DeltaR_MT_{layer}", title=f
"Delta Radius between Middle and Top for {layer}", type=
'TH1F', path=
'SPVars',
 
  173                              xbins=320, xmin=0, xmax=320)
 
  175     acc.merge(helper.result())
 
  180                             name: str = 
"ActsTrackAnalysisAlg",
 
  181                             **kwargs) -> ComponentAccumulator:
 
  184     kwargs.setdefault(
'TracksLocation', 
'ActsTracks')
 
  185     kwargs.setdefault(
"MonGroupName", kwargs[
'TracksLocation'])
 
  187     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  188     helper = AthMonitorCfgHelper(flags, kwargs[
'TracksLocation'] + 
'AnalysisAlgCfg')
 
  190     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackAnalysisAlg, name, **kwargs)
 
  191     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  193     monitoringGroup.defineHistogram(
'Ntracks', title=
'Number of Tracks;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  194                                     xbins=500, xmin=0, xmax=20000)
 
  196     monitoringGroup.defineHistogram(
'NsharedPerLayer_pixelBarrel', title=
'Number of shared hits per layer - Pixel Barrel;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  197                                     xbins=5, xmin=0, xmax=5)    
 
  198     monitoringGroup.defineHistogram(
'NsharedPerLayer_pixelEndCap', title=
'Number of shared hits per layer - Pixel EndCap;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  199                                     xbins=9, xmin=0, xmax=9)
 
  200     monitoringGroup.defineHistogram(
'NsharedPerLayer_stripBarrel', title=
'Number of shared hits per layer - Strip Barrel;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  201                                     xbins=4, xmin=0, xmax=4)
 
  202     monitoringGroup.defineHistogram(
'NsharedPerLayer_stripEndCap', title=
'Number of shared hits per layer - Strip EndCap;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  203                                     xbins=6, xmin=0, xmax=6)
 
  206     monitoringGroup.defineHistogram(
'theta', title=
'Track polar angle;#theta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  207                                     xbins=128, xmin=0, xmax=math.pi)
 
  208     monitoringGroup.defineHistogram(
'eta', title=
'Track eta;#eta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  209                                     xbins=128, xmin=-4, xmax=4)
 
  210     monitoringGroup.defineHistogram(
'pt', title=
'Track pR;p_{T};Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  211                                     xbins=200, xmin=0, xmax=200)
 
  212     monitoringGroup.defineHistogram(
'phi', title=
'Track azimuthal angle;#phi;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  213                                     xbins=128, xmin=-math.pi, xmax=math.pi)
 
  214     monitoringGroup.defineHistogram(
'qoverp', title=
'track inverse momentum;q/p [1/GeV];Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  215                                     xbins=200, xmin=-1.2, xmax=1.2)
 
  216     monitoringGroup.defineHistogram(
'chi2OverNdof', title=
'fit chi2 / ndof;#chi^{2}/nDoF;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  217                                     xbins=100, xmin=0, xmax=20)
 
  218     monitoringGroup.defineHistogram(
'nStates', title=
'Number of states / track;# states;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  219                                     xbins=60, xmin=0, xmax=60)
 
  220     monitoringGroup.defineHistogram(
'nMeasurements', title=
'Number of measurements / track;# measurements;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  221                                     xbins=35, xmin=0, xmax=35)
 
  222     monitoringGroup.defineHistogram(
'nShared', title=
'Number of shared hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  223                                     xbins=35, xmin=0, xmax=35)
 
  224     monitoringGroup.defineHistogram(
'nOutliers', title=
'Number of outliers hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  225                                     xbins=35, xmin=0, xmax=35)
 
  226     monitoringGroup.defineHistogram(
'nHoles', title=
'Number of holes hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  227                                     xbins=35, xmin=0, xmax=35)
 
  229     monitoringGroup.defineHistogram(
'nPixelHits', title=
'Number of pixel hits / track;# pixel hits;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  230                                     xbins=35, xmin=0, xmax=35)
 
  231     monitoringGroup.defineHistogram(
'nStripHits', title=
'Number of strip hits / track;# strip hits;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  232                                     xbins=35, xmin=0, xmax=35)
 
  233     monitoringGroup.defineHistogram(
'surfaceType', title=
'type of reference surface;type;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  234                                     xbins=35, xmin=0, xmax=35)
 
  237     monitoringGroup.defineHistogram(
'eta,nMeasurements', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
 
  238                                     xbins=128, xmin=-4, xmax=4,
 
  239                                     ybins=35, ymin=0, ymax=35)
 
  240     monitoringGroup.defineHistogram(
'eta,nShared', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
 
  241                                     xbins=128, xmin=-4, xmax=4,
 
  242                                     ybins=35, ymin=0, ymax=35)
 
  243     monitoringGroup.defineHistogram(
'eta,nOutliers', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
 
  244                                     xbins=128, xmin=-4, xmax=4,
 
  245                                     ybins=35, ymin=0, ymax=35)
 
  246     monitoringGroup.defineHistogram(
'eta,nHoles', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
 
  247                                     xbins=128, xmin=-4, xmax=4,
 
  248                                     ybins=35, ymin=0, ymax=35)
 
  249     monitoringGroup.defineHistogram(
'eta,pt', title=
'Track pT vs eta;#eta;p_{T}', type=
'TProfile', path=kwargs[
'MonGroupName'],
 
  250                                     xbins=128, xmin=-4, xmax=4)
 
  252     acc.merge(helper.result())
 
  256                                     name: str = 
'ActsTrackParticleAnalysisAlg',
 
  257                                     **kwargs) -> ComponentAccumulator:
 
  259     kwargs.setdefault(
'MonitorTrackStateCounts',
True)
 
  260     kwargs.setdefault(
'TrackParticleLocation', 
'ActsTrackParticles')
 
  262     kwargs.setdefault(
'MonGroupName', kwargs[
'TrackParticleLocation'])
 
  264     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  265     helper = AthMonitorCfgHelper(flags, 
'TrackParticleAnalysisAlgCfg')
 
  266     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackParticleAnalysisAlg, name, **kwargs)
 
  267     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/'+name+
'/')
 
  269     monitoringGroup.defineHistogram(
'pt', title=
'TrackParticle pt;pt (MeV);Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  270                                     xbins=100, xmin=0, xmax=10e3)
 
  271     monitoringGroup.defineHistogram(
'eta', title=
'TrackParticle eta;eta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
 
  272                                     xbins=50, xmin=-4, xmax=4)
 
  275     monitoringGroup.defineHistogram(
'pixelHits', title=
'Number of pixel hits;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  276                                     xbins=50, xmin=-1, xmax=49)
 
  277     monitoringGroup.defineHistogram(
'innermostHits', title=
'Number of innermost pixel hits;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  278                                     xbins=6, xmin=-1, xmax=5)
 
  279     monitoringGroup.defineHistogram(
'nextToInnermostHits', title=
'Number of next-to-innermost pixel hits;N;Entries', type=
'TH1I',
 
  280                                     path=kwargs[
'MonGroupName'], xbins=6, xmin=-1, xmax=5)
 
  281     monitoringGroup.defineHistogram(
'expectInnermostHit', title=
'Innermost pixel hit expected;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  282                                     xbins=3, xmin=-1, xmax=2)
 
  283     monitoringGroup.defineHistogram(
'expectNextToInnermostHit', title=
'Next-to-innermost pixel hit expected;N;Entries', type=
'TH1I',
 
  284                                     path=kwargs[
'MonGroupName'],xbins=3, xmin=-1, xmax=2)
 
  286     if kwargs[
'MonitorTrackStateCounts'] :
 
  291         if 'ExtraInputs' not in kwargs :
 
  292             tracks_name = kwargs[
'TrackParticleLocation']
 
  293             if tracks_name[-len(
'TrackParticles'):] == 
'TrackParticles' :
 
  294                 kwargs.setdefault(
'ExtraInputs',{(
'ActsTrk::TrackContainer',tracks_name[:-len(
'TrackParticles')]+
'Tracks')})
 
  296         monitoringGroup.defineHistogram(
'States', title=
'Number of states on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  297                                         xbins=50, xmin=0, xmax=50)
 
  298         monitoringGroup.defineHistogram(
'Measurements', title=
'Number of measurements on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  299                                         xbins=50, xmin=0, xmax=50)
 
  300         monitoringGroup.defineHistogram(
'Parameters', title=
'Number of parameters on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  301                                         xbins=50, xmin=0, xmax=50)
 
  302         monitoringGroup.defineHistogram(
'Outliers', title=
'Number of outliers on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  303                                         xbins=50, xmin=0, xmax=50)
 
  304         monitoringGroup.defineHistogram(
'Holes', title=
'Number of holes on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  305                                         xbins=50, xmin=0, xmax=50)
 
  306         monitoringGroup.defineHistogram(
'SharedHits', title=
'Number of shared hits on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  307                                         xbins=50, xmin=0, xmax=50)
 
  308         monitoringGroup.defineHistogram(
'MaterialStates', title=
'Number of material states on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
 
  309                                         xbins=50, xmin=0, xmax=50)
 
  310     acc.merge(helper.result())
 
  312     acc.addEventAlgo( CompFactory.ActsTrk.TrackParticleAnalysisAlg(name, **kwargs) )
 
  316                                   name: str = 
"ActsHgtdClusterAnalysisAlg",
 
  317                                   **kwargs) -> ComponentAccumulator:
 
  318     if flags.HGTD.Geometry.useGeoModelXml:
 
  319         from HGTD_GeoModelXml.HGTD_GeoModelConfig 
import HGTD_ReadoutGeometryCfg
 
  321         from HGTD_GeoModel.HGTD_GeoModelConfig 
import HGTD_ReadoutGeometryCfg
 
  324     kwargs.setdefault(
"MonGroupName", 
"ActsHgtdClusters")
 
  326     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  327     helper = AthMonitorCfgHelper(flags, 
'ActsHgtdClusterAnalysisAlgCfg')
 
  329     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.HgtdClusterAnalysisAlg, name, **kwargs)
 
  330     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  332     path = 
"ActsHgtdClusters" 
  333     monitoringGroup.defineHistogram(
'localX,localY;h_localXY', title=
"h_localXY; x [mm]; y [mm]", type=
"TH2F", path=path,
 
  334                                     xbins=20, xmin=-30, xmax=30,
 
  335                                     ybins=20, ymin=-30, ymax=30)
 
  336     monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
 
  337                                     xbins=100, xmin=-750, xmax=750,
 
  338                                     ybins=100, ymin=-750, ymax=750)
 
  339     monitoringGroup.defineHistogram(
'globalZ,globalR;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
 
  340                                     xbins=100, xmin=-3600, xmax=3600,
 
  341                                     ybins=100, ymin=0, ymax=800)
 
  342     if flags.Acts.doAnalysisNtuples:
 
  343       monitoringGroup.defineTree(
'localX,localY,localT,localCovXX,localCovYY,localCovTT,globalX,globalY,globalZ,globalR,eta;HgtdClusters',
 
  345                                 treedef=
'localX/vector<float>:localY/vector<float>:localT/vector<float>:localCovXX/vector<float>:localCovYY/vector<float>:localCovTT/vector<float>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:globalR/vector<float>:eta/vector<float>')
 
  347     acc.merge(helper.result())
 
  351                                    name: str = 
"ActsPixelClusterAnalysisAlg",
 
  352                                    extension: str = 
"Acts",
 
  353                                    **kwargs) -> ComponentAccumulator:
 
  354     path = extension.replace(
"Acts", 
"") + 
"PixelClusters" 
  356     from PixelGeoModelXml.ITkPixelGeoModelConfig 
import ITkPixelReadoutGeometryCfg
 
  359     kwargs.setdefault(
"MonGroupName", extension + 
"ClusterAnalysisAlg")
 
  361     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  362     helper = AthMonitorCfgHelper(flags, extension + 
'ClusterAnalysisAlgCfg')
 
  364     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.PixelClusterAnalysisAlg, name, **kwargs)
 
  365     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  367     monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
 
  368                                     xbins=1500, xmin=-3000, xmax=3000,
 
  369                                     ybins=400, ymin=0, ymax=400)
 
  370     monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
 
  371                                     xbins=800, xmin=-400, xmax=400,
 
  372                                     ybins=800, ymin=-400, ymax=400)
 
  373     monitoringGroup.defineHistogram(
'eta;h_etaCluster', title=
"h_etaCluster; cluster #eta", type=
"TH1F", path=path,
 
  374                                     xbins=100, xmin=-5, xmax=5)
 
  376     if flags.Acts.doAnalysisNtuples:
 
  377       monitoringGroup.defineTree(
'barrelEndcap,layerDisk,phiModule,etaModule,isInnermost,isNextToInnermost,eta,globalX,globalY,globalZ,perp,localX,localY,localCovXX,localCovYY,sizeX,sizeY,widthY;PixelClusters',
 
  379                                 treedef=
'barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:isInnermost/vector<int>:isNextToInnermost/vector<int>:eta/vector<double>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:perp/vector<float>:localX/vector<float>:localY/vector<float>:localCovXX/vector<float>:localCovYY/vector<float>:sizeX/vector<int>:sizeY/vector<int>:widthY/vector<float>')
 
  381     acc.merge(helper.result())
 
  386                                    name: str = 
"ActsStripClusterAnalysisAlg",
 
  387                                    extension: str = 
"Acts",
 
  388                                    **kwargs) -> ComponentAccumulator:
 
  389     path = extension.replace(
"Acts", 
"") + 
"StripClusters" 
  391     from StripGeoModelXml.ITkStripGeoModelConfig 
import ITkStripReadoutGeometryCfg
 
  394     kwargs.setdefault(
"MonGroupName", extension + 
"ClusterAnalysisAlg")
 
  396     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  397     helper = AthMonitorCfgHelper(flags, extension + 
"ClusterAnalysisAlgCfg")
 
  399     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.StripClusterAnalysisAlg, name, **kwargs)
 
  400     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  402     monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
 
  403                                     xbins=1500, xmin=-3000, xmax=3000,
 
  404                                     ybins=400, ymin=300, ymax=1100)    
 
  405     monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
 
  406                                     xbins=1600, xmin=-1100, xmax=1100,
 
  407                                     ybins=1600, ymin=-1100, ymax=1100)
 
  408     monitoringGroup.defineHistogram(
'eta;h_etaCluster', title=
"h_etaCluster; cluster #eta", type=
"TH1F", path=path,
 
  409                                     xbins=100, xmin=-5, xmax=5)
 
  411     if flags.Acts.doAnalysisNtuples:
 
  412       monitoringGroup.defineTree(f
'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,eta,globalX,globalY,globalZ,perp,localX,localCovXX,sizeX;{path}',
 
  414                                 treedef=
'barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:sideModule/vector<int>:eta/vector<double>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:perp/vector<float>:localX/vector<float>:localCovXX/vector<float>:sizeX/vector<int>')
 
  416     acc.merge(helper.result())
 
  421                                      extension: str = 
"Acts",
 
  424                                      **kwargs) -> ComponentAccumulator:
 
  425     isPixel = 
'Pixel' in name
 
  426     perp_min = 0 
if isPixel 
else 300
 
  427     perp_max = 400 
if isPixel 
else 1100
 
  430     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  431     helper = AthMonitorCfgHelper(flags, extension + 
'SpacePointAnalysisAlgCfg')
 
  433     kwargs.setdefault(
"MonGroupName", extension + 
"SpacePointAnalysisAlg")
 
  435     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SpacePointAnalysisAlg, name, **kwargs)
 
  436     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  439     monitoringGroup.defineHistogram(
'Nsp;h_Nsp', title=
"Number of Space Points;N;Entries", type=
"TH1I", path=f
"{histoPath}",
 
  440                                     xbins=100, xmin=0, xmax=0)
 
  442     monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=f
"{histoPath}",
 
  443                                     xbins=800, xmin=-perp_max, xmax=perp_max,
 
  444                                     ybins=800, ymin=-perp_max, ymax=perp_max)
 
  445     monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=f
"{histoPath}",
 
  446                                     xbins=1500, xmin=-3000, xmax=3000,
 
  447                                     ybins=400, ymin=perp_min, ymax=perp_max)
 
  448     monitoringGroup.defineHistogram(
'eta;h_etaSpacePoint', title=
"h_etaSpacePoint; space point #eta", type=
"TH1F", path=f
"{histoPath}",
 
  449                                     xbins=100, xmin=-5, xmax=5)
 
  451     if flags.Acts.doAnalysisNtuples:
 
  452       monitoringGroup.defineTree(f
'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,isInnermost,isNextToInnermost,isOverlap,eta,globalX,globalY,globalZ,perp,globalCovR,globalCovZ;{ntupleName}',
 
  454                                 treedef=
'barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:sideModule/vector<int>:isInnermost/vector<int>:isNextToInnermost/vector<int>:isOverlap/vector<int>:eta/vector<double>:globalX/vector<double>:globalY/vector<double>:globalZ/vector<double>:perp/vector<double>:globalCovR/vector<double>:globalCovZ/vector<double>')
 
  456     acc.merge(helper.result())
 
  460                                       name: str = 
"ActsPixelSpacePointAnalysisAlg",
 
  461                                       extension: str = 
"Acts",
 
  462                                       **kwargs) -> ComponentAccumulator:
 
  465     from PixelGeoModelXml.ITkPixelGeoModelConfig 
import ITkPixelReadoutGeometryCfg
 
  468     kwargs.setdefault(
"SpacePointContainerKey", 
"ITkPixelSpacePoints")
 
  469     kwargs.setdefault(
"UsePixel", 
True)
 
  470     kwargs.setdefault(
"UseOverlap", 
False)
 
  471     kwargs.setdefault(
'ExtraInputs',
 
  472                       [(
'xAOD::SpacePointContainer' , f
'StoreGateSvc+{kwargs["SpacePointContainerKey"]}.measurements')])
 
  476                                                extension = extension,
 
  477                                                histoPath = extension.replace(
"Acts", 
"") + 
"PixelSpacePoints",
 
  478                                                ntupleName = extension.replace(
"Acts", 
"") + 
"PixelSpacePoints",
 
  485                                       name: str = 
"ActsStripSpacePointAnalysisAlg",
 
  486                                       extension: str = 
"Acts",
 
  487                                       **kwargs) -> ComponentAccumulator:
 
  490     from StripGeoModelXml.ITkStripGeoModelConfig 
import ITkStripReadoutGeometryCfg
 
  493     kwargs.setdefault(
"SpacePointContainerKey", 
"ITkStripSpacePoints")
 
  494     kwargs.setdefault(
"UsePixel", 
False)
 
  495     kwargs.setdefault(
"UseOverlap", 
False)
 
  496     kwargs.setdefault(
'ExtraInputs',
 
  497                       [(
'xAOD::SpacePointContainer' , f
'StoreGateSvc+{kwargs["SpacePointContainerKey"]}.measurements')])
 
  501                                                extension = extension,
 
  502                                                histoPath = extension.replace(
"Acts", 
"") + 
"StripSpacePoints",
 
  503                                                ntupleName = extension.replace(
"Acts", 
"") + 
"StripSpacePoints",
 
  509                                              name: str = 
"ActsStripOverlapSpacePointAnalysisAlg",
 
  510                                              extension: str = 
"Acts",
 
  511                                              **kwargs) -> ComponentAccumulator:
 
  512     from StripGeoModelXml.ITkStripGeoModelConfig 
import ITkStripReadoutGeometryCfg
 
  515     kwargs.setdefault(
"SpacePointContainerKey", 
"ITkStripOverlapSpacePoints")
 
  516     kwargs.setdefault(
"UsePixel", 
False)
 
  517     kwargs.setdefault(
"UseOverlap", 
True)
 
  518     kwargs.setdefault(
'ExtraInputs',
 
  519                       [(
'xAOD::SpacePointContainer' , f
'StoreGateSvc+{kwargs["SpacePointContainerKey"]}.measurements')])
 
  523                                                extension = extension,
 
  524                                                histoPath = extension.replace(
"Acts", 
"") + 
"StripOverlapSpacePoints",
 
  525                                                ntupleName = extension.replace(
"Acts", 
"") + 
"StripOverlapSpacePoints",
 
  532                                extension: str = 
"Acts",
 
  534                                ntupleName: str = 
"",
 
  535                                **kwargs) -> ComponentAccumulator:
 
  538     isPixel = 
'Pixel' in name
 
  539     perp_min = 0 
if isPixel 
else 300
 
  540     perp_max = 400 
if isPixel 
else 1100
 
  542     kwargs.setdefault(
'MonGroupName', extension + 
'SeedAnalysisAlg')
 
  544     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  545     helper = AthMonitorCfgHelper(flags, extension + 
'SeedAnalysisAlgCfg')
 
  547     from ActsConfig.ActsGeometryConfig 
import ActsTrackingGeometryToolCfg
 
  549     acc.addPublicTool(geoTool)
 
  552     from ActsConfig.ActsEventCnvConfig 
import ActsToTrkConverterToolCfg
 
  556     from ActsConfig.ActsTrackParamsEstimationConfig 
import ActsTrackParamsEstimationToolCfg
 
  559     kwargs.setdefault(
'TrackingGeometryTool', acc.getPublicTool(geoTool.name)) 
 
  560     kwargs.setdefault(
'ATLASConverterTool', converterTool)
 
  561     kwargs.setdefault(
'TrackParamsEstimationTool', trackEstimationTool)
 
  563     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedAnalysisAlg, name, **kwargs)
 
  564     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  566     monitoringGroup.defineHistogram(
'Nseed', title=
'Number of Seeds;N;Entries', type=
'TH1I', path=f
'{histoPath}',
 
  567                                     xbins=100, xmin=0, xmax=0)
 
  569     monitoringGroup.defineHistogram(
'z1,r1;zr1', title=
'Bottom SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
 
  570                                     xbins=1500, xmin=-3000, xmax=3000,
 
  571                                     ybins=400, ymin=perp_min, ymax=perp_max)
 
  572     monitoringGroup.defineHistogram(
'z2,r2;zr2', title=
'Middle SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
 
  573                                     xbins=1500, xmin=-3000, xmax=3000,
 
  574                                     ybins=400, ymin=perp_min, ymax=perp_max)
 
  575     monitoringGroup.defineHistogram(
'z3,r3;zr3', title=
'Top SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
 
  576                                     xbins=1500, xmin=-3000, xmax=3000,
 
  577                                     ybins=400, ymin=perp_min, ymax=perp_max)
 
  579     monitoringGroup.defineHistogram(
'x1;x1', title=
'Bottom SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  580                                     xbins=100, xmin=-perp_max, xmax=perp_max)
 
  581     monitoringGroup.defineHistogram(
'y1;y1', title=
'Bottom SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  582                                     xbins=100, xmin=-perp_max, xmax=perp_max)
 
  583     monitoringGroup.defineHistogram(
'z1;z1', title=
'Bottom SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  584                                     xbins=100, xmin=-3000, xmax=3000)
 
  585     monitoringGroup.defineHistogram(
'r1;r1', title=
'Bottom SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  586                                     xbins=100, xmin=perp_min, xmax=perp_max)
 
  588     monitoringGroup.defineHistogram(
'x2;x2', title=
'Middle SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  589                                     xbins=100, xmin=-perp_max, xmax=perp_max)
 
  590     monitoringGroup.defineHistogram(
'y2;y2', title=
'Middle SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  591                                     xbins=100, xmin=-perp_max, xmax=perp_max)
 
  592     monitoringGroup.defineHistogram(
'z2;z2', title=
'Middle SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  593                                     xbins=100, xmin=-3000, xmax=3000)
 
  594     monitoringGroup.defineHistogram(
'r2;r2', title=
'Middle SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  595                                     xbins=100, xmin=perp_min, xmax=perp_max)
 
  597     monitoringGroup.defineHistogram(
'x3;x3', title=
'Top SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  598                                     xbins=100, xmin=-perp_max, xmax=perp_max)
 
  599     monitoringGroup.defineHistogram(
'y3;y3', title=
'Top SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  600                                     xbins=100, xmin=-perp_max, xmax=perp_max)
 
  601     monitoringGroup.defineHistogram(
'z3;z3', title=
'Top SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  602                                     xbins=100, xmin=-3000, xmax=3000)
 
  603     monitoringGroup.defineHistogram(
'r3;r3', title=
'Top SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  604                                     xbins=100, xmin=perp_min, xmax=perp_max)
 
  606     if 'PixelSeeds' in ntupleName:
 
  607         monitoringGroup.defineHistogram(
'pt;pT', title=
'Pt;Pt;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  608                                         xbins=100, xmin=0, xmax=100)
 
  609         monitoringGroup.defineHistogram(
'd0;d0', title=
'd0;d0 [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  610                                         xbins=50, xmin=0, xmax=2)
 
  611         monitoringGroup.defineHistogram(
'eta;Eta', title=
'Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  612                                         xbins=50, xmin=0, xmax=4.5)
 
  613         monitoringGroup.defineHistogram(
'theta;Theta', title=
'Theta;Theta;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  614                                         xbins=50, xmin=0, xmax=1.6)
 
  615         monitoringGroup.defineHistogram(
'penalty;Penalty', title=
'Penalty;Penalty;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  616                                         xbins=50, xmin=0, xmax=200)
 
  617         monitoringGroup.defineHistogram(
'dzdr_b;dzdr_b', title=
'dzdr_b;;;', type=
'TH1F', path=f
'{histoPath}',
 
  618                                         xbins=50, xmin=-30, xmax=30)
 
  619         monitoringGroup.defineHistogram(
'dzdr_t;dzdr_t', title=
'dzdr_t;;;', type=
'TH1F', path=f
'{histoPath}',
 
  620                                         xbins=50, xmin=-30, xmax=30)
 
  621     elif 'StripSeeds' in ntupleName:
 
  622         monitoringGroup.defineHistogram(
'pt;pT', title=
'Pt;Pt;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  623                                         xbins=100, xmin=0, xmax=2300)
 
  624         monitoringGroup.defineHistogram(
'd0;d0', title=
'd0;d0 [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  625                                         xbins=50, xmin=0, xmax=120)
 
  626         monitoringGroup.defineHistogram(
'eta;Eta', title=
'Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  627                                         xbins=50, xmin=0, xmax=4.5)
 
  628         monitoringGroup.defineHistogram(
'theta;Theta', title=
'Theta;Theta;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  629                                         xbins=50, xmin=0, xmax=1.6)
 
  630         monitoringGroup.defineHistogram(
'penalty;Penalty', title=
'Penalty;Penalty;Entries;', type=
'TH1F', path=f
'{histoPath}',
 
  631                                         xbins=50, xmin=0, xmax=20000)
 
  632         monitoringGroup.defineHistogram(
'dzdr_b;dzdr_b', title=
'dzdr_b;;;', type=
'TH1F', path=f
'{histoPath}',
 
  633                                         xbins=50, xmin=-6.5, xmax=6.5)
 
  634         monitoringGroup.defineHistogram(
'dzdr_t;dzdr_t', title=
'dzdr_t;;;', type=
'TH1F', path=f
'{histoPath}',
 
  635                                         xbins=50, xmin=-6.5, xmax=6.5)
 
  637     if flags.Tracking.doTruth:
 
  638         monitoringGroup.defineHistogram(
'passed,estimated_eta;EfficiencyEta', title=
'Efficiency vs eta;eta;Efficiency', type=
'TEfficiency', path=f
'{histoPath}',
 
  639                                         xbins=50, xmin=-5, xmax=5)
 
  640         monitoringGroup.defineHistogram(
'passed,estimated_pt;EfficiencyPt', title=
'Efficiency vs pT;pT [GeV];Efficiency', type=
'TEfficiency', path=f
'{histoPath}',
 
  641                                         xbins=30, xmin=0, xmax=120)
 
  644     list_variables = 
"x1,y1,z1,r1,x2,y2,z2,r2,x3,y3,z3,r3,pt,theta,eta,d0,dzdr_b,dzdr_t,penalty,event_number,actual_mu" 
  645     tree_def = 
"x1/vector<double>:y1/vector<double>:z1/vector<double>:r1/vector<double>:x2/vector<double>:y2/vector<double>:z2/vector<double>:r2/vector<double>:x3/vector<double>:y3/vector<double>:z3/vector<double>:r3/vector<double>\ 
  646 :pt/vector<float>:theta/vector<float>:eta/vector<float>:d0/vector<float>:dzdr_b/vector<float>:dzdr_t/vector<float>:penalty/vector<float>:event_number/l:actual_mu/F" 
  647     if flags.Tracking.doTruth:
 
  648         list_variables += 
",truth_barcode,truth_prob" 
  649         tree_def += 
":truth_barcode/vector<int>:truth_prob/vector<double>" 
  651     if flags.Acts.doAnalysisNtuples:
 
  652       monitoringGroup.defineTree(f
'{list_variables};{ntupleName}',
 
  656     acc.merge(helper.result())
 
  662                                 name: str = 
"ActsPixelSeedAnalysisAlg",
 
  663                                 extension: str = 
"Acts",
 
  664                                 **kwargs) -> ComponentAccumulator:
 
  665     kwargs.setdefault(
'InputSeedCollection', 
'ActsPixelSeeds')
 
  667     if flags.Tracking.doTruth:
 
  668         kwargs.setdefault(
'DetectorElements', 
'ITkPixelDetectorElementCollection')
 
  669         kwargs.setdefault(
'ITkClustersTruth', 
'') 
 
  674                                       histoPath = extension.replace(
"Acts", 
"") + 
'PixelSeeds',
 
  675                                       ntupleName = extension.replace(
"Acts", 
"") + 
'PixelSeeds',
 
  680                                 name: str = 
"ActsStripSeedAnalysisAlg",
 
  681                                 extension: str = 
"Acts",
 
  682                                 **kwargs) -> ComponentAccumulator:
 
  683     kwargs.setdefault(
'InputSeedCollection', 
'ActsStripSeeds')
 
  684     kwargs.setdefault(
'UsePixel', 
False)
 
  686     if flags.Tracking.doTruth:
 
  687         kwargs.setdefault(
'DetectorElements', 
'ITkStripDetectorElementCollection')
 
  688         kwargs.setdefault(
'ITkClustersTruth', 
'') 
 
  693                                       histoPath = extension.replace(
"Acts", 
"") + 
'StripSeeds',
 
  694                                       ntupleName = extension.replace(
"Acts", 
"") + 
'StripSeeds',
 
  700                                                extension: str = 
"Acts", 
 
  702                                                ntupleName: str = 
"",
 
  703                                                **kwargs) -> ComponentAccumulator:
 
  704     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  705     helper = AthMonitorCfgHelper(flags,extension + 
'EstimatedTrackParamsAnalysisAlgCfg')
 
  707     kwargs.setdefault(
'MonGroupName', extension + 
'SeedAnalysisAlg')
 
  709     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.EstimatedTrackParamsAnalysisAlg, name, **kwargs)
 
  710     monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'], 
'/ActsAnalysis/')
 
  712     monitoringGroup.defineHistogram(
'Nparams', title=
'Number of Estimated Parameters from Seeds;N;Entries', type=
'TH1I', path=f
'{histoPath}',
 
  713                                     xbins=100, xmin=0, xmax=0)
 
  715     if flags.Acts.doAnalysisNtuples:
 
  716       monitoringGroup.defineTree(f
"track_param_pt,track_param_eta,track_param_phi,track_param_loc0,track_param_loc1,track_param_theta,track_param_qoverp,track_param_time,track_param_charge;{ntupleName}",
 
  718                                 treedef=
"track_param_pt/vector<double>:track_param_eta/vector<double>:track_param_phi/vector<double>:track_param_loc0/vector<double>:track_param_loc1/vector<double>:track_param_theta/vector<double>:track_param_qoverp/vector<double>:track_param_time/vector<double>:track_param_charge/vector<int>")
 
  720     return helper.result()
 
  723                                        name: str = 
"ActsSeedingAlgorithmAnalysis",
 
  724                                        **kwargs) -> ComponentAccumulator:
 
  727     addOtherSeedingAlgorithms = kwargs.pop(
"addOtherSeedingAlgorithms", 
False)
 
  729     MonitoringGroupNames = []
 
  731     if "SeedingTools" not in kwargs:
 
  732         from InDetConfig.SiSpacePointsSeedToolConfig 
import ITkSiSpacePointsSeedMakerCfg
 
  734         ITkSiSpacePointsSeedMaker.maxSize = 1e8
 
  735         MonitoringGroupNames.append(
"ITkSiSpacePointSeedMaker")
 
  737         from ActsConfig.ActsSeedingConfig 
import ActsSiSpacePointsSeedMakerToolCfg
 
  740         from ActsConfig.ActsSeedingConfig 
import ActsFastPixelSeedingToolCfg
 
  744         ActsITkSiSpacePointsSeedMaker.doSeedConversion = 
False 
  745         MonitoringGroupNames.append(
"ActsITkSiSpacePointSeedMaker")
 
  747         if addOtherSeedingAlgorithms:
 
  748             from ActsConfig.ActsSeedingConfig 
import ActsPixelGbtsSeedingToolCfg
 
  753                                                                                                        name=
"ActsSiSpacePointsSeedMakerGbts",
 
  754                                                                                                        SeedToolPixel=gbtsSeedToolPixel))
 
  755             ActsGbtsITkSiSpacePointsSeedMaker.doSeedConversion = 
False 
  756             MonitoringGroupNames.append(
"ActsGbtsITkSiSpacePointSeedMaker")
 
  758             from ActsConfig.ActsSeedingConfig 
import ActsPixelOrthogonalSeedingToolCfg, ActsStripOrthogonalSeedingToolCfg
 
  761             ActsITkSiSpacePointsSeedMakerOrthogonal = \
 
  763                                                                        name=
"ActsSiSpacePointsSeedMakerOrthogonal",
 
  764                                                                        SeedToolPixel=pixel_orthogonal_seeding_tool,
 
  765                                                                        SeedToolStrip=strip_orthogonal_seeding_tool))
 
  766             ActsITkSiSpacePointsSeedMakerOrthogonal.doSeedConversion = 
False 
  767             MonitoringGroupNames.append(
"ActsOrthogonalITkSiSpacePointSeedMaker")
 
  771         from GaudiKernel.GaudiHandles 
import PrivateToolHandleArray
 
  773         privateSeedingTools = [ITkSiSpacePointsSeedMaker, ActsITkSiSpacePointsSeedMaker]
 
  775         if addOtherSeedingAlgorithms:
 
  776             privateSeedingTools.append(ActsGbtsITkSiSpacePointsSeedMaker)
 
  777             privateSeedingTools.append(ActsITkSiSpacePointsSeedMakerOrthogonal)
 
  779         kwargs.setdefault(
"SeedingTools",
 
  780                           PrivateToolHandleArray(privateSeedingTools))
 
  782     kwargs.setdefault(
"MonitorNames", MonitoringGroupNames)
 
  783     kwargs.setdefault(
"DoStrip", 
not flags.Tracking.doITkFastTracking)
 
  785     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  786     helper = AthMonitorCfgHelper(flags, 
'SeedingAlgorithmAnalysisAlgCfg')
 
  787     monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedingAlgorithmAnalysisAlg, name, **kwargs)
 
  789     if flags.Acts.doAnalysisNtuples:
 
  790       for groupName 
in MonitoringGroupNames:
 
  791         monitoringGroup = helper.addGroup(monitoringAlgorithm, groupName, 
'/'+groupName+
'/')
 
  792         monitoringGroup.defineTree(
'eventNumber,stripSeedInitialisationTime,stripSeedProductionTime,pixelSeedInitialisationTime,pixelSeedProductionTime,numberPixelSpacePoints,numberStripSpacePoints,numberPixelSeeds,numberStripSeeds;seedInformation',
 
  794                                   treedef=
'eventNumber/I:stripSeedInitialisationTime/F:stripSeedProductionTime/F:pixelSeedInitialisationTime/F:pixelSeedProductionTime/F:numberPixelSpacePoints/I:numberStripSpacePoints/I:numberPixelSeeds/I:numberStripSeeds/I')
 
  796     acc.merge(helper.result())
 
  801                                                 name: str = 
'ActsPixelEstimatedTrackParamsAnalysisAlg',
 
  802                                                 extension: str = 
"Acts",
 
  803                                                 **kwargs) -> ComponentAccumulator:
 
  804     kwargs.setdefault(
'InputTrackParamsCollection', 
'ActsPixelEstimatedTrackParams')
 
  808                                                       histoPath = extension.replace(
"Acts", 
"") + 
'PixelEstimatedTrackParams',
 
  809                                                       ntupleName = extension.replace(
"Acts", 
"") + 
'PixelEstimatedTrackParams',
 
  814                                                 name: str = 
'ActsStripEstimatedTrackParamsAnalysisAlg',
 
  815                                                 extension: str = 
"Acts",
 
  816                                                 **kwargs) -> ComponentAccumulator:
 
  817     kwargs.setdefault(
'InputTrackParamsCollection', 
'ActsStripEstimatedTrackParams')
 
  821                                                       histoPath = extension.replace(
"Acts", 
"") + 
'StripEstimatedTrackParams',
 
  822                                                       ntupleName = extension.replace(
"Acts", 
"") + 
'StripEstimatedTrackParams',
 
  828                                      **kwargs) -> ComponentAccumulator:
 
  831     if 'ExtrapolationTool' not in kwargs:
 
  832         from ActsConfig.ActsGeometryConfig 
import ActsExtrapolationToolCfg
 
  838     if 'TrackingGeometryTool' not in kwargs:
 
  839         from ActsConfig.ActsGeometryConfig 
import ActsTrackingGeometryToolCfg
 
  841             'TrackingGeometryTool',
 
  845     if 'ATLASConverterTool' not in kwargs:
 
  846         from ActsConfig.ActsEventCnvConfig 
import ActsToTrkConverterToolCfg
 
  849     if 'TrackParamsEstimationTool' not in kwargs:
 
  850         from ActsConfig.ActsTrackParamsEstimationConfig 
import ActsTrackParamsEstimationToolCfg
 
  853     kwargs.setdefault(
"autoReverseSearch", flags.Acts.autoReverseSearchCKF)
 
  855     acc.addEventAlgo(CompFactory.ActsTrk.SeedsToTrackParamsAlg(name, **kwargs))
 
  859                                       name: str = 
'ActsPixelSeedsToTrackParamsAlg',
 
  860                                       extension: str = 
"Acts",
 
  861                                       **kwargs) -> ComponentAccumulator:
 
  862     kwargs.setdefault(
'InputSeedContainerKey', 
'ActsPixelSeeds')
 
  863     kwargs.setdefault(
'DetectorElementsKey', 
'ITkPixelDetectorElementCollection')
 
  864     kwargs.setdefault(
'OutputTrackParamsCollectionKey', 
'ActsPixelEstimatedTrackParams')
 
  871                                       name: str = 
'ActsStripSeedsToTrackParamsAlgCfg',
 
  872                                       extension: str = 
"Acts",
 
  873                                       **kwargs) -> ComponentAccumulator:
 
  874     kwargs.setdefault(
'InputSeedContainerKey', 
'ActsStripSeeds')
 
  875     kwargs.setdefault(
'DetectorElementsKey', 
'ITkStripDetectorElementCollection')
 
  876     kwargs.setdefault(
'OutputTrackParamsCollectionKey', 
'ActsStripEstimatedTrackParams')
 
  883                    name: str = 
'PhysValActs',
 
  884                    **kwargs) -> ComponentAccumulator:
 
  888     typedCollections = flags.Input.TypedCollections
 
  889     for col 
in typedCollections:
 
  890         col_type, col_name = col.split(
"#")
 
  891         if col_type == 
"xAOD::PixelClusterContainer":
 
  892             kwargs.setdefault(
"doPixelClusters", 
True)
 
  893         elif col_type == 
"xAOD::StripClusterContainer":
 
  894             kwargs.setdefault(
"doStripClusters", 
True)
 
  895         elif col_type == 
"xAOD::HGTDClusterContainer":
 
  896             kwargs.setdefault(
"doHgtdClusters", flags.PhysVal.IDPVM.doHGTD)
 
  897         elif col_type == 
"xAOD::SpacePointContainer":
 
  898             if 'Pixel' in col_name:
 
  899                 kwargs.setdefault(
"doPixelSpacePoints", 
True)
 
  900             elif 'Strip' in col_name:
 
  901                 kwargs.setdefault(
"doStripSpacePoints", 
True)
 
  902                 kwargs.setdefault(
"doStripOverlapSpacePoints", 
True)
 
  904     acc.setPrivateTools(CompFactory.ActsTrk.PhysValTool(name=name,
 
  910     if flags.Detector.EnableITkPixel:
 
  912     if flags.Detector.EnableITkStrip:
 
  919     if flags.Detector.EnableITkPixel:
 
  921     if flags.Detector.EnableITkStrip:
 
  928     if flags.Detector.EnableITkPixel:
 
  930     if flags.Detector.EnableITkStrip:
 
  935                                name : str = 
"ActsResidualAnalysisAlg",
 
  936                                **kwargs) -> ComponentAccumulator:
 
  940     kwargs.setdefault(
'TrackParticles', 
'InDetTrackParticles')
 
  941     kwargs.setdefault(
"MonGroupName", kwargs[
'TrackParticles'])
 
  943     from AthenaMonitoring 
import AthMonitorCfgHelper
 
  944     helper = AthMonitorCfgHelper(flags, kwargs[
'TrackParticles'] + 
'AnalysisAlgCfg')
 
  946     ResidualMonitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.ITkAlignMonResidualsAlg, name, **kwargs)
 
  948     layersPix = [
'0', 
'1', 
'2', 
'3', 
'4']
 
  950     path = f
'/ActsAnalysis/{kwargs["TrackParticles"]}/Residuals' 
  951     residualXArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm, 
'PixResidualX', topPath = path)
 
  952     residualYArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm, 
'PixResidualY', topPath = path)
 
  953     pullXArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm, 
'PixPullX', topPath = path)
 
  954     pullYArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm, 
'PixPullY', topPath = path)
 
  956     layersStrip = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8']
 
  957     stripResidualXArray  = helper.addArray([len(layersStrip)], ResidualMonitoringAlgorithm, 
'StripResidualX', topPath = path)
 
  958     stripPullXArray  = helper.addArray([len(layersStrip)], ResidualMonitoringAlgorithm, 
'StripPullX', topPath = path)
 
  967     for postfix,tool 
in residualXArray.Tools.items():
 
  968         layer = layersPix[
int(postfix.split(
"_")[1])]
 
  969         title = (
'UnBiased X Residual Pixel Barrel %s' % layer)
 
  970         name = 
'm_pix_residualsx;pix_b' + layer + 
'_residualx' 
  971         tool.defineHistogram(name, title = title, type = 
'TH1F',
 
  972                               xbins = 100, xmin = xminX, xmax = xmaxX) 
 
  975     for postfix,tool 
in residualYArray.Tools.items():
 
  976         layer = layersPix[
int(postfix.split(
"_")[1])]
 
  977         title = (
'UnBiased Y Residual Pixel Barrel %s' % layer)
 
  978         name = 
'm_pix_residualsy;pix_b' + layer + 
'_residualy' 
  979         tool.defineHistogram(name, title = title, type = 
'TH1F',
 
  980                               xbins = 100, xmin = xminY, xmax = xmaxY) 
 
  983     for postfix,tool 
in pullXArray.Tools.items():
 
  985         layer = layersPix[
int(postfix.split(
"_")[1])]
 
  986         title = (
'UnBiased X Pull Pixel Barrel %s' % layer)
 
  987         name = 
'm_pix_pullsx;pix_b' + layer + 
'_pullx' 
  988         tool.defineHistogram(name, title = title, type = 
'TH1F',
 
  989                               xbins = 100, xmin = -pullX, xmax = pullX) 
 
  992     for postfix,tool 
in pullYArray.Tools.items():
 
  993         layer = layersPix[
int(postfix.split(
"_")[1])]
 
  994         title = (
'UnBiased Y Pull Pixel Barrel %s' % layer)
 
  995         name = 
'm_pix_pullsy;pix_b' + layer + 
'_pully' 
  996         tool.defineHistogram(name, title = title, type = 
'TH1F',
 
  997                               xbins = 100, xmin = -pullX, xmax = pullX) 
 
 1001     for postfix,tool 
in stripResidualXArray.Tools.items():
 
 1002         layer = layersStrip[
int(postfix.split(
"_")[1])]
 
 1003         title = (
'UnBiased X Residual Strip Barrel %s' % layer)
 
 1004         name = 
'm_strip_residualsx;strip_b' + layer + 
'_residualx' 
 1005         tool.defineHistogram(name, title = title, type = 
'TH1F',
 
 1006                               xbins = 100, xmin = xminX, xmax = xmaxX) 
 
 1009     for postfix,tool 
in stripPullXArray.Tools.items():
 
 1010         layer = layersStrip[
int(postfix.split(
"_")[1])]
 
 1011         title = (
'UnBiased X Pull Strip Barrel %s' % layer)
 
 1012         name = 
'm_strip_pullsx;strip_b' + layer + 
'_pullx' 
 1013         tool.defineHistogram(name, title = title, type = 
'TH1F',
 
 1014                               xbins = 100, xmin = -pullX, xmax = pullX) 
 
 1016     acc.merge(helper.result())