Skip to content
Snippets Groups Projects
Commit 1c3af9ab authored by Dave Casper's avatar Dave Casper
Browse files

Merge branch 'master-testbeam-geo' into 'master'

Test-beam geometry setup

See merge request faser/calypso!146
parents 779c9ac7 832b6e51
No related branches found
No related tags found
No related merge requests found
Showing
with 692 additions and 24 deletions
......@@ -43,6 +43,6 @@ test_unittest:
- set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e
- set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.31; set -e
- set +e && source `find . -name 'setup.sh'`; set -e
- ctest -j12
- ctest -j3
dependencies:
- build_image
<IdDictionary name="Calorimeter">
<field name="part" >
<label name="Ecal" value="1" />
</field>
<field name="row">
<label name="Bottom" value="0" />
<label name="Top" value="1" />
</field>
<field name="module">
<!-- facing downstream (hence "starboard" and "port")
x must increase right to left for a right-handed
coordinate system -->
<label name="Starboard" value="0" />
<label name="Center" value="1" />
<label name="Port" value="2" />
</field>
<region>
<range field="part" value="Ecal" />
<range field="row" values="Bottom Top" wraparound="FALSE" />
<range field="module" values="Starboard Center Port" wraparound="FALSE" />
<range field="pmt" minvalue="0" maxvalue="0" />
</region>
</IdDictionary>
\ No newline at end of file
......@@ -48,8 +48,8 @@ void CaloHitIdHelper::Initialize() {
if (detStore->retrieve(pix, "EcalID").isFailure()) { pix = 0; }
}
InitializeField("Row", 0, 1);
InitializeField("Module", 0, 1);
InitializeField("Row", 0, 2);
InitializeField("Module", 0, 2); // Need three values for test beam
}
// Station
......
......@@ -20,6 +20,11 @@ atlas_add_test( GeoModelCheck
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
PROPERTIES TIMEOUT 300 )
atlas_add_test( TestBeamGeoCheck
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/TestBeamTestConfig.py
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
PROPERTIES TIMEOUT 300 )
# Install files from the package:
#atlas_install_headers( GeoModelTest )
#atlas_install_joboptions( share/*.py )
......
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
#!/usr/bin/env python
import sys
from AthenaCommon.Constants import VERBOSE, INFO
from AthenaConfiguration.ComponentFactory import CompFactory
def GeoModelTestCfg(flags, name="GeoModelTestAlg", **kwargs):
# Initialize GeoModel
from FaserGeoModel.FaserGeoModelConfig import FaserGeometryCfg
a = FaserGeometryCfg(flags)
# Initialize field service
from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg
a.merge(MagneticFieldSvcCfg(flags))
# Configure the algorithm itself
GeoModelTestAlg = CompFactory.GeoModelTestAlg
a.addEventAlgo(GeoModelTestAlg(name, FirstSCTStation=0,
LastSCTStation=0,
NumVetoStations=1,
NumVetoPlatesPerStation=2,
NumTriggerStations=0,
**kwargs))
return a
if __name__ == "__main__":
from AthenaCommon.Logging import log#, logging
from AthenaCommon.Configurable import Configurable
from CalypsoConfiguration.AllConfigFlags import ConfigFlags
Configurable.configurableRun3Behavior = True
# Flags for this job
ConfigFlags.Input.isMC = True # Needed to bypass autoconfig
ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-02" # Always needed; must match FaserVersion
ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" # Default FASER geometry
ConfigFlags.GeoModel.GeoExportFile = "faserTestBeamGeo.db" # Writes out a GeoModel file with the full geometry tree (optional, comment out to skip)
# ConfigFlags.Detector.EnableVeto = True
# ConfigFlags.Detector.EnableTrigger = True
# ConfigFlags.Detector.EnablePreshower= True
# ConfigFlags.Detector.EnableFaserSCT = True
# ConfigFlags.Detector.EnableUpstreamDipole = True
# ConfigFlags.Detector.EnableCentralDipole = True
# ConfigFlags.Detector.EnableDownstreamDipole = True
# ConfigFlags.Detector.EnableEcal = True
ConfigFlags.lock()
# Configure components
from CalypsoConfiguration.MainServicesConfig import MainServicesCfg
acc = MainServicesCfg(ConfigFlags)
# Set up algorithm
acc.merge(GeoModelTestCfg(ConfigFlags))
# Configure verbosity
msgSvc = acc.getService("MessageSvc")
msgSvc.Format = "% F%30W%S%7W%R%T %0W%M"
# ConfigFlags.dump()
# logging.getLogger('forcomps').setLevel(VERBOSE)
acc.foreach_component("*").OutputLevel = VERBOSE
acc.foreach_component("*ClassID*").OutputLevel = INFO
log.setLevel(VERBOSE)
# Execute and finish
sys.exit(int(acc.run(maxEvents=1).isFailure()))
......@@ -545,17 +545,17 @@ StatusCode GeoModelTestAlg::testVeto() const
{
ATH_MSG_ALWAYS("Retrieved (typed) Veto detector manager with " << vetoMgr->getNumTreeTops() << " treetops directly from DetStore.");
// Compare numerology with the "right" answers from our properties
if (vetoMgr->numerology().numStations() != m_numVetoStations || vetoMgr->getNumTreeTops() != m_numVetoStations)
if (vetoMgr->numerology().numStations() != m_numVetoStations)
{
ATH_MSG_FATAL("Disagreement in number of veto stations.");
return StatusCode::FAILURE;
}
if (vetoMgr->numerology().numPlatesPerStation() != m_numVetoPlatesPerStation)
if (m_numVetoStations > 0 && vetoMgr->numerology().numPlatesPerStation() != m_numVetoPlatesPerStation)
{
ATH_MSG_FATAL("Disagreement in number of plates per veto station.");
return StatusCode::FAILURE;
}
if (vetoMgr->numerology().numPmtsPerPlate() != m_numVetoPmtsPerPlate)
if (m_numVetoStations > 0 && m_numVetoPlatesPerStation > 0 && vetoMgr->numerology().numPmtsPerPlate() != m_numVetoPmtsPerPlate)
{
ATH_MSG_FATAL("Disagreement in number of pmts per veto plate.");
return StatusCode::FAILURE;
......@@ -605,7 +605,7 @@ StatusCode GeoModelTestAlg::testVeto() const
return StatusCode::FAILURE;
}
}
if (next == nullptr && prev == nullptr)
if (next == nullptr && prev == nullptr && m_numVetoPlatesPerStation > 1)
{
ATH_MSG_FATAL("Veto element " << hash << " has no previous OR next neighbor.");
return StatusCode::FAILURE;
......@@ -704,12 +704,12 @@ StatusCode GeoModelTestAlg::testTrigger() const
ATH_MSG_FATAL("Disagreement in number of Trigger stations.");
return StatusCode::FAILURE;
}
if (triggerMgr->numerology().numPlatesPerStation() != m_numTriggerPlatesPerStation)
if (m_numTriggerStations > 0 && triggerMgr->numerology().numPlatesPerStation() != m_numTriggerPlatesPerStation)
{
ATH_MSG_FATAL("Disagreement in number of plates per Trigger station.");
return StatusCode::FAILURE;
}
if (triggerMgr->numerology().numPmtsPerPlate() != m_numTriggerPmtsPerPlate)
if (m_numTriggerStations > 0 && m_numTriggerPlatesPerStation > 0 && triggerMgr->numerology().numPmtsPerPlate() != m_numTriggerPmtsPerPlate)
{
ATH_MSG_FATAL("Disagreement in number of pmts per Trigger plate.");
return StatusCode::FAILURE;
......@@ -759,7 +759,7 @@ StatusCode GeoModelTestAlg::testTrigger() const
return StatusCode::FAILURE;
}
}
if (next == nullptr && prev == nullptr)
if (next == nullptr && prev == nullptr && m_numTriggerPlatesPerStation > 1)
{
ATH_MSG_FATAL("Trigger element " << hash << " has no previous OR next neighbor.");
return StatusCode::FAILURE;
......@@ -858,12 +858,12 @@ StatusCode GeoModelTestAlg::testPreshower() const
ATH_MSG_FATAL("Disagreement in number of preshower stations.");
return StatusCode::FAILURE;
}
if (preshowerMgr->numerology().numPlatesPerStation() != m_numPreshowerPlatesPerStation)
if (m_numPreshowerStations > 0 && preshowerMgr->numerology().numPlatesPerStation() != m_numPreshowerPlatesPerStation)
{
ATH_MSG_FATAL("Disagreement in number of plates per preshower station.");
return StatusCode::FAILURE;
}
if (preshowerMgr->numerology().numPmtsPerPlate() != m_numPreshowerPmtsPerPlate)
if (m_numPreshowerStations > 0 && m_numPreshowerPlatesPerStation > 0 && preshowerMgr->numerology().numPmtsPerPlate() != m_numPreshowerPmtsPerPlate)
{
ATH_MSG_FATAL("Disagreement in number of pmts per preshower plate.");
return StatusCode::FAILURE;
......@@ -913,7 +913,7 @@ StatusCode GeoModelTestAlg::testPreshower() const
return StatusCode::FAILURE;
}
}
if (next == nullptr && prev == nullptr)
if (next == nullptr && prev == nullptr && m_numPreshowerPlatesPerStation > 1)
{
ATH_MSG_FATAL("Preshower element " << hash << " has no previous OR next neighbor.");
return StatusCode::FAILURE;
......
......@@ -41,6 +41,8 @@ It can be convenient to alias the "asetup --input=calypso/asetup.faser" to somet
** `ConfigFlags.GeoModel.FaserVersion = "FASERNU-02"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-02` enables the full FaserNu (IFT + emulsion) setup
** `ConfigFlags.GeoModel.FaserVersion = "FASER-TB00"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-02` enables the 2021 Test-beam setup.
* The "FaserActsKalmanFilter" package is temporarily disabled.
* The command `lsetup "lcgenv -p LCG_98python3_ATLAS_8 x86_64-centos7-gcc8-opt sqlite"` may be necessary to avoid errors when generating a database
<IdDictionary name="Scintillator">
<field name="part" >
<label name="Veto" value="1" />
<label name="Trigger" value="2" />
<label name="Preshower" value="3" />
</field>
<region>
<range field="part" value="Veto" />
<range field="station" minvalue="0" maxvalue="0" />
<range field="plate" minvalue="0" maxvalue="1" />
<range field="pmt" minvalue="0" maxvalue="0" />
</region>
<region>
<range field="part" value="Trigger"/>
<range field="station" minvalue="0" maxvalue="0" />
<range field="plate" minvalue="0" maxvalue="1" />
<range field="pmt" minvalue="0" maxvalue="1" />
</region>
<region>
<range field="part" value="Preshower" />
<range field="station" minvalue="0" maxvalue="0" />
<range field="plate" minvalue="0" maxvalue="1" />
<range field="pmt" minvalue="0" maxvalue="0" />
</region>
</IdDictionary>
\ No newline at end of file
......@@ -31,6 +31,16 @@ atlas_add_test( G4FaserAlgConfig_Test
PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
atlas_add_test( G4FaserAlgConfig_FaserNu
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/runG4FaserNu.py
PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
atlas_add_test( G4FaserAlgConfig_TestBeam
SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/runG4TestBeam.py
PROPERTIES TIMEOUT 300
PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
# Install files from the package:
atlas_install_python_modules( python/*.py )
atlas_install_scripts( test/*.py )
......@@ -52,7 +52,7 @@ if __name__ == "__main__":
# Output settings
#
ConfigFlags.Output.HITSFileName = "myFaserNu.HITS.pool.root"
ConfigFlags.GeoModel.GeoExportFile = "faserGeo.db" # Optional dump of geometry for browsing in vp1light
ConfigFlags.GeoModel.GeoExportFile = "faserNuGeo.db" # Optional dump of geometry for browsing in vp1light
#
# Geometry-related settings
# Do not change!
......@@ -123,10 +123,10 @@ if __name__ == "__main__":
# acc.getService("StoreGateSvc").Dump=True
# acc.getService("ConditionStore").Dump=True
# acc.printConfig()
f=open('FaserG4AppCfg_EVNT.pkl','wb')
f=open('FaserG4AppCfgFaserNu_EVNT.pkl','wb')
acc.store(f)
f.close()
#
# Execute and finish
#
sys.exit(int(acc.run(maxEvents=50).isFailure()))
sys.exit(int(acc.run(maxEvents=10).isFailure()))
#!/usr/bin/env python
if __name__ == "__main__":
import os
import sys
import GaudiPython
import ParticleGun as PG
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
from AthenaCommon.AppMgr import *
from AthenaCommon.Logging import log, logging
from AthenaCommon.SystemOfUnits import TeV
from AthenaCommon.PhysicalConstants import pi
from AthenaCommon.Constants import VERBOSE, INFO
from AthenaCommon.Configurable import Configurable
from CalypsoConfiguration.AllConfigFlags import ConfigFlags
from CalypsoConfiguration.MainServicesConfig import MainServicesCfg
from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
from FaserGeoModel.FaserGeoModelConfig import FaserGeometryCfg
from G4FaserAlg.G4FaserAlgConfigNew import G4FaserAlgCfg
from G4FaserServices.G4FaserServicesConfigNew import G4GeometryNotifierSvcCfg
#
# Set up logging and new style config
#
log.setLevel(VERBOSE)
Configurable.configurableRun3Behavior = True
#
# Input settings (Generator file)
#
# from AthenaConfiguration.TestDefaults import defaultTestFiles
# ConfigFlags.Input.Files = defaultTestFiles.EVNT
#
# Alternatively, these must ALL be explicitly set to run without an input file
# (if missing, it will try to read metadata from a non-existent file and crash)
#
ConfigFlags.Input.Files = [""]
ConfigFlags.Input.isMC = True
ConfigFlags.Input.RunNumber = 12345
ConfigFlags.Input.Collections = [""]
ConfigFlags.Input.ProjectName = "mc19"
ConfigFlags.Common.isOnline = False
ConfigFlags.Beam.Type = "collisions"
ConfigFlags.Beam.Energy = 7*TeV # Informational, does not affect simulation
ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" # Always needed
ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-02" # Always needed; must match FaserVersion
# Workaround for bug/missing flag; unimportant otherwise
ConfigFlags.addFlag("Input.InitialTimeStamp", 0)
# Workaround to avoid problematic ISF code
ConfigFlags.GeoModel.Layout = "Development"
#
# Output settings
#
ConfigFlags.Output.HITSFileName = "myTestBeam.HITS.pool.root"
ConfigFlags.GeoModel.GeoExportFile = "faserTestBeamGeo.db" # Optional dump of geometry for browsing in vp1light
#
# Geometry-related settings
# Do not change!
#
detectors = ['Veto', 'Preshower', 'FaserSCT', 'Ecal']
from CalypsoConfiguration.DetectorConfigFlags import setupDetectorsFromList
setupDetectorsFromList(ConfigFlags, detectors, toggle_geometry=True)
ConfigFlags.GeoModel.Align.Dynamic = False
ConfigFlags.Sim.ReleaseGeoModel = False
#
# Physics list
#
ConfigFlags.Sim.PhysicsList = "FTFP_BERT"
#
# All flags should be set before calling lock
#
ConfigFlags.lock()
#
# Construct ComponentAccumulator
#
acc = MainServicesCfg(ConfigFlags)
#
# Particle Gun generator (comment out to read generator file)
# Raw energies (without units given) are interpreted as MeV
#
pg = PG.ParticleGun()
pg.McEventKey = "GEN_EVENT"
pg.randomSeed = 123456
pg.sampler.pid = -11
pg.sampler.mom = PG.EThetaMPhiSampler(energy=0.2*TeV, theta=[0, pi/20], phi=[0, 2*pi], mass=0.511)
pg.sampler.pos = PG.PosSampler(x=[-5, 5], y=[-5, 5], z=-20.0, t=0.0)
acc.addEventAlgo(pg, "AthBeginSeq") # to run *before* G4
#
# Only one of these two should be used in a given job
# (MCEventSelectorCfg for generating events with no input file,
# PoolReadCfg when reading generator data from an input file)
#
acc.merge(McEventSelectorCfg(ConfigFlags))
# acc.merge(PoolReadCfg(ConfigFlags))
#
# Output stream configuration
#
acc.merge(OutputStreamCfg(ConfigFlags,
"HITS",
["EventInfo#*",
"McEventCollection#TruthEvent",
"McEventCollection#GEN_EVENT",
"NeutrinoHitCollection#*",
"ScintHitCollection#*",
"FaserSiHitCollection#*",
"CaloHitCollection#*"
], disableEventTag=True))
acc.getEventAlgo("OutputStreamHITS").AcceptAlgs = ["G4FaserAlg"] # optional
acc.getEventAlgo("OutputStreamHITS").WritingTool.ProcessingTag = "StreamHITS" # required
#
# Here is the configuration of the Geant4 pieces
#
acc.merge(FaserGeometryCfg(ConfigFlags))
acc.merge(G4FaserAlgCfg(ConfigFlags))
acc.addService(G4GeometryNotifierSvcCfg(ConfigFlags, ActivateLVNotifier=True))
#
# Verbosity
#
# ConfigFlags.dump()
# logging.getLogger('forcomps').setLevel(VERBOSE)
# acc.foreach_component("*").OutputLevel = VERBOSE
# acc.foreach_component("*ClassID*").OutputLevel = INFO
# acc.getService("StoreGateSvc").Dump=True
# acc.getService("ConditionStore").Dump=True
# acc.printConfig()
f=open('FaserG4AppCfgTestBeam_EVNT.pkl','wb')
acc.store(f)
f.close()
#
# Execute and finish
#
sys.exit(int(acc.run(maxEvents=10).isFailure()))
<IdDictionary name="Tracker" version="FaserNu">
<field name="part">
<label name="SCT" value="1" />
</field>
<!-- This file includes the Interface detector -->
<field name="station" >
<label name="Interface" value="0" />
</field>
<field name="layer" >
<label name="Upstream" value="0" />
<label name="Central" value="1" />
<label name="Downstream" value="2" />
</field>
<field name="phi_module">
<label name="Bottom" value="0" />
<label name="LowerMiddle" value="1" />
<label name="UpperMiddle" value="2" />
<label name="Top" value="3" />
</field>
<field name="eta_module">
<!-- facing downstream (hence "starboard" and "port")
x must increase right to left for a right-handed
coordinate system -->
<!-- numbers straddle zero for consistency with ATLAS -->
<label name="Starboard" value="-1" />
<label name="Port" value="+1" />
</field>
<field name="side">
<!-- The "upper" side is the side with the pigtail -->
<label name="Upper" value="0" />
<label name="Lower" value="1" />
</field>
<region>
<range field="part" value="SCT" />
<range field="station" values="Interface" />
<range field="layer" values="Upstream Central Downstream" />
<range field="phi_module" values="Bottom LowerMiddle UpperMiddle Top" wraparound="FALSE" />
<range field="eta_module" values="Starboard Port" wraparound="FALSE" />
<range field="side" values="Upper Lower" />
<range field="strip" minvalue="0" maxvalue="767" />
</region>
</IdDictionary>
\ No newline at end of file
......@@ -45,6 +45,9 @@ TrackerDataDecoderTool::initialize()
ATH_CHECK(detStore()->retrieve(m_sctID, "FaserSCT_ID"));
auto first_wafer = m_sctID->wafer_begin();
m_trb0Station = m_sctID->station(*first_wafer);
m_sctContext = m_sctID->wafer_context();
m_phiReversed.resize(m_sctID->wafer_hash_max(), false);
......@@ -113,8 +116,8 @@ TrackerDataDecoderTool::convert(const DAQFormats::EventFull* re,
if ((frag->source_id()&0xFFFF0000) != DAQFormats::SourceIDs::TrackerSourceID) continue;
ATH_MSG_DEBUG("Fragment:\n" << *frag);
uint32_t trb = frag->source_id() & 0x0000FFFF;
// FIXME: will need to be updated for interface detector
int station = 1 + trb / TrackerDataFragment::PLANES_PER_STATION;
// FIXME: 1 by default; needs to be 0 for IFT
int station = m_trb0Station + trb / TrackerDataFragment::PLANES_PER_STATION;
int plane = trb % TrackerDataFragment::PLANES_PER_STATION;
// Exceptions are a no-no in Athena/Calypso, so catch any thrown by faser-common
......
......@@ -41,6 +41,8 @@ private:
"ModuleMap",
{7, 2, 5, 0, 3, 6, 1, 4},
"Mapping from online to offline module numbers" };
Gaudi::Property<uint32_t> m_trb0Station { this, "Trb0StationNumber", 1, "Station number for TRB #0" };
};
#endif /* TRACKERBYTESTREAM_TRACKERDATADECODERTOOL_H */
......
#!/usr/bin/env python
"""Test various ComponentAccumulator Digitization configuration modules
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
"""
import sys
from AthenaCommon.Logging import log, logging
from AthenaCommon.Constants import DEBUG, VERBOSE, INFO
from AthenaCommon.Configurable import Configurable
from CalypsoConfiguration.AllConfigFlags import ConfigFlags
from AthenaConfiguration.TestDefaults import defaultTestFiles
from CalypsoConfiguration.MainServicesConfig import MainServicesCfg
from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
#from Digitization.DigitizationParametersConfig import writeDigitizationMetadata
from ScintRecAlgs.ScintRecAlgsConfig import WaveformReconstructionCfg
from TrackerPrepRawDataFormation.TrackerPrepRawDataFormationConfig import FaserSCT_ClusterizationCfg
from TrackerClusterFit.TrackerClusterFitConfig import ClusterFitAlgCfg
from TrackerSpacePointFormation.TrackerSpacePointFormationConfig import TrackerSpacePointFinderCfg
#from MCTruthSimAlgs.RecoTimingConfig import MergeRecoTimingObjCfg
# Set up logging and new style config
log.setLevel(DEBUG)
Configurable.configurableRun3Behavior = True
# Configure
ConfigFlags.Input.Files = [
'tb.raw',
#'/eos/project-f/faser-commissioning/TI12Data/Run-001332/Faser-Physics-001332-00000.raw',
#'/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00000.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00001.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00002.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00003.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00004.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00005.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00006.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00007.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00008.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00009.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00010.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00011.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00012.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00013.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00014.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00015.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00016.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00017.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00018.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00019.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00020.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00021.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00022.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00023.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00024.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00025.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00026.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00027.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00028.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00029.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00030.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00031.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00032.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00033.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00034.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00035.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00036.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00037.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00038.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00039.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00040.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00041.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00042.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00043.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00044.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00045.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00046.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00047.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00048.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00049.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00050.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00051.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00052.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00053.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00054.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00055.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00056.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00057.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00058.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00059.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00060.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00061.raw',
# '/eos/project-f/faser-commissioning/winter2020CosmicsStand/Run-000608/Faser-Physics-000608-00062.raw'
]
#ConfigFlags.Output.ESDFileName = "run608.ESD.pool.root"
#ConfigFlags.Output.ESDFileName = "run001332.ESD.pool.root"
ConfigFlags.Output.ESDFileName = "tb.ESD.pool.root"
ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-02" # Always needed; must match FaserVersion
ConfigFlags.IOVDb.DatabaseInstance = "OFLP200" # Use MC conditions for now
ConfigFlags.Input.ProjectName = "data21" # Needed to bypass autoconfig
ConfigFlags.Input.isMC = False # Needed to bypass autoconfig
ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" # FASER geometry
ConfigFlags.Common.isOnline = False
ConfigFlags.GeoModel.Align.Dynamic = False
ConfigFlags.Beam.NumberOfCollisions = 0.
ConfigFlags.Detector.GeometryFaserSCT = True
ConfigFlags.lock()
# Core components
acc = MainServicesCfg(ConfigFlags)
#acc.merge(PoolReadCfg(ConfigFlags))
acc.merge(PoolWriteCfg(ConfigFlags))
#acc.merge(writeDigitizationMetadata(ConfigFlags))
from FaserByteStreamCnvSvc.FaserByteStreamCnvSvcConfig import FaserByteStreamCnvSvcCfg
acc.merge(FaserByteStreamCnvSvcCfg(ConfigFlags))
#acc.merge(WaveformReconstructionCfg(ConfigFlags))
acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="SCT_EDGEMODE_RDOs"))
acc.merge(ClusterFitAlgCfg(ConfigFlags))
acc.merge(TrackerSpacePointFinderCfg(ConfigFlags))
#acc.getEventAlgo("Tracker::ClusterFitAlg").OutputLevel = DEBUG
# explicitly save RDO information
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
itemList = [ "xAOD::EventInfo#*",
"xAOD::EventAuxInfo#*",
"FaserSCT_RDO_Container#*",
"xAOD::FaserTriggerData#*",
"xAOD::FaserTriggerDataAux#*",
# "ScintWaveformContainer#*",
"TrackCollection#*",
# "xAOD::WaveformHitContainer#*",
# "xAOD::WaveformHitAuxContainer#*",
# "xAOD::WaveformClock#*",
# "xAOD::WaveformClockAuxInfo#*",
]
acc.merge(OutputStreamCfg(ConfigFlags, "ESD", itemList))
acc.getEventAlgo("OutputStreamESD").AcceptAlgs = ["Tracker::ClusterFitAlg"]
# Timing
#acc.merge(MergeRecoTimingObjCfg(ConfigFlags))
# Dump config
# logging.getLogger('forcomps').setLevel(VERBOSE)
# acc.foreach_component("*").OutputLevel = VERBOSE
# acc.foreach_component("*ClassID*").OutputLevel = INFO
# acc.getCondAlgo("FaserSCT_AlignCondAlg").OutputLevel = VERBOSE
# acc.getCondAlgo("FaserSCT_DetectorElementCondAlg").OutputLevel = VERBOSE
# acc.getService("StoreGateSvc").Dump = True
# acc.getService("ConditionStore").Dump = True
# acc.printConfig(withDetails=True)
# ConfigFlags.dump()
# Execute and finish
sc = acc.run(maxEvents=1000)
# Success should be 0
sys.exit(not sc.isSuccess())
......@@ -8,8 +8,8 @@ To run on Calypso MC data (from an installation (run) directory):
Note that VP1PLUGINPATH can be ninja-changed by asetup, and if it does not include the Calypso installation library folder, nothing will work. Also note that it must be an ABSOLUTE (not relative) path!
You can also give the -detdescr="FASER-01" (baseline detector), -detdescr="FASER-02" (baseline + IFT) or -detdescr="FASERNU-02" (baseline + IFT + emulsion) to specify the geometry.
You can also give the -detdescr="FASER-01" (baseline detector), -detdescr="FASER-02" (baseline + IFT), -detdescr="FASERNU-02" (baseline + IFT + emulsion) or -detdescr="FASER-TB00" (2021 Test-beam) to specify the geometry.
You also need either -globcond="OFLCOND-FASER-01" (baseline) or -globcond="OFLCOND-FASER-02" (IFT with or without emulsion) flags to specify the conditions.
You also need either -globcond="OFLCOND-FASER-01" (baseline) or -globcond="OFLCOND-FASER-02" (IFT with or without emulsion, or Test-beam) flags to specify the conditions.
The event display has no way to determine the right values for these settings (it defaults to FASER-01 and OFLCOND-FASER-01).
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment