ATLAS Offline Software
Loading...
Searching...
No Matches
runBeamSpotCalibration.py
Go to the documentation of this file.
1#!/usr/bin/env python
2# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
4from glob import glob
5
6from AthenaConfiguration.AllConfigFlags import initConfigFlags
7flags = initConfigFlags()
8
9import configMy
10
11#Job options
12if 'outputlevel' not in configMy.jobConfig: configMy.jobConfig['outputlevel'] = 3
13if 'maxEvents' not in configMy.jobConfig: configMy.jobConfig['maxEvents'] = -1
14if 'skipEvents' not in configMy.jobConfig: configMy.jobConfig['skipEvents'] = 0
15if 'MsgLimit' not in configMy.jobConfig: configMy.jobConfig['MsgLimit'] = 20
16
17if 'outputfileprefix' not in configMy.jobConfig: configMy.jobConfig['outputfileprefix'] = ''
18if 'outputfile' not in configMy.jobConfig: configMy.jobConfig['outputfile'] = configMy.jobConfig['outputfileprefix']+'beamspot.db'
19if 'histfile' not in configMy.jobConfig: configMy.jobConfig['histfile'] = configMy.jobConfig['outputfileprefix']+'nt.root'
20if 'monfile' not in configMy.jobConfig: configMy.jobConfig['monfile'] = configMy.jobConfig['outputfileprefix']+'beamspotmonitoring.root'
21if 'jobpostprocsteps' not in configMy.jobConfig: configMy.jobConfig['jobpostprocsteps'] = 'MergeNt PlotBeamSpot LinkResults AveBeamSpot DQBeamSpot'
22if 'doMonitoring' not in configMy.jobConfig: configMy.jobConfig['doMonitoring'] = True
23if 'VertexNtuple' not in configMy.jobConfig: configMy.jobConfig['VertexNtuple'] = True
24if 'WriteAllVertices' not in configMy.jobConfig: configMy.jobConfig['WriteAllVertices'] = False
25if 'VertexTreeName' not in configMy.jobConfig: configMy.jobConfig['VertexTreeName'] = 'Vertices'
26
27#Event selection options
28if 'UseBCID' not in configMy.jobConfig: configMy.jobConfig['UseBCID'] = []
29if 'UseFilledBCIDsOnly' not in configMy.jobConfig: configMy.jobConfig['UseFilledBCIDsOnly'] = True
30
31#Vertex Selection Options
32if 'MinTracksPerVtx' not in configMy.jobConfig: configMy.jobConfig['MinTracksPerVtx'] = 5
33if 'MaxTracksPerVtx' not in configMy.jobConfig: configMy.jobConfig['MaxTracksPerVtx'] = 1000000
34if 'MinVtxNum' not in configMy.jobConfig: configMy.jobConfig['MinVtxNum'] = 100
35if 'MaxVtxChi2' not in configMy.jobConfig: configMy.jobConfig['MaxVtxChi2'] = 10
36if 'MaxTransverseErr' not in configMy.jobConfig: configMy.jobConfig['MaxTransverseErr'] = 1000000
37if 'VertexTypes' not in configMy.jobConfig: configMy.jobConfig['VertexTypes'] = ['PriVtx']
38if 'MinVtxProb' not in configMy.jobConfig: configMy.jobConfig['MinVtxProb'] = .001
39if 'VertexContainer' not in configMy.jobConfig: configMy.jobConfig['VertexContainer'] = 'PrimaryVertices'
40if 'MaxAbsCorrelXY' not in configMy.jobConfig: configMy.jobConfig['MaxAbsCorrelXY'] = 0.8
41
42#Options for sorting vertices into fits
43if 'LumiRange' not in configMy.jobConfig: configMy.jobConfig['LumiRange'] = 0
44if 'RunRange' not in configMy.jobConfig: configMy.jobConfig['RunRange'] = 0
45
46#if 'GroupFitsByBCID' not in configMy.jobConfig: configMy.jobConfig['GroupFitsByBCID'] = False
47#if 'GroupFitsByPileup' not in configMy.jobConfig: configMy.jobConfig['GroupFitsByPileup'] = False
48if 'GroupFitsBy' not in configMy.jobConfig: configMy.jobConfig['GroupFitsBy'] = 'none'
49if 'EventRange' not in configMy.jobConfig: configMy.jobConfig['EventRange'] = 0
50
51#Fit Options
52if 'InitialKFactor' not in configMy.jobConfig: configMy.jobConfig['InitialKFactor'] = 1.0
53if 'ConstantKFactor' not in configMy.jobConfig: configMy.jobConfig['ConstantKFactor'] = False
54
55#Fit Options for official fit only
56if 'MaxSigmaTr' not in configMy.jobConfig: configMy.jobConfig['MaxSigmaTr'] = 20.
57if 'MaxSigmaVtx' not in configMy.jobConfig: configMy.jobConfig['MaxSigmaVtx'] = 2.0
58if 'TruncatedRMS' not in configMy.jobConfig: configMy.jobConfig['TruncatedRMS'] = True
59if 'SetInitialRMS' not in configMy.jobConfig: configMy.jobConfig['SetInitialRMS'] = False
60if 'OutlierChi2Tr' not in configMy.jobConfig: configMy.jobConfig['OutlierChi2Tr'] = 20.
61if 'BeamSpotToolList' not in configMy.jobConfig: configMy.jobConfig['BeamSpotToolList'] = ['InDetBeamSpotRooFit','InDetBeamSpotVertex']
62if 'FixWidth' not in configMy.jobConfig: configMy.jobConfig['FixWidth'] = False
63
64#Fit Options for RooFit only
65if 'RooFitMaxTransverseErr' not in configMy.jobConfig: configMy.jobConfig['RooFitMaxTransverseErr'] = 0.05
66
67#Job options for Monitoring algorithm
68if 'MinTrackPt' not in configMy.jobConfig: configMy.jobConfig['MinTrackPt'] = 500.
69if 'useBeamSpot' not in configMy.jobConfig:
70 # change to True as soon as I have PrimaryVertexMonitoring in as well
71 configMy.jobConfig['useBeamSpot'] = configMy.jobConfig.get('beamspottag','')!='' or configMy.jobConfig.get('beamspotfile','')!=''
72
73#Job options for trigger configuration
74if 'triggerConfig' not in configMy.jobConfig: configMy.jobConfig['triggerConfig'] = 'DB'
75
76#Printout of job configuration
77print("Job configuration: ")
78for option in configMy.jobConfig:
79 print(" ",option,': ',configMy.jobConfig[option])
80print(" ")
81
82flags.Exec.OutputLevel = configMy.jobConfig['outputlevel']
83flags.Exec.SkipEvents = configMy.jobConfig['skipEvents']
84flags.Exec.MaxEvents = configMy.jobConfig['maxEvents']
85
86flags.Input.Files = []
87for path in configMy.jobConfig['inputfiles']:
88 print("path: ",path)
89 print("glob: ",glob(path))
90 flags.Input.Files += glob(path)
91
92
93flags.Trigger.triggerConfig = configMy.jobConfig['triggerConfig']
94flags.DQ.enableLumiAccess = False
95flags.Output.HISTFileName = configMy.jobConfig['monfile']
96flags.Exec.EventPrintoutInterval = 10000
97flags.fillFromArgs()
98flags.lock()
99
100from AthenaConfiguration.MainServicesConfig import MainServicesCfg
101acc = MainServicesCfg(flags)
102from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
103acc.merge(PoolReadCfg(flags))
104acc.getService("MessageSvc").defaultLimit = configMy.jobConfig['MsgLimit']
105
106from InDetBeamSpotFinder.InDetBeamSpotFinderConfig import InDetBeamSpotFinderCfg
107acc.merge(InDetBeamSpotFinderCfg(flags,configMy.jobConfig))
108
109from AthenaConfiguration.ComponentFactory import CompFactory
110acc.addService(CompFactory.THistSvc(
111 Output = ["INDETBEAMSPOTFINDER DATAFILE='%s' OPT='RECREATE'" % configMy.jobConfig['histfile']]))
112
113if configMy.jobConfig['doMonitoring']:
114 from AthenaMonitoring import AthMonitorCfgHelper
115 helper = AthMonitorCfgHelper(flags, "BeamSpotMonitoring")
116 from InDetGlobalMonitoringRun3Test.InDetGlobalBeamSpotMonAlgCfg import (
117 InDetGlobalBeamSpotMonAlgCfg )
118 InDetGlobalBeamSpotMonAlgCfg(helper, acc, flags,configMy.jobConfig)
119 acc.merge(helper.result())
120
121acc.printConfig(withDetails=True)
122
123# Execute and finish
124sc = acc.run()
125
126# Success should be 0
127import sys
128sys.exit(not sc.isSuccess())
void print(char *figname, TCanvas *c1)