Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • andesai/calypso
  • sazhang/calypso
  • yuxu/calypso
  • wfilali/calypso
  • bewilson/calypso
  • ovaldesm/calypso
  • xai/calypso
  • ymaruya/calypso
  • anburger/calypso
  • seley/calypso
  • sudatta/calypso
  • notarann/calypso
  • hhjelm/calypso
  • tarai/calypso
  • lmccoy/calypso
  • agarabag/calypso
  • fneuhaus/calypso
  • vlian/calypso
  • yechou/calypso
  • vlian/calypso-official
  • fasermc/calypso
  • schsu/calypso
  • maprim/calypso
  • cantel/calypso
  • jwspence/calypso
  • diwang/calypso
  • ccavanag/calypso
  • gwilliam/calypso
  • asalman/calypso
  • toinada/calypso
  • jboyd/calypso
  • abarkley/calypso
  • yafik/calypso
  • cpandini/calypso
  • tboeckh/calypso
  • sshively/calypso
  • keli/calypso
  • dfellers/calypso
  • torrence/calypso
  • coccaro/calypso
  • dcasper/calypso
  • faser/calypso
42 results
Show changes
Commits on Source (23)
Showing
with 206 additions and 157 deletions
...@@ -38,7 +38,7 @@ test_unittest: ...@@ -38,7 +38,7 @@ test_unittest:
tags: tags:
- k8s-cvmfs - k8s-cvmfs
script: script:
- set +e && export ALRB_CONT_RUNPAYLOAD="asetup --input=asetup.faser Athena,24.0.41; source `find . -name 'setup.sh'`; cd build; ctest -j3" && set -e - set +e && export ALRB_CONT_RUNPAYLOAD="asetup --input=asetup.faser Athena,24.0.41; source `find . -name 'setup.sh'`; cd build; ctest -j3 --output-on-failure" && set -e
- echo $ALRB_CONT_RUNPAYLOAD - echo $ALRB_CONT_RUNPAYLOAD
- set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -c alma9 && set -e - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -c alma9 && set -e
dependencies: dependencies:
......
...@@ -64,10 +64,5 @@ def CaloWaveformDigitizationOutputCfg(flags, **kwargs): ...@@ -64,10 +64,5 @@ def CaloWaveformDigitizationOutputCfg(flags, **kwargs):
ItemList = [ ItemList = [
"RawWaveformContainer#*" "RawWaveformContainer#*"
] ]
acc.merge(OutputStreamCfg(flags, "RDO")) acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
ostream = acc.getEventAlgo("OutputStreamRDO")
# ostream.TakeItemsFromInput = True # Copies all data from input file to output
# ostream.TakeItemsFromInput = False
# Try turning this off
ostream.ItemList += ItemList
return acc return acc
...@@ -9,7 +9,8 @@ atlas_subdir( Digitization ) ...@@ -9,7 +9,8 @@ atlas_subdir( Digitization )
atlas_install_scripts( scripts/*.sh scripts/*.py ) atlas_install_scripts( scripts/*.sh scripts/*.py )
atlas_add_test( ProdDigi atlas_add_test( ProdDigi
SCRIPT scripts/faser_digi.py ${CMAKE_CURRENT_SOURCE_DIR}/../rawdata/FaserMC-MC22_PG_muon_fasernu_100GeV-100012-00000-HITS.root SCRIPT scripts/faser_digi.py ${CMAKE_CURRENT_SOURCE_DIR}/../rawdata/FaserMC-MC24_PG_muon_fasernu_100GeV-100012-00000-HITS.root
PROPERTIES TIMEOUT 300 ) POST_EXEC_SCRIPT nopost.sh
PROPERTIES TIMEOUT 300 )
...@@ -70,7 +70,7 @@ configFlags.IOVDb.DatabaseInstance = "OFLP200" # Use MC conditions for now ...@@ -70,7 +70,7 @@ configFlags.IOVDb.DatabaseInstance = "OFLP200" # Use MC conditions for now
configFlags.Input.ProjectName = "mc20" configFlags.Input.ProjectName = "mc20"
#configFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.Beam.NumberOfCollisions = 0. configFlags.Beam.NumberOfCollisions = 0.
configFlags.Digitization.TruthOutput = True configFlags.Digitization.EnableTruth = True
# TI12 old geometry # TI12 old geometry
if runtype == "TI12OldMC": if runtype == "TI12OldMC":
...@@ -181,6 +181,14 @@ acc.merge(CaloWaveformDigitizationCfg(configFlags, digiTag=args.digiTag, Advance ...@@ -181,6 +181,14 @@ acc.merge(CaloWaveformDigitizationCfg(configFlags, digiTag=args.digiTag, Advance
from ScintDigiAlgs.ScintDigiAlgsConfig import ScintWaveformDigitizationCfg from ScintDigiAlgs.ScintDigiAlgsConfig import ScintWaveformDigitizationCfg
acc.merge(ScintWaveformDigitizationCfg(configFlags, digiTag=args.digiTag, AdvancedTiming=(not args.simpleTiming))) acc.merge(ScintWaveformDigitizationCfg(configFlags, digiTag=args.digiTag, AdvancedTiming=(not args.simpleTiming)))
#add beam truth event
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
# acc = ComponentAccumulator()
ItemList = ["McEventCollection#BeamTruthEvent"]
acc.merge(OutputStreamCfg(configFlags, "RDO", ItemList))
# Configure verbosity # Configure verbosity
if args.verbose: if args.verbose:
acc.foreach_component("*").OutputLevel = VERBOSE acc.foreach_component("*").OutputLevel = VERBOSE
......
...@@ -180,7 +180,7 @@ configFlags.IOVDb.DatabaseInstance = "OFLP200" # Use MC conditions for now ...@@ -180,7 +180,7 @@ configFlags.IOVDb.DatabaseInstance = "OFLP200" # Use MC conditions for now
configFlags.Input.ProjectName = "mc20" configFlags.Input.ProjectName = "mc20"
#configFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.Beam.NumberOfCollisions = 0. configFlags.Beam.NumberOfCollisions = 0.
configFlags.Digitization.TruthOutput = True configFlags.Digitization.EnableTruth = True
# TI12 old geometry # TI12 old geometry
if runtype == "TI12OldMC": if runtype == "TI12OldMC":
configFlags.GeoModel.FaserVersion = "FASER-01" configFlags.GeoModel.FaserVersion = "FASER-01"
......
...@@ -24,7 +24,7 @@ def faser_pgparser(): ...@@ -24,7 +24,7 @@ def faser_pgparser():
parser.add_argument("--conf", action='append', parser.add_argument("--conf", action='append',
help="Specify configuration file with default values") help="Specify configuration file with default values")
parser.add_argument("--geom", default="TI12MC", parser.add_argument("--geom", default="TI12MC",
help="Specify geomtery to simulation (default: TI12MC, alt: TestBeamMC)") help="Specify geometry to simulation (default: TI12MC, alt: TestBeamMC)")
parser.add_argument("--run", default=123456, type=int, parser.add_argument("--run", default=123456, type=int,
help="Run number to generate") help="Run number to generate")
......
...@@ -66,6 +66,8 @@ if __name__ == '__main__': ...@@ -66,6 +66,8 @@ if __name__ == '__main__':
# #
# More config flags (R24) # More config flags (R24)
# #
from Campaigns.Utils import Campaign
from AthenaConfiguration.Enums import BeamType
configFlags.Common.MsgSourceLength = 30 configFlags.Common.MsgSourceLength = 30
configFlags.Input.MCCampaign = Campaign.Unknown configFlags.Input.MCCampaign = Campaign.Unknown
configFlags.Input.TypedCollections = [] configFlags.Input.TypedCollections = []
...@@ -284,14 +286,6 @@ if __name__ == '__main__': ...@@ -284,14 +286,6 @@ if __name__ == '__main__':
from G4FaserAlg.G4FaserAlgConfig import G4FaserAlgCfg from G4FaserAlg.G4FaserAlgConfig import G4FaserAlgCfg
cfg.merge(G4FaserAlgCfg(configFlags)) cfg.merge(G4FaserAlgCfg(configFlags))
#Event Filtering?
if args.filter == 'muon_conversion':
import McParticleEvent.Pythonizations
from GeneratorUtils.MuonFilters import ConversionFilter
filt = ConversionFilter("MuonFilter") # , muonEnergyLoss = 5000, minConversionEnergy = 2000) # , muonEnergyLoss = 5000, maxRadius = 100)
cfg.addEventAlgo(filt, sequenceName = "AthAlgSeq")
OutputStreamHITS = cfg.getEventAlgo("OutputStreamHITS")
OutputStreamHITS.RequireAlgs = ["MuonFilter"]
# #
# Output file # Output file
# #
...@@ -302,6 +296,27 @@ if __name__ == '__main__': ...@@ -302,6 +296,27 @@ if __name__ == '__main__':
# Add in-file MetaData # Add in-file MetaData
from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
cfg.merge(SetupMetaDataForStreamCfg(configFlags, "HITS", AcceptAlgs=AcceptAlgNames)) cfg.merge(SetupMetaDataForStreamCfg(configFlags, "HITS", AcceptAlgs=AcceptAlgNames))
#
#Event Filtering?
#
if args.filter == 'muon_conversion':
from GeneratorUtils.MuonFilters import ConversionFilter
import AthenaCommon.AppMgr as acam
import AthenaCommon.AlgSequence as acas
from OutputStreamAthenaPool.OutputStreamConfig import outputStreamName
filt = ConversionFilter("MuonFilter") # , muonEnergyLoss = 5000, minConversionEnergy = 2000) # , muonEnergyLoss = 5000, maxRadius = 100)
cfg.addEventAlgo(filt)
cfg.getEventAlgo(outputStreamName("HITS")).WritingTool.ProcessingTag = "StreamHITS"
OutputStreamHITS = cfg.getEventAlgo(outputStreamName("HITS"))
OutputStreamHITS.RequireAlgs = ["MuonFilter"]
#
# #
# Dump config # Dump config
# #
......
...@@ -46,6 +46,12 @@ parser.add_argument("--isOverlay", action='store_true', ...@@ -46,6 +46,12 @@ parser.add_argument("--isOverlay", action='store_true',
help="Set overlaid data input") help="Set overlaid data input")
parser.add_argument("--noTracking", action='store_true', parser.add_argument("--noTracking", action='store_true',
help="Turn off tracking (for R24 debugging)") help="Turn off tracking (for R24 debugging)")
parser.add_argument("--noIFT", action='store_true',
help="Turn off 4-station tracking")
parser.add_argument("--noForward", action='store_true',
help="Turn off forward CKF tracking")
parser.add_argument("--noBackward", action='store_true',
help="Turn off backward CKF tracking")
args = parser.parse_args() args = parser.parse_args()
...@@ -271,34 +277,38 @@ if useCKF: ...@@ -271,34 +277,38 @@ if useCKF:
# Do both forward and backward tracking # Do both forward and backward tracking
from FaserActsKalmanFilter.CKF2Config import CKF2Cfg from FaserActsKalmanFilter.CKF2Config import CKF2Cfg
if not args.isOverlay: if not args.isOverlay and not args.noIFT:
# 4-station tracking forward # 4-station tracking forward
acc.merge(CKF2Cfg(configFlags, if not args.noForward:
actsOutputTag=f"{filestem}_4station_forward", acc.merge(CKF2Cfg(configFlags,
noDiagnostics=True)) actsOutputTag=f"{filestem}_4station_forward",
noDiagnostics=True))
# 4-station tracking backward # 4-station tracking backward
acc.merge(CKF2Cfg(configFlags, name="CKF_Back", if not args.noBackward:
actsOutputTag=f"{filestem}_4station_backward", acc.merge(CKF2Cfg(configFlags, name="CKF_Back",
OutputCollection="CKFTrackCollectionBackward", actsOutputTag=f"{filestem}_4station_backward",
BackwardPropagation=True, OutputCollection="CKFTrackCollectionBackward",
BackwardPropagation=True,
noDiagnostics=True))
# Add tracking collection with no IFT
if not args.noForward:
acc.merge(CKF2Cfg(configFlags, maskedLayers=[0, 1, 2], name="CKF_woIFT",
actsOutputTag=f"{filestem}_3station_forward",
OutputCollection="CKFTrackCollectionWithoutIFT",
BackwardPropagation=False,
noDiagnostics=True)) noDiagnostics=True))
# Add tracking collection with no IFT
acc.merge(CKF2Cfg(configFlags, maskedLayers=[0, 1, 2], name="CKF_woIFT",
actsOutputTag=f"{filestem}_3station_forward",
OutputCollection="CKFTrackCollectionWithoutIFT",
BackwardPropagation=False,
noDiagnostics=True))
# Backward tracking with no IFT # Backward tracking with no IFT
acc.merge(CKF2Cfg(configFlags, maskedLayers=[0, 1, 2], name="CKF_Back_woIFT", if not args.noBackward:
actsOutputTag=f"{filestem}_3station_backward", acc.merge(CKF2Cfg(configFlags, maskedLayers=[0, 1, 2], name="CKF_Back_woIFT",
OutputCollection="CKFTrackCollectionBackwardWithoutIFT", actsOutputTag=f"{filestem}_3station_backward",
BackwardPropagation=True, OutputCollection="CKFTrackCollectionBackwardWithoutIFT",
noDiagnostics=True)) BackwardPropagation=True,
noDiagnostics=True))
# #
# Configure output # Configure output
......
...@@ -43,9 +43,10 @@ if __name__ == "__main__": ...@@ -43,9 +43,10 @@ if __name__ == "__main__":
configFlags.Input.ProjectName = "data20" # Needed to bypass autoconfig configFlags.Input.ProjectName = "data20" # Needed to bypass autoconfig
#configFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.Input.Files = [f"{Cmake_working_dir}/../rawdata/Faser-Physics-001920-filtered.raw"] #path is set to test data for ctest configFlags.Input.Files = [f"{Cmake_working_dir}/../rawdata/Faser-Physics-001920-filtered.raw"] #path is set to test data for ctest
# configFlags.Output.RDOFileName = "my.RDO.pool.root" configFlags.Output.RDOFileName = "my.RDO.pool.root"
configFlags.lock() configFlags.lock()
# Configure components
# Configure components
from CalypsoConfiguration.MainServicesConfig import MainServicesCfg from CalypsoConfiguration.MainServicesConfig import MainServicesCfg
# from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg # from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
......
...@@ -42,7 +42,7 @@ if __name__ == "__main__": ...@@ -42,7 +42,7 @@ if __name__ == "__main__":
configFlags.Input.ProjectName = "data20" configFlags.Input.ProjectName = "data20"
#configFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.Input.Files = [f"{Cmake_working_dir}/../rawdata/Faser-Physics-001920-filtered.raw"] #path is set to test data for ctest configFlags.Input.Files = [f"{Cmake_working_dir}/../rawdata/Faser-Physics-001920-filtered.raw"] #path is set to test data for ctest
#configFlags.Output.RDOFileName = "trigger.RDO.pool.root" configFlags.Output.RDOFileName = "trigger.RDO.pool.root"
configFlags.lock() configFlags.lock()
# Configure components # Configure components
...@@ -53,13 +53,13 @@ if __name__ == "__main__": ...@@ -53,13 +53,13 @@ if __name__ == "__main__":
#acc.merge(PoolWriteCfg(configFlags)) #acc.merge(PoolWriteCfg(configFlags))
# Configure output # Configure output
#from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
#itemList = [ "xAOD::EventInfo#*", itemList = [ "xAOD::EventInfo#*",
# "xAOD::EventAuxInfo#*", "xAOD::EventAuxInfo#*",
# "xAOD::FaserTriggerData#*", "xAOD::FaserTriggerData#*",
# "xAOD::FaserTriggerDataAux#*" ] "xAOD::FaserTriggerDataAux#*" ]
#acc.merge(OutputStreamCfg(configFlags, "RDO", itemList)) # This causes an error...
#ostream = acc.getEventAlgo("OutputStreamRDO") # acc.merge(OutputStreamCfg(configFlags, "RDO", itemList))
# Set up algorithm # Set up algorithm
acc.merge(TriggerDataAccessExampleCfg(configFlags)) acc.merge(TriggerDataAccessExampleCfg(configFlags))
......
...@@ -26,8 +26,8 @@ class ConversionFilter(PyAthena.Alg): ...@@ -26,8 +26,8 @@ class ConversionFilter(PyAthena.Alg):
return return
def findConversionFromMuon(self, evt): def findConversionFromMuon(self, evt):
for i, p in enumerate(evt.particles): for i, p in enumerate(evt.particles()):
# Check incoming particle (muon) is within radius to # Check incoming particle (muon) is within radius to
# avoid those conversions from muons coming in to magnet # avoid those conversions from muons coming in to magnet
...@@ -47,7 +47,7 @@ class ConversionFilter(PyAthena.Alg): ...@@ -47,7 +47,7 @@ class ConversionFilter(PyAthena.Alg):
if ovtx.particles_out_size() != 2: continue if ovtx.particles_out_size() != 2: continue
# That are e+e- pair # That are e+e- pair
children = list(ovtx.particles_out) children = list(ovtx.particles_out())
if not (abs(children[0].pdg_id()) == 11 and children[0].pdg_id() == -children[1].pdg_id()): continue if not (abs(children[0].pdg_id()) == 11 and children[0].pdg_id() == -children[1].pdg_id()): continue
self.msg.debug("Found Photon conversion") self.msg.debug("Found Photon conversion")
...@@ -55,7 +55,7 @@ class ConversionFilter(PyAthena.Alg): ...@@ -55,7 +55,7 @@ class ConversionFilter(PyAthena.Alg):
ivtx = p.production_vertex() ivtx = p.production_vertex()
if not ivtx: continue if not ivtx: continue
if ivtx.particles_in_size() != 1: continue if ivtx.particles_in_size() != 1: continue
mother = list(ivtx.particles_in)[0] mother = list(ivtx.particles_in())[0]
# That is a muon (allowing for another photon inbetween) # That is a muon (allowing for another photon inbetween)
isFromMuon = False isFromMuon = False
...@@ -64,7 +64,7 @@ class ConversionFilter(PyAthena.Alg): ...@@ -64,7 +64,7 @@ class ConversionFilter(PyAthena.Alg):
elif abs(mother.pdg_id()) == 22: elif abs(mother.pdg_id()) == 22:
ivtx = mother.production_vertex() ivtx = mother.production_vertex()
if ivtx and ivtx.particles_in_size() == 1: if ivtx and ivtx.particles_in_size() == 1:
gran = list(ivtx.particles_in)[0] gran = list(ivtx.particles_in())[0]
if abs(gran.pdg_id()) == 13: if abs(gran.pdg_id()) == 13:
isFromMuon = True isFromMuon = True
...@@ -85,7 +85,7 @@ class ConversionFilter(PyAthena.Alg): ...@@ -85,7 +85,7 @@ class ConversionFilter(PyAthena.Alg):
lastMuonE = None lastMuonE = None
firstMuonE = None firstMuonE = None
for p in evt.particles: for p in evt.particles():
# Find muons # Find muons
if abs(p.pdg_id()) != 13: continue if abs(p.pdg_id()) != 13: continue
...@@ -120,7 +120,30 @@ class ConversionFilter(PyAthena.Alg): ...@@ -120,7 +120,30 @@ class ConversionFilter(PyAthena.Alg):
self.msg.debug(f"Executing {self.getName()}") self.msg.debug(f"Executing {self.getName()}")
self.msg.debug(f"Reading {self.InputMCEventKey}") self.msg.debug(f"Reading {self.InputMCEventKey}")
mc = self.evtStore[self.InputMCEventKey]
evt = self.evtStore[self.InputMCEventKey][0] evt = self.evtStore[self.InputMCEventKey][0]
# print('****************EVT*************************')
# print(self.evtStore[self.InputMCEventKey])
# print(len(evt.particles()))
# print(evt.particles()[0].momentum().px())
# from PyDumper.Dumpers import toiter
# print("???????")
# print(evt.particles().begin())
# print("???????")
# particle_list = []
# for p in toiter(evt.particles().begin(),
# evt.particles().end()):
# print(p)
# particle_list.append(p)
# evt.particle_list = particle_list
# print(evt.particle_list)
# # print("dir(evt):", dir(evt))
# # print("dir(evt.particles):", dir(evt.particles))
# print(mc.size())
# print(dir(evt))
# print(evt.__dict__)
# print('****************EVT*************************')
self.setFilterPassed(False) self.setFilterPassed(False)
......
...@@ -8,7 +8,7 @@ atlas_add_component( ...@@ -8,7 +8,7 @@ atlas_add_component(
src/NtupleDumperAlg.cxx src/NtupleDumperAlg.cxx
src/component/NtupleDumper_entries.cxx src/component/NtupleDumper_entries.cxx
LINK_LIBRARIES AthenaBaseComps StoreGateLib xAODFaserWaveform xAODFaserCalorimeter xAODFaserTrigger xAODFaserLHC ScintIdentifier FaserCaloIdentifier GeneratorObjects FaserActsGeometryLib TrackerSimEvent TrackerSimData TrackerIdentifier TrackerReadoutGeometry TrkTrack GeoPrimitives TrackerRIO_OnTrack TrackerSpacePoint FaserActsKalmanFilterLib AtlasHepMCLib WaveformConditionsToolsLib # FIXME: FaserActsmanVertexingLib LINK_LIBRARIES AthenaBaseComps StoreGateLib xAODFaserWaveform xAODFaserCalorimeter xAODFaserTrigger xAODFaserLHC ScintIdentifier FaserCaloIdentifier GeneratorObjects FaserActsGeometryLib TrackerSimEvent TrackerSimData TrackerIdentifier TrackerReadoutGeometry TrkTrack GeoPrimitives TrackerRIO_OnTrack TrackerSpacePoint FaserActsKalmanFilterLib AtlasHepMCLib WaveformConditionsToolsLib FaserActsmanVertexingLib
PRIVATE_LINK_LIBRARIES nlohmann_json::nlohmann_json ) PRIVATE_LINK_LIBRARIES nlohmann_json::nlohmann_json )
atlas_install_python_modules( python/*.py ) atlas_install_python_modules( python/*.py )
......
...@@ -32,9 +32,6 @@ parser.add_argument("-g", "--geom", default="", ...@@ -32,9 +32,6 @@ parser.add_argument("-g", "--geom", default="",
parser.add_argument("--outfile", default="", parser.add_argument("--outfile", default="",
help="Override output file name") help="Override output file name")
parser.add_argument("-g", "--geom", default="",
help="Specify geometry (if it can't be parsed from run number)\n Values: TI12Data03 (2022 TI12)")
parser.add_argument("-v", "--verbose", action='store_true', parser.add_argument("-v", "--verbose", action='store_true',
help="Turn on DEBUG output") help="Turn on DEBUG output")
parser.add_argument("-n", "--nevents", type=int, default=-1, parser.add_argument("-n", "--nevents", type=int, default=-1,
...@@ -293,28 +290,11 @@ else: ...@@ -293,28 +290,11 @@ else:
configFlags.Input.ProjectName = "data21" # Needed to bypass autoconfig configFlags.Input.ProjectName = "data21" # Needed to bypass autoconfig
<<<<<<< HEAD
<<<<<<< HEAD
configFlags.Common.isOnline = False
configFlags.GeoModel.Align.Dynamic = False
configFlags.Beam.NumberOfCollisions = 0.
configFlags.Detector.GeometryFaserSCT = True
configFlags.lock()
=======
ConfigFlags.Common.isOnline = False
#ConfigFlags.GeoModel.Align.Dynamic = False
ConfigFlags.Beam.NumberOfCollisions = 0.
ConfigFlags.Detector.GeometryFaserSCT = True
ConfigFlags.lock()
>>>>>>> 05a628fdc98 (GeometryTest runs successfully)
=======
configFlags.GeoModel.FaserVersion = "FASERNU-03" # FASER geometry
configFlags.Common.isOnline = False configFlags.Common.isOnline = False
#ConfigFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.Beam.NumberOfCollisions = 0. configFlags.Beam.NumberOfCollisions = 0.
configFlags.Detector.GeometryFaserSCT = True configFlags.Detector.GeometryFaserSCT = True
configFlags.lock() configFlags.lock()
>>>>>>> 6e1b4d4be8e (Configuration fixes)
# Core components # Core components
acc = MainServicesCfg(configFlags) acc = MainServicesCfg(configFlags)
......
...@@ -243,8 +243,7 @@ StatusCode NtupleDumperAlg::initialize() ...@@ -243,8 +243,7 @@ StatusCode NtupleDumperAlg::initialize()
ATH_CHECK(m_trackingGeometryTool.retrieve()); ATH_CHECK(m_trackingGeometryTool.retrieve());
ATH_CHECK(m_trackTruthMatchingTool.retrieve()); ATH_CHECK(m_trackTruthMatchingTool.retrieve());
ATH_CHECK(m_fiducialParticleTool.retrieve()); ATH_CHECK(m_fiducialParticleTool.retrieve());
// TODO - fix vertexing ATH_CHECK(m_vertexingTool.retrieve());
// ATH_CHECK(m_vertexingTool.retrieve());
ATH_CHECK(m_mappingTool.retrieve()); ATH_CHECK(m_mappingTool.retrieve());
ATH_CHECK(m_spacePointContainerKey.initialize()); ATH_CHECK(m_spacePointContainerKey.initialize());
...@@ -1513,40 +1512,57 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const ...@@ -1513,40 +1512,57 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const
m_longTracks++; m_longTracks++;
} }
// if (m_runVertexing && goodTracks.size() >= 2) { // Clear old vertex values
// // sort tracks my momentum and reconstruct vertex m_vertex_x = 0.;
// std::sort(goodTracks.begin(), goodTracks.end(), [](const Trk::Track *lhs, const Trk::Track *rhs){ m_vertex_y = 0.;
// return lhs->trackParameters()->front()->momentum().z() < rhs->trackParameters()->front()->momentum().z(); m_vertex_z = 0.;
// }); m_vertex_chi2 = -1.;
// std::vector<const Trk::Track*> lowMomentumTracks {goodTracks[0], goodTracks[1]}; m_vertex_px0 = 0.;
m_vertex_py0 = 0.;
// std::optional<FaserTracking::POCA> vertex = m_vertexingTool->getVertex(lowMomentumTracks); m_vertex_pz0 = 0.;
// if (vertex) { m_vertex_p0 = 0.;
// Eigen::Vector3d position = vertex->position; m_vertex_px1 = 0.;
// m_vertex_x = position.x(); m_vertex_py1 = 0.;
// m_vertex_y = position.y(); m_vertex_pz1 = 0.;
// m_vertex_z = position.z(); m_vertex_p1 = 0.;
// m_vertex_chi2 = vertex->chi2;
if (m_runVertexing && goodTracks.size() >= 2) {
// // get track parameters of two tracks with lowest momentum at vertex m_two_tracks ++;
// auto vertexTrackParameters0 = m_vertexingTool->extrapolateTrack(goodTracks[0], m_vertex_z);
// if (vertexTrackParameters0 != nullptr) { // sort tracks by momentum and reconstruct vertex
// // convert momentum from GeV to MeV std::sort(goodTracks.begin(), goodTracks.end(), [](const Trk::Track *lhs, const Trk::Track *rhs){
// m_vertex_px0 = vertexTrackParameters0->momentum().x() * 1e3; return lhs->trackParameters()->front()->momentum().z() < rhs->trackParameters()->front()->momentum().z();
// m_vertex_py0 = vertexTrackParameters0->momentum().y() * 1e3; });
// m_vertex_pz0 = vertexTrackParameters0->momentum().z() * 1e3; std::vector<const Trk::Track*> lowMomentumTracks {goodTracks[0], goodTracks[1]};
// m_vertex_p0 = std::sqrt(m_vertex_px0*m_vertex_px0 + m_vertex_py0*m_vertex_py0 + m_vertex_pz0*m_vertex_pz0);
// } std::optional<FaserTracking::POCA> vertex = m_vertexingTool->getVertex(lowMomentumTracks);
// auto vertexTrackParameters1 = m_vertexingTool->extrapolateTrack(goodTracks[1], m_vertex_z); if (vertex) {
// if (vertexTrackParameters1 != nullptr) { Eigen::Vector3d position = vertex->position;
// // convert momentum from GeV to MeV m_vertex_x = position.x();
// m_vertex_px1 = vertexTrackParameters1->momentum().x() * 1e3; m_vertex_y = position.y();
// m_vertex_py1 = vertexTrackParameters1->momentum().y() * 1e3; m_vertex_z = position.z();
// m_vertex_pz1 = vertexTrackParameters1->momentum().z() * 1e3; m_vertex_chi2 = vertex->chi2;
// m_vertex_p1 = std::sqrt(m_vertex_px1*m_vertex_px1 + m_vertex_py1*m_vertex_py1 + m_vertex_pz1*m_vertex_pz1); m_verticies++;
// }
// } // get track parameters of two tracks with lowest momentum at vertex
//} auto vertexTrackParameters0 = m_vertexingTool->extrapolateTrack(goodTracks[0], m_vertex_z);
if (vertexTrackParameters0) {
// convert momentum from GeV to MeV
m_vertex_px0 = vertexTrackParameters0->momentum().x() * 1e3;
m_vertex_py0 = vertexTrackParameters0->momentum().y() * 1e3;
m_vertex_pz0 = vertexTrackParameters0->momentum().z() * 1e3;
m_vertex_p0 = std::sqrt(m_vertex_px0*m_vertex_px0 + m_vertex_py0*m_vertex_py0 + m_vertex_pz0*m_vertex_pz0);
}
auto vertexTrackParameters1 = m_vertexingTool->extrapolateTrack(goodTracks[1], m_vertex_z);
if (vertexTrackParameters1) {
// convert momentum from GeV to MeV
m_vertex_px1 = vertexTrackParameters1->momentum().x() * 1e3;
m_vertex_py1 = vertexTrackParameters1->momentum().y() * 1e3;
m_vertex_pz1 = vertexTrackParameters1->momentum().z() * 1e3;
m_vertex_p1 = std::sqrt(m_vertex_px1*m_vertex_px1 + m_vertex_py1*m_vertex_py1 + m_vertex_pz1*m_vertex_pz1);
}
}
}
if (!isMC) { if (!isMC) {
if (m_doTrackFilter) { // filter events: colliding bunches have at least one long track, non-colliding bunches have at least one long track or one calo module with raw_peak > 3 mV if (m_doTrackFilter) { // filter events: colliding bunches have at least one long track, non-colliding bunches have at least one long track or one calo module with raw_peak > 3 mV
...@@ -1665,6 +1681,8 @@ StatusCode NtupleDumperAlg::finalize() ...@@ -1665,6 +1681,8 @@ StatusCode NtupleDumperAlg::finalize()
{ {
ATH_MSG_INFO("Number of events passed Ntuple selection = " << m_eventsPassed); ATH_MSG_INFO("Number of events passed Ntuple selection = " << m_eventsPassed);
ATH_MSG_INFO("Number of events failing GRL selection = " << m_eventsFailedGRL); ATH_MSG_INFO("Number of events failing GRL selection = " << m_eventsFailedGRL);
ATH_MSG_INFO("Number of 2-track events = " << m_two_tracks);
ATH_MSG_INFO("Number of verticies = " << m_verticies);
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
......
...@@ -22,8 +22,7 @@ ...@@ -22,8 +22,7 @@
#include "FaserActsKalmanFilter/ITrackTruthMatchingTool.h" #include "FaserActsKalmanFilter/ITrackTruthMatchingTool.h"
#include "TrackerSimEvent/FaserSiHitCollection.h" #include "TrackerSimEvent/FaserSiHitCollection.h"
#include "xAODEventInfo/EventInfo.h" #include "xAODEventInfo/EventInfo.h"
// TODO - fix vertexing #include "FaserActsVertexing/IVertexingTool.h"
//#include "FaserActsVertexing/IVertexingTool.h"
#include "GeneratorObjects/McEventCollection.h" #include "GeneratorObjects/McEventCollection.h"
#include <boost/dynamic_bitset.hpp> #include <boost/dynamic_bitset.hpp>
...@@ -114,8 +113,7 @@ private: ...@@ -114,8 +113,7 @@ private:
ToolHandle<IFaserActsTrackingGeometryTool> m_trackingGeometryTool {this, "TrackingGeometryTool", "FaserActsTrackingGeometryTool"}; ToolHandle<IFaserActsTrackingGeometryTool> m_trackingGeometryTool {this, "TrackingGeometryTool", "FaserActsTrackingGeometryTool"};
ToolHandle<ITrackTruthMatchingTool> m_trackTruthMatchingTool {this, "TrackTruthMatchingTool", "TrackTruthMatchingTool"}; ToolHandle<ITrackTruthMatchingTool> m_trackTruthMatchingTool {this, "TrackTruthMatchingTool", "TrackTruthMatchingTool"};
ToolHandle<IFiducialParticleTool> m_fiducialParticleTool {this, "FiducialParticleTool", "FiducialParticleTool"}; ToolHandle<IFiducialParticleTool> m_fiducialParticleTool {this, "FiducialParticleTool", "FiducialParticleTool"};
// TODO - fix vertexing ToolHandle<FaserTracking::IVertexingTool> m_vertexingTool { this, "VertexingTool", "FaserTracking::PointOfClosestApproachSearchTool"};
// ToolHandle<FaserTracking::IVertexingTool> m_vertexingTool { this, "VertexingTool", "FaserTracking::PointOfClosestApproachSearchTool"};
ToolHandle<IWaveformCableMappingTool> m_mappingTool { this, "WaveformCableMappingTool", "WaveformCableMappingTool" }; ToolHandle<IWaveformCableMappingTool> m_mappingTool { this, "WaveformCableMappingTool", "WaveformCableMappingTool" };
const TrackerDD::SCT_DetectorManager* m_detMgr {nullptr}; const TrackerDD::SCT_DetectorManager* m_detMgr {nullptr};
...@@ -421,7 +419,9 @@ private: ...@@ -421,7 +419,9 @@ private:
mutable int m_eventsPassed = 0; mutable int m_eventsPassed = 0;
mutable int m_eventsFailedGRL = 0; mutable int m_eventsFailedGRL = 0;
mutable int m_two_tracks = 0;
mutable int m_verticies = 0;
mutable double m_vertex_x; // components of reconstructed vertex in mm mutable double m_vertex_x; // components of reconstructed vertex in mm
mutable double m_vertex_y; mutable double m_vertex_y;
mutable double m_vertex_z; mutable double m_vertex_z;
......
...@@ -63,9 +63,5 @@ def ScintWaveformDigitizationOutputCfg(flags, **kwargs): ...@@ -63,9 +63,5 @@ def ScintWaveformDigitizationOutputCfg(flags, **kwargs):
ItemList = [ ItemList = [
"RawWaveformContainer#*" "RawWaveformContainer#*"
] ]
acc.merge(OutputStreamCfg(flags, "RDO")) acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
ostream = acc.getEventAlgo("OutputStreamRDO")
# ostream.TakeItemsFromInput = True # Copies all data from input file to output
# ostream.TakeItemsFromInput = False
ostream.ItemList += ItemList
return acc return acc
...@@ -29,41 +29,43 @@ atlas_add_library( G4FaserAlg ...@@ -29,41 +29,43 @@ atlas_add_library( G4FaserAlg
INCLUDE_DIRS ${GEANT4_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} ${XERCESC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} INCLUDE_DIRS ${GEANT4_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} ${XERCESC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
PRIVATE_LINK_LIBRARIES ${GEANT4_LIBRARIES} ${EIGEN_LIBRARIES} ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaBaseComps AthenaKernel CxxUtils GaudiKernel G4AtlasInterfaces G4FaserAlgLib SGTools StoreGateLib EventInfo GeneratorObjects FaserMCTruthBaseLib) PRIVATE_LINK_LIBRARIES ${GEANT4_LIBRARIES} ${EIGEN_LIBRARIES} ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaBaseComps AthenaKernel CxxUtils GaudiKernel G4AtlasInterfaces G4FaserAlgLib SGTools StoreGateLib EventInfo GeneratorObjects FaserMCTruthBaseLib)
atlas_add_test( G4FaserAlgConfig_TestFaser # ET - These are currently failing with a free exception on job completion
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASER-01'" IOVDb.GlobalTag="'OFLCOND-FASER-01'" Output.HITSFileName='faser.HITS.pool.root' # Turn them off for the moment until this can be debugged...
PROPERTIES TIMEOUT 300 # atlas_add_test( G4FaserAlgConfig_TestFaser
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} # SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASER-01'" IOVDb.GlobalTag="'OFLCOND-FASER-01'" Output.HITSFileName='faser.HITS.pool.root'
POST_EXEC_SCRIPT nopost.sh) # PROPERTIES TIMEOUT 300
# PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
# POST_EXEC_SCRIPT nopost.sh)
atlas_add_test( G4FaserAlgConfig_TestFaserNu03 # atlas_add_test( G4FaserAlgConfig_TestFaserNu03
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-02'" Output.HITSFileName='faserNu03.HITS.pool.root' # SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-02'" Output.HITSFileName='faserNu03.HITS.pool.root'
PROPERTIES TIMEOUT 300 # PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} # PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
POST_EXEC_SCRIPT nopost.sh) # POST_EXEC_SCRIPT nopost.sh)
atlas_add_test( G4FaserAlgConfig_TestFaserNu03_NewField # atlas_add_test( G4FaserAlgConfig_TestFaserNu03_NewField
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu03_NewField.HITS.pool.root' # SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu03_NewField.HITS.pool.root'
PROPERTIES TIMEOUT 300 # PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} # PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
POST_EXEC_SCRIPT nopost.sh) # POST_EXEC_SCRIPT nopost.sh)
atlas_add_test( G4FaserAlgConfig_TestFaserNu04 # atlas_add_test( G4FaserAlgConfig_TestFaserNu04
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASERNU-04'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu04.HITS.pool.root' # SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASERNU-04'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu04.HITS.pool.root'
PROPERTIES TIMEOUT 300 # PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} # PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
POST_EXEC_SCRIPT nopost.sh) # POST_EXEC_SCRIPT nopost.sh)
atlas_add_test( G4FaserAlgConfig_TestTestbeam00 # atlas_add_test( G4FaserAlgConfig_TestTestbeam00
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASER-TB00'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb00.HITS.pool.root' # SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASER-TB00'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb00.HITS.pool.root'
PROPERTIES TIMEOUT 300 # PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} # PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
POST_EXEC_SCRIPT nopost.sh) # POST_EXEC_SCRIPT nopost.sh)
atlas_add_test( G4FaserAlgConfig_TestTestbeam01 # atlas_add_test( G4FaserAlgConfig_TestTestbeam01
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASER-TB01'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb01.HITS.pool.root' # SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfig_Test.py GeoModel.FaserVersion="'FASER-TB01'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb01.HITS.pool.root'
PROPERTIES TIMEOUT 300 # PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} # PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
POST_EXEC_SCRIPT nopost.sh) # POST_EXEC_SCRIPT nopost.sh)
# Install files from the package: # Install files from the package:
......
...@@ -10,7 +10,7 @@ if __name__ == "__main__": ...@@ -10,7 +10,7 @@ if __name__ == "__main__":
from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.TestDefaults import defaultTestFiles
configFlags = initConfigFlags() configFlags = initConfigFlags()
configFlags.Input.Files = defaultTestFiles.HITS configFlags.Input.Files = []
configFlags.IOVDb.GlobalTag = "OFLCOND-FASER-01" # Always needed; must match FaserVersion configFlags.IOVDb.GlobalTag = "OFLCOND-FASER-01" # Always needed; must match FaserVersion
#configFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.lock() configFlags.lock()
......
...@@ -10,7 +10,7 @@ if __name__ == "__main__": ...@@ -10,7 +10,7 @@ if __name__ == "__main__":
from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.TestDefaults import defaultTestFiles
configFlags = initConfigFlags() configFlags = initConfigFlags()
configFlags.Input.Files = defaultTestFiles.HITS configFlags.Input.Files = []
configFlags.IOVDb.GlobalTag = "OFLCOND-FASER-01" # Always needed; must match FaserVersion configFlags.IOVDb.GlobalTag = "OFLCOND-FASER-01" # Always needed; must match FaserVersion
#configFlags.GeoModel.Align.Dynamic = False #configFlags.GeoModel.Align.Dynamic = False
configFlags.lock() configFlags.lock()
......