Skip to content
Snippets Groups Projects
Commit c9d170cb authored by Hanno Meyer Zu Theenhausen's avatar Hanno Meyer Zu Theenhausen Committed by Graeme Stewart
Browse files

Run2 database compatibility for ppm pedestal monitoring (TrigT1CaloCalibTools-00-05-42)

        * Get pedestals from correct database
	* Tag as TrigT1CaloCalibTools-00-05-42

2015-05-28 Veit Scharf <veit.scharf@kip.uni-heidelberg.de>
	* fix Coverity issues 29042 & 29043
	* Tag as TrigT1CaloCalibTools-00-05-41

2015-05-06 Hanno Meyer zu Theenhausen <hanno.meyer.zu.theenhausen@cern.ch>
	* Add channel differentiated plots for PedestalVsBunchCrossingNumber
	* Tag as TrigT1CaloCalibTools-00-05-40

2015-05-04 Alexander Mazurov <alexander.mazurov@cern.ch>
	* L1CaloTriggerTowerDecoratorAlg: don't use string literal for trigger
	  tower's storegate key -  use definition from TrigT1CaloDefs.
	* Tag as TrigT1CaloCalibTools-00-05-39

2015-05-04 Veut Scharf <veit.scharf@kip.uni-heidelberg.de>
	* L1CaloTriggerTowerDecoratorAlg: fix compilation problem caused
	by interface changes in ToolHandle
	* Tag as TrigT1CaloCalibTools-00-05-38
...
(Long ChangeLog diff - truncated)
parent eafaae56
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,7 @@
class ITHistSvc;
class ManagedMonitorToolBase;
class L1CaloPprConditionsContainer;
class L1CaloPprConditionsContainerRun2;
namespace LVL1 {
class IL1CaloOfflineTriggerTowerTools;
......@@ -62,16 +63,23 @@ private:
void fillPartitionOnlineHistos(const xAOD::TriggerTower* trigTower, CalLayerEnum theLayer, double &value);
void fillGlobalOnlineHistos(const xAOD::TriggerTower* trigTower, CalLayerEnum layer, double &value);
void fillDifferentialOnlineHistos(const xAOD::TriggerTower* trigTower, unsigned int &coolId, CalLayerEnum theLayer, double &value);
ServiceHandle<L1CaloCondSvc> m_l1CondSvc;
L1CaloPprConditionsContainer* m_conditionsContainer;
L1CaloPprConditionsContainerRun2* m_conditionsContainerRun2;
void loadConditionsContainer();
double m_pedestalMaxWidth; // plotting pedestal only if for every slice
// the deviation from the mean pedestal
// value is less
bool m_firstCall;
bool m_isRun2;
};
......
......@@ -46,6 +46,7 @@ use CaloTriggerTool CaloTriggerTool-* Calorimeter
use LArRawEvent LArRawEvent-* LArCalorimeter
use LArTools LArTools-* LArCalorimeter
use TrigT1CaloEvent TrigT1CaloEvent-* Trigger/TrigT1
use TrigT1Interfaces TrigT1Interfaces-* Trigger/TrigT1
end_private
apply_tag ROOTGraphicsLibs
......
......@@ -68,7 +68,11 @@ L1CaloPprFineTimePlotManager::L1CaloPprFineTimePlotManager(ManagedMonitorToolBas
m_fineTimeCut(0),
m_ppmAdcMaxValue(1023),
m_RefValue(0),
m_emRefValue(0.),
m_hadRefValue(0.),
m_CalFactor(0),
m_emCalFactor(0.),
m_hadCalFactor(0.),
m_doCaloQualCut(true)
{
this->loadTools();
......
......@@ -15,6 +15,8 @@
#include "TrigT1CaloCalibConditions/L1CaloPprConditionsContainer.h"
#include "TrigT1CaloCalibConditions/L1CaloPprConditions.h"
#include "TrigT1CaloCalibConditions/L1CaloPprConditionsContainerRun2.h"
#include "TrigT1CaloCalibConditions/L1CaloPprConditionsRun2.h"
#include "TrigT1CaloCalibToolInterfaces/IL1CaloOfflineTriggerTowerTools.h"
#include "TrigT1CaloToolInterfaces/IL1TriggerTowerTool.h"
#include "TrigT1CaloEvent/TriggerTower.h"
......@@ -35,8 +37,10 @@ L1CaloPprPedestalPlotManager::L1CaloPprPedestalPlotManager(ITHistSvc* histoSvc,
true),
m_l1CondSvc("L1CaloCondSvc", histoSvc->name()),
m_conditionsContainer(0),
m_conditionsContainerRun2(0),
m_pedestalMaxWidth(0.),
m_firstCall(true)
m_firstCall(true),
m_isRun2(false)
{
}
......@@ -57,8 +61,10 @@ L1CaloPprPedestalPlotManager::L1CaloPprPedestalPlotManager(ManagedMonitorToolBas
""),
m_l1CondSvc("L1CaloCondSvc", aMonObj->name()),
m_conditionsContainer(0),
m_conditionsContainerRun2(0),
m_pedestalMaxWidth(0.),
m_firstCall(true)
m_firstCall(true),
m_isRun2(false)
{
}
......@@ -79,21 +85,39 @@ double L1CaloPprPedestalPlotManager::getMonitoringValue(const xAOD::TriggerTower
const int nSlices = EtLut.size();
double pedMean = 0;
if (m_currentRunNo >= 253377) {
m_isRun2 = true;
}
if (m_firstCall) {
this->loadConditionsContainer();
m_firstCall = false;
}
if (m_conditionsContainer)
{
const L1CaloPprConditions* ttConditions = m_conditionsContainer->pprConditions(coolID);
if (ttConditions)
{
pedMean = ttConditions->pedMean();
if (m_conditionsContainer || m_conditionsContainerRun2)
{
if (m_isRun2 == false) {
const L1CaloPprConditions* ttConditions = m_conditionsContainer->pprConditions(coolID);
if (ttConditions)
{
pedMean = ttConditions->pedMean();
}
else
{
*m_log<<MSG::WARNING<< "No L1CaloPprConditions available" << endreq;
}
}
else
{
*m_log<<MSG::WARNING<< "No L1CaloPprConditions available" << endreq;
if (m_isRun2 == true) {
const L1CaloPprConditionsRun2* ttConditions = m_conditionsContainerRun2->pprConditions(coolID);
if (ttConditions)
{
pedMean = ttConditions->pedMean();
}
else
{
*m_log<<MSG::WARNING<< "No L1CaloPprConditions available" << endreq;
}
}
}
else
......@@ -328,6 +352,124 @@ void L1CaloPprPedestalPlotManager::fillPartitionOnlineHistos(const xAOD::Trigger
// --------------------------------------------------------------------------
/*virtual*/
void L1CaloPprPedestalPlotManager::fillDifferentialOnlineHistos(const xAOD::TriggerTower* trigTower, unsigned int &coolId, CalLayerEnum theLayer, double &value)
{
//Create fully differential plots
/****************************************************************************************************/
std::map<unsigned int, TProfile_LW*>::iterator p_itr;
p_itr = m_map_online_coolIDProfile_ValueVsLumi.find(coolId);
if(p_itr == m_map_online_coolIDProfile_ValueVsLumi.end())
{
double eta = trigTower->eta();
std::string plotType = this->GetDetectorLayerString(theLayer);
CaloDivisionEnum detectorRegion = this->GetDetectorRegion(eta,theLayer);
std::string detectorRegionString = this->GetDetectorRegionString(detectorRegion);
ManagedMonitorToolBase::MgmtAttr_t attr = ManagedMonitorToolBase::ATTRIB_UNMANAGED;
ManagedMonitorToolBase::MonGroup ADC_Channels(m_monObj,
m_pathInRootFile + Form("/%s",detectorRegionString.data()),
ManagedMonitorToolBase::run,
attr);
m_histTool->setMonGroup(&ADC_Channels);
std::string titles;
if ( m_ppmAdcMinValue > 0 ) {
titles=Form("Run:%d, %s Vs Lumi Profile for %sFADC >%d, Channel:%08x ;Lumi Block; %s %s",
m_currentRunNo,
m_monitoringTitle.data(),
plotType.data(),
m_ppmAdcMinValue,
coolId,
m_monitoringTitle.data(),
m_monitoringDimension.data());
}
else {
titles=Form("Run:%d, %s Vs Lumi Profile, Channel:%08x ;Lumi Block; %s %s",
m_currentRunNo,
m_monitoringTitle.data(),
coolId,
m_monitoringTitle.data(),
m_monitoringDimension.data());
}
TProfile_LW* anLWProfileHist = m_histTool->bookProfile(Form("ppm_%s_1d_profile_adc_%08x_%sVsLumi",
plotType.data(),
coolId,
m_monitoringName.data()),
titles,
m_lumiMax,
0,
m_lumiMax);
anLWProfileHist->Fill(m_lumiNo,value);
m_map_online_coolIDProfile_ValueVsLumi.insert ( std::pair<unsigned int,TProfile_LW*>(coolId,anLWProfileHist) );
m_histTool->unsetMonGroup();
}
else
{
p_itr->second->Fill(m_lumiNo,value);
}
//Now for bunch crossing number:
std::map<unsigned int, TProfile_LW*>::iterator p_itr2;
p_itr2 = m_map_online_coolIDProfile_ValueVsBCN.find(coolId);
if(p_itr2 == m_map_online_coolIDProfile_ValueVsBCN.end())
{
double eta = trigTower->eta();
std::string plotType = this->GetDetectorLayerString(theLayer);
CaloDivisionEnum detectorRegion = this->GetDetectorRegion(eta,theLayer);
std::string detectorRegionString = this->GetDetectorRegionString(detectorRegion);
ManagedMonitorToolBase::MgmtAttr_t attr = ManagedMonitorToolBase::ATTRIB_UNMANAGED;
ManagedMonitorToolBase::MonGroup ADC_Channels(m_monObj,
m_pathInRootFile + Form("/%s",detectorRegionString.data()),
ManagedMonitorToolBase::run,
attr);
m_histTool->setMonGroup(&ADC_Channels);
std::string titles;
if ( m_ppmAdcMinValue > 0 ) {
titles=Form("Run:%d, %s Vs BCN Profile for %sFADC >%d, Channel:%08x ;BCN; %s %s",
m_currentRunNo,
m_monitoringTitle.data(),
plotType.data(),
m_ppmAdcMinValue,
coolId,
m_monitoringTitle.data(),
m_monitoringDimension.data());
}
else {
titles=Form("Run:%d, %s Vs BCN Profile, Channel:%08x ;BCN; %s %s",
m_currentRunNo,
m_monitoringTitle.data(),
coolId,
m_monitoringTitle.data(),
m_monitoringDimension.data());
}
TProfile_LW* anLWProfileHist2 = m_histTool->bookProfile(Form("ppm_%s_1d_profile_adc_%08x_%sVsBCN",
plotType.data(),
coolId,
m_monitoringName.data()),
titles,
0xdec, 0, 0xdec);
anLWProfileHist2->Fill(m_bunchCrossing,value);
m_map_online_coolIDProfile_ValueVsBCN.insert ( std::pair<unsigned int,TProfile_LW*>(coolId,anLWProfileHist2) );
m_histTool->unsetMonGroup();
}
else
{
p_itr2->second->Fill(m_bunchCrossing,value);
}
}
// --------------------------------------------------------------------------
bool L1CaloPprPedestalPlotManager::doMonitoring(double &value)
{
// check if default value (-1000.) has been determined
......@@ -341,7 +483,13 @@ void L1CaloPprPedestalPlotManager::loadConditionsContainer()
if (m_l1CondSvc)
{
*m_log<<MSG::DEBUG<< "Retrieving Conditions Container" << endreq;
StatusCode sc = m_l1CondSvc->retrieve(m_conditionsContainer);
StatusCode sc;
if (m_isRun2 == true) {
sc = m_l1CondSvc->retrieve(m_conditionsContainerRun2);
}
else {
sc = m_l1CondSvc->retrieve(m_conditionsContainer);
}
if (sc.isFailure())
{
*m_log<<MSG::WARNING<< "Could not retrieve Conditions Container" << endreq;
......
......@@ -57,7 +57,10 @@ L1CaloPprPlotManager::L1CaloPprPlotManager(ITHistSvc* histSvc,
m_monitoringName(monitoringName),
m_monitoringTitle(monitoringTitle),
m_monitoringDimension(monitoringDimension),
m_p_online_em_valueVsLumi(0),
m_p_online_had_valueVsLumi(0),
m_p_online_em_valueVsBCN(0),
m_p_online_had_valueVsBCN(0),
m_p_offline_em_valueVsLumi(0),
m_p_offline_had_valueVsLumi(0),
m_p_online_em_etaPhiValue(0),
......
......@@ -2,7 +2,10 @@
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
// $Id: L1CaloTriggerTowerDecoratorAlg.cxx 652902 2015-03-10 11:06:57Z morrisj $
// $Id: L1CaloTriggerTowerDecoratorAlg.cxx 664636 2015-05-04 09:16:44Z amazurov $
// TrigT1 common definitions
#include "TrigT1Interfaces/TrigT1CaloDefs.h"
// Local include(s):
#include "TrigT1CaloCalibTools/L1CaloTriggerTowerDecoratorAlg.h"
......@@ -15,16 +18,15 @@ namespace LVL1
L1CaloTriggerTowerDecoratorAlg::L1CaloTriggerTowerDecoratorAlg( const std::string& name, ISvcLocator* svcLoc ) :
AthAlgorithm( name, svcLoc ),
m_sgKey_TriggerTowers("xAODTriggerTowers"),
m_sgKey_TriggerTowers(LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation),
m_caloCellEnergy("CaloCellEnergy"),
m_caloCellET("CaloCellET"),
m_caloCellEnergyByLayer("CaloCellEnergyByLayer"),
m_caloCellETByLayer ("CaloCellETByLayer"),
m_caloCellsQuality ("CaloCellQuality"),
m_ttTools(nullptr)
m_caloCellETByLayer ("CaloCellETByLayer"),
m_caloCellsQuality ("CaloCellQuality")
{
declareProperty( "sgKey_TriggerTowers" , m_sgKey_TriggerTowers = "xAODTriggerTowers" );
declareProperty( "sgKey_TriggerTowers" , m_sgKey_TriggerTowers = LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation );
declareProperty( "DecorName_caloCellEnergy" , m_caloCellEnergy = "CaloCellEnergy" );
declareProperty( "DecorName_caloCellET" , m_caloCellET = "CaloCellET" );
declareProperty( "DecorName_caloCellEnergyByLayer" , m_caloCellEnergyByLayer = "CaloCellEnergyByLayer" );
......
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