Commit eb8d2e30 authored by Stewart Martin-Haugh's avatar Stewart Martin-Haugh Committed by Johannes Elmsheuser
Browse files

Remove Run-1 L1Calo monitoring

parent 09a746db
......@@ -17,6 +17,7 @@ elif globalflags.DataSource() == "data":
else: #MC
run1 = False
if run1:
include ("TrigT1CaloMonitoring/TrigT1CaloMonitoring_forRecExCommission_Run1.py")
from AthenaCommon.Logging import logging
log.info("L1Calo monitoring no longer supported for Run-1 data in release 22")
else:
include ("TrigT1CaloMonitoring/TrigT1CaloMonitoring_forRecExCommission_Run2.py")
## @file TrigT1CaloMonitoring_forRecExCommission.py
#
# Standard monitoring jobOptions - runs on Tier0 (Reco_trf.py) or online.
#
# @authors Johanna Fleckner, Andrea Neusiedl, Peter Faulkner
#
if not 'DQMonFlags' in dir():
print("TrigT1CaloMonitoring_forRecExCommission.py: DQMonFlags not yet imported - I import them now")
from AthenaMonitoring.DQMonFlags import DQMonFlags
# On Tier0 select monitoring tools according to processing step
if DQMonFlags.monManEnvironment() == 'tier0Raw':
# Tier0 RAWtoESD step
l1caloRawMon = True
l1caloESDMon = False
elif DQMonFlags.monManEnvironment() == 'tier0ESD':
# Tier0 ESDtoAOD step
l1caloRawMon = False
l1caloESDMon = True
else:
# Anything else
l1caloRawMon = True
l1caloESDMon = True
if l1caloRawMon:
Offline = not athenaCommonFlags.isOnline
isData = (globalflags.DataSource() == "data")
isCalo = (rec.doCalo() and rec.doLArg() and rec.doTile())
triggerConfigService = "TrigConf::TrigConfigSvc/TrigConfigSvc"
#================================= Monitoring configuration ======================
from AthenaMonitoring.AthenaMonitoringConf import AthenaMonManager
from AthenaCommon.AlgSequence import AlgSequence
topSequence = AlgSequence()
L1CaloMan = AthenaMonManager( "L1CaloMonManager" )
## get a handle on the ToolSvc
#from AthenaCommon.AppMgr import ToolSvc
if globalflags.InputFormat() == "bytestream":
include ("TrigT1CaloByteStream/ReadLVL1CaloBS_jobOptions.py")
include("CaloConditions/CaloConditions_jobOptions.py")
if Offline:
include("LArDetDescr/LArDetDescr_joboptions.py")
else:
include("LArConditionsCommon/LArIdMap_comm_jobOptions.py")
if isData:
include("TrigT1CaloCalibConditions/L1CaloCalibConditionsTier0_jobOptions.py")
include('TrigT1CaloCalibTools/DecorateL1CaloTriggerTowers_prodJobOFragment.py')
from TrigT1CaloMonitoringTools.LVL1CaloMonFlags import LVL1CaloMonFlags
doFineTime = False
if isData and isCalo and ((LVL1CaloMonFlags.doPPrStabilityMon() and
LVL1CaloMonFlags.doFineTimeMonitoring()) or (Offline and rec.triggerStream() == "express")):
# load the sqlite file for the fine time monitoring
dbpath = "/afs/cern.ch/user/l/l1ccalib/w0/DaemonData/reference/calibJuly.sqlite"
import os.path
if os.path.isfile(dbpath):
from AthenaServices.AthenaServicesConf import MetaDataSvc
svcMgr += MetaDataSvc( "MetaDataSvc" )
#svcMgr.IOVDbSvc.Folders += ["<dbConnection>sqlite://;schema=../share/calibJuly.sqlite;dbname=L1CALO</dbConnection>/TRIGGER/L1Calo/V1/References/FineTimeReferences"]
svcMgr.IOVDbSvc.Folders += ["<dbConnection>sqlite://;schema=" + dbpath + ";dbname=L1CALO</dbConnection>/TRIGGER/L1Calo/V1/References/FineTimeReferences"]
doFineTime = True
if LVL1CaloMonFlags.doPPrStabilityMon():
#=================================================================================
# Want Full PPrStabilityMon to run alone
#=================================================================================
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__PPrStabilityMon
L1PPrStabilityMonTool = LVL1__PPrStabilityMon(
name = "L1PPrStabilityMonTool",
doFineTimeMonitoring = doFineTime,
doPedestalMonitoring = LVL1CaloMonFlags.doPedestalMonitoring(),
doEtCorrelationMonitoring = (LVL1CaloMonFlags.doEtCorrelationMonitoring() and isCalo),
ppmADCMinValue = 60,
lumiMax = 2000,
fineTimeCut = 20,
PathInRootFile = "L1Calo/PPrStabilityMon",
#OutputLevel = DEBUG
)
#ToolSvc += L1PPrStabilityMonTool
L1CaloMan.AthenaMonTools += [ L1PPrStabilityMonTool ]
else:
if isData and Offline and rec.triggerStream() == "express":
#=================================================================================
#============== PPrStabilityMon without individual channel plots =================
#=================================================================================
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__PPrStabilityMon
L1PPrStabilityMonTool = LVL1__PPrStabilityMon(
name = "L1PPrStabilityMonTool",
doFineTimeMonitoring = doFineTime,
doEtCorrelationMonitoring = isCalo,
ppmADCMinValue = 60,
lumiMax = 2000,
fineTimeCut = 20,
PathInRootFile = "L1Calo/PPM/Stability",
#OutputLevel = DEBUG
)
#ToolSvc += L1PPrStabilityMonTool
L1CaloMan.AthenaMonTools += [ L1PPrStabilityMonTool ]
#=================================================================================
#================================= PPr ===========================================
#=================================================================================
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__PPrMon
from AthenaCommon.JobProperties import jobproperties
L1PPrMonTool = LVL1__PPrMon(
name = "L1PPrMonTool",
BS_TriggerTowerContainer = "TriggerTowers",
LUTHitMap_ThreshVec = [0,1,2,3,4,5,6,7,10,15,20,33,45,50],
LUTHitMap_LumiBlocks = 10,
ADCHitMap_Thresh = 50,
MaxEnergyRange = 256,
EMFADCCut = 40,
HADFADCCut = 40,
ADCPedestal = 32,
PathInRootFile = "L1Calo/PPM",
ErrorPathInRootFile = "L1Calo/PPM/Errors",
#OnlineTest = True,
#OutputLevel = DEBUG
)
#ToolSvc += L1PPrMonTool
L1CaloMan.AthenaMonTools += [ L1PPrMonTool ]
if isData:
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__PPMSimBSMon
PPMSimBSMonTool = LVL1__PPMSimBSMon("PPMSimBSMonTool")
#ToolSvc += PPMSimBSMonTool
L1CaloMan.AthenaMonTools += [ PPMSimBSMonTool ]
#ToolSvc.PPMSimBSMonTool.OutputLevel = DEBUG
from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1TriggerTowerTool
L1TriggerTowerTool = LVL1__L1TriggerTowerTool("L1TriggerTowerTool")
ToolSvc += L1TriggerTowerTool
#ToolSvc.L1TriggerTowerTool.OutputLevel = DEBUG
#--------------------------------- PPM Spare Channels----------------------------
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__PPrSpareMon
L1PPrSpareMonTool = LVL1__PPrSpareMon(
name = "L1PPrSpareMonTool",
BS_TriggerTowerContainer = "TriggerTowersSpare",
ADCHitMap_Thresh = 40,
PathInRootFile = "L1Calo/PPM/SpareChannels",
ErrorPathInRootFile = "L1Calo/PPM/SpareChannels/Errors",
#OutputLevel = DEBUG
)
#ToolSvc += L1PPrSpareMonTool
L1CaloMan.AthenaMonTools += [ L1PPrSpareMonTool ]
#=================================================================================
#=================================== JEP =========================================
#=================================================================================
#------------------------------------ JEM ----------------------------------------
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__JEMMon
L1JEMMonTool = LVL1__JEMMon(
name = "L1JEMMonTool",
JetElementLocation = "JetElements",
JEMHitsLocation = "JEMHits",
JEMEtSumsLocation = "JEMEtSums",
JEMRoILocation = "JEMRoIs",
MaxEnergyRange = 1024,
PathInRootFile = "L1Calo/JEM",
ErrorPathInRootFile = "L1Calo/JEM/Errors/Hardware",
#OutputLevel = DEBUG
)
#ToolSvc += L1JEMMonTool
L1CaloMan.AthenaMonTools += [ L1JEMMonTool ]
#----------------------------------- CMM ------------------------------------------
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__CMMMon
L1CMMMonTool = LVL1__CMMMon (
name = "L1CMMMonTool",
CMMJetHitsLocation = "CMMJetHits",
CMMEtSumsLocation = "CMMEtSums",
CMMRoILocation = "CMMRoIs",
PathInRootFile = "L1Calo/JEM_CMM",
ErrorPathInRootFile = "L1Calo/JEM_CMM/Errors/Hardware",
#OutputLevel = DEBUG
)
#ToolSvc += L1CMMMonTool
L1CaloMan.AthenaMonTools += [ L1CMMMonTool ]
# (amazurov): Disable JEPSimBSMon for RUN1 since we could not currently
# support it due to RUN2 changes. We can enable it later.
# if isData:
# #--------------------- Transmission and Performance ------------------------------
# from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__JEPSimBSMon
# JEPSimBSMonTool = LVL1__JEPSimBSMon("JEPSimBSMonTool",
# JEPHitsTool = "LVL1::L1JEPHitsTools/L1JEPHitsTools_Mon",
# JetTool = "LVL1::L1JetTools/L1JetTools_Mon",
# JEPEtSumsTool = "LVL1::L1JEPEtSumsTools/L1JEPEtSumsTools_Mon",
# )
# #ToolSvc += JEPSimBSMonTool
# L1CaloMan.AthenaMonTools += [ JEPSimBSMonTool ]
# #ToolSvc.JEPSimBSMonTool.OutputLevel = DEBUG
# from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1JEPHitsTools
# L1JEPHitsTools = LVL1__L1JEPHitsTools("L1JEPHitsTools_Mon")
# L1JEPHitsTools.LVL1ConfigSvc = triggerConfigService
# ToolSvc += L1JEPHitsTools
# from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1JetTools
# L1JetTools = LVL1__L1JetTools("L1JetTools_Mon")
# L1JetTools.LVL1ConfigSvc = triggerConfigService
# ToolSvc += L1JetTools
# from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1EtTools
# L1EtTools = LVL1__L1EtTools("L1EtTools_Mon")
# L1EtTools.LVL1ConfigSvc = triggerConfigService
# ToolSvc += L1EtTools
# from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1JEPEtSumsTools
# L1JEPEtSumsTools = LVL1__L1JEPEtSumsTools("L1JEPEtSumsTools_Mon",
# EtTool = "LVL1::L1EtTools/L1EtTools_Mon")
# L1JEPEtSumsTools.LVL1ConfigSvc = triggerConfigService
# ToolSvc += L1JEPEtSumsTools
#=================================================================================
#===================================== CP ========================================
#=================================================================================
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__TrigT1CaloCpmMonTool
L1BSCPMMonTool = LVL1__TrigT1CaloCpmMonTool (
name = "L1BSCPMMonTool",
TriggerTowerLocation = "TriggerTowers",
CPMTowerLocation = "CPMTowers",
CPMHitsLocation = "CPMHits",
CMMCPHitsLocation = "CMMCPHits",
CPMRoILocation = "CPMRoIs",
RootDirectory = "L1Calo",
MaxEnergyRange = 256,
#OutputLevel = DEBUG,
)
#ToolSvc += L1BSCPMMonTool
L1CaloMan.AthenaMonTools += [ L1BSCPMMonTool ]
if isData:
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__CPMSimBSMon
CPMSimBSMonTool = LVL1__CPMSimBSMon("CPMSimBSMonTool",
EmTauTool = "LVL1::L1EmTauTools/L1EmTauTools_Mon",
)
#ToolSvc += CPMSimBSMonTool
L1CaloMan.AthenaMonTools += [ CPMSimBSMonTool ]
##ToolSvc.CPMSimBSMonTool.OutputLevel = DEBUG
from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1EmTauTools
L1EmTauTools = LVL1__L1EmTauTools("L1EmTauTools_Mon")
L1EmTauTools.LVL1ConfigSvc = triggerConfigService
ToolSvc += L1EmTauTools
#=================================================================================
#===================================== ROD =======================================
#=================================================================================
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__RODMonV1
L1BSRODMonTool = LVL1__RODMonV1 (
name = "L1BSRODMonTool",
#OnlineTest = True,
#OutputLevel = DEBUG,
)
#ToolSvc += L1BSRODMonTool
L1CaloMan.AthenaMonTools += [ L1BSRODMonTool ]
#=================================================================================
#=============================== Global Overview =================================
#=================================================================================
#from TrigT1CaloMonitoringTools.TrigT1CaloMonitoringToolsConf import TrigT1CaloMonErrorTool
#L1MonErrorTool = TrigT1CaloMonErrorTool( name = "TrigT1CaloMonErrorTool",
# FlagCorruptEvents = "None"
# )
#ToolSvc += L1MonErrorTool
from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__TrigT1CaloGlobalMonTool
L1GlobalMonTool = LVL1__TrigT1CaloGlobalMonTool ( name = "L1GlobalMonTool",
#OnlineTest = True,
#OutputLevel = DEBUG
)
#ToolSvc += L1GlobalMonTool
L1CaloMan.AthenaMonTools += [ L1GlobalMonTool ]
# if isData and isCalo and Offline and (rec.triggerStream() == "JetTauEtmiss"
# or rec.triggerStream() == "Muons"
# or rec.triggerStream() == "express"):
# #=================================================================================
# #=============================== EM Efficiencies =================================
# #=================================================================================
# trigstring = ['EF_.*']
# from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__EmEfficienciesMonTool
# L1EmEfficienciesMonTool = LVL1__EmEfficienciesMonTool ( name = "EmEfficienciesMonTool",
# TriggerStrings = trigstring
# )
# #ToolSvc += L1EmEfficienciesMonTool
# L1CaloMan.AthenaMonTools += [ L1EmEfficienciesMonTool ]
# if not hasattr( ToolSvc, "TrigDecisionTool" ):
# from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool
# tdt = Trig__TrigDecisionTool('TrigDecisionTool')
# ToolSvc += tdt
# (amazurov): Disable L1JetEfficienciesMonTool for RUN1 due to the problems with RUN2 changes
# on JetCleaningMediumTool. We can enable it later.
# if isData and isCalo and Offline and (rec.triggerStream() == "Egamma"
# or rec.triggerStream() == "Muons"
# or rec.triggerStream() == "express"):
# #=================================================================================
# #=============================== Jet Efficiencies ================================
# #=================================================================================
# trigstring = ['EF_.*']
# from TrigT1CaloMonitoring.TrigT1CaloMonitoringConf import LVL1__JetEfficienciesMonTool
# from JetSelectorTools.ConfiguredJetCleaningTools import *
# L1JetEfficienciesMonTool = LVL1__JetEfficienciesMonTool ( name = "JetEfficienciesMonTool",
# TriggerStrings = trigstring
# )
# #from AthenaCommon.AppMgr import ToolSvc
# ToolSvc += JetCleaningTool('JetCleaningLooseTool')
# # ToolSvc += JetCleaningTool('JetCleaningMediumTool')
# ToolSvc += JetCleaningTool('JetCleaningTightTool')
# L1JetEfficienciesMonTool.JetCleaningLooseTool = ConfiguredJetCleaningTool_Loose("JetCleaningLooseTool")
# # L1JetEfficienciesMonTool.JetCleaningMediumTool = ConfiguredJetCleaningTool_Medium("JetCleaningMediumTool")
# L1JetEfficienciesMonTool.JetCleaningTightTool = ConfiguredJetCleaningTool_Tight("JetCleaningTightTool")
# #ToolSvc += L1JetEfficienciesMonTool
# L1CaloMan.AthenaMonTools += [ L1JetEfficienciesMonTool ]
# if not hasattr( #ToolSvc, "TrigDecisionTool" ):
# from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool
# tdt = Trig__TrigDecisionTool('TrigDecisionTool')
# ToolSvc += tdt
#=================================================================================
# FileKey must match that given to THistSvc
L1CaloMan.FileKey = DQMonFlags.monManFileKey()
L1CaloMan.Environment = DQMonFlags.monManEnvironment()
L1CaloMan.ManualDataTypeSetup = DQMonFlags.monManManualDataTypeSetup()
L1CaloMan.DataType = DQMonFlags.monManDataType()
topSequence += L1CaloMan
This diff is collapsed.
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
// ********************************************************************
//
// NAME: CMMMon.h
// PACKAGE: TrigT1CaloMonitoring
//
// AUTHOR: Johanna Fleckner (Johanna.Fleckner@uni-mainz.de)
//
// DESCRIPTION: Monitoring of the JEP on CMM level
//
// ********************************************************************
#ifndef CMMMon_H
#define CMMMon_H
#include <string>
#include "GaudiKernel/ToolHandle.h"
#include "AthContainers/DataVector.h"
#include "AthenaMonitoring/ManagedMonitorToolBase.h"
class TH1F_LW;
class TH2F_LW;
class TH2I_LW;
class TProfile2D_LW;
class StatusCode;
// ============================================================================
namespace LVL1 {
// ============================================================================
// Forward declarations:
// ============================================================================
class CMMJetHits;
class CMMEtSums;
class ITrigT1CaloMonErrorTool;
class TrigT1CaloLWHistogramToolV1;
// ============================================================================
/** Monitoring of the JEP on CMM level.
*
* Produces histograms of CMM input data, output data and hardware errors.
*
* <b>ROOT Histogram Directories:</b>
*
* <table>
* <tr><th> Directory </th><th> Contents </th></tr>
* <tr><td> @c L1Calo/JEM_CMM/Input/Thresholds </td><td> Multiplicities per threshold </td></tr>
* <tr><td> @c L1Calo/JEM_CMM/Input/EnergySums </td><td> Ex, Ey, Et sum distributions </td></tr>
* <tr><td> @c L1Calo/JEM_CMM/Output/Jet </td><td> Multiplicities per threshold </td></tr>
* <tr><td> @c L1Calo/JEM_CMM/Output/Energy </td><td> Multiplicities per threshold <br>
* Ex, Ey, Et sum distributions <br>
* Ex, Ey, Et overflow rates </td></tr>
* <tr><td> @c L1Calo/JEM_CMM/Output/RoI </td><td> Multiplicities per threshold <br>
* Ex, Ey, Et sum distributions </td></tr>
* <tr><td> @c L1Calo/JEM_CMM/Errors/Hardware </td><td> Error summary <br>
* SubStatus errors <br>
* Parity errors <br>
* Energy-Jet triggered slice difference <br>
* Error event numbers </td></tr>
* </table>
*
* <!--
* <b>Notes on Particular Histograms:</b>
*
* <table>
* <tr><th> Histogram </th><th> Comment </th></tr>
* <tr><td> </td><td> </td></tr>
* </table>
* -->
*
* <b>Custom Merges Used (Tier0):</b>
*
* <table>
* <tr><th> Merge </th><th> Used For </th></tr>
* <tr><td> @ref MergesUsedsection "@c eventSample " </td><td> Error event number plots </td></tr>
* </table>
*
* <b>StoreGate Containers Used:</b>
*
* <table>
* <tr><th> Container </th><th> Comment </th></tr>
* <tr><td> @c DataVector
* @c <LVL1::CMMJetHits> </td><td> CMM Jet hits data </td></tr>
* <tr><td> @c DataVector
* @c <LVL1::CMMEtSums> </td><td> CMM Et sums data </td></tr>
* <tr><td> @c LVL1::CMMRoI </td><td> CMM RoI data </td></tr>
* <tr><td> @c std::vector<int> <br>
* @c "L1CaloJEMCMMErrorVector" </td><td> Output.
* Error summary bits for global histograms </td></tr>
* </table>
*
* <b>Tools Used:</b>
*
* <table>
* <tr><th> Tool </th><th> Description </th></tr>
* <tr><td> @c TrigT1CaloMonErrorTool </td><td> @copydoc m_errorTool </td></tr>
* <tr><td> @c TrigT1CaloLWHistogramToolV1 </td><td> @copydoc m_histTool </td></tr>
* </table>
*
* <b>JobOption Properties:</b>
*
* <table>
* <tr><th> Property </th><th> Description </th></tr>
* <tr><td> @c CMMJetHitsLocation </td><td> @copydoc m_CMMJetHitsLocation </td></tr>
* <tr><td> @c CMMEtSumsLocation </td><td> @copydoc m_CMMEtSumsLocation </td></tr>
* <tr><td> @c CMMRoILocation </td><td> @copydoc m_CMMRoILocation </td></tr>
* <tr><td> @c PathInRootFile </td><td> @copydoc m_PathInRootFile </td></tr>
* <tr><td> @c ErrorPathInRootFile </td><td> @copydoc m_ErrorPathInRootFile </td></tr>
* </table>
*
* <b>Related Documentation:</b>
*
* <a href="http://hepwww.rl.ac.uk/Atlas-L1/Modules/ROD/ROD-spec-version1_2_2.pdf">
* ATLAS Level-1 Calorimeter Trigger - Read-out Driver</a>
*
* @authors Johanna Fleckner, Andrea Neusiedl, Peter Faulkner
*
*/
class CMMMon : public ManagedMonitorToolBase
{
public:
typedef DataVector<LVL1::CMMJetHits> CMMJetHitsCollection;
typedef DataVector<LVL1::CMMEtSums> CMMEtSumsCollection;
CMMMon( const std::string & type, const std::string & name,
const IInterface* parent );
virtual ~CMMMon();
virtual StatusCode initialize();
virtual StatusCode bookHistogramsRecurrent();
virtual StatusCode fillHistograms();
virtual StatusCode procHistograms();
private:
/// CMM error summary bins
enum SummaryErrors { JetStatus, EnergyStatus, JetParity, EnergyParity,
RoIParity, NumberOfSummaryBins };
/// CMM RoI parity error bins
enum RoIParityErrors { ExParity, EyParity, EtParity, JetEtParity,
NumberOfRoIParityBins };
/// Tool to retrieve bytestream errors
ToolHandle<ITrigT1CaloMonErrorTool> m_errorTool;
/// Histogram helper tool
ToolHandle<TrigT1CaloLWHistogramToolV1> m_histTool;
/** location of data */
/// CMMJetHits collection StoreGate key
std::string m_CMMJetHitsLocation;
/// CMMEtSums collection StoreGate key
std::string m_CMMEtSumsLocation;
/// CMMRoI collection StoreGate key
std::string m_CMMRoILocation;
/// Root directory
std::string m_PathInRootFile;
/// Root directory for error plots
std::string m_ErrorPathInRootFile;
/// Histograms booked flag
bool m_histBooked;
/** Histos */
// CMM Jet Hits
TH1F_LW* m_h_cmm_1d_thresh_TotalMainHits; ///< Main Jet Multiplicity per Threshold -- CMM DAQ
TH1F_LW* m_h_cmm_1d_thresh_TotalFwdHitsRight; ///< Forward Right Jet Multiplicity per Threshold -- CMM DAQ
TH1F_LW* m_h_cmm_1d_thresh_TotalFwdHitsLeft; ///< Forward Left Jet Multiplicity per Threshold -- CMM DAQ
TH1F_LW* m_h_cmm_1d_thresh_JetEtHits; ///< JetEt Multiplicity per Threshold -- CMM DAQ
// JEM Hits
TH1F_LW* m_h_cmm_1d_thresh_MainHits; ///< Main Jet Multiplicity per Threshold -- CMM input
TH1F_LW* m_h_cmm_1d_thresh_FwdHitsRight; ///< Forward Right Jet Multiplicity per Threshold -- CMM input
TH1F_LW* m_h_cmm_1d_thresh_FwdHitsLeft; ///< Forward Left Jet Multiplicity per Threshold -- CMM input
// CMM Et Sums
TH1F_LW* m_h_cmm_1d_energy_TotalEx; ///< Ex -- CMM DAQ
TH1F_LW* m_h_cmm_1d_energy_TotalEy; ///< Ey -- CMM DAQ
TH1F_LW* m_h_cmm_1d_energy_TotalEt; ///< Et -- CMM DAQ
TH1F_LW* m_h_cmm_1d_energy_MissingEtHits; ///< MissingEt Multiplicity per Threshold -- CMM DAQ
TH1F_LW* m_h_cmm_1d_energy_SumEtHits; ///< SumEt Multiplicity per Threshold -- CMM DAQ
TH1F_LW* m_h_cmm_1d_energy_MissingEtSigHits; ///< MissingEtSig Multiplicity per Threshold -- CMM DAQ
TProfile2D_LW* m_h_cmm_2d_energy_Overflow; ///< CMM Energy Overflow Rates
// JEM Et Sums
TH1F_LW* m_h_cmm_1d_energy_SubSumsEx; ///< JEM Ex -- CMM input
TH1F_LW* m_h_cmm_1d_energy_SubSumsEy; ///< JEM Ey -- CMM input
TH1F_LW* m_h_cmm_1d_energy_SubSumsEt; ///< JEM Et -- CMM input
// CMM RoI
TH1F_LW* m_h_cmm_1d_roi_JetEtHits; ///< JetEt Multiplicity per Threshold -- CMM RoI
TH1F_LW* m_h_cmm_1d_roi_SumEtHits; ///< SumEt Multiplicity per Threshold -- CMM RoI
TH1F_LW* m_h_cmm_1d_roi_MissingEtHits; ///< MissingEt Multiplicity per Threshold -- CMM RoI
TH1F_LW* m_h_cmm_1d_roi_MissingEtSigHits; ///< MissingEtSig Multiplicity per Threshold -- CMM RoI
TH1F_LW* m_h_cmm_1d_roi_Ex; ///< Ex -- CMM RoI
TH1F_LW* m_h_cmm_1d_roi_Ey; ///< Ey -- CMM RoI
TH1F_LW* m_h_cmm_1d_roi_Et; ///< Et -- CMM RoI
//errors
TH2F_LW* m_h_cmm_2d_thresh_Status; ///< Errors from CMM Jet SubStatus Word
TH2F_LW* m_h_cmm_2d_energy_Status; ///< Errors from CMM Energy SubStatus Word
TH2F_LW* m_h_cmm_2d_thresh_Parity; ///< CMM Jet Parity Errors
TH2F_LW* m_h_cmm_2d_energy_Parity; ///< CMM Energy Parity Errors
TH1F_LW* m_h_cmm_1d_roi_Parity; ///< CMM RoI Parity Errors
TH1F_LW* m_h_cmm_1d_ErrorSummary; ///< Error Summary of CMM Jet, Energy and RoI path
TH1F_LW* m_h_cmm_1d_TriggeredSlices; ///< Comparison of CMM Jet and Energy triggered slice numbers
TH2I_LW* m_h_cmm_2d_ErrorEventNumbers; ///< JEM-CMM Error Event Numbers
};
// ============================================================================
} // end namespace
// ============================================================================
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/