Commit d47ed13c authored by Tim Martin's avatar Tim Martin Committed by Graeme Stewart
Browse files

'updates for run 2, see changelog' (TrigCostMonitor-01-11-00)

	* Re-enable export of trigger keys as part of metadata
	* Add bunchgroup info from CTP also (for online)
	* Add CTPVersion and L1Version to metadata
	* Change to get L1 PSK from CTP rather than TrigConfSvc (always returned 0)
	* More verbosity options in Trig::Print utility
	* Remove app name code from TrigCostTool, cannot access HLTResult here
	* Improved messages
	* Export the OPI monitoring level, the EcecPrescale and if the event was a monitoring event
	* Improved TrigCostRun for offline extraction
	* Move doValidation check from TriggerRelease to here
	* ## ---> CHANGE DEFAULT CONFIG TO ONLY MONITOR 1 IN 10 EVENTS <-- ##
	* Tag TrigCostMonitor-01-11-00

2014-12-15 Tim Martin <Tim.martin@cern.ch>
	* Add bunchgroup info for offline running
	* Tag TrigCostMonitor-01-10-00

2014-11-28 Tim Martin <Tim.martin@cern.ch>
	* Update DB instance
        * Start M7 code
...
(Long ChangeLog diff - truncated)
parent 1ce973c2
......@@ -39,7 +39,7 @@ namespace Trig
std::string debug() const { return m_debug.str(); }
std::string infos() const { return m_infos.str(); }
void clearMsg() { m_debug.clear(); m_infos.clear(); }
void clearMsg() { m_debug.str(""); m_debug.clear(); m_infos.str(""); m_infos.clear(); }
cool::DatabaseId& cool_id() { return m_cool_id; }
cool::IDatabasePtr& cool_ptr() { return m_cool_ptr; }
......@@ -69,6 +69,8 @@ namespace Trig
std::map<unsigned, uint64_t> m_lbLength; // Hold the runs LB lengths
cool::DatabaseId m_cool_id; // COOL connection id
cool::DatabaseId m_cool_id_run1; // COOL connection id for run 1 data
cool::DatabaseId m_cool_id_run2; // COOL connection id for run 2 data
cool::IDatabasePtr m_cool_ptr; // COOL database pointer
std::string m_cool_source; // COOL configuration source
......
......@@ -14,12 +14,14 @@
// C/C++
#include <set>
#include <utility> //pair
// Framework
#include "GaudiKernel/Algorithm.h"
#include "GaudiKernel/ISvcLocator.h"
#include "GaudiKernel/ServiceHandle.h"
#include "GaudiKernel/ToolHandle.h"
#include "CoolLumiUtilities/BunchGroupTool.h"
// Trigger
#include "TrigTimeAlgs/ITrigTimerSvc.h"
......@@ -92,7 +94,7 @@ private:
std::string keyConfig; // StoreGate key for TrigMonConfigCollection
std::string keyEvent; // StoreGate key for TrigMonEventCollection
std::string hltLevel; // HLT trigger level
bool doLevel; // If level is active and to be processed
bool doLevel; // If level is active and to be processed
unsigned outputLevel; // Output level of parent TrigCostRun instance
MsgStream *msgStream; // MsgStream of parent TrigCostRun instance
......@@ -111,7 +113,10 @@ private:
unsigned countValid; // Count valid HLT results
unsigned countEvent; // Count all extracted TrigMonEvent objects
unsigned countConfig; // Count all extracted TrigMonConfig objects
unsigned countConfig; // Count all extracted TrigMonConfig
unsigned resultPrint; // Count all fully printed results
std::set< std::pair<int,int> > exportedConfigs; // L1 and HLT keys of configurations which have already been exported to D3PD
};
private:
......
......@@ -13,11 +13,15 @@
#include "AthenaMonitoring/IMonitorToolBase.h"
#include "GaudiKernel/AlgTool.h"
#include "StoreGate/StoreGateSvc.h"
#include "CoolLumiUtilities/BunchGroupTool.h"
// Trigger
#include "TrigTimeAlgs/ITrigTimerSvc.h"
#include "TrigSteering/Scaler.h"
#include "xAODEventInfo/EventInfo.h" // OLD
#include "xAODEventInfo/EventInfo.h"
// Trigger
#include "TrigMonitoringEvent/TrigMonConfigCollection.h"
#include "TrigMonitoringEvent/TrigMonEventCollection.h"
......@@ -25,7 +29,6 @@
#include "TrigCostMonitor/ITrigNtTool.h"
#include "TrigCostMonitor/ReadLumiBlock.h"
class EventInfo;
class TrigTimer;
class TriggerInfo;
......@@ -57,15 +60,17 @@ class TrigCostTool : public AlgTool, virtual public IMonitorToolBase {
MsgStream& log() const { return *m_log; }
void ProcessConfig(const EventInfo &info);
void ProcessConfig(xAOD::EventInfo* info);
void ProcessEvent(TrigMonEvent &event);
void SavePrevLumi(TrigMonEvent &event);
bool IsMonitoringEvent(TriggerInfo &trig);
bool IsMonitoringEvent(xAOD::EventInfo* info);
void ClearBeforeNewRun(unsigned run = 0);
uint32_t GetL1PSKFromCTPfragment();
private:
// Tool properties:
......@@ -79,18 +84,20 @@ class TrigCostTool : public AlgTool, virtual public IMonitorToolBase {
std::string m_appName; // Application name for current event (HLT result) - TimM moving into CostTool from CostRun
bool m_doTiming; // Collect timing information
bool m_saveFailedChains; // Save trigger chains with zero passed trigger decision bits
bool m_printEvent; // Print event summary
bool m_purgeCostStream; // Remove cost stream when no cost data is attached
bool m_useConfDb; // Use the trigger configuration database
bool m_useConfSvc; // Use the trigger configuration service
bool m_saveExtraWords; // Save extra words to event
bool m_costForCAF; // (Re)running the trigger outside of P1
bool m_doEBWeight; // Calculate EB weight
bool m_saveEventTimers; // Save event timers: from TrigSteer and this tool
bool m_writeAlways; // Always write out data for every event
bool m_writeConfig; // Write out configuration data
bool m_writeConfigDB; // Write out configuration data loaded from the DB
unsigned int m_stopAfterNEvent; // Stop collecting data after nevents
float m_execPrescale; // Prescale for collecting extended data
float m_doOperationalInfo;// Value of doOperationalInfo in parent steering alg. Only for reference here
// Athena tool and service handles
const HLT::TrigSteer *m_parentAlg;
......@@ -98,10 +105,12 @@ class TrigCostTool : public AlgTool, virtual public IMonitorToolBase {
TrigTimer *m_timer;
ServiceHandle<StoreGateSvc> m_storeGate;
ServiceHandle<ITrigTimerSvc> m_timerSvc;
ToolHandle<IBunchGroupTool> m_toolBunchGroup;
ToolHandle<HLT::IReusableScaler> m_scalerTool;
// Tools for operational data collection
ToolHandle<Trig::ITrigNtTool> m_toolConf;
ToolHandle<Trig::ITrigNtTool> m_toolEBWeight;
ToolHandleArray<Trig::ITrigNtTool> m_eventTools;
ToolHandleArray<Trig::ITrigNtTool> m_scaleTools;
ToolHandleArray<Trig::ITrigNtTool> m_alwaysTools;
......@@ -116,6 +125,8 @@ class TrigCostTool : public AlgTool, virtual public IMonitorToolBase {
unsigned m_lumi; // Current run luminosity block
unsigned m_countEvent; // Continous count of events
unsigned m_keyTimer; // Starting key for adding timers
unsigned m_exportedConfig;// Number of configs exported to the HLT result
unsigned m_exportedEvents;// Number of events exported to the HLT result
TrigMonConfig m_config_db; // Trigger configuration from DB (live config)
TrigMonConfig m_config_sv; // Trigger configuration from conf. servivce
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIG_TRIGNTEBWEIGHT_H
#define TRIG_TRIGNTEBWEIGHT_H
//
// Calculate the EB unweighting
//
// Framework
#include "GaudiKernel/AlgTool.h"
#include "GaudiKernel/ServiceHandle.h"
#include "GaudiKernel/ToolHandle.h"
#include "StoreGate/StoreGateSvc.h"
// Trigger
#include "TrigSteering/HLTResultAccessTool.h"
// Local
#include "TrigCostMonitor/ITrigNtTool.h"
#include <map>
namespace Trig
{
/**
* @enum Trig::EBTriggerType
* Enumerates the different enhanced bias trigger types. Make sure to also change the static names below too.
*/
enum EBTriggerType {
kEb_low_physics,
kEb_high_physics,
kEb_random,
kEb_physics_noL1PS,
kEb_physics_empty,
kEb_random_empty,
kEb_physics_firstempty,
kEb_random_firstempty,
kEb_physics_unpaired_iso,
kEb_random_unpaired_iso,
kEb_physics_unpaired_noniso,
kEb_random_unpaired_noniso,
kEbTrggerType_SIZE // This must always be the final entry.
};
enum EBBunchGroupType {
kBG_NONE = 0,
kBG_FILLED = 1,
kBG_CALREQ = 2, // Not used
kBG_EMPTY = 3,
kBG_UNPAIRED_ISO = 4,
kBG_UNPAIRED_NONISO = 5,
kBG_FIRSTEMPTY = 6,
kBG_UNPAIRED = 7 // Not used
};
static const std::string EBBunchGroupNames[] = {
"NONE", "FILLED", "CALREQ", "EMPTY", "UNPAIRED_ISO", "UNPAIRED_NONISO", "FIRSTEMPTY", "UNPAIRED"
};
////////////////
static const std::string EBMappingNameEF[] = {
"L1ItemNames EF_eb_physics",
"L1ItemNames EF_high_eb_physics",
"", // Random chains apply a uniform weighting factor
"EF_eb_physics_noL1PS",
"EF_eb_physics_empty",
"", // Random chains apply a uniform weighting factor
"EF_eb_physics_firstempty",
"", // Random chains apply a uniform weighting factor
"EF_eb_physics_unpaired_iso",
"", // Random chains apply a uniform weighting factor
"EF_eb_physics_unpaired_noniso",
"" // Random chains apply a uniform weighting factor
}; //!< Static string array of keys mapped to L1Items, this comes direct from the HLT configuration (L1ItemNames) or via XML.
static const std::string EBMappingNameHLT[] = {
"L1ItemNames HLT_eb_low_L1RD0_FILLED",
"L1ItemNames HLT_eb_high_L1RD0_FILLED",
"", // Random chains apply a uniform weighting factor
"HLT_noalg_eb_L1Physics_noPS",
"L1ItemNames HLT_eb_empty_L1RD0_EMPTY",
"", //"HLT_noalg_eb_L1RD0_EMPTY", // Random chains apply a uniform weighting factor
"L1ItemNames HLT_eb_firstempty_L1RD0_FIRSTEMPTY",
"",//"HLT_noalg_eb_L1RD0_FIRSTEMPTY", // Random chains apply a uniform weighting factor
"L1ItemNames HLT_eb_unpairediso_L1RD0_UNPAIRED_ISO",
"",//"HLT_noalg_eb_L1RD0_UNPAIRED_ISO", // Random chains apply a uniform weighting factor
"", // Here will go the unpaired noniso
"" // Random chains apply a uniform weighting factor
}; //!< Static string array of keys mapped to L1Items, this comes direct from the HLT configuration (L1ItemNames) or via XML.
static const std::string EBTriggerNameL2[] = {
"L2_eb_physics",
"L2_high_eb_physics",
"L2_eb_random",
"L2_eb_physics_noL1PS",
"L2_eb_physics_empty",
"L2_eb_random_empty",
"L2_eb_physics_firstempty",
"L2_eb_random_firstempty",
"L2_eb_physics_unpaired_iso",
"L2_eb_random_unpaired_iso",
"L2_eb_physics_unpaired_noniso",
""
}; //!< Static string array of text versions of EB trigger names at L2
static const std::string EBTriggerNameEF[] = {
"EF_eb_physics",
"EF_high_eb_physics",
"EF_eb_random",
"EF_eb_physics_noL1PS",
"EF_eb_physics_empty",
"EF_eb_random_empty",
"EF_eb_physics_firstempty",
"EF_eb_random_firstempty",
"EF_eb_physics_unpaired_iso",
"EF_eb_random_unpaired_iso",
"EF_eb_physics_unpaired_noniso",
""
}; //!< Static string array of text versions of EB trigger names at EF
static const std::string EBTriggerNameHLT[] = {
"HLT_eb_low_L1RD0_FILLED",
"HLT_eb_high_L1RD0_FILLED",
"HLT_noalg_eb_L1RD1_FILLED",
"HLT_noalg_eb_L1Physics_noPS",
"HLT_eb_empty_L1RD0_EMPTY",
"HLT_noalg_eb_L1RD0_EMPTY",
"HLT_eb_firstempty_L1RD0_FIRSTEMPTY",
"HLT_noalg_eb_L1RD0_FIRSTEMPTY",
"HLT_eb_unpairediso_L1RD0_UNPAIRED_ISO",
"HLT_noalg_eb_L1RD0_UNPAIRED_ISO",
"", //unpaired non iso
""
}; //!< Static string array of text versions of EB trigger names for HLT level
static const InterfaceID IID_TrigNtEBWeightTool("Trig::TrigNtEBWeightTool", 1, 0);
class TrigNtEBWeightTool : virtual public Trig::ITrigNtTool, public AlgTool {
public:
static const InterfaceID& interfaceID() { return IID_TrigNtEBWeightTool; }
TrigNtEBWeightTool(const std::string &, const std::string &, const IInterface *);
virtual ~TrigNtEBWeightTool() {}
StatusCode initialize();
StatusCode finalize();
bool Fill(TrigMonConfig *confg);
bool Fill(TrigMonEvent &event);
private:
MsgStream& log() const { return *m_log; }
private:
void readEBConfigFromXML(unsigned runNumber);
// Properties:
float m_randomSeedWeight; //<! Extra weight given random L1 seeded triggers due to difference in clock (5 instead of 40 MHz)
std::multimap<std::string, std::string> m_filterInfo; //!< Holds the Enhanced Bias mapping L1 -> HLT mapping information. From orig. online menu or XML.
std::map<EBTriggerType, float> m_chainPrescale; //!< Holds the total multiplicative prescale of a chain, including any additional RD0/RD1 factors.
std::map<EBTriggerType, std::string> m_chainL1Seeds; //!< Holds the L1 item(s) which seed each EB chain.
std::map<EBTriggerType, bool> m_chainEnabled; //!< True if all prescales in the chain are > 0
std::map<std::string, unsigned> m_L1NameToCPTID; //!< Holds map of L1 item to CPTID for the loaded menu.
std::map<unsigned, std::string> m_CPTIDToL1Name; //!< Reverse map, for debug output.
std::map<unsigned, EBBunchGroupType> m_L1IDToBunchGroup; //!< Holds map of L1 item CTPID to the bunchgroup
// Tools and services:
MsgStream *m_log;
unsigned m_isRun1;
bool m_isConfigured;
};
}
#endif
......@@ -35,21 +35,28 @@ namespace Trig
StatusCode initialize();
StatusCode finalize();
void SetSteer(const HLT::TrigSteer *ptr);
bool Fill(TrigMonConfig *confg);
bool Fill(TrigMonEvent &event);
private:
MsgStream& log() const { return *m_log; }
MsgStream& log() const { return *m_log; }
bool FillFromSteering(TrigMonEvent &event);
bool FillFromHLTResult(TrigMonEvent &event);
private:
// Properties:
std::string m_keyResult; // StoreGate key to retrieve HLTResult
bool m_saveFailedChains; // Flag to save chain info even if no trigger bits are set to pass
bool m_useSteering; // Flag to use steering info, if false then use HLT result
// Tools and services:
const HLT::TrigSteer *m_parentAlg;
MsgStream *m_log;
ServiceHandle<StoreGateSvc> m_storeGate; // StoreGate service
ToolHandle<HLT::IHLTResultAccessTool> m_hltTool; // Helper tool for unpacking HLTResult
......
......@@ -20,7 +20,7 @@ namespace Trig
{
void Print(const TrigMonEvent &event,
const TrigMonConfig &config,
MsgStream &log, MSG::Level level);
MsgStream &log, MSG::Level level, int verb = 6);
void Print(const TrigMonConfig &config,
std::ostream &os);
......
......@@ -7,6 +7,7 @@ use GaudiInterface GaudiInterface-* External
use DataCollection DataCollection-* External
use AthenaMonitoring AthenaMonitoring-* Control
use StoreGate StoreGate-* Control
use CoolLumiUtilities CoolLumiUtilities-* Database
use TrigConfInterfaces TrigConfInterfaces-* Trigger/TrigConfiguration
use TrigConfJobOptData TrigConfJobOptData-* Trigger/TrigConfiguration
......@@ -15,24 +16,33 @@ use TrigMonitoringEvent TrigMonitoringEvent-* Trigger/TrigEvent
use TrigSteering TrigSteering-* Trigger/TrigSteer
use TrigTimeAlgs TrigTimeAlgs-* Trigger/TrigTools
use xAODEventInfo xAODEventInfo-* Event/xAOD
apply_pattern dual_use_library files=*.cxx
apply_pattern declare_python_modules files="TrigCost*.py"
apply_pattern declare_joboptions files="*.py"
apply_pattern declare_runtime extras = "../share/*.xml"
private
apply_tag NEEDS_CORAL_BASE
apply_tag NEEDS_COOL_FACTORY
apply_tag ROOTBasicLibs
apply_tag ROOTMathLibs
use AtlasReflex AtlasReflex-* External -no_auto_import
use AtlasROOT AtlasROOT-* External
use AtlasCORAL AtlasCORAL-* External
use AtlasBoost AtlasBoost-* External
use AthenaKernel AthenaKernel-* Control
#use AthenaPoolKernel AthenaPoolKernel-* Database/AthenaPOOL
#use AthenaPoolKernel AthenaPoolKernel-* Database/AthenaPOOL
use EventInfo EventInfo-* Event
use GeneratorObjects GeneratorObjects-* Generators
use TruthHelper TruthHelper-* Generators/GenAnalysisTools
use PathResolver PathResolver-* Tools
use TrigConfL1Data TrigConfL1Data-* Trigger/TrigConfiguration
use TrigConfHLTData TrigConfHLTData-* Trigger/TrigConfiguration
......@@ -42,10 +52,14 @@ use TrigDataAccessMonitoring TrigDataAccessMonitoring-* Trigger/TrigDataAccess
use TrigInterfaces TrigInterfaces-* Trigger/TrigSteer
use TrigNavigation TrigNavigation-* Trigger/TrigEvent
use TrigSteeringEvent TrigSteeringEvent-* Trigger/TrigEvent
use TrigT1Interfaces TrigT1Interfaces-* Trigger/TrigT1
use TrigT1Result TrigT1Result-* Trigger/TrigT1
use TrigT1Interfaces TrigT1Interfaces-* Trigger/TrigT1
use TrigT1Result TrigT1Result-* Trigger/TrigT1
use TrigSerializeResult TrigSerializeResult-* Trigger/TrigDataAccess
macro_append TrigCostMonitorLib_cppflags " `xml2-config --cflags`"
macro_append TrigCostMonitorLib_use_linkopts " -L$(ROOTSYS)/lib -lXMLIO -lXMLParser"
macro_append TrigCostMonitorLib_use_linkopts " -lxml2" slc4-gcc34 " /usr/lib/libxml2.so.2"
apply_pattern lcgdict dict=TrigCostMonitor \
selectionfile=selection.xml \
headerfiles="../TrigCostMonitor/TrigCostMonitorDict.h"
......
......@@ -8,7 +8,7 @@ from AthenaCommon.Logging import logging
#
steeringL2_online_doOperationalInfo=10 # frequency of operartional info collection at L2
steeringEF_online_doOperationalInfo=1 # frequency of operartional info collection at EF
steeringHLT_online_doOperationalInfo=1 # frequency of operartional info collection at HLT
steeringHLT_online_doOperationalInfo=10 # frequency of operartional info collection at HLT
#----------------------------------------------------------------------
# Base class which defines target() method used by TrigSteer config
......@@ -38,51 +38,44 @@ def prepareCostTool(target):
if target.count('L2') == 1:
tool.level = 'L2'
tool.keyResult = 'HLTResult_L2'
tool.monitoringStream = 'L2CostMonitoring'
elif target.count('EF') == 1:
tool.level = 'EF'
tool.keyResult = 'HLTResult_EF'
tool.monitoringStream = 'EFCostMonitoring'
elif target.count('HLT') == 1:
tool.level = 'HLT'
# TODO - Migrate this to HLT 24-june-14 try HLT
log.info('Setting up in prepareCostTool - using monitoringStream = HLTCostMonitoring')
tool.monitoringStream = 'HLTCostMonitoring'
tool.keyResult = 'HLTResult_HLT' # HLT result stores which XPU node the trigger was running on
log.info('Setting up in prepareCostTool - using monitoringStream = CostMonitoring')
tool.monitoringStream = 'CostMonitoring' # Migration to run 2 menu, using conf. as in LS1_v1 menu
else:
raise Exception('Unknown target level: '+target)
tool.monitoringLogic = 'no-calib no-debug no-physics'
tool.monitoringTarget = target
tool.purgeCostStream = True
tool.writeAlways = False #This is set to True by postSetupCostForCAF()
tool.writeConfig = False #Overridden by writeAlways
tool.saveExtraWords = True
tool.saveEventTimers = False
tool.purgeCostStream = True # Remove cost stream if no data to save
tool.writeAlways = False # This is set to True by postSetupCostForCAF()
tool.writeConfig = True # This should default to false for online (why?) [TODO] put to true for tests
tool.writeConfigDB = False # If reading from the DB, do we want to save the data? Should not be needed as EBWeight calc is in this package.
tool.useConfDb = True # Ask toolConf to fetch online config from DB. Only used currently if running costoForCAF
tool.costForCAF = False # This is set to True by postSetupCostForCAF()
tool.doEBWeight = False # Calculate EB weighting factors. Use
tool.useConfSvc = True # Ask toolConf to fetch current config from config service
tool.saveEventTimers = True
tool.stopAfterNEvent = 800
tool.execPrescale = 1.0
tool.toolConf = Trig__TrigNtConfTool('Conf'+target)
tool.toolConf.useDB = False # Save online keys from DB
tool.toolConf.useConfSvc = True # Save current keys from ConfSvc
tool.toolConf = Trig__TrigNtConfTool('Conf'+target)
tool.toolEBWeight = Trig__TrigNtEBWeightTool('Ebwt'+target)
tool_elem = Trig__TrigNtElemTool('Elem'+target)
tool_exec = Trig__TrigNtExecTool('Exec'+target)
tool_lvl1 = Trig__TrigNtLvl1Tool('Lvl1'+target)
tool_hlt2 = Trig__TrigNtHltRTool('Hlt2'+target) # Not currently used
tool_hlt2 = Trig__TrigNtHltRTool('Hlt2'+target)
tool_robs = Trig__TrigNtRobsTool('Robs'+target)
## INFO: If using this tool to get the HLT result from storegate in the combined trigger,
## TrigSteering needs re-ordering as the OPIMonitoring tools are run before the ResultBuilder.
## Alternativly, don't use tool_hlt2 and get the chains with TrigCostTool
if tool.level == "HLT":
tool_hlt2.keyResult = 'HLTResult_HLT'
else:
tool_hlt2.keyResult = 'HLTResult_L2'
# HLT result also stores which XPU node the trigger was running on
tool.keyResult = 'HLTResult_HLT'
#
# Add TrigNtSaveTool tool for offline running of athenaMT/PT
# Add TrigNtSaveTool tool for offline running of athenaMT/PT/HLT
#
if useSaveTools:
save_cost = Trig__TrigNtSaveTool('SaveCost_'+target)
......@@ -102,7 +95,7 @@ def prepareCostTool(target):
tool_exec.printOPI = True
tool_exec.printSEQ = True
tool_robs.printDebug = True
tool.toolConf.printConfig = False #This is a crazy amout of output
tool.toolConf.printConfig = True #This is a crazy amout of output
tool.printEvent = True
if target.count('CostExec') == 1:
......@@ -117,13 +110,20 @@ def prepareCostTool(target):
# New settings
tool.doTiming = True
tool.saveEventTimers = True
tool.saveFailedChains = True
#
tool_robs.cleanROBs = False
tool_robs.keepSubDet = False
tool_elem.saveNavigation = True
tool_elem.filterTE = True
tool_exec.saveSeqTimer = True
## INFO: If using this tool to get the HLT result from storegate in the combined trigger,
## TrigSteering needs re-ordering as the OPIMonitoring tools are run before the ResultBuilder.
## Alternativly, don't use HLTResult by setting useSteering=True
tool_hlt2.saveFailedChains = True
tool_hlt2.useSteering = True
tool_hlt2.keyResult = 'HLTResult_HLT'
if tool.level != "HLT":
tool_hlt2.keyResult = 'HLTResult_L2'
if tool.level == "L2":
tool.eventTools += [ tool_lvl1 ]
......@@ -133,44 +133,20 @@ def prepareCostTool(target):
elif tool.level == "EF":
tool.scaleTools += [ tool_elem ]
tool.scaleTools += [ tool_exec ]
# tool_hlt2 removed
tool.scaleTools += [ tool_hlt2 ]
elif tool.level == "HLT":
tool.eventTools += [ tool_lvl1 ]
tool.scaleTools += [ tool_elem ]
tool.scaleTools += [ tool_exec ]
tool.scaleTools += [ tool_robs ]
# tool_hlt2 removed
tool.scaleTools += [ tool_hlt2 ]
# Removing by default the Save tools - we now have the D3PDMaker for this
if useSaveTools:
tool.alwaysTools += [save_cost, save_rate]
elif target.count('CostAthena') == 1:
## INFO: Can we remove this? I think we can...
tool.writeAlways = True
tool.monitoringTarget = 'CostAthena'
tool.execPrescale = 0.0
tool.doTiming = True
tool.saveEventTimers = True