diff --git a/DataQuality/GoodRunsListsUser/share/LumiBlock_LumiCalc_GRL_dumper.py b/DataQuality/GoodRunsListsUser/share/LumiBlock_LumiCalc_GRL_dumper.py index 96e02447233e6f22b0beaa93463cd28503340b29..3b3e5a803e21a4563cd6aab8b6fd3dc4489cf738 100644 --- a/DataQuality/GoodRunsListsUser/share/LumiBlock_LumiCalc_GRL_dumper.py +++ b/DataQuality/GoodRunsListsUser/share/LumiBlock_LumiCalc_GRL_dumper.py @@ -30,13 +30,3 @@ job.ModSequence1 += DummyDumperAlg('DummyDumperAlg1') # job.ModSequence1.DummyDumperAlg1.RootFileName = 'selection1.root' THistSvc.Output = {"new DATAFILE='selection1.root' TYP='ROOT' OPT='NEW'"}; job.ModSequence1.DummyDumperAlg1.GRLNameVec = [ 'LumiBlocks_GoodDQ0', 'IncompleteLumiBlocks_GoodDQ0' ] - -# add LumiCalcSvc to ServiceMgr and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.Triggers = ["EF_mu20"] -LumiCalcSvc.UseMC = True -LumiCalcSvc.LBCollNames = ["LumiBlocks_GoodDQ0", "IncompleteLumiBlocks_GoodDQ0", "LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Verbose = False -svcMgr += LumiCalcSvc - diff --git a/DataQuality/GoodRunsListsUser/share/LumiCalc_twoFinalStates.py b/DataQuality/GoodRunsListsUser/share/LumiCalc_twoFinalStates.py index 4bf2247aa6927a9ab63ee2c5912ee942a9c3dda9..80cbed80ea4685f4fc252b0832eebff91c74fb33 100644 --- a/DataQuality/GoodRunsListsUser/share/LumiCalc_twoFinalStates.py +++ b/DataQuality/GoodRunsListsUser/share/LumiCalc_twoFinalStates.py @@ -1,6 +1,6 @@ ######################################## # Job to run RecExCommon, schedule -# LumiBlockMetaDataTool and LumiCalcSvc +# LumiBlockMetaDataTool # but don't write out any AOD outputfile ######################################## @@ -30,15 +30,6 @@ from GoodRunsListsUser.GoodRunsListsUserConf import DummyDumperAlg from LumiBlockComps.LumiBlockCompsConf import LumiBlockMetaDataTool ToolSvc += LumiBlockMetaDataTool( "LumiBlockMetaDataTool" ) -# add LumiCalcSvc and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.UseMC = True -LumiCalcSvc.LBCollNames = ["LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Triggers = ["EF_mu20"] -LumiCalcSvc.Verbose = False -svcMgr += LumiCalcSvc - ## This Athena job consists of algorithms that loop over events; ## here, the (default) top sequence is used: from AthenaCommon.AlgSequence import AlgSequence, AthSequencer diff --git a/LumiBlock/LumiBlockComps/LumiBlockComps/ILumiCalcSvc.h b/LumiBlock/LumiBlockComps/LumiBlockComps/ILumiCalcSvc.h deleted file mode 100644 index 17c513a1a01d4be38b4966fa6bd740d239c8e428..0000000000000000000000000000000000000000 --- a/LumiBlock/LumiBlockComps/LumiBlockComps/ILumiCalcSvc.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -// ILumiCalcSvc.h -// Header file for class ILumiCalcSvc -// Author: R.Hawkings<richard.hawkings@cern.ch> -// B.Radics<radbal@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef LUMIBLOCKCOMPS_ILUMIBLOCKSVC_H -#define LUMIBLOCKCOMPS_ILUMIBLOCKSVC_H - -/** - * @class ILumiCalcSvc - * @brief This class defines a protocol to process lumiblock - * @brief iov information, given a list of lumiblocks - */ - -#include <string> -#include <list> -#include <utility> - -#include "TString.h" - -#include "GaudiKernel/INamedInterface.h" - -class TTree; - -typedef std::pair< TString, std::list<TString> > tvtPair; - -class ILumiCalcSvc -: virtual public ::INamedInterface -{ - -public: - DeclareInterfaceID(ILumiCalcSvc, 1, 0); - - // Default calculation of ILumi based on "LumiBlocks" and - // "IncompleteLumiBlocks" collections in MetaData store - virtual StatusCode calcLumi() = 0; - // Get a pointer the the TTree table of the calculation - // NOTE: only call this AFTER calcLumi or calcLumiFromLBC - virtual TTree * getLumiTree() = 0; - // Print some details to output screen - virtual void print() = 0; - - /// register trigger-lbc combination - virtual bool registerLBCollection(const TString& tname, const TString& regexpr, const std::list<TString>& trigpar) = 0 ; - -}; - -#endif diff --git a/LumiBlock/LumiBlockComps/LumiBlockComps/LumiBlockCompsDict.h b/LumiBlock/LumiBlockComps/LumiBlockComps/LumiBlockCompsDict.h index bed0888bddf3ecb937e58358527ff61df2b818fe..d1e31778626ded073b9df1ffd0d1c83c4352b591 100644 --- a/LumiBlock/LumiBlockComps/LumiBlockComps/LumiBlockCompsDict.h +++ b/LumiBlock/LumiBlockComps/LumiBlockComps/LumiBlockCompsDict.h @@ -1,6 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -#include "LumiBlockComps/ILumiCalcSvc.h" #include "LumiBlockComps/ILumiBlockMuTool.h" diff --git a/LumiBlock/LumiBlockComps/LumiBlockComps/selection.xml b/LumiBlock/LumiBlockComps/LumiBlockComps/selection.xml index 00b20a00f577e5a40b8b570d8162b42c1ba9fef0..851671c7f310fb9ad5b8a33f1ee3a6af0b376fdc 100644 --- a/LumiBlock/LumiBlockComps/LumiBlockComps/selection.xml +++ b/LumiBlock/LumiBlockComps/LumiBlockComps/selection.xml @@ -1,6 +1,5 @@ <lcgdict> - <class name="ILumiCalcSvc"/> <class name="ILumiBlockMuTool"/> </lcgdict> diff --git a/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx b/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx index 5f0fe741095c2e8d9ea49cb1b71f02a4e6edc5d0..60e7beb2cfa71d2526894086829b6d6c2c369bc2 100644 --- a/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx +++ b/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx @@ -10,7 +10,6 @@ #include "LumiBlockMetaDataTool.h" #include "GoodRunsLists/IGoodRunsListSelectorTool.h" #include "GoodRunsLists/TGoodRunsListReader.h" -#include "LumiBlockComps/ILumiCalcSvc.h" #include "xAODLuminosity/SortLumiBlockRangeByStart.h" #include "DBDataModel/CollectionMetadata.h" diff --git a/LumiBlock/LumiBlockComps/python/LumiCalcPyAthena.py b/LumiBlock/LumiBlockComps/python/LumiCalcPyAthena.py deleted file mode 100644 index 9b59952c36710e3d28ab06448f14e1c1c79ef826..0000000000000000000000000000000000000000 --- a/LumiBlock/LumiBlockComps/python/LumiCalcPyAthena.py +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -from __future__ import print_function - -import AthenaPython.PyAthena as PyAthena -from AthenaPython.PyAthena import StatusCode - -class LumiCalcPyAthena( PyAthena.Alg ): - - def __init__ ( self, name = "LumiCalcPyAthena", **kw ): - ## initialize base class - kw['name'] = name - super(LumiCalcPyAthena, self).__init__(**kw) - - #handle to lumicalcSvc - self.lcSvc = kw.get('lcSvc', 'LumiCalcSvc/LumiCalcSvc') - - #handle to storegate - self.sgSvc = None - - return - - def initialize(self): - - self.sgSvc = PyAthena.py_svc('StoreGateSvc') - if not self.sgSvc : - self.msg.error("could not retrieve a handle to the event store !") - return StatusCode.Failure - - - self.lcSvc = PyAthena.py_svc('LumiCalcSvc/LumiCalcSvc', iface='ILumiCalcSvc') - if not self.lcSvc : - self.msg.error("could not retrieve a handle to the lumicalc Service !") - return StatusCode.Failure - - - return StatusCode.Success - - def execute(self): - - return StatusCode.Success - - - def finalize(self): - - print("Getting handle on LumiTree...") - self.lcSvc.getLumiTree() - #print "Now printing out the whole tree..." - #tree.Scan("*") - - - - return StatusCode.Success - diff --git a/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc.py b/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc.py index 33d96ff44d5caf584884363241567914f37085d0..598c9151effb5c27cfb4764cd1ca21a46696d90a 100644 --- a/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc.py +++ b/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc.py @@ -8,11 +8,3 @@ from AthenaServices.AthenaServicesConf import MetaDataSvc svcMgr += MetaDataSvc( "MetaDataSvc" ) svcMgr.MetaDataSvc.MetaDataTools += [ ToolSvc.LumiBlockMetaDataTool ] -# add LumiCalcSvc to ServiceMgr and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.Triggers = ["EF_mu20"] -LumiCalcSvc.UseMC = True -LumiCalcSvc.LBCollNames = ["LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Verbose = False -svcMgr += LumiCalcSvc diff --git a/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc_GRL.py b/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc_GRL.py index 5868abe22c3b2532e24d13c7f932cbd3f9dce093..c291032c5bb595ea949e79e8bf56fbf3a59ba887 100644 --- a/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc_GRL.py +++ b/LumiBlock/LumiBlockComps/share/LumiBlock_LumiCalc_GRL.py @@ -14,13 +14,3 @@ ToolSvc += GoodRunsListSelectorTool() GoodRunsListSelectorTool.OutputLevel = INFO GoodRunsListSelectorTool.GoodRunsListVec = [ 'grl_topmix_mu.xml' ] # or grl_topmix_e.xml GoodRunsListSelectorTool.PassThrough = False - -# add LumiCalcSvc to ServiceMgr and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.Triggers = ["EF_mu20"] -LumiCalcSvc.UseMC = True -LumiCalcSvc.LBCollNames = ["LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Verbose = False -svcMgr += LumiCalcSvc - diff --git a/LumiBlock/LumiBlockComps/share/LumiBlock_jobOptions_data.py b/LumiBlock/LumiBlockComps/share/LumiBlock_jobOptions_data.py index b4dbad6bec6309be00df5afb2a77337664a6ae42..38557f83344e3a176890bfff94f50d022e152d80 100644 --- a/LumiBlock/LumiBlockComps/share/LumiBlock_jobOptions_data.py +++ b/LumiBlock/LumiBlockComps/share/LumiBlock_jobOptions_data.py @@ -27,18 +27,6 @@ GoodRunsListSelectorTool.OutputLevel = INFO GoodRunsListSelectorTool.GoodRunsListVec = [ 'top_noveto_muchannel_7TeV.xml' ] # <<<<--- Edit this line! GoodRunsListSelectorTool.PassThrough = False -# add LumiCalcSvc to ServiceMgr and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.Triggers = ["EF_mu10"] -LumiCalcSvc.UseMC = False -LumiCalcSvc.LBCollNames = ["LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Verbose = False -LumiCalcSvc.UseLumiTag = "OflLumi-7TeV-002" -LumiCalcSvc.LumiEstFolder = "/TRIGGER/OFLLUMI/LBLESTOFL" -svcMgr += LumiCalcSvc -#====================================================================================== - from RecExConfig.RecFlags import rec rec.AutoConfiguration = ['everything'] rec.readRDO = False diff --git a/LumiBlock/LumiBlockComps/share/LumiCalcPyAthena_jobOptions.py b/LumiBlock/LumiBlockComps/share/LumiCalcPyAthena_jobOptions.py deleted file mode 100644 index c63716891bce2d96e2128096eeb78a75678de560..0000000000000000000000000000000000000000 --- a/LumiBlock/LumiBlockComps/share/LumiCalcPyAthena_jobOptions.py +++ /dev/null @@ -1,42 +0,0 @@ -from AthenaCommon.AppMgr import ServiceMgr -from AthenaCommon.AppMgr import ToolSvc -from AthenaCommon.AlgSequence import AlgSequence -import AthenaPoolCnvSvc.ReadAthenaPool -from PartPropSvc.PartPropSvcConf import PartPropSvc - -# the POOL converters -include( "ParticleBuilderOptions/ESD_PoolCnv_jobOptions.py" ) -include( "ParticleBuilderOptions/AOD_PoolCnv_jobOptions.py") -include( "ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") -include( "EventAthenaPool/EventAthenaPool_joboptions.py" ) - -from AthenaCommon.AppMgr import ServiceMgr as svcMgr -from AthenaCommon.AppMgr import theApp - -# Input AOD file -ServiceMgr.EventSelector.InputCollections = ["/afs/cern.ch/user/r/radbal/scratch0/data/TopMix/user.RichardHawkings.0108175.topmix_Muon.AOD.v4._00057.pool.root" ] - -# Number of Events to process -if not "EvtMax" in dir(): EvtMax=5 -theApp.EvtMax = EvtMax - -# the Top Algorithm Sequence -topSequence = AlgSequence() - -# Add the service and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.Triggers = ["EF_mu20"] -LumiCalcSvc.UseMC = True -# explicit list of LumiBlockCollections names -LumiCalcSvc.LBCollNames = ["LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Verbose = False -# NOTE: UseInputStore must be *False* by default BUT just for this example we set it to True -LumiCalcSvc.UseInputStore = True -svcMgr += LumiCalcSvc - -# Add LumiCalcPyAthena Alg -from LumiBlockComps.LumiCalcPyAthena import LumiCalcPyAthena -theJob = AlgSequence() -theJob += LumiCalcPyAthena() -LumiCalcPyAthena.OutputLevel = INFO diff --git a/LumiBlock/LumiBlockComps/share/LumiCalc_topOptions.py b/LumiBlock/LumiBlockComps/share/LumiCalc_topOptions.py index 02c2ccb108400417fd565a75a3afb996991cb099..6afcf4504aa116682f99f0576fec50e0a02fcf73 100644 --- a/LumiBlock/LumiBlockComps/share/LumiCalc_topOptions.py +++ b/LumiBlock/LumiBlockComps/share/LumiCalc_topOptions.py @@ -1,6 +1,6 @@ ######################################## # Job to run RecExCommon, schedule -# LumiBlockMetaDataTool and LumiCalcSvc +# LumiBlockMetaDataTool # but don't write out any AOD outputfile # the Input AOD File @@ -23,16 +23,6 @@ from LumiBlockComps.LumiBlockCompsConf import LumiBlockMetaDataTool ToolSvc += LumiBlockMetaDataTool( "LumiBlockMetaDataTool" ) LumiBlockMetaDataTool.OutputLevel = DEBUG -# add LumiCalcSvc and configure -from LumiBlockComps.LumiBlockCompsConf import LumiCalcSvc -LumiCalcSvc = LumiCalcSvc() -LumiCalcSvc.Triggers = ["EF_mu20"] -LumiCalcSvc.UseMC = True -LumiCalcSvc.LBCollNames = ["LumiBlocks_GoodDQ0"] #, "IncompleteLumiBlocks_GoodDQ0"] -#LumiCalcSvc.LBCollNames = ["LumiBlocks", "IncompleteLumiBlocks"] -LumiCalcSvc.Verbose = False -svcMgr += LumiCalcSvc - # Either use aodtoaod.py as it is #include ("RecExCommon/aodtoaod.py") diff --git a/LumiBlock/LumiBlockComps/src/LumiCalcSvc.cxx b/LumiBlock/LumiBlockComps/src/LumiCalcSvc.cxx deleted file mode 100644 index b0c0cd6d8177761ba4061d443fabca8bfc2f3f1a..0000000000000000000000000000000000000000 --- a/LumiBlock/LumiBlockComps/src/LumiCalcSvc.cxx +++ /dev/null @@ -1,272 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -// LumiCalcSvc.cxx -// Implementation file for class LumiCalcSvc -// Author: B.Radics<radbal@cern.ch> -// based on Richard Hawkings' LumiCalc.py -/////////////////////////////////////////////////////////////////// - -// for size_t -#include <cstddef> - -// GaudiKernel includes -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/IIncidentSvc.h" -#include "GaudiKernel/FileIncident.h" - -// Athena include files -#include "StoreGate/StoreGate.h" -#include "AthenaPoolUtilities/CondAttrListCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeList.h" - -// Gaudi/Athena access -#include "GaudiKernel/ISvcLocator.h" -#include "AthenaBaseComps/AthService.h" - -#include <string> - -// ROOT -#include "TTree.h" - -// stl includes -#include <iomanip> -#include <iostream> - -#include "LumiCalcSvc.h" -#include "xAODLuminosity/LumiBlockRangeContainer.h" -#include "xAODLuminosity/LumiBlockRangeAuxContainer.h" - -LumiCalcSvc::LumiCalcSvc(const std::string& name, - ISvcLocator* pSvcLocator ) : - base_class(name, pSvcLocator), - m_pMetaDataStore ("StoreGateSvc/MetaDataStore", name), - m_pInputStore ("StoreGateSvc/InputMetaDataStore", name), - m_tHistSvc(0), - m_sourcedb("COOLONL_TRIGGER/OFLP200"), - m_parlumiestfolder("/TRIGGER/LUMI/LBLEST"), - m_parlumilvl1folder("/TRIGGER/LUMI/LVL1COUNTERS"), - m_parlumihltfolder("/TRIGGER/LUMI/HLTCOUNTERS"), - m_parlvl1prescalesfolder("/TRIGGER/LVL1/Prescales"), - m_parlvl1menufolder("/TRIGGER/LVL1/Menu"), - m_parhltmenufolder("/TRIGGER/HLT/Menu"), - m_recordTTree(true), - m_fileCurrentlyOpened(false) -{ - // Properties for configuration of LumiCalcSvc - declareProperty("SourceDb", m_sourcedb); - declareProperty("LumiEstFolder", m_parlumiestfolder); - declareProperty("LumiLVL1CountersFolder", m_parlumilvl1folder); - declareProperty("LumiHLTCountersFolder", m_parlumihltfolder); - declareProperty("LVL1PrescalesFolder", m_parlvl1prescalesfolder); - declareProperty("LVL1MenuFolder", m_parlvl1menufolder); - declareProperty("HLTMenuFolder", m_parhltmenufolder); - declareProperty("Triggers", m_triggers); - declareProperty("LBCollNames", m_lbcnames); - declareProperty("UseMC", m_UseMC = false); - declareProperty("OnlineLumi", m_Online = false); - declareProperty("UseLumiTag", m_UseLumiTag = "OflLumi-Dec2009-001"); // ATLAS_PREFERRED or OflLumi_Fake0/1 - declareProperty("UseLumiMethod", m_UseLumiMethod = "ATLAS_PREFERRED"); // ATLAS_PREFERRED or OflLumi_Fake0/1 - declareProperty("UseLumiChannel", m_UseLumiChannel = 0); // - declareProperty("Verbose", m_Verbose = false); - declareProperty("UseInputStore", m_UseInputStore = false); - - m_lumicalc = new LumiCalculator(); - - m_LumiTree = nullptr; -} - -//=========================================================================== -LumiCalcSvc::~LumiCalcSvc(){ - delete m_lumicalc; -} - -//=========================================================================== -StatusCode LumiCalcSvc::initialize(){ - - ATH_CHECK( m_pMetaDataStore.retrieve() ); - ATH_CHECK( m_pInputStore.retrieve() ); - - // Set to be listener for begin/end of event - ServiceHandle<IIncidentSvc> incSvc("IncidentSvc", this->name()); - ATH_CHECK( incSvc.retrieve() ); - - incSvc->addListener(this, "BeginInputFile", 60); // pri has to be < 100 to be after MetaDataSvc. - incSvc->addListener(this, "EndInputFile", 50); // pri has to be > 10 to be before MetaDataSvc. - incSvc->addListener(this, "EndRun", 50); // pri has to be > 10 to be before MetaDataSvc. - - /// Initialize histogram service - ATH_CHECK( service("THistSvc", m_tHistSvc) ); - - /// Create TTree - m_LumiTree = new TTree("LumiMetaData","LumiMetaData"); - ATH_CHECK( m_tHistSvc->regTree("/AANT/Lumi",m_LumiTree) ); - - m_lumicalc->setTree(m_LumiTree); - - return StatusCode::SUCCESS; -} - -//=========================================================================== -// Calculates lumi on a user defined input MetaData LumiBlockCollection -StatusCode LumiCalcSvc::calcLumi(){ - - StatusCode status = doDbQuery(m_pMetaDataStore); - if (!status.isSuccess()){ - ATH_MSG_WARNING("Couldn't do Db Query for LumiCalcSvc"); - } - - return status; - -} - -//=========================================================================== -StatusCode LumiCalcSvc::doDbQuery(StoreGateSvc_t sg) { - - StatusCode status = StatusCode::SUCCESS; - - doRecordTree(true);// record history to m_LumiTree TTree - StoreGateSvc_t store = sg; - m_LumiTree=m_lumicalc->getTree(); - - if (!m_triggers.value().empty() && !m_lbcnames.value().empty()) { - // collect trigger names - std::list<TString> trignames; - for (std::vector<std::string>::const_iterator it = m_triggers.value().begin(); it != m_triggers.value().end(); ++it) - trignames.push_back(*it); - // fill registry with lbc names+triggers - for(std::vector<std::string>::const_iterator itr = m_lbcnames.value().begin(); itr != m_lbcnames.value().end(); itr++) { - const std::string lbcollname = (*itr); - this->registerLBCollection(lbcollname,"no description available",trignames); - } - } - - // Try to Calculate lumi based on list of LumiBlocks in MetaData store - //=========================================================================== - - // loop over registered lbc-trigger combinations - std::map<TString,tvtPair>::iterator ritr = m_registry.begin(); - for (; ritr!=m_registry.end(); ++ritr) { - - const std::string& lbcollname = ritr->first.Data(); - const std::string& description = ritr->second.first.Data(); - std::list<TString> trignames = ritr->second.second; - - if (trignames.empty()) { - ATH_MSG_INFO("No trigger names registered for lb coll: " << lbcollname << ". Copying trigger names from LumiCalcSvc."); - for (std::vector<std::string>::const_iterator it = m_triggers.value().begin(); it != m_triggers.value().end(); ++it) - trignames.push_back(*it); - } - - if (store->contains<xAOD::LumiBlockRangeContainer>(lbcollname)) { - // const DataHandle<xAOD::LumiBlockRangeContainer> iovc; - const xAOD::LumiBlockRangeContainer* lbcoll = 0; - status = store->retrieve(lbcoll, lbcollname); - - if (!status.isSuccess()) { - ATH_MSG_DEBUG("Could not find LumiBlockRangeContainer >>" << lbcollname << "<< in " << store->name()); - }else { - ATH_MSG_DEBUG(" Found LumiBlockRangeContainer >>" << lbcollname << "<< in " << store->name() << " OK "); - ATH_MSG_INFO(" Calculating Integrated Luminosity based on >>" << lbcollname << "<< in " << store->name()); - if (!description.empty()) { ATH_MSG_INFO(" Description of >>" << lbcollname << "<< = " << description); } - - /* - const LumiBlockRangeContainer* lbcoll = iovc; - // check against problems - if(dynamic_cast< const LumiBlockCollection * >(lbcoll) == 0){ - log << MSG::ERROR << "Input LumiBlockRangeContainer to LumiCalcSvc is not of type LumiBlockRangeContainer" << endmsg; - status = StatusCode::FAILURE; - return status; - }else{ - if(lbcoll->empty()){ - log << MSG::WARNING << "Input LumiBlockCollection is empty, not calculating!" << endmsg; - status = StatusCode::SUCCESS; - return status; - } - } - */ - - for( std::list<TString>::const_iterator it = trignames.begin(); it != trignames.end(); ++it){ - const std::string trigname = it->Data(); - m_lumicalc->SetCollName(lbcollname); - m_lumicalc->UseLumiTag(m_UseLumiTag); - if(m_UseLumiChannel == -1)m_lumicalc->UseLumiMethod(m_UseLumiMethod); - if(m_UseLumiChannel != -1)m_lumicalc->UseLumiChannel(m_UseLumiChannel); - m_lumicalc->UseMC(m_UseMC.value()); - m_lumicalc->UseOnlineLumi(m_Online.value()); - m_lumicalc->Verbose(m_Verbose.value()); - m_lumicalc->IntegrateLumi(lbcoll, trigname); - ATH_MSG_INFO("=========================================================="); - if(m_Verbose.value() != true)print(); - // detailed list of calculation to screen on demand - if(m_Verbose.value() == true)printTree(); - } - } - } else { - ATH_MSG_WARNING("Could not find LumiBlockCollection >>" << lbcollname << "<< in " << store->name()); - } - } // end loop over registered lbc-trigger combinations - - return status; -} - -//=========================================================================== -void LumiCalcSvc::handle(const Incident& inc) { - - const FileIncident* fileInc = dynamic_cast<const FileIncident*>(&inc); - std::string fileName; - if (fileInc == 0) { fileName = "Undefined "; } - else { fileName = fileInc->fileName(); } - ATH_MSG_DEBUG("handle() " << inc.type() << " for file: " << fileName); - - if (inc.type() == "BeginInputFile") { - ATH_MSG_DEBUG("BeginInputFile incident fired!"); - m_fileCurrentlyOpened = true; - if(m_UseInputStore == true){ - doDbQuery(m_pInputStore).ignore(); - } - } - else if (inc.type() == "EndInputFile") { - m_fileCurrentlyOpened = false; - - } - else if (inc.type() == "EndRun") { - } -} - -StatusCode LumiCalcSvc::stop(){ - - if (m_fileCurrentlyOpened == true) ATH_MSG_DEBUG("File was read partially"); - if (m_fileCurrentlyOpened == false) ATH_MSG_DEBUG("File was read fully"); - - return StatusCode::SUCCESS; - -} - - -//=========================================================================== -void LumiCalcSvc::printTree(){ - - if(m_LumiTree != nullptr)m_LumiTree->Scan("*"); - -} - -//=========================================================================== -bool -LumiCalcSvc::registerLBCollection(const TString& tname, const TString& regexpr, const std::list<TString>& trigpar) -{ - - if (m_registry.find(tname)!=m_registry.end()) { - ATH_MSG_WARNING("registerLBCollection() :: LB collection with name <" << tname << "> already registered. Return false."); - return false; - } - - ATH_MSG_DEBUG("registerLBCollection() :: LB collection with name <" << tname << "> registered."); - m_registry[tname] = tvtPair(regexpr,trigpar); - - return true; -} - diff --git a/LumiBlock/LumiBlockComps/src/LumiCalcSvc.h b/LumiBlock/LumiBlockComps/src/LumiCalcSvc.h deleted file mode 100644 index d455ab42bf8fbae26cd749cdbb93f6018663ca08..0000000000000000000000000000000000000000 --- a/LumiBlock/LumiBlockComps/src/LumiCalcSvc.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef XAOD_ANALYSIS - -///////////////////////// -*- C++ -*- ///////////////////////////// -// LumiCalcSvc.h -// Header file for class LumiCalcSvc -// Author: B.Radics<radbal@cern.ch> -// based on Richard Hawkings' LumiCalc.py -/////////////////////////////////////////////////////////////////// -#ifndef LUMIBLOCKCOMPS_LUMICALCSVC_H -#define LUMIBLOCKCOMPS_LUMICALCSVC_H - -/** - * @class LumiCalcSvc - * @brief This implementes the methods for ILumiCalcSvc - */ - -// Gaudi/Athena access -//#include "LumiBlockComps/ILumiCalcSvc.h" -#include "GaudiKernel/IIncidentListener.h" -#include "GaudiKernel/Property.h" -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/ITHistSvc.h" -#include "AthenaBaseComps/AthService.h" -#include "LumiCalc/LumiCalculator.h" -#include "LumiBlockComps/ILumiCalcSvc.h" - -class TTree; -class ILumiCalcSvc; -class StoreGateSvc; - -class LumiCalcSvc : public extends<AthService, ILumiCalcSvc, IIncidentListener> -{ - -public: - - /// Constructor - LumiCalcSvc(const std::string& name, ISvcLocator* pSvcLocator ); - - /// Destructor - virtual ~LumiCalcSvc(); - - /// Gaudi Service Implementation - //@{ - virtual StatusCode initialize() override; - virtual StatusCode stop() override; - //@} - - /// Incident service handle listening for BeginInputFile and EndInputFile. - virtual void handle(const Incident& incident) override; - - // print some values (inst lumi, lumiblock number, time, prescales, etc.) to screen - virtual void print() override {}; - - // main user function - // By default tries both "LumiBlocks" and "IncompleteLumiBlocks" - virtual StatusCode calcLumi() override; - - // retrieve the details of the calculation as a TTree table - virtual TTree * getLumiTree() override { return m_LumiTree; } - - /// register trigger - virtual - bool registerLBCollection(const TString& tname, const TString& regexpr, const std::list<TString>& trigpar) override; - -private: - typedef ServiceHandle<StoreGateSvc> StoreGateSvc_t; - StatusCode doDbQuery(StoreGateSvc_t sg); - void doRecordTree(bool b){m_recordTTree = b;} - void printTree(); - - - StoreGateSvc_t m_pMetaDataStore; - StoreGateSvc_t m_pInputStore; - - // StoreGateSvc* p_inputstore; // input metadata store - // StoreGateSvc* p_metadatastore; // metadata store - ITHistSvc * m_tHistSvc; - - // Configurable Properties - StringArrayProperty m_triggers; - StringArrayProperty m_lbcnames; - StringProperty m_sourcedb; - StringProperty m_parlumiestfolder; - StringProperty m_parlumilvl1folder; - StringProperty m_parlumihltfolder; - StringProperty m_parlvl1prescalesfolder; - StringProperty m_parlvl1menufolder; - StringProperty m_parhltmenufolder; - StringProperty m_UseLumiTag; - StringProperty m_UseLumiMethod; - int m_UseLumiChannel; - BooleanProperty m_UseMC; - BooleanProperty m_Online; - BooleanProperty m_Verbose; - BooleanProperty m_UseInputStore; - - // The Lumicalculator; - LumiCalculator * m_lumicalc; - - // A TTree to bookkeep the calculation - TTree * m_LumiTree; - bool m_recordTTree; - - // Bookkeep if file is partially read - bool m_fileCurrentlyOpened; - - // lbc trigger combo registry - std::map< TString, tvtPair > m_registry; -}; - - -#endif //> !ATHENAKERNEL_LUMICALCSVC_H - -#endif diff --git a/LumiBlock/LumiBlockComps/src/components/LumiBlockComps_entries.cxx b/LumiBlock/LumiBlockComps/src/components/LumiBlockComps_entries.cxx index 77ff68ff92db6d1aeaea96cf44484f36383e3991..18f6138b8b6a2570b5ace7c16acc657cd0e0c90b 100644 --- a/LumiBlock/LumiBlockComps/src/components/LumiBlockComps_entries.cxx +++ b/LumiBlock/LumiBlockComps/src/components/LumiBlockComps_entries.cxx @@ -4,7 +4,6 @@ #ifndef XAOD_ANALYSIS //full-athena-only components #include "../LumiBlockMuTool.h" -#include "../LumiCalcSvc.h" #include "../LumiBlockTester.h" #include "../LBDurationCondAlg.h" #include "../LuminosityCondAlg.h" @@ -18,7 +17,6 @@ DECLARE_COMPONENT( CreateLumiBlockCollectionFromFile ) #ifndef XAOD_ANALYSIS DECLARE_COMPONENT( LumiBlockTester ) DECLARE_COMPONENT( LumiBlockMuTool ) -DECLARE_COMPONENT( LumiCalcSvc ) DECLARE_COMPONENT( LBDurationCondAlg ) DECLARE_COMPONENT( LuminosityCondAlg ) DECLARE_COMPONENT( BunchCrossingCondAlg )