Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Ligang Xia
athena
Commits
240b6dc8
Commit
240b6dc8
authored
Nov 23, 2021
by
Ligang Xia
Browse files
add a trackless flag
parent
dbbbca4a
Changes
36
Expand all
Hide whitespace changes
Inline
Side-by-side
Calorimeter/CaloAlignment/CaloAlignmentTools/src/CaloAlignTool.cxx
deleted
100755 → 0
View file @
dbbbca4a
This diff is collapsed.
Click to expand it.
Calorimeter/CaloAlignment/CaloAlignmentTools/src/CaloAlignTool.h
deleted
100755 → 0
View file @
dbbbca4a
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
/**
* @file CaloAlignTool.h
*
* @brief Declaration of CaloAlignTool class
*
* @author Vakho Tsulaia <tsulaia@mail.cern.ch>
*
* $Id: CaloAlignTool.h,v 1.3 2008-12-11 16:46:46 tsulaia Exp $
*/
#ifndef CALOALIGNMENTTOOLS_CALOALIGNTOOL_H
#define CALOALIGNMENTTOOLS_CALOALIGNTOOL_H
#include
"GeoModelInterfaces/IGeoAlignTool.h"
#include
"AthenaBaseComps/AthAlgTool.h"
#include
"GaudiKernel/ServiceHandle.h"
#include
"AthenaKernel/IIOVDbSvc.h"
#include
"CxxUtils/checker_macros.h"
/**
* @class CaloAlignTool
*
* @brief CaloAlignTool updates existing CaloDD elements and
* descriptors with alignment information.
* Calo DD cashe is updated by CaloAlignTool::align() method
* which is registered as a callback by CaloAlignTool::initialize()
*/
class
ATLAS_NOT_THREAD_SAFE
CaloAlignTool
:
public
AthAlgTool
,
virtual
public
IGeoAlignTool
{
public:
/**
* @brief Constructor
* @param type [IN] Alg Tool type
* @param name [IN] Alg Tool name
* @param parent [IN] Alg Tool parent interface
*/
CaloAlignTool
(
const
std
::
string
&
type
,
const
std
::
string
&
name
,
const
IInterface
*
parent
);
/**
* @brief Destructor
*/
virtual
~
CaloAlignTool
();
/**
* @brief Standard initialize method of Alg Tools
*/
StatusCode
initialize
();
/**
* @brief Standard finalize method of Alg Tools
*/
StatusCode
finalize
();
/**
* @brief Callback function trigerred when alignment constants are updated
* in the Store Gate. Is called after LAr and Tile alignment callbacks
* The same callback is registered on Sagging object, so both sagging and alignment
* are applied at the same time
*/
virtual
StatusCode
align
(
IOVSVC_CALLBACK_ARGS
);
private:
/**
* @brief handle on the IOVDbSvc for releasing conditions objects from memory
*/
ServiceHandle
<
IIOVDbSvc
>
m_IOVDbSvc
;
/// Not implemented.
CaloAlignTool
()
=
delete
;
CaloAlignTool
(
const
CaloAlignTool
&
)
=
delete
;
CaloAlignTool
&
operator
=
(
const
CaloAlignTool
&
)
=
delete
;
};
#endif
Calorimeter/CaloAlignment/CaloAlignmentTools/src/CaloSuperCellAlignTool.h
deleted
100644 → 0
View file @
dbbbca4a
// This file's extension implies that it's C, but it's really -*- C++ -*-.
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
// $Id$
/**
* @file CaloDetDescr/CaloSuperCellAlignTool.h
* @author scott snyder <snyder@bnl.gov>
* @date Sep, 2012
* @brief Propagate alignent changes to supercell geometry.
*/
#ifndef CALOALIGNMENTTOOLS_CALOSUPERCELLALIGNTOOL_H
#define CALOALIGNMENTTOOLS_CALOSUPERCELLALIGNTOOL_H
#include
"GeoModelInterfaces/IGeoAlignTool.h"
#include
"CaloDetDescr/ICaloSuperCellAlignTool.h"
#include
"CaloDetDescr/ICaloSuperCellIDTool.h"
#include
"AthenaBaseComps/AthAlgTool.h"
#include
"GaudiKernel/ToolHandle.h"
#include
"CxxUtils/checker_macros.h"
class
CaloSuperCellDetDescrManager
;
class
CaloDetDescrManager
;
class
CaloDetDescriptor
;
/**
* @brief Propagate alignent changes to supercell geometry.
*/
class
ATLAS_NOT_THREAD_SAFE
CaloSuperCellAlignTool
:
public
extends2
<
AthAlgTool
,
ICaloSuperCellAlignTool
,
IGeoAlignTool
>
{
public:
/**
* @brief Standard Gaudi tool constructor.
* @param type The name of the tool type.
* @param name The tool name.
* @param parent The tool's Gaudi parent.
*/
CaloSuperCellAlignTool
(
const
std
::
string
&
type
,
const
std
::
string
&
name
,
const
IInterface
*
parent
);
/// Standard Gaudi initialize method.
virtual
StatusCode
initialize
();
/**
* @brief Callback function triggered when alignment constants are updated
* in StoreGate. It is called after CaloAlignTool to propagate
* geometry changes from the offline to supercell versions.
*/
virtual
StatusCode
align
(
IOVSVC_CALLBACK_ARGS
);
/**
* @brief Update supercell geometry from the offline geometry.
* @param mgr The supercell geometry manager.
* @param cellmgr The offline geometry manager.
*/
virtual
StatusCode
doUpdate
(
CaloSuperCellDetDescrManager
*
mgr
,
const
CaloDetDescrManager
*
cellmgr
);
/**
* @brief Standard Gaudi @c queryInterface method.
*
* We need do implement this by hand because
* @c IGeoAlignTool doesn't use @c DeclareInterfaceID.
*/
StatusCode
queryInterface
(
const
InterfaceID
&
riid
,
void
**
ppvIf
);
private:
/// Property: The CaloAlignTool that triggers us.
ToolHandle
<
IGeoAlignTool
>
m_caloAlignTool
;
/// Property: Offline / SuperCell ID mapping tool
ToolHandle
<
ICaloSuperCellIDTool
>
m_scidTool
;
/// Property: SG key for the supercell geometry manager.
std
::
string
m_scMgrKey
;
/// Property: SG key for the offline geometry manager.
std
::
string
m_mgrKey
;
/// Not implemented.
CaloSuperCellAlignTool
()
=
delete
;
CaloSuperCellAlignTool
(
const
CaloSuperCellAlignTool
&
)
=
delete
;
CaloSuperCellAlignTool
&
operator
=
(
const
CaloSuperCellAlignTool
&
)
=
delete
;
};
#endif // not CALODETDESCR_CALOSUPERCELLALIGNTOOL_H
DataQuality/DataQualityUtils/data/postprocessing/RPCmon.yaml
deleted
100644 → 0
View file @
dbbbca4a
This source diff could not be displayed because it is too large. You can
view the blob
instead.
HLT/Trigger/TrigControl/TrigExamples/CMakeLists.txt
deleted
100644 → 0
View file @
dbbbca4a
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
# Declare the package name:
atlas_subdir
(
TrigExamples
)
# External dependencies:
find_package
(
tdaq-common COMPONENTS hltinterface
)
# Component(s) in the package:
atlas_add_component
(
TrigExamples
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS
${
TDAQ-COMMON_INCLUDE_DIRS
}
LINK_LIBRARIES
${
TDAQ-COMMON_LIBRARIES
}
GaudiKernel AthenaBaseComps
AthenaKernel ByteStreamCnvSvcBaseLib DecisionHandlingLib TrigCompositeUtilsLib
TrigPartialEventBuildingLib
)
# Install files from the package:
atlas_install_python_modules
(
python/*.py POST_BUILD_CMD
${
ATLAS_FLAKE8
}
)
atlas_install_joboptions
(
share/*.py
)
HLT/Trigger/TrigControl/TrigExamples/python/MTCalibPebConfig.py
deleted
100644 → 0
View file @
dbbbca4a
#
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
#
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
,
conf2toConfigurable
from
AthenaConfiguration.ComponentFactory
import
CompFactory
from
AthenaCommon.CFElements
import
seqOR
,
parOR
from
AthenaCommon.Logging
import
logging
log
=
logging
.
getLogger
(
'MTCalibPebConfig.py'
)
_menu_name
=
'MTCalibPeb'
_menu_file_name
=
'HLTMenu_{:s}.json'
.
format
(
_menu_name
)
# LAR-EMB* ROBs from the file
# /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob2018-r22format.py
rob_list
=
[
0x420024
,
0x420025
,
0x420026
,
0x420027
,
0x420034
,
0x420035
,
0x420036
,
0x420037
,
0x42005c
,
0x42005d
,
0x42005e
,
0x42005f
,
0x42006c
,
0x42006d
,
0x42006e
,
0x42006f
,
0x42000c
,
0x42000d
,
0x420001
,
0x42000f
,
0x420014
,
0x420015
,
0x420016
,
0x420017
,
0x42001c
,
0x42001d
,
0x420030
,
0x420031
,
0x420002
,
0x420003
,
0x420011
,
0x420013
,
0x420018
,
0x420019
,
0x42001a
,
0x42001b
,
0x42001e
,
0x42001f
,
0x420032
,
0x420033
,
0x420004
,
0x420005
,
0x420006
,
0x420007
,
0x420000
,
0x42000e
,
0x420020
,
0x420021
,
0x420028
,
0x420029
,
0x42002c
,
0x42002d
,
0x420008
,
0x420009
,
0x42000a
,
0x42000b
,
0x420010
,
0x420012
,
0x420022
,
0x420023
,
0x42002a
,
0x42002b
,
0x42002e
,
0x42002f
,
0x41003c
,
0x41003d
,
0x41003e
,
0x41003f
,
0x410038
,
0x410046
,
0x410058
,
0x410059
,
0x410060
,
0x410061
,
0x410064
,
0x410065
,
0x410040
,
0x410041
,
0x410042
,
0x410043
,
0x410048
,
0x41004a
,
0x41005a
,
0x41005b
,
0x410062
,
0x410063
,
0x410066
,
0x410067
,
0x41007c
,
0x41007d
,
0x410071
,
0x41007f
,
0x410084
,
0x410085
,
0x410086
,
0x410087
,
0x41008c
,
0x41008d
,
0x4100a0
,
0x4100a1
,
0x410072
,
0x410073
,
0x410081
,
0x410083
,
0x410088
,
0x410089
,
0x41008a
,
0x41008b
,
0x41008e
,
0x41008f
,
0x4100a2
,
0x4100a3
,
0x410074
,
0x410075
,
0x410076
,
0x410077
,
0x410070
,
0x41007e
,
0x410090
,
0x410091
,
0x410098
,
0x410099
,
0x41009c
,
0x41009d
,
0x410078
,
0x410079
,
0x41007a
,
0x41007b
,
0x410080
,
0x410082
,
0x410092
,
0x410093
,
0x41009a
,
0x41009b
,
0x41009e
,
0x41009f
,
0x410094
,
0x410095
,
0x410096
,
0x410097
,
0x4100a4
,
0x4100a5
,
0x4100a6
,
0x4100a7
,
0x4100cc
,
0x4100cd
,
0x4100ce
,
0x4100cf
,
0x4100dc
,
0x4100dd
,
0x4100de
,
0x4100df
,
0x41000c
,
0x41000d
,
0x410001
,
0x41000f
,
0x410014
,
0x410015
,
0x410016
,
0x410017
,
0x41001c
,
0x41001d
,
0x410030
,
0x410031
,
0x410002
,
0x410003
,
0x410011
,
0x410013
,
0x410018
,
0x410019
,
0x41001a
,
0x41001b
,
0x41001e
,
0x41001f
,
0x410032
,
0x410033
,
0x410004
,
0x410005
,
0x410006
,
0x410007
,
0x410000
,
0x41000e
,
0x410020
,
0x410021
,
0x410028
,
0x410029
,
0x41002c
,
0x41002d
,
0x410008
,
0x410009
,
0x41000a
,
0x41000b
,
0x410010
,
0x410012
,
0x410022
,
0x410023
,
0x41002a
,
0x41002b
,
0x41002e
,
0x41002f
,
0x410024
,
0x410025
,
0x410026
,
0x410027
,
0x410034
,
0x410035
,
0x410036
,
0x410037
,
0x41005c
,
0x41005d
,
0x41005e
,
0x41005f
,
0x41006c
,
0x41006d
,
0x41006e
,
0x41006f
,
0x410044
,
0x410045
,
0x410039
,
0x410047
,
0x41004c
,
0x41004d
,
0x41004e
,
0x41004f
,
0x410054
,
0x410055
,
0x410068
,
0x410069
,
0x41003a
,
0x41003b
,
0x410049
,
0x41004b
,
0x410050
,
0x410051
,
0x410052
,
0x410053
,
0x410056
,
0x410057
,
0x41006a
,
0x41006b
,
0x4100b4
,
0x4100b5
,
0x4100a9
,
0x4100b7
,
0x4100bc
,
0x4100bd
,
0x4100be
,
0x4100bf
,
0x4100c4
,
0x4100c5
,
0x4100d8
,
0x4100d9
,
0x4100aa
,
0x4100ab
,
0x4100b9
,
0x4100bb
,
0x4100c0
,
0x4100c1
,
0x4100c2
,
0x4100c3
,
0x4100c6
,
0x4100c7
,
0x4100da
,
0x4100db
,
0x4100ac
,
0x4100ad
,
0x4100ae
,
0x4100af
,
0x4100a8
,
0x4100b6
,
0x4100c8
,
0x4100c9
,
0x4100d0
,
0x4100d1
,
0x4100d4
,
0x4100d5
,
0x4100b0
,
0x4100b1
,
0x4100b2
,
0x4100b3
,
0x4100b8
,
0x4100ba
,
0x4100ca
,
0x4100cb
,
0x4100d2
,
0x4100d3
,
0x4100d6
,
0x4100d7
,
0x420044
,
0x420045
,
0x420039
,
0x420047
,
0x42004c
,
0x42004d
,
0x42004e
,
0x42004f
,
0x420054
,
0x420055
,
0x420068
,
0x420069
,
0x42003a
,
0x42003b
,
0x420049
,
0x42004b
,
0x420050
,
0x420051
,
0x420052
,
0x420053
,
0x420056
,
0x420057
,
0x42006a
,
0x42006b
,
0x420074
,
0x420075
,
0x420076
,
0x420077
,
0x420070
,
0x42007e
,
0x420090
,
0x420091
,
0x420098
,
0x420099
,
0x42009c
,
0x42009d
,
0x420078
,
0x420079
,
0x42007a
,
0x42007b
,
0x420080
,
0x420082
,
0x420092
,
0x420093
,
0x42009a
,
0x42009b
,
0x42009e
,
0x42009f
,
0x420094
,
0x420095
,
0x420096
,
0x420097
,
0x4200a4
,
0x4200a5
,
0x4200a6
,
0x4200a7
,
0x4200cc
,
0x4200cd
,
0x4200ce
,
0x4200cf
,
0x4200dc
,
0x4200dd
,
0x4200de
,
0x4200df
,
0x42003c
,
0x42003d
,
0x42003e
,
0x42003f
,
0x420038
,
0x420046
,
0x420058
,
0x420059
,
0x420060
,
0x420061
,
0x420064
,
0x420065
,
0x420040
,
0x420041
,
0x420042
,
0x420043
,
0x420048
,
0x42004a
,
0x42005a
,
0x42005b
,
0x420062
,
0x420063
,
0x420066
,
0x420067
,
0x42007c
,
0x42007d
,
0x420071
,
0x42007f
,
0x420084
,
0x420085
,
0x420086
,
0x420087
,
0x42008c
,
0x42008d
,
0x4200a0
,
0x4200a1
,
0x420072
,
0x420073
,
0x420081
,
0x420083
,
0x420088
,
0x420089
,
0x42008a
,
0x42008b
,
0x42008e
,
0x42008f
,
0x4200a2
,
0x4200a3
,
0x4200b4
,
0x4200b5
,
0x4200a9
,
0x4200b7
,
0x4200bc
,
0x4200bd
,
0x4200be
,
0x4200bf
,
0x4200c4
,
0x4200c5
,
0x4200d8
,
0x4200d9
,
0x4200aa
,
0x4200ab
,
0x4200b9
,
0x4200bb
,
0x4200c0
,
0x4200c1
,
0x4200c2
,
0x4200c3
,
0x4200c6
,
0x4200c7
,
0x4200da
,
0x4200db
,
0x4200ac
,
0x4200ad
,
0x4200ae
,
0x4200af
,
0x4200a8
,
0x4200b6
,
0x4200c8
,
0x4200c9
,
0x4200d0
,
0x4200d1
,
0x4200d4
,
0x4200d5
,
0x4200b0
,
0x4200b1
,
0x4200b2
,
0x4200b3
,
0x4200b8
,
0x4200ba
,
0x4200ca
,
0x4200cb
,
0x4200d2
,
0x4200d3
,
0x4200d6
,
0x4200d7
,
]
rob_access_dict
=
{
'01 :ADDGET:RND20:'
:
rob_list
,
# Prefetch+Retrieve 20 random ROBs from rob_list
'02 :GET:RND10: '
:
rob_list
,
# Retrieve 10 random ROBs from rob_list
'03 :GET:RND5: '
:
rob_list
,
# Retrieve 5 random ROBs from rob_list
'04 :ADD:RND10: '
:
rob_list
,
# Prefetch 10 random ROBs from rob_list
'05 :ADD:RND20: '
:
rob_list
,
# Prefetch 20 random ROBs from rob_list
'06 :ADDGET:RND50:'
:
rob_list
,
# Prefetch+Retrieve 50 random ROBs from rob_list
'07 :ADDGET:RND10:'
:
rob_list
,
# Prefetch+Retrieve 10 random ROBs from rob_list
'08 :ADDGET:RND5: '
:
rob_list
,
# Prefetch+Retrieve 5 random ROBs from rob_list
'09 :GET:RND20: '
:
rob_list
,
# Retrieve 20 random ROBs from rob_list
'10 :ADDGET:RND20:'
:
rob_list
,
# Prefetch+Retrieve 20 random ROBs from rob_list
'11 :GET:RND10: '
:
rob_list
,
# Retrieve 10 random ROBs from rob_list
'12 :ADDGET:RND10:'
:
rob_list
# Prefetch+Retrieve 10 random ROBs from rob_list
}
class
MTCalibPebHypoOptions
:
def
__init__
(
self
):
self
.
UseRandomSeed
=
False
self
.
RandomAcceptRate
=
-
1.0
self
.
BurnTimePerCycleMillisec
=
0
self
.
NumBurnCycles
=
0
self
.
BurnTimeRandomly
=
True
self
.
Crunch
=
False
self
.
CheckDataConsistency
=
False
self
.
ROBAccessDict
=
rob_access_dict
self
.
TimeBetweenROBReqMillisec
=
0
self
.
PEBROBList
=
[]
self
.
PEBSubDetList
=
[]
self
.
CreateRandomData
=
{}
self
.
EnableL1CaloPhase1
=
False
# Sets ConfigFlags.Trigger.enableL1CaloPhase1
self
.
EnableL1MuonPhase1
=
False
# Sets ConfigFlags.Trigger.enableL1MuonPhase1
self
.
EnableL1CaloLegacy
=
True
# Sets ConfigFlags.Trigger.enableL1CaloLegacy
default_options
=
MTCalibPebHypoOptions
()
def
set_flags
(
flags
,
options
=
default_options
):
flags
.
Common
.
isOnline
=
True
flags
.
Input
.
Format
=
'BS'
flags
.
Input
.
isMC
=
False
flags
.
IOVDb
.
DatabaseInstance
=
'CONDBR2'
flags
.
IOVDb
.
GlobalTag
=
flags
.
Trigger
.
OnlineCondTag
flags
.
Trigger
.
doHLT
=
True
flags
.
Trigger
.
EDMVersion
=
3
flags
.
Trigger
.
triggerMenuSetup
=
'LS2_v1'
flags
.
Trigger
.
enableL1MuonPhase1
=
options
.
EnableL1MuonPhase1
flags
.
Trigger
.
enableL1CaloPhase1
=
options
.
EnableL1CaloPhase1
flags
.
Trigger
.
enableL1CaloLegacy
=
options
.
EnableL1CaloLegacy
flags
.
Trigger
.
HLTSeeding
.
forceEnableAllChains
=
True
# Disable signature-specific detector configuration parts
flags
.
Trigger
.
doID
=
False
flags
.
Trigger
.
doCalo
=
False
flags
.
Trigger
.
doMuon
=
False
def
l1_seq_cfg
(
flags
,
options
=
default_options
):
from
HLTSeeding.HLTSeedingConfig
import
HLTSeedingCfg
acc
=
HLTSeedingCfg
(
flags
,
seqName
=
'l1Seq'
)
l1_decoder_alg
=
acc
.
getEventAlgo
(
'HLTSeeding'
)
l1_decoder_alg
.
prescaler
=
CompFactory
.
PrescalingEmulationTool
()
# Generate L1 menu
from
TrigConfigSvc.TrigConfigSvcCfg
import
generateL1Menu
generateL1Menu
(
flags
)
# Need to set HLT menu file name here to avoid conflict when merging with HLT sequence CA
acc
.
getService
(
"HLTConfigSvc"
).
JsonFileName
=
_menu_file_name
return
acc
def
make_hypo_alg
(
name
):
hypo
=
CompFactory
.
MTCalibPebHypoAlg
(
name
)
hypo
.
HypoInputDecisions
=
'HLTSeedingSummary'
hypo
.
HypoOutputDecisions
=
'MTCalibPebDecisions_'
+
name
return
hypo
def
make_hypo_tool
(
name
,
options
=
default_options
):
hypo_tool
=
CompFactory
.
MTCalibPebHypoTool
(
name
)
hypo_tool
.
UseRandomSeed
=
options
.
UseRandomSeed
hypo_tool
.
RandomAcceptRate
=
options
.
RandomAcceptRate
hypo_tool
.
BurnTimePerCycleMillisec
=
options
.
BurnTimePerCycleMillisec
hypo_tool
.
NumBurnCycles
=
options
.
NumBurnCycles
hypo_tool
.
BurnTimeRandomly
=
options
.
BurnTimeRandomly
hypo_tool
.
Crunch
=
options
.
Crunch
hypo_tool
.
CheckDataConsistency
=
options
.
CheckDataConsistency
hypo_tool
.
ROBAccessDict
=
options
.
ROBAccessDict
hypo_tool
.
TimeBetweenROBReqMillisec
=
options
.
TimeBetweenROBReqMillisec
hypo_tool
.
PEBROBList
=
options
.
PEBROBList
hypo_tool
.
PEBSubDetList
=
options
.
PEBSubDetList
hypo_tool
.
CreateRandomData
=
options
.
CreateRandomData
return
hypo_tool
def
make_all_hypo_algs
(
num_chains
,
concurrent
=
False
):
hypo_tools
=
[]
for
chain_index
in
range
(
1
,
1
+
num_chains
):
# Default hypo tool for chains 1, 4, 7, 10, ...
hypoTool
=
make_hypo_tool
(
'HLT_MTCalibPeb{:d}'
.
format
(
chain_index
))
hypoTool
.
PEBROBList
=
rob_list
hypoTool
.
PEBSubDetList
=
[]
# Hypo for chains 2, 5, 8, 11, ...
if
chain_index
%
3
==
2
:
hypoTool
.
PEBROBList
=
[
0x420024
,
0x420025
,
0x420026
,
0x420027
]
# example LAr EMB ROBs
hypoTool
.
PEBSubDetList
=
[
0x53
,
0x54
]
# TILECAL_EXT A and C
# Hypo for chains 3, 6, 9, 12, ...
elif
chain_index
%
3
==
0
:
hypoTool
.
CreateRandomData
=
{
'ExampleCollection_{:d}_1'
.
format
(
chain_index
):
5
,
'ExampleCollection_{:d}_2'
.
format
(
chain_index
):
3
,
}
hypoTool
.
PEBROBList
=
[
0x420034
,
0x420035
,
0x420036
,
0x420037
]
# example LAr EMB ROBs
hypoTool
.
PEBROBList
.
extend
([
0x7c0001
])
# extra HLT result for data scouting
hypo_tools
.
append
(
hypoTool
)
# Add the hypo tools to algorithm(s)
hypo_algs
=
[]
if
concurrent
:
for
tool
in
hypo_tools
:
hypo
=
make_hypo_alg
(
'HypoAlg{:d}'
.
format
(
len
(
hypo_algs
)
+
1
))
hypo
.
HypoTools
+=
[
tool
]
hypo_algs
.
append
(
hypo
)
else
:
hypo
=
make_hypo_alg
(
'HypoAlg1'
)
for
tool
in
hypo_tools
:
hypo
.
HypoTools
+=
[
tool
]
hypo_algs
.
append
(
hypo
)
return
hypo_algs
def
hlt_result_cfg
(
flags
,
hypo_algs
):
from
TrigEDMConfig.DataScoutingInfo
import
getFullHLTResultID
from
TrigOutputHandling.TrigOutputHandlingConfig
import
TriggerEDMSerialiserToolCfg
,
StreamTagMakerToolCfg
,
TriggerBitsMakerToolCfg
# Tool serialising EDM objects to fill the HLT result
serialiser
=
TriggerEDMSerialiserToolCfg
(
'Serialiser'
)
for
hypo
in
hypo_algs
:
serialiser
.
addCollectionListToMainResult
([
'xAOD::TrigCompositeContainer_v1#%s'
%
hypo
.
HypoOutputDecisions
,
'xAOD::TrigCompositeAuxContainer_v2#%sAux.'
%
hypo
.
HypoOutputDecisions
,
])
# Data scouting example
resultList
=
[
getFullHLTResultID
(),
1
]
collections
=
set
()
chain_names
=
[]
for
hypo
in
hypo_algs
:
for
hypo_tool
in
hypo
.
HypoTools
:
chain_names
.
append
(
hypo_tool
.
name
)
if
hasattr
(
hypo_tool
,
'CreateRandomData'
):
for
coll_name
in
hypo_tool
.
CreateRandomData
.
keys
():
collections
.
add
(
coll_name
)
for
coll_name
in
collections
:
serialiser
.
addCollectionListToResults
([
'xAOD::TrigCompositeContainer_v1#{:s}'
.
format
(
coll_name
),
'xAOD::TrigCompositeAuxContainer_v2#{:s}Aux.'
.
format
(
coll_name
)
],
resultList
)
# StreamTag definitions
streamPhysicsMain
=
{
'name'
:
'Main'
,
'type'
:
'physics'
,
'obeyLB'
:
True
,
'forceFullEventBuilding'
:
True
}
streamExamplePEB
=
{
'name'
:
'ExamplePEB'
,
'type'
:
'calibration'
,
'obeyLB'
:
True
,
'forceFullEventBuilding'
:
False
}
streamExampleDataScoutingPEB
=
{
'name'
:
'ExampleDataScoutingPEB'
,
'type'
:
'physics'
,
'obeyLB'
:
True
,
'forceFullEventBuilding'
:
False
}
chain_to_streams
=
{}
for
counter
,
ch
in
enumerate
(
chain_names
,
start
=
1
):
if
counter
%
3
==
1
:
chain_to_streams
[
ch
]
=
[
streamPhysicsMain
]
elif
counter
%
3
==
2
:
chain_to_streams
[
ch
]
=
[
streamExamplePEB
]
elif
counter
%
3
==
0
:
chain_to_streams
[
ch
]
=
[
streamExampleDataScoutingPEB
]
menu_json
=
write_dummy_menu_json
(
flags
,
chain_to_streams
.
keys
(),
chain_to_streams
)
acc
=
ComponentAccumulator
()
# Give the menu json name to HLTConfigSvc
from
TrigConfigSvc.TrigConfigSvcCfg
import
HLTConfigSvcCfg
hltConfigSvcCfg
=
HLTConfigSvcCfg
(
flags
)
hltConfigSvcCfg
.
getService
(
"HLTConfigSvc"
).
JsonFileName
=
menu_json
acc
.
merge
(
hltConfigSvcCfg
)
# Tool adding stream tags to HLT result
stmaker
=
StreamTagMakerToolCfg
()
stmaker
.
ChainDecisions
=
'HLTNav_Summary'
stmaker
.
PEBDecisionKeys
=
[
str
(
hypo
.
HypoOutputDecisions
)
for
hypo
in
hypo_algs
]
# Tool adding HLT bits to HLT result
bitsmaker
=
TriggerBitsMakerToolCfg
()
bitsmaker
.
ChainDecisions
=
'HLTNav_Summary'
# Configure the HLT result maker to use the above tools
from
TrigServices.TrigServicesConfig
import
TrigServicesCfg
trigServicesCfg
=
TrigServicesCfg
(
flags
)
hltEventLoopMgr
=
trigServicesCfg
.
getPrimary
()
hltEventLoopMgr
.
ResultMaker
.
StreamTagMaker
=
stmaker
hltEventLoopMgr
.
ResultMaker
.
MakerTools
=
[
bitsmaker
,
serialiser
]
acc
.
merge
(
trigServicesCfg
)
return
acc
def
make_summary_algs
(
hypo_algs
):
summary
=
CompFactory
.
TriggerSummaryAlg
(
'TriggerSummaryAlg'
)
summary
.
InputDecision
=
'HLTSeedingSummary'
summary
.
FinalDecisions
=
[
str
(
hypo
.
HypoOutputDecisions
)
for
hypo
in
hypo_algs
]
summMaker
=
CompFactory
.
DecisionSummaryMakerAlg
()
summMaker
.
FinalDecisionKeys
=
[
str
(
hypo
.
HypoOutputDecisions
)
for
hypo
in
hypo_algs
]
summMaker
.
FinalStepDecisions
=
{}
for
hypo
in
hypo_algs
:
for
tool
in
hypo
.
HypoTools
:
summMaker
.
FinalStepDecisions
[
tool
.
getName
()]
=
[
str
(
hypo
.
HypoOutputDecisions
)]
log
.
info
(
'summMaker = %s'
,
summMaker
)
return
[
summary
,
summMaker
]
def
hlt_seq_cfg
(
flags
,
num_chains
,
concurrent
=
False
,
hackCA2Global
=
False
,
hypo_algs
=
None
):
acc
=
ComponentAccumulator
()
# Sequences need to ensure that summary algs run after all hypos
acc
.
addSequence
(
seqOR
(
'hltTop'
))
acc
.
addSequence
(
parOR
(
'hltHypoSeq'
),
parentName
=
'hltTop'
)
acc
.
addSequence
(
parOR
(
'hltEndSeq'
),
parentName
=
'hltTop'
)
if
not
hypo_algs
:
hypo_algs
=
make_all_hypo_algs
(
num_chains
,
concurrent
)
summary_algs
=
make_summary_algs
(
hypo_algs
)
hlt_result_ca
=
hlt_result_cfg
(
flags
,
hypo_algs
)
acc
.
addEventAlgo
(
hypo_algs
,
sequenceName
=
'hltHypoSeq'
)
acc
.
addEventAlgo
(
summary_algs
,
sequenceName
=
'hltEndSeq'
)
acc
.
merge
(
hlt_result_ca
)
# Hack to work around a shortcoming of CA2GlobalWrapper when a component
# has an empty ToolHandle and CA adds a tool to the handle
if
hackCA2Global
:
from
AthenaCommon.Configurable
import
Configurable
prevConfBehav
=
Configurable
.
configurableRun3Behavior
Configurable
.
configurableRun3Behavior
=
0
from
AthenaCommon.AppMgr
import
ServiceMgr
as
svcMgr
svcMgr
.
HltEventLoopMgr
.
ResultMaker
=
conf2toConfigurable
(
acc
.
getService
(
'HltEventLoopMgr'
).
ResultMaker
)
Configurable
.
configurableRun3Behavior
=
prevConfBehav
return
acc
def
write_dummy_menu_json
(
flags
,
chains
,
chain_to_streams
):
import
json
from
TrigConfHLTUtils.HLTUtils
import
string2hash
from
TrigConfigSvc.TrigConfigSvcCfg
import
getHLTPrescalesSetFileName
menu_dict
=
dict
([
(
"filetype"
,
"hltmenu"
),
(
"name"
,
_menu_name
),
(
"chains"
,
dict
()),
(
"streams"
,
dict
()),
(
"sequencers"
,
dict
())
])
hlt_ps_dict
=
dict
([
(
"filetype"
,
"hltprescale"
),
(
"name"
,
_menu_name
),
(
"prescales"
,
dict
())
])
counter
=
0
for
chain
in
chains
:
# Prepare information for stream list and fill separate dictionary
chain_streams
=
[]
for
stream
in
chain_to_streams
[
chain
]:
stream_name
=
stream
[
'name'
]
chain_streams
.
append
(
stream_name
)