Skip to content
Snippets Groups Projects
Commit c0640e55 authored by Paul Thompson's avatar Paul Thompson Committed by Adam Edward Barton
Browse files

AthenaMonitoring add l1calo monitoring python flags

parent b9ffea6f
No related branches found
No related tags found
No related merge requests found
......@@ -82,5 +82,10 @@ def AthenaMonitoringCfg(flags):
info('Set up AFP monitoring')
from Run3AFPMonitoring.Run3AFPExampleMonitorAlgorithm import Run3AFPExampleMonitoringConfig
result.merge(Run3AFPExampleMonitoringConfig(flags))
if flags.DQ.Steering.doLVL1CaloMon:
info('Set up LVL1Calo monitoring')
from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig import LVL1CaloMonitoringConfig
result.merge(LVL1CaloMonitoringConfig(flags))
return result
......@@ -4,7 +4,7 @@
from AthenaConfiguration.AthConfigFlags import AthConfigFlags
_steeringFlags = [ 'doGlobalMon', 'LVL1CaloMon', 'doCTPMon', 'doHLTMon',
_steeringFlags = [ 'doGlobalMon', 'doLVL1CaloMon', 'doCTPMon', 'doHLTMon',
'doPixelMon', 'doSCTMon', 'doTRTMon', 'doInDetMon',
'doLArMon', 'doTileMon',
'doCaloGlobalMon', 'doMuonMon',
......
......@@ -53,4 +53,5 @@ atlas_add_component( TrigT1CaloMonitoring
# Install files from the package:
atlas_install_joboptions( share/*.py )
# required for Run 3 monitoring
atlas_install_python_modules( python/*.py )
#
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
#
def CpmMonitoringConfig(inputFlags):
'''Function to configure LVL1 Cpm algorithm in the monitoring system.'''
import math
# get the component factory - used for getting the algorithms
from AthenaConfiguration.ComponentFactory import CompFactory
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
result = ComponentAccumulator()
# make the athena monitoring helper
from AthenaMonitoring import AthMonitorCfgHelper
helper = AthMonitorCfgHelper(inputFlags,'CpmMonitoringCfg')
# get any algorithms
CpmMonAlg = helper.addAlgorithm(CompFactory.CpmMonitorAlgorithm,'CpmMonAlg')
# add any steering
groupName = 'CpmMonitor' # the monitoring group name is also used for the package name
CpmMonAlg.PackageName = groupName
crates = 4
CpmMonAlg.s_crates = crates
maxSlices = 5
CpmMonAlg.s_maxSlices = maxSlices
isolBits = 4
CpmMonAlg.s_isolBits = isolBits
tobsPerCPM = 5
CpmMonAlg.s_tobsPerCPM = tobsPerCPM
maxTobsPerCmx = 70
CpmMonAlg.MaxTOBsPerCMX = maxTobsPerCmx
# set up the directory structure
mainDir = 'L1Calo'
trigPath = 'CPM' # replaces m_rootDir
errorDir=trigPath+"/Errors/Hardware"
monDetailPath=errorDir+"/Detail/"
monCPMinputPath=trigPath+"/Input/"
monRoIPath=trigPath+"/Output/"
#monCMXPath=trigPath+"_CMX/Errors/Hardware/"
monCMXinPath=trigPath+"_CMX/Input/"
#monCMXoutPath=trigPath+"_CMX/Output/"
# add monitoring algorithm to group, with group name and main directory
myGroup = helper.addGroup(CpmMonAlg, groupName , mainDir)
#
# CPM Towers - monCPMinputPath
#
# Trigger Tower plots - for binning see TrigT1CaloLWHistogramTool::bookPPMEmEtaVsPhi
etabins_2d=66
etamin_2d=-3.3
etamax_2d=3.3
phibins_2d=64
phimin_2d=0.0
phimax_2d=64.0
# for 2D histograms x,y;histogram alias
myGroup.defineHistogram('etaTT,phiTT;ppm_em_2d_etaPhi_tt_Hitmap',title='PPM Trigger Tower EM eta/phi;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_em_TT',path=monCPMinputPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaTT,phiTT;ppm_had_2d_etaPhi_tt_Hitmap',title='PPM Trigger Tower HAD eta/phi;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_had_TT',path=monCPMinputPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
# CPMTower plots
maxEnergyRange = 256 # Maximum energy plotted
# EM 1d
myGroup.defineHistogram('etCpmTT_em;cpm_em_1d_tt_Et', title='CPM Tower EM Et;CPM Tower EM Energy;',
cutmask='',path=monCPMinputPath,xbins=maxEnergyRange,xmin=0,xmax=maxEnergyRange)
myGroup.defineHistogram('etaCpmTT_em;cpm_em_1d_tt_Eta', title='CPM Tower EM eta;CPM Tower EM #eta;',
cutmask='',path=monCPMinputPath,xbins=50,xmin=-2.5,xmax=2.5)
myGroup.defineHistogram('phiCpmTT_em;cpm_em_1d_tt_Phi', title='CPM Tower EM phi;CPM Tower EM #phi;',
cutmask='',path=monCPMinputPath,xbins=64,xmin=0,xmax=2*math.pi)
# EM 2d
myGroup.defineHistogram('etaCpmTT_em,phiScaledCpmTT_em;cpm_em_2d_etaPhi_tt_Hitmap',
title='CPM Tower EM eta/phi;Tower #eta; Tower #phi',type='TH2F',
cutmask='',path=monCPMinputPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaCpmTT_em,phiScaledCpmTT_em;cpm_em_2d_etaPhi_tt_EtWeighted',
title='CPM Tower EM eta/phi weighted;Tower #eta; Tower #phi',type='TH2F',
cutmask='',path=monCPMinputPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d, weight="etCpmTT_em")
# HAD 1d
myGroup.defineHistogram('etCpmTT_had;cpm_had_1d_tt_Et', title='CPM Tower HAD Et;CPM Tower HAD Energy;',
cutmask='',path=monCPMinputPath,xbins=maxEnergyRange,xmin=0,xmax=maxEnergyRange)
myGroup.defineHistogram('etaCpmTT_had;cpm_had_1d_tt_Eta', title='CPM Tower HAD eta;CPM Tower HAD #eta;',
cutmask='',path=monCPMinputPath,xbins=50,xmin=-2.5,xmax=2.5)
myGroup.defineHistogram('phiCpmTT_had;cpm_had_1d_tt_Phi', title='CPM Tower HAD phi;CPM Tower HAD #phi;',
cutmask='',path=monCPMinputPath,xbins=64,xmin=0,xmax=2*math.pi)
# HAD 2d
myGroup.defineHistogram('etaCpmTT_had,phiScaledCpmTT_had;cpm_had_2d_etaPhi_tt_Hitmap',
title='CPM Tower HAD eta/phi;Tower #eta; Tower #phi',type='TH2F',
cutmask='',path=monCPMinputPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaCpmTT_had,phiScaledCpmTT_had;cpm_had_2d_etaPhi_tt_EtWeighted'
,title='CPM Tower HAD eta/phi weighted;Tower #eta; Tower #phi',type='TH2F',
cutmask='',path=monCPMinputPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d, weight="etCpmTT_had")
xbinshist = int(crates * maxSlices)
myGroup.defineHistogram('sliceCpmTT_tot,peakCpmTT_tot;cpm_2d_tt_Slices'
,title='CPM Slices and Triggered Slice;Crate/Number of Slices;Triggered Slice',type='TH2F',
cutmask='',path=monCPMinputPath,
xbins=xbinshist,xmin=0,xmax=xbinshist,ybins=maxSlices,ymin=0,ymax=maxSlices)
#
# Errors - monDetailPath
#
# em - tot means addition of CPM and Overlap containers
myGroup.defineHistogram('etaCpmTT_em_tot,phiScaledCpmTT_em_tot;cpm_em_2d_etaPhi_tt_Parity'
,title='CPM Tower EM Parity Errors;Tower #eta; Tower #phi',type='TH2F',
cutmask='parityErrorCpmTT_em',path=monDetailPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaCpmTT_em_tot,phiScaledCpmTT_em_tot;cpm_em_2d_etaPhi_tt_LinkDown',
title='CPM Tower EM Link Down Errors;Tower #eta; Tower #phi',type='TH2F',
cutmask='linkDownErrorCpmTT_em',path=monDetailPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
# had
myGroup.defineHistogram('etaCpmTT_had_tot,phiScaledCpmTT_had_tot;cpm_had_2d_etaPhi_tt_Parity',
title='CPM Tower HAD Parity Errors;Tower #eta; Tower #phi',type='TH2F',
cutmask='parityErrorCpmTT_had',path=monDetailPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaCpmTT_had_tot,phiScaledCpmTT_had_tot;cpm_had_2d_etaPhi_tt_LinkDown',
title='CPM Tower HAD Link Down Errors;Tower #eta; Tower #phi',type='TH2F',
cutmask='linkDownErrorCpmTT_had',path=monDetailPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
#
# CPM TOB RoIs - monRoIPath
#
isolRange=32 # Maximum range for encoded isolation
myGroup.defineHistogram('energyTobRoIsEner;cpm_1d_roi_EnergyEm', title='CPM TOB RoI Cluster Energy EM;Cluster Energy;',
cutmask='mask_tobroi_ener_em',path=monRoIPath,
xbins=maxEnergyRange,xmin=0,xmax=maxEnergyRange)
myGroup.defineHistogram('energyTobRoIsEner;cpm_1d_roi_EnergyTau', title='CPM TOB RoI Cluster Energy Tau;Cluster Energy;',
cutmask='mask_tobroi_ener_tau',path=monRoIPath,
xbins=maxEnergyRange,xmin=0,xmax=maxEnergyRange)
myGroup.defineHistogram('energyTobRoIsIsol;cpm_1d_roi_IsolationEm', title='CPM TOB RoI Encoded Isolation Value EM;;',
cutmask='mask_tobroi_isol_em',path=monRoIPath,
xbins=isolRange,xmin=0,xmax=isolRange)
myGroup.defineHistogram('energyTobRoIsIsol;cpm_1d_roi_IsolationTau', title='CPM TOB RoI Encoded Isolation Value Tau;;',
cutmask='mask_tobroi_isol_tau',path=monRoIPath,
xbins=isolRange,xmin=0,xmax=isolRange)
# bit masks to be done
#myGroup.defineHistogram('bitsTobRoIsIsol;cpm_1d_roi_IsolationBitsEm', title='CPM TOB RoI Encoded Isolation Bits EM;;',
# cutmask='mask_tobroi_isol_em',path=monRoIPath,
# xbins=isolBits,xmin=0,xmax=isolBits)
# 2D
# For binning see TrigT1CaloLWHistogramTool::bookCPMRoIEtaVsPhi,fillCPMRoIEtaVsPhi m_shrinkEtaBins=true
# isolation
myGroup.defineHistogram('etaTobRoIsIsol,phiTobRoIsIsol;cpm_2d_etaPhi_roi_HitmapIsolEm',
title='CPM TOB RoIs EM Non-zero Isolation Hit Map;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_tobroi_isol_em',path=monRoIPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaTobRoIsIsol,phiTobRoIsIsol;cpm_2d_etaPhi_roi_HitmapIsolTau',
title='CPM TOB RoIs Tau Non-zero Isolation Hit Map;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_tobroi_isol_tau',path=monRoIPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
# energy
myGroup.defineHistogram('etaTobRoIsEner,phiTobRoIsEner;cpm_2d_etaPhi_roi_HitmapEm',
title='CPM TOB RoIs EM Hit Map;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_tobroi_ener_em',path=monRoIPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaTobRoIsEner,phiTobRoIsEner;cpm_2d_etaPhi_roi_EtWeightedEm',
title='CPM TOB RoIs EM Weighted by Energy;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_tobroi_ener_em',path=monRoIPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d, weight="energyTobRoIsEner")
myGroup.defineHistogram('etaTobRoIsEner,phiTobRoIsEner;cpm_2d_etaPhi_roi_HitmapTau',
title='CPM TOB RoIs Tau Hit Map;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_tobroi_ener_tau',path=monRoIPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d)
myGroup.defineHistogram('etaTobRoIsEner,phiTobRoIsEner;cpm_2d_etaPhi_roi_EtWeightedTau',
title='CPM TOB RoIs Tau Weighted by Energy;Tower #eta; Tower #phi',type='TH2F',
cutmask='mask_tobroi_ener_tau',path=monRoIPath,
xbins=etabins_2d,xmin=etamin_2d,xmax=etamax_2d,ybins=phibins_2d,ymin=phimin_2d,ymax=phimax_2d, weight="energyTobRoIsEner")
# TOBs per CPM
myGroup.defineHistogram('tobPerCPMEm;cpm_1d_roi_TOBsPerCPMEm', title='CPM TOB RoI TOBs per CPM EM;Number of TOBs;',
cutmask='',path=monRoIPath,
xbins=tobsPerCPM+1,xmin=1,xmax=tobsPerCPM+2)
myGroup.defineHistogram('tobPerCPMTau;cpm_1d_roi_TOBsPerCPMTau', title='CPM TOB RoI TOBs per CPM Tau;Number of TOBs;',
cutmask='',path=monRoIPath,
xbins=tobsPerCPM+1,xmin=1,xmax=tobsPerCPM+2)
# How to set labels e.g.
# m_h_cpm_1d_roi_TOBsPerCPMEm->GetXaxis()->SetBinLabel(s_tobsPerCPM + 1, "More");
#
# CMX-CP TOBs - monCMXinPath
#
myGroup.defineHistogram('enerTobCmxEner;cmx_1d_tob_TOBsPerCMXLeft', title='CMX-CP TOBs per CMX Left;Number of TOBs;',
cutmask='',path=monCMXinPath,
xbins=maxTobsPerCmx,xmin=0,xmax=maxTobsPerCmx)
acc = helper.result()
result.merge(acc)
return result
if __name__=='__main__':
# For direct tests
from AthenaCommon.Configurable import Configurable
Configurable.configurableRun3Behavior = 1
# set debug level for whole job
from AthenaCommon.Logging import log
from AthenaCommon.Constants import INFO #DEBUG
log.setLevel(INFO)
# set input file and config options
from AthenaConfiguration.AllConfigFlags import ConfigFlags
import glob
inputs = glob.glob('/eos/atlas/atlascerngroupdisk/data-art/build-output/master/Athena/x86_64-centos7-gcc8-opt/2020-04-06T2139/TrigP1Test/test_trigP1_v1PhysP1_T0Mon_build/ESD.pool.root')
ConfigFlags.Input.Files = inputs
ConfigFlags.Output.HISTFileName = 'ExampleMonitorOutput_LVL1.root'
ConfigFlags.lock()
ConfigFlags.dump() # print all the configs
from AthenaCommon.AppMgr import ServiceMgr
ServiceMgr.Dump = False
from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg
from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
cfg = MainServicesSerialCfg()
cfg.merge(PoolReadCfg(ConfigFlags))
CpmMonitorCfg = CpmMonitoringConfig(ConfigFlags)
cfg.merge(CpmMonitorCfg)
# message level for algorithm
CpmMonitorCfg.getEventAlgo('CpmMonAlg').OutputLevel = 2 # 1/2 INFO/DEBUG
# options - print all details of algorithms, very short summary
cfg.printConfig(withDetails=False, summariseProps = True)
nevents=-1
cfg.run(nevents)
#
# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
#
def LVL1CaloMonitoringConfig(flags):
'''Function to call l1calo DQ monitoring algorithms'''
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
import logging
# local printing
local_logger = logging.getLogger('AthenaMonitoringCfg')
info = local_logger.info
info('In LVL1CaloMonitoringConfig')
result = ComponentAccumulator()
# monitoring algorithm configs
# do not run in RAW->ESD, or AOD-only
if flags.DQ.Environment not in ('tier0Raw', 'AOD'):
from TrigT1CaloMonitoring.CpmMonitorAlgorithm import CpmMonitoringConfig
result.merge(CpmMonitoringConfig(flags))
return result
This diff is collapsed.
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGT1CALOMONITORING_CPMMONITORALGORITHM_H
#define TRIGT1CALOMONITORING_CPMMONITORALGORITHM_H
#include "AthenaMonitoring/AthMonitorAlgorithm.h"
#include "AthenaMonitoringKernel/Monitored.h"
#include "StoreGate/ReadHandleKey.h"
#include "xAODTrigL1Calo/CPMTowerContainer.h"
#include "xAODTrigL1Calo/CPMTobRoIContainer.h"
#include "xAODTrigL1Calo/CMXCPTobContainer.h"
#include "xAODTrigL1Calo/CMXCPHitsContainer.h"
#include "TrigT1Interfaces/TrigT1CaloDefs.h"
class CpmMonitorAlgorithm : public AthMonitorAlgorithm {
public:CpmMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator );
virtual ~CpmMonitorAlgorithm()=default;
virtual StatusCode initialize() override;
virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
// monitoring trigger tower structs for various towers
struct MonitorTT{
const xAOD::TriggerTower_v2* ttower;
double phi_scaled; // rescaled for 2D plots
};
struct MonitorCpmTT{
const xAOD::CPMTower_v2* ttower;
// some modified/derived information
double phi_scaled; // rescaled for 2D plots
int slice; // crate * m_maxSlices + emEnergyVec()).size() - 1;
// errors
bool emParityError;
bool emLinkDownError;
bool emGLinkParityError[8];
bool hadParityError;
bool hadLinkDownError;
};
struct MonitorTobRoI{
const xAOD::CPMTobRoI_v1* tobroi;
//xAOD::CPMTower_v2
// some modified/derived information
double etaMod;
double phiMod;
bool isolationBits[4];
bool isolationBitSet; // set to true if at least one bit set
};
struct MonitorCmxCpTob{
const xAOD::CMXCPTob_v1* tob;
// some modified/derived information
uint8_t x; // crate * m_modules + cpm - 1;
uint8_t y; // chip * 4 + location;
int ybase; // cmx * 5;
};
private:
// Phi scale for trigger tower eta/phi plots
double m_phiScaleTT;
// Phi scale for jet element eta/phi plots
double m_phiScaleJE;
StringProperty m_packageName{this,"PackageName","CpmMonitor","group name for histograming"};
// The following enums are set in the python in order to get consistent histogram bins
// only add here if they are used in the .cxx
Gaudi::Property<int> m_crates{this,"s_crates", 4, "Number of CPM crates"};
Gaudi::Property<int> m_modules{this,"s_modules", 14, "Number of modules per crate (modules numbered 1-14)"};
Gaudi::Property<int> m_maxSlices{this,"s_maxSlices", 5, "Maximum number of slices"};
Gaudi::Property<int> m_tobsPerCPM{this,"s_tobsPerCPM", 5, "Maximum number of TOBs per CPM sent to CMX"};
Gaudi::Property<int> m_isolBits{this,"s_isolBits", 4, "Number of bits for encoded isolation"};
// see fillXVsThresholds
Gaudi::Property<int> m_threshBits{this,"s_threshBits", 3, "Number of bits per threshold for hit sums"};
Gaudi::Property<int> m_thresholds{this,"s_thresholds", 16, "Number of EM/Tau threshold bits"};
// previously declared in .cxx
Gaudi::Property<int> m_maxTobsPerCmx{this,"MaxTOBsPerCMX", 70, "Maximum number of TOBs per CMX plotted"};
/// Error summary plot bins
enum SummaryErrors { EMParity, EMLink, HadParity, HadLink, CPMStatus,
TOBParity, SumParity, CMXStatus, NumberOfSummaryBins };
// container keys including steering parameter and description
SG::ReadHandleKey<xAOD::TriggerTowerContainer> m_xAODTriggerTowerContainerName{this, "BS_xAODTriggerTowerContainer",LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation,"Trigger Tower Container"};
SG::ReadHandleKey<xAOD::CPMTowerContainer> m_cpmTowerLocation{this, "CPMTowerLocation", LVL1::TrigT1CaloDefs::CPMTowerLocation, "CPM container"};
SG::ReadHandleKey<xAOD::CPMTowerContainer> m_cpmTowerLocationOverlap{this, "CPMTowerLocationOverlap",LVL1::TrigT1CaloDefs::CPMTowerLocation + "Overlap", "CPM Overlap container"};
SG::ReadHandleKey<xAOD::CPMTobRoIContainer> m_cpmTobRoiLocation{this, "CPMTobRoILocation", LVL1::TrigT1CaloDefs::CPMTobRoILocation, "CPMTobRoI container"};
SG::ReadHandleKey<xAOD::CMXCPTobContainer> m_cmxCpTobLocation{this, "CMXCPTobLocation", LVL1::TrigT1CaloDefs::CMXCPTobLocation, "CMXCPTob container"};
SG::ReadHandleKey<xAOD::CMXCPHitsContainer> m_cmxCpHitsLocation{this, "CMXCPHitsLocation", LVL1::TrigT1CaloDefs::CMXCPHitsLocation, "CMXCPHits container"};
int * getIsolationBits(int val, int nThresh, int nBits, int offset=0) const;
StatusCode fillCpmTowerVectors(SG::ReadHandle<xAOD::CPMTowerContainer> &cpmTower,
std::vector<MonitorCpmTT> &monCpmTTs_em, std::vector<MonitorCpmTT> &monCpmTTs_had,
std::vector<int> &errorsCPM,
bool core
) const;
};
#endif
// Run 3
#include "../CpmMonitorAlgorithm.h"
//#include "../CpmSimMonitorAlgorithm.h"
//#include "../PpmSimBsMonitorAlgorithm.h"
//#include "../PprMonitorAlgorithm.h"
//#include "../PprSpareMonitorAlgorithm.h"
//#include "../PprStabilityMonitorAlgorithm.h"
// Run 2
#include "../CPMon.h"
#include "../CPSimMon.h"
#include "../JEPJEMMon.h"
......@@ -24,7 +33,15 @@
#include "../JetEfficienciesMonTool.h"
#include "../RODMonV1.h"
// Run 3
DECLARE_COMPONENT( CpmMonitorAlgorithm )
//DECLARE_COMPONENT( CpmSimMonitorAlgorithm )
//DECLARE_COMPONENT( PpmSimBsMonitorAlgorithm )
//DECLARE_COMPONENT( PprMonitorAlgorithm )
//DECLARE_COMPONENT( PprSpareMonitorAlgorithm )
//DECLARE_COMPONENT( PprStabilityMonitorAlgorithm )
// Run 2
DECLARE_COMPONENT( LVL1::OverviewMon )
DECLARE_COMPONENT( LVL1::CPMon )
DECLARE_COMPONENT( LVL1::CPSimMon )
......
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