diff --git a/Control/CalypsoExample/Digitization/scripts/faserMDC_digi.py b/Control/CalypsoExample/Digitization/scripts/faserMDC_digi.py index 14a46818f6c334123f8f62f35212f72c57e25740..5730e63389b879801c08665c548bc376b726f1d2 100755 --- a/Control/CalypsoExample/Digitization/scripts/faserMDC_digi.py +++ b/Control/CalypsoExample/Digitization/scripts/faserMDC_digi.py @@ -88,7 +88,6 @@ else: print("Specify correct type or update list") sys.exit(-1) - # Must use original input string here, as pathlib mangles double // in path names ConfigFlags.Input.Files = [ args.file_path ] @@ -105,7 +104,6 @@ if len(args.tag) > 0: filestem += f"-{args.tag}" ConfigFlags.Output.RDOFileName = f"{filestem}-RDO.root" - # # Play around with this? # ConfigFlags.Concurrency.NumThreads = 2 diff --git a/Control/CalypsoExample/Reconstruction/CMakeLists.txt b/Control/CalypsoExample/Reconstruction/CMakeLists.txt index f821257234e5758a0c92a1d13e1b0d5df44f2843..b7329daa28e45b663f6ea7b33e8155b004ee2d6e 100644 --- a/Control/CalypsoExample/Reconstruction/CMakeLists.txt +++ b/Control/CalypsoExample/Reconstruction/CMakeLists.txt @@ -14,7 +14,7 @@ atlas_subdir( Reconstruction ) # Install files from the package: #atlas_install_joboptions( share/*.py ) -#atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py ) atlas_install_scripts( scripts/*.sh scripts/*.py ) atlas_add_test( ProdRecoTI12 diff --git a/Control/CalypsoExample/Reconstruction/python/xAODTruthCnvAlgConfig.py b/Control/CalypsoExample/Reconstruction/python/xAODTruthCnvAlgConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..9d166c2aeeae2c4aa2fa9c9d52cc575beab5b7b8 --- /dev/null +++ b/Control/CalypsoExample/Reconstruction/python/xAODTruthCnvAlgConfig.py @@ -0,0 +1,23 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2022 CERN for the benefit of the FASER collaboration + +def xAODTruthCnvAlgCfg(flags, name="xAODTruthCnvAlg", **kwargs): + from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + acc = ComponentAccumulator() + + kwargs.setdefault('WriteTruthMetaData', False) + kwargs.setdefault('AODContainerName', 'TruthEvent') + kwargs.setdefault('EventInfo', 'McEventInfo') + + from AthenaConfiguration.ComponentFactory import CompFactory + algo = CompFactory.xAODMaker.xAODTruthCnvAlg(name, **kwargs) + acc.addEventAlgo(algo, primary=True) + + toAOD = ["xAOD::TruthEventContainer#*", "xAOD::TruthEventAuxContainer#*", + "xAOD::TruthVertexContainer#*", "xAOD::TruthVertexAuxContainer#*", + "xAOD::TruthParticleContainer#*", "xAOD::TruthParticleAuxContainer#*"] + + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + acc.merge(OutputStreamCfg(flags, "xAOD", ItemList=toAOD)) + + return acc diff --git a/Control/CalypsoExample/Reconstruction/scripts/faserMDC_reco.py b/Control/CalypsoExample/Reconstruction/scripts/faserMDC_reco.py index 19b6564d8fa5f8fb0784918c064049a7c9e4c00f..3d1b2a4856fc45948eb9cde8c6c862bb0206614e 100755 --- a/Control/CalypsoExample/Reconstruction/scripts/faserMDC_reco.py +++ b/Control/CalypsoExample/Reconstruction/scripts/faserMDC_reco.py @@ -105,6 +105,10 @@ else: ConfigFlags.Input.Files = [ args.file_path ] filestem = filepath.stem +# Remove any filetype modifier +if filestem[-4:] == "-RDO": + filestem = filestem[:-4] + if len(args.reco) > 0: filestem += f"-{args.reco}" @@ -146,8 +150,8 @@ from WaveRecAlgs.WaveRecAlgsConfig import WaveformReconstructionCfg acc.merge(WaveformReconstructionCfg(ConfigFlags)) # Not ready for primetime -# from CaloRecAlgs.CaloRecAlgsConfig import CalorimeterReconstructionCfg -# acc.merge(CalorimeterReconstructionCfg(ConfigFlags)) +#from CaloRecAlgs.CaloRecAlgsConfig import CalorimeterReconstructionCfg +#acc.merge(CalorimeterReconstructionCfg(ConfigFlags)) # Tracker clusters from TrackerPrepRawDataFormation.TrackerPrepRawDataFormationConfig import FaserSCT_ClusterizationCfg @@ -175,14 +179,6 @@ acc.merge(GhostBustersCfg(ConfigFlags)) from FaserActsKalmanFilter.CKF2Config import CKF2Cfg acc.merge(CKF2Cfg(ConfigFlags, noDiagnostics=True)) -# -# Try to write truth for mc -#if args.isMC: -# xAODTruthCnvAlg = CompFactory.xAODMaker.xAODTruthCnvAlg -# acc.addEventAlgo(xAODTruthCnvAlg("AOD2xAOD", -# AODContainerName="TruthEvent"), -# primary=True) - # # Configure output from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg @@ -196,17 +192,16 @@ itemList = [ "xAOD::EventInfo#*" , "Tracker::FaserSCT_ClusterContainer#*" , "TrackCollection#*" ] + +# # if args.isMC: - # Add truth records here? + # Make xAOD versions of truth + from Reconstruction.xAODTruthCnvAlgConfig import xAODTruthCnvAlgCfg + acc.merge(xAODTruthCnvAlgCfg(ConfigFlags)) + + # Add MC information here itemList.extend( ["McEventCollection#*", "TrackerSimDataCollection#*"] ) - # Try adding xAOD versions - #itemList.extend( ["xAOD::TruthEventContainer#TruthEvents", - # "xAOD::TruthEventAuxContainer#TruthEventsAux.", - # "xAOD::TruthVertexContainer#TruthVertices", - # "xAOD::TruthVertexAuxContainer#TruthVerticesAux.", - # "xAOD::TruthParticleContainer#TruthParticles", - # "xAOD::TruthParticleAuxContainer#TruthParticlesAux."] ) acc.merge(OutputStreamCfg(ConfigFlags, "xAOD", itemList)) diff --git a/xAOD/xAODFaserWaveform/Root/WaveformHitAuxContainer_v1.cxx b/xAOD/xAODFaserWaveform/Root/WaveformHitAuxContainer_v1.cxx index 2cd4ffcf6859a6af5341683af8333e1ba57be1ed..be0f22b1090559419c3523707359c2f2efa6c946 100644 --- a/xAOD/xAODFaserWaveform/Root/WaveformHitAuxContainer_v1.cxx +++ b/xAOD/xAODFaserWaveform/Root/WaveformHitAuxContainer_v1.cxx @@ -11,7 +11,7 @@ namespace xAOD { : AuxContainerBase() { AUX_VARIABLE(channel); - AUX_VARIABLE(id); + AUX_VARIABLE(id32); AUX_VARIABLE(localtime); AUX_VARIABLE(peak); AUX_VARIABLE(width); @@ -23,7 +23,7 @@ namespace xAOD { AUX_VARIABLE(baseline_mean); AUX_VARIABLE(baseline_rms); - AUX_VARIABLE(status); + AUX_VARIABLE(hit_status); AUX_VARIABLE(mean); AUX_VARIABLE(alpha); AUX_VARIABLE(nval); diff --git a/xAOD/xAODFaserWaveform/Root/WaveformHit_v1.cxx b/xAOD/xAODFaserWaveform/Root/WaveformHit_v1.cxx index 59562e632c5704d53ca09eec67b0d036c6ac45b0..41f406612fc63f04b8a705c5177b8ba792c22625 100644 --- a/xAOD/xAODFaserWaveform/Root/WaveformHit_v1.cxx +++ b/xAOD/xAODFaserWaveform/Root/WaveformHit_v1.cxx @@ -15,7 +15,7 @@ namespace xAOD { AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, unsigned int, channel, set_channel ) - AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, unsigned int, id, set_id ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, unsigned int, id32, set_id32 ) AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, float, localtime, set_localtime ) @@ -37,7 +37,7 @@ namespace xAOD { AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, float, baseline_rms, set_baseline_rms ) - AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, unsigned int, status, set_status ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, unsigned int, hit_status, set_hit_status ) AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( WaveformHit_v1, float, mean, set_mean ) diff --git a/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHitAuxContainer_v1.h b/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHitAuxContainer_v1.h index c272fcd2c8d8ce8323b819ea8ca02ceeb02b45f9..86dce49eb0e329c06ec9650d31feb1a0616e1e25 100644 --- a/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHitAuxContainer_v1.h +++ b/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHitAuxContainer_v1.h @@ -29,7 +29,7 @@ namespace xAOD { /// @name Basic variables ///@ { std::vector<unsigned int> channel; - std::vector<unsigned int> id; + std::vector<unsigned int> id32; std::vector<float> localtime; std::vector<float> peak; std::vector<float> width; @@ -42,7 +42,7 @@ namespace xAOD { std::vector<float> baseline_mean; std::vector<float> baseline_rms; - std::vector<unsigned int> status; + std::vector<unsigned int> hit_status; std::vector<float> mean; std::vector<float> alpha; diff --git a/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHit_v1.h b/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHit_v1.h index e3615dbedd60ab1863d1d749cd7595dc961cacb2..4f15e8152fa7ea2d00ae6eed970d9341ffc6fba4 100644 --- a/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHit_v1.h +++ b/xAOD/xAODFaserWaveform/xAODFaserWaveform/versions/WaveformHit_v1.h @@ -49,15 +49,15 @@ namespace xAOD { /// 32-bit version of channel identifier /// From Identifier::get_identifier32()::get_compact() - unsigned int id() const; - void set_id(unsigned int value); + unsigned int id32() const; + void set_id32(unsigned int value); /// Interface for proper identifier Identifier identify() const { - return Identifier(this->id()); + return Identifier(this->id32()); } void set_identifier(const Identifier& id) { - set_id(id.get_identifier32().get_compact()); + set_id32(id.get_identifier32().get_compact()); } /// All values are in units of ns and mV @@ -99,8 +99,8 @@ namespace xAOD { void set_baseline_rms(float value); /// Status word - unsigned int status() const; - void set_status(unsigned int value); + unsigned int hit_status() const; + void set_hit_status(unsigned int value); /// Other fit results float mean() const; @@ -122,10 +122,10 @@ namespace xAOD { /// Status bit access functions void set_status_bit(WaveformStatus bit) { - this->set_status(this->status() | (1<<bit)); + this->set_hit_status(this->hit_status() | (1<<bit)); } bool status_bit(WaveformStatus bit) const { - return (this->status() & (1<<bit)); + return (this->hit_status() & (1<<bit)); } bool threshold() const {