diff --git a/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py b/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py index ab25d7a26041f80226a2ebcd2eb43b26a906371d..8ec5fe7d99dda009536c6bcfcae8f404d3d7920f 100644 --- a/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py +++ b/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py @@ -333,7 +333,7 @@ def InitDetectorMaskDecoderRun2(): NotInAll = map(lambda x: ' NotInAll' if x in notInAll else '', dName) - vetoedbits = [3, 41, 42, 44, 50, 51, 52, 53, 55, 57, 58, 59] + range(64,128) + vetoedbits = [3, 41, 42, 44, 50, 51, 52, 53, 55, 57, 58, 59] + [x for x in range(64,128)] #+ range(64,128) return (dName, NotInAll, vetoedbits) diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h index da45a0d3f82e37e40f9ed61253f125c4ec46e227..16e953064881674ff3951cef141cde57f6a887f7 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h @@ -50,7 +50,9 @@ class ISCT_CalibEvtInfo: virtual public IAlgTool { virtual int numLumiBlocks() const =0; virtual void setRunNumber(const int rn)=0; + virtual void setEventNumber(const int en)=0; virtual int runNumber() const =0; + virtual int eventNumber() const =0; virtual void setCounter(const int counterVal)=0; virtual void incrementCounter()=0; diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h index 35683d6af390e796ea903ef370c800ab950ca9b0..b8723c9f485884956cd142a1871e79124ef45ff7 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h @@ -127,6 +127,7 @@ class SCTCalib : public AthAlgorithm { // Properties configurable from jobO IntegerProperty m_runNumber{this, "RunNumber", -1}; + IntegerProperty m_eventNumber{this, "EventNumber", -1}; StringProperty m_runStartTime{this, "RunStartTime", "", "from runInfo.txt"}; StringProperty m_runEndTime{this, "RunEndTime", "", "from runInfo.txt"}; diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h index 1b7445ee53babd03cb3e3183051dcddbd022d5ba..8d0fb3f4cf2d2426e1f62a765d401df2afca3469 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h @@ -16,13 +16,18 @@ #define SCTCalibWriteTool_H // Athena includes +//#include "AthenaBaseComps/AthService.h" #include "AthenaBaseComps/AthAlgTool.h" #include "AthenaKernel/IOVTime.h" +#include "AthenaKernel/IIOVDbSvc.h" +#include "AthenaKernel/IAthenaOutputStreamTool.h" #include "AthenaPoolUtilities/CondAttrListCollection.h" #include "EventInfo/EventInfo.h" #include "Identifier/Identifier.h" #include "InDetConditionsSummaryService/InDetHierarchy.h" #include "StoreGate/ReadHandleKey.h" +//#include "StoreGate/WriteCondHandleKey.h" +#include "StoreGate/WriteCondHandle.h" #include "CoralBase/AttributeListSpecification.h" @@ -30,6 +35,7 @@ #include "GaudiKernel/IInterface.h" #include "GaudiKernel/IAlgTool.h" #include "GaudiKernel/ToolHandle.h" +#include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/StatusCode.h" #include "GaudiKernel/ClassID.h" @@ -56,7 +62,7 @@ class SCTCalibWriteTool : public AthAlgTool { // Constructor SCTCalibWriteTool(const std::string& type, const std::string& name, const IInterface* parent); // Destructor - virtual ~SCTCalibWriteTool() = default; + virtual ~SCTCalibWriteTool(); // overloading functions virtual StatusCode initialize(); @@ -73,7 +79,7 @@ class SCTCalibWriteTool : public AthAlgTool { std::string createDefectString(const int defectBeginChannel,const int defectEndChannel) const; - StatusCode createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used. + StatusCode createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used. (const Identifier& wafer_id, const SCT_ID* m_sctId, const int samplesize, @@ -198,7 +204,7 @@ class SCTCalibWriteTool : public AthAlgTool { IntegerProperty m_version{this, "Version", 0}; IntegerProperty m_beginRun{this, "BeginRun", IOVTime::MINRUN}; IntegerProperty m_endRun{this, "EndRun", IOVTime::MAXRUN}; - StringProperty m_streamName{this, "StreamName", "CondStreamTest"}; + StringProperty m_streamName{this, "StreamName", "SCTCalibStream"}; StringProperty m_tagID4NoisyStrips{this, "TagID4NoisyStrips", ""}; StringProperty m_tagID4DeadStrips{this, "TagID4DeadStrips", ""}; StringProperty m_tagID4DeadChips{this, "TagID4DeadChips", ""}; @@ -208,8 +214,9 @@ class SCTCalibWriteTool : public AthAlgTool { StringProperty m_tagID4BSErrors{this, "TagID4BSErrors", ""}; StringProperty m_tagID4LorentzAngle{this, "TagID4LorentzAngle", ""}; - IIOVRegistrationSvc* m_regSvc{nullptr}; - IAthenaOutputStreamTool* m_streamer{nullptr}; + IIOVRegistrationSvc* m_regSvc{nullptr}; + ToolHandle<IAthenaOutputStreamTool> m_streamer{nullptr}; + ServiceHandle<IIOVDbSvc> m_IOVDbSvc; bool m_defectRecorded{false}; bool m_deadStripRecorded{false}; @@ -220,6 +227,7 @@ class SCTCalibWriteTool : public AthAlgTool { bool m_BSErrRecorded{false}; bool m_LARecorded{false}; const SCT_ID* m_pHelper{nullptr}; + }; inline const InterfaceID& SCTCalibWriteTool::interfaceID() { diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py index e81dc356e21d9da3c6c0173df223c6da9b79244c..387c2137d80f91f1c4b8a0b8cb34c602162a9e4f 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py @@ -54,12 +54,12 @@ def main( runNum=None ): print 'runInfo from scripts folder' #e.g. : http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLONL_TDAQ/COMP200/TDAQ/RunCtrl/EOR_Params/timespan/732227499458560-732231794425855/channels/0 - xmlString=channelValueQuery(url) - RunNumber = extractValue(xmlString,'RunNumber') - iovstart,iovend = extractChannelIov(xmlString) - nLB = iovend - ( iovstart + 1 ) - ProjectTag = extractValue(xmlString,'FilenameTag' ) - DetectorMask = extractValue(xmlString,'DetectorMask' ) + xmlString = channelValueQuery(url) + RunNumber = extractValue(xmlString,'RunNumber') + iovstart,iovend = extractChannelIov(xmlString) + nLB = iovend - ( iovstart + 1 ) + ProjectTag = extractValue(xmlString,'FilenameTag' ) + DetectorMask = extractValue(xmlString,'DetectorMask' ) ts1 = long(extractValue(xmlString,"SORTime"))/1000000000L ts2 = long(extractValue(xmlString,"EORTime"))/1000000000L diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py index 95b8a2df21fb9b8a3450859c32f269551fc0bb4c..1ae78f731d1e749d945b8152a095a5dbb9bb9918 100755 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py @@ -31,6 +31,7 @@ from PyJobTransformsCore.trfutil import * dsDict={'input': [] , 'output' : []} RunNumber=-1 +EventNumber=-1 SvcClass='' Stream='' NumberOfEvents=0 @@ -295,6 +296,8 @@ class SCTCalibExecutor( athenaExecutor ): fileName=namelist[0].split('/')[nName] projectName=str(fileName.split('.')[0]) + #### Try to avoid validation of output files + #self.skipOutputFileValidation=True if not 'doRunInfo' in runArgs: self.conf.addToArgdict('doRunInfo', trfArgClasses.argBool(False)) @@ -302,7 +305,7 @@ class SCTCalibExecutor( athenaExecutor ): if runArgs['doRunInfo']._value: import SCT_CalibAlgs.runInfo as runInfo - print "RunNumber for the runInfo = " + str(RunNumber) + " " + Stream + print ("RunNumber for the runInfo = ", str(RunNumber), " ", Stream) runInfo.main(RunNumber, projectName) if not 'splitNoisyStrip' in runArgs: @@ -310,13 +313,17 @@ class SCTCalibExecutor( athenaExecutor ): if not 'doRunSelector' in runArgs: self.conf.addToArgdict('doRunSelector', trfArgClasses.argBool(False)) + #### This is a try to set event number manually if run over HIST files + if not 'EventNumber' in runArgs: + self.conf.addToArgdict('EventNumber', trfArgClasses.argInt(0)) + # Set STAGE_SVCCLASS if not SvcClass is '' and not SvcClass is None: os.environ['STAGE_SVCCLASS']=SvcClass # Check input type inputtype=dsDict['input'][0]['dataset'].split('.')[4] - print "Input type = " + inputtype + print ("Input type = ", inputtype) self.conf.addToArgdict('InputType', trfArgClasses.argString(inputtype)) # check which parts to be run @@ -413,7 +420,7 @@ class SCTCalibExecutor( athenaExecutor ): checkRun=runSelector.main(RunNumber,part,skipQueue,Stream) if not checkRun: - print "Run %s didn't pass run selection criteria. It will not be processed and no output will be generated. Finish execution and exit gracefully" %(RunNumber) + print ("Run ", RunNumber, " didn't pass run selection criteria. It will not be processed and no output will be generated. Finish execution and exit gracefully") emptyDic = {} self._trf._dataDictionary = emptyDic @@ -450,12 +457,12 @@ class SCTCalibExecutor( athenaExecutor ): cmd += "\n" # cmd += " >> /dev/null 2>&1 \n" - print cmd + print (cmd) self._echologger.info('Merging Hitmap and LB files!') retcode=1 try: retcode = os.system(cmd) - except OSError, e: + except (OSError, e): retcode = 1 if retcode == 0: self._echologger.info('Root merge successful') @@ -485,13 +492,13 @@ class SCTCalibExecutor( athenaExecutor ): if 'doNoisyStrip' in runArgs['part']._value and runArgs['splitNoisyStrip']._value == 1: outInstance0 = self.conf.dataDictionary[list(self._output)[0]] outTFile0 = TFile(outInstance0._value[0]) - print outTFile0.GetName() + print (outTFile0.GetName()) outNentries0 = int(outTFile0.Get('GENERAL/events').GetEntries()) outInstance0._setMetadata(outInstance0._value,{'nentries': outNentries0}) outInstance1 = self.conf.dataDictionary[list(self._output)[1]] outTFile1 = TFile(outInstance1._value[0]) - print outTFile1.GetName() + print (outTFile1.GetName()) outNentries1 = int(outTFile1.Get('GENERAL/events').GetEntries()) outInstance1._setMetadata(outInstance1._value,{'nentries': outNentries1}) diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py index c4760ef25bab955fb59d337373f1d2dfb06c806c..96c2953b330becd67a30e81abbe2c0d2358b12e3 100755 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py @@ -30,10 +30,13 @@ def openDatabase(dbstring): #def formIov(runNumber): # s,u=(runNumber << 32), ((runNumber + 1) << 32) - 1 +# print ("formIOV: ", s, u) # return s,u +#CS: this version is needed if previous runs are processed (make sure runNumberSave is small enough) def formIov(runNumber): - runNumberSave = 362345 + #runNumberSave = 364160 + runNumberSave = 364076 s,u=(runNumberSave << 32), ((runNumber + 1) << 32) - 1 return s,u @@ -63,13 +66,13 @@ def GetRunList(dbstring, folder, tag, runNumber, k): db.closeDatabase() Temp=sorted(temp) - # print('array is', Temp) + #print('GetRunList: array is', Temp) ls=[] for i in range(len(Temp)-1): if (Temp[i] != Temp[i+1]): ls.append(Temp[i]) -# ls.append(Temp[len(Temp)-1]) + #ls.append(Temp[len(Temp)-1]) print(ls) list=[] diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py index c5cebd51d71980a69a42a60fbe54a19c65046f46..5e9f737601b82795d07aba48e2abb705400749a1 100755 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py @@ -7,7 +7,8 @@ #-------------------------------------------------------------- # RunNumber and number of events #-------------------------------------------------------------- -RunNumber = 364214 +#RunNumber = 364214 +RunNumber = 370059 EvtMax = -1 #-------------------------------------------------------------- @@ -151,5 +152,5 @@ ConditionsTagNF = 'CONDBR2-ES1PA-2016-03' # Solenoid=OFF, BarrelToroid=OFF #-------------------------------------------------------------- # Read /SCT/Derived/Monotoring in COOL -NoisyReadNumRuns = 5 # Used in a criteria for upload of NoisyStrips +NoisyReadNumRuns = 3 # Used in a criteria for upload of NoisyStrips TagID4NoisyUploadTest = 'SctDerivedMonitoring-RUN2-UPD4-005' diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py index 90a4d122bb953fc6d0dd2015fb357b32a341dfef..c3775027e118f1a04616f6cc3a550a8e5e6970e2 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py @@ -41,6 +41,16 @@ theAuditorSvc.Auditors += [ "MemStatAuditor" ] theApp.AuditAlgorithms = True theApp.AuditServices = True +#-------------------------------------------------------------- +# Switching off multi-threading (not working?!) +#-------------------------------------------------------------- +#from GaudiHive.GaudiHiveConf import ForwardSchedulerSvc +##svcMgr.ForwardSchedulerSvc.ThreadPoolSize = numThreads +##svcMgr.ForwardSchedulerSvc.MaxEventsInFlight = numEvents +#svcMgr.ForwardSchedulerSvc.ThreadPoolSize = 1 +#svcMgr.ForwardSchedulerSvc.MaxEventsInFlight = 1 +#-------------------------------------------------------------- + #-------------------------------------------------------------- # User setup to run each algorithm # - SCTCalibConfig.py is used as input to the following @@ -56,6 +66,10 @@ else : if hasattr( runArgs, 'RunNumber' ) : RunNumber = runArgs.RunNumber +#--- Reading EventNumber from FileName +if hasattr( runArgs, 'EventNumber' ) : + EventNumber = runArgs.EventNumber + #--- Setting MaxEvents from runArguments if hasattr( runArgs, 'maxEvents' ) : EvtMax = runArgs.maxEvents @@ -159,7 +173,9 @@ else : #-------------------------------------------------------------- if runArgs.InputType is not 'RAW': ServiceMgr.EventSelector.RunNumber = runArgs.RunNumber - ServiceMgr.EventSelector.InitialTimeStamp = int(SORTime) + ServiceMgr.EventSelector.FirstEvent = runArgs.EventNumber + ServiceMgr.EventSelector.FirstLB = 0 + ServiceMgr.EventSelector.InitialTimeStamp = int(SORTime.split(".")[0]) #-------------------------------------------------------------- @@ -368,8 +384,9 @@ conddb.dbdata = 'CONDBR2' from SCT_ConditionsTools.SCT_MonitorConditionsToolSetup import SCT_MonitorConditionsToolSetup sct_MonitorConditionsToolSetup = SCT_MonitorConditionsToolSetup() -#sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag>") -sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag><forceRunNumber>364160</forceRunNumber>") +sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag>") +#sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag><forceRunNumber>364160</forceRunNumber>") +#sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag><forceRunNumber>364214</forceRunNumber>") sct_MonitorConditionsToolSetup.setup() # GeoModel & MagneticFieldSvc @@ -453,7 +470,7 @@ SCTCalibWriteTool.TagID4Efficiency = TagID4Efficiency SCTCalibWriteTool.TagID4BSErrors = TagID4BSErrors SCTCalibWriteTool.TagID4LorentzAngle = TagID4LorentzAngle -SCTCalibWriteTool.OutputLevel = INFO +SCTCalibWriteTool.OutputLevel = DEBUG print(SCTCalibWriteTool) @@ -475,6 +492,7 @@ SCTCalib = topSequence.SCTCalib #--- Run number SCTCalib.RunNumber = RunNumber +SCTCalib.EventNumber = EventNumber #--- Run stat/end time read from runInfo.txt SCTCalib.RunStartTime = SORTime SCTCalib.RunEndTime = EORTime @@ -523,6 +541,9 @@ SCTCalib.DoLorentzAngle = DoLorentzAngle # False in default SCTCalib.WriteToCool = WriteToCool # True in default #--- Properties for noisy strips +SCTCalib.LbsPerWindow = LbsPerWindow +SCTCalib.NoisyUpdate = NoisyUpdate +SCTCalib.NoisyWriteAllModules = NoisyWriteAllModules SCTCalib.NoisyMinStat = NoisyMinStat SCTCalib.NoisyStripAll = NoisyStripAll SCTCalib.NoisyStripThrDef = NoisyStripThrDef @@ -603,4 +624,5 @@ theApp.EvtMax = EvtMax # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) #-------------------------------------------------------------- ServiceMgr.MessageSvc.OutputLevel = DEBUG +ServiceMgr.MessageSvc.debugLimit = 1000 ServiceMgr.MessageSvc.infoLimit = 2000000 diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx index dd0f7a3c5eff2720767ac223f1e379439b92dc93..f55080d716232936ccd7e25801116ac176b693f9 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx @@ -184,6 +184,7 @@ StatusCode SCTCalib::initialize() { if (not retrievedService(m_calibLbTool)) return StatusCode::FAILURE; ATH_CHECK(m_CablingTool.retrieve()); + ATH_CHECK(m_SCTDetEleCollKey.initialize()); //--- LB range try { @@ -261,6 +262,7 @@ StatusCode SCTCalib::initialize() { m_calibEvtInfoTool->setSource("HIST"); m_calibEvtInfoTool->setTimeStamp(m_runStartTime, m_runEndTime); m_calibEvtInfoTool->setRunNumber(m_runNumber); + m_calibEvtInfoTool->setEventNumber(m_eventNumber); } //--- Booking histograms for hitmaps @@ -273,6 +275,7 @@ StatusCode SCTCalib::initialize() { m_numberOfEventsHist = m_calibHitmapTool->size(); m_calibEvtInfoTool->setTimeStamp(m_runStartTime, m_runEndTime); m_calibEvtInfoTool->setRunNumber(m_runNumber); + m_calibEvtInfoTool->setEventNumber(m_eventNumber); //m_calibEvtInfoTool->setLumiBlock(0); //m_calibEvtInfoTool->setBunchCrossing(0); m_calibLbTool->read("./SCTLB.root"); @@ -351,7 +354,7 @@ StatusCode SCTCalib::execute() { m_calibEvtInfoTool->incrementCounter(); ATH_MSG_DEBUG("----- end of execute() ----- "); - + return StatusCode::SUCCESS; } @@ -463,6 +466,7 @@ StatusCode SCTCalib::stop ATLAS_NOT_THREAD_SAFE () { // Thread unsafe getNoisySt //--- Close HIST if (m_readHIST) m_inputHist->Close(); + return StatusCode::SUCCESS; } @@ -473,6 +477,13 @@ StatusCode SCTCalib::stop ATLAS_NOT_THREAD_SAFE () { // Thread unsafe getNoisySt StatusCode SCTCalib::finalize() { ATH_MSG_INFO("----- in finalize() ----- "); + if (m_writeToCool) { + if (!m_pCalibWriteTool.release().isSuccess()) { + ATH_MSG_ERROR("Failed to release m_pCalibWriteTool"); + return StatusCode::FAILURE; + } + } + ATH_MSG_INFO("Thank-you for using SCT_CalibAlgs, version " << PACKAGE_VERSION); return StatusCode::SUCCESS; } @@ -531,7 +542,7 @@ StatusCode SCTCalib::getNoisyStrip ATLAS_NOT_THREAD_SAFE () { // Thread unsafe w // } ATH_MSG_INFO("----- in getNoisyStrip() ----- "); - + //--- Number of LBs processed m_numOfLBsProcessed = 0; for (int iLB{0}; iLB != m_LBRange; ++iLB) { @@ -2633,7 +2644,7 @@ SCTCalib::getNumNoisyStrips(const Identifier& waferId) const { bool isNoisyWafer{false}; float noisyStripThr{m_noisyStripThrDef ? (m_noisyStripThrOffline) : (m_noisyStripThrOnline)}; for (int iStrip{0}; iStrip != nbins; ++iStrip) { - if (m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents > noisyStripThr) ++numNoisyStripsInTheWafer; + if ( (float) m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents > noisyStripThr) ++numNoisyStripsInTheWafer; } //--- Define/counts noisy wafers using wafer occupancy and number of noisy strips double averageOccupancy{m_calibHitmapTool->size(waferHash.value())/static_cast<double>(nbins)/static_cast<double>(m_numberOfEvents)}; @@ -2661,7 +2672,7 @@ SCTCalib::addStripsToList(Identifier& waferId, std::set<Identifier>& stripIdList if (!isNoisy) { //--- Add all strips stripIdList.insert(stripId); } else { - const float stripOccupancy{static_cast<float>(m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents)}; + const float stripOccupancy{ (float) m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents}; if (stripOccupancy > noisyStripThr) { if (!isNew) { //--- All noisy strips stripIdList.insert(stripId); @@ -2682,10 +2693,10 @@ SCTCalib::addStripsToList(Identifier& waferId, std::set<Identifier>& stripIdList StatusCode -SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibWriteTool::createCondObjects method is used. - (const std::map<Identifier, std::set<Identifier>>& moduleListAll, - const std::map<Identifier, std::set<Identifier>>& moduleListNew, - const std::map<Identifier, std::set<Identifier>>& moduleListRef) { +SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibWriteTool::createListStrip method is used. +(const std::map<Identifier, std::set<Identifier>>& moduleListAll, + const std::map<Identifier, std::set<Identifier>>& moduleListNew, + const std::map<Identifier, std::set<Identifier>>& moduleListRef) { //--- Write out strips float noisyStripThr{m_noisyStripThrDef?(m_noisyStripThrOffline):(m_noisyStripThrOnline)}; int nDefects{0}; @@ -2706,33 +2717,35 @@ SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibW ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool."); } nDefects++; - } else ATH_MSG_DEBUG("Module " << moduleId << " is identical to the reference output"); + }; // else ATH_MSG_DEBUG("Module " << moduleId << " is identical to the reference output"); } else { if (m_noisyStripAll) { //--- ALL noisy strips if (!defectStripsAll.empty() || m_noisyWriteAllModules) { - if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsAll).isFailure()) { - ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool."); - } - } + if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsAll).isFailure()) { + ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool."); + } + } } else { //--- Only NEW noisy strips if (!defectStripsNew.empty()) { - if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsNew).isFailure()) { - ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool."); - } + if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsNew).isFailure()) { + ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool."); + } } } } } } - //ATH_MSG_INFO("Number of modules for which conditions were created: " << nDefects << " !!!!" << endmsg; - if (moduleListAll.empty() or nDefects==0) { + ATH_MSG_DEBUG("Number of modules for which conditions were created: " << nDefects << " !!!!"); + if (moduleListAll.empty() or ( nDefects==0 && m_noisyUpdate )) { ATH_MSG_INFO("Number of noisy strips was zero or the same list of noisy strips. No local DB was created."); } else { + ATH_MSG_DEBUG("directly before call of wrapUpNoisyChannel"); if (m_pCalibWriteTool->wrapUpNoisyChannel().isFailure()) { ATH_MSG_ERROR("Could not get NoisyStrips info"); return StatusCode::FAILURE; } } + ATH_MSG_DEBUG("before return"); return StatusCode::SUCCESS; } @@ -2854,6 +2867,9 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set //const std::map<Identifier, std::set<Identifier>>& moduleListNew, const std::map<Identifier, std::set<Identifier>>& moduleListRef, const std::string& badStripsFile) const { + + ATH_MSG_DEBUG("noisyStripsToSummaryXml: start"); + //--- Open const char* outputFileName{badStripsFile.c_str()}; std::ofstream outFile{outputFileName, std::ios::out}; @@ -2875,6 +2891,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set //--- Create module list SCT_ID::const_id_iterator waferItr{m_pSCTHelper->wafer_begin()}; SCT_ID::const_id_iterator waferItrE{m_pSCTHelper->wafer_end()}; + ATH_MSG_DEBUG("noisyStripsToSummaryXml: before wafer loop"); for (; waferItr != waferItrE; ++waferItr) { //--- Identifier Identifier waferId{*waferItr}; @@ -2901,6 +2918,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set //--- Execute once in this module if (m_pSCTHelper->side(waferId) == 1) { + ATH_MSG_DEBUG("noisyStripsToSummaryXml: ALL"); //--- Noisy strips : All std::map< Identifier, std::set<Identifier> >::const_iterator moduleAllItr{moduleListAll.find(moduleId)}; if (moduleAllItr != moduleListAll.end()) { @@ -2909,6 +2927,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set numStripsAll += (*moduleAllItr).second.size(); } + ATH_MSG_DEBUG("noisyStripsToSummaryXml: REF"); //--- Noisy strips : Ref std::map< Identifier, std::set<Identifier> >::const_iterator moduleRefItr{moduleListRef.find(moduleId)}; if (moduleRefItr != moduleListRef.end()) { @@ -2917,6 +2936,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set numStripsRef += moduleRefItr->second.size(); } + ATH_MSG_DEBUG("noisyStripsToSummaryXml: NEW"); //--- Noisy strips : New if ( moduleAllItr != moduleListAll.end() ) { if ( moduleRefItr != moduleListRef.end() ) { @@ -2929,6 +2949,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set } } + ATH_MSG_DEBUG("noisyStripsToSummaryXml: stripIdList -> chipIdList"); //--- Noisy chips : stripIdList -> chipIdList if (moduleAllItr != moduleListAll.end()) { std::set<int> chipIdList{getNoisyChips(moduleAllItr->second)}; @@ -2956,6 +2977,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set } } } + ATH_MSG_DEBUG("noisyStripsToSummaryXml: Difference between All & Ref"); //--- Difference between All & Ref if (defectStripsAll != defectStripsRef) ++numModulesDiff; //--- Module list written to XML @@ -2973,9 +2995,12 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set << " <value name=\"StripOfflineRef\">" << normalizeList(defectStripsRef) << "</value>" << linefeed << " </module>" << std::endl; } + ATH_MSG_DEBUG("noisyStripsToSummaryXml: After Difference between All & Ref"); } }//--- end loop : waferItr + ATH_MSG_DEBUG("noisyStripsToSummaryXml: after waferItr"); + //--- Upload flag std::string strUploadFlag{"U"}; @@ -3000,6 +3025,8 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set } } + ATH_MSG_DEBUG("noisyStripsToSummaryXml: after FlagChecking"); + //--- Upload test result to XML std::ostringstream osNoisyMinStat, osNoisyModuleList, osNoisyModuleDiff, osNoisyStripDiff; osNoisyMinStat << "#events more than " << m_noisyMinStat.value(); @@ -3053,6 +3080,8 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set << " </modules>" << linefeed << "</run>" << std::endl; + ATH_MSG_DEBUG("noisyStripsToSummaryXml: before return"); + return StatusCode::SUCCESS; } @@ -3131,7 +3160,7 @@ SCTCalib::getNoisyLB(const Identifier& moduleId, int& chipId) const { for (int iLB{0}; iLB != m_LBRange; ++iLB) { double numEventsInLB{static_cast<double>(m_calibLbTool->getNumberOfEventsInBin(iLB + 1))}; if (numEventsInLB == 0) continue; - double chipOccupancy{m_calibLbTool->getBinForHistogramIndex(iLB + 1, histIndex)/numEventsInLB}; + double chipOccupancy{(float) m_calibLbTool->getBinForHistogramIndex(iLB + 1, histIndex) / numEventsInLB}; if (chipOccupancy > chipOccupancyThr) LBList.insert(iLB); } //--- Transform LBList to string and calculate a fraction of noisy LBs diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx index e714da798401338c14ab479eaa66fd514ef1b4ba..0379ed1b56d49bbb1d99f8dc4b8528924dafb5d9 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx @@ -54,7 +54,15 @@ const bool becCapsFormat{true}; const bool becUnderscoreFormat{false}; SCTCalibWriteTool::SCTCalibWriteTool(const std::string& type, const std::string& name, const IInterface* parent) : - AthAlgTool(type, name, parent) + AthAlgTool(type, name, parent), + m_streamer(((m_version == 0) ? "AthenaOutputStreamTool" : "AthenaPoolOutputStreamTool"), this), + m_IOVDbSvc("IOVDbSvc", "SCTCalibWriteTool") +{ +} + +/////////////////////////////////////////////////////////////////////////////////////////// + +SCTCalibWriteTool::~SCTCalibWriteTool() { } @@ -74,7 +82,11 @@ SCTCalibWriteTool::queryInterface(const InterfaceID& riid, void** ppvIF) /////////////////////////////////////////////////////////////////////////////////////////// StatusCode -SCTCalibWriteTool::initialize() { +SCTCalibWriteTool::initialize() +{ + + ATH_MSG_DEBUG("in SCTCalibWriteTool::initialize start"); + if (detStore()->retrieve(m_pHelper,"SCT_ID").isFailure()) { ATH_MSG_ERROR("SCT mgr failed to retrieve"); return StatusCode::FAILURE; @@ -98,12 +110,17 @@ SCTCalibWriteTool::initialize() { // Get the IOVRegistrationSvc when needed if (m_regIOV) { + if (service("IOVRegistrationSvc", m_regSvc).isFailure()) { ATH_MSG_ERROR("Unable to find IOVRegistrationSvc "); return StatusCode::FAILURE; } } - + + // Retrieve IOVDb service + if (m_IOVDbSvc.retrieve().isFailure()) + return msg(MSG:: ERROR)<< "Failed to retrieve IOVDbSvc " << endmsg, StatusCode::FAILURE; + return StatusCode::SUCCESS; } @@ -111,6 +128,17 @@ SCTCalibWriteTool::initialize() { StatusCode SCTCalibWriteTool::finalize() { + ATH_MSG_DEBUG("SCTCalibWriteTool::finalize"); + if (!m_attrListColl.release()) { + return StatusCode::FAILURE; + } + if (!m_streamer.release().isSuccess()) { + return StatusCode::FAILURE; + } + if (!m_IOVDbSvc.release().isSuccess()) { + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Thank you for using the SCTCalibWriteTool"); return StatusCode::SUCCESS; } @@ -207,12 +235,12 @@ SCTCalibWriteTool::createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe Cond StatusCode SCTCalibWriteTool::createListStrip ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used. - (const Identifier& wafer_id, - const SCT_ID* sctId, - const int samplesize, - const std::string& defectType, - const float threshold, - const std::string& defectList) const +(const Identifier& wafer_id, + const SCT_ID* sctId, + const int samplesize, + const std::string& defectType, + const float threshold, + const std::string& defectList) const { if (!m_writeCondObjs) { return StatusCode::SUCCESS; @@ -236,7 +264,7 @@ SCTCalibWriteTool::createListStrip ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAt std::ostringstream attrStr2; attrList0.toOutputStream(attrStr2); m_attrListColl_deadStrip->add(wafer_id.get_identifier32().get_compact(), attrList0); - ATH_MSG_INFO("createListStrip: return StatusCode::SUCCESS"); + //ATH_MSG_INFO("createListStrip: return StatusCode::SUCCESS"); return StatusCode::SUCCESS; } @@ -480,8 +508,11 @@ SCTCalibWriteTool::stringToInt(const std::string& s) const { StatusCode SCTCalibWriteTool::wrapUpNoisyChannel() { + ATH_MSG_DEBUG("wrapUpNoisyChannel: start"); if (recordAndStream(m_attrListColl.get(), s_defectFolderName, m_defectRecorded).isFailure()) return StatusCode::FAILURE; + ATH_MSG_DEBUG("wrapUpNoisyChannel: middle"); if (registerCondObjectsWithErrMsg(s_defectFolderName, m_tagID4NoisyStrips).isFailure()) return StatusCode::FAILURE; + ATH_MSG_DEBUG("wrapUpNoisyChannel: end"); return StatusCode::SUCCESS; } @@ -552,26 +583,31 @@ SCTCalibWriteTool::wrapUpLorentzAngle() { StatusCode SCTCalibWriteTool::streamOutCondObjects(const std::string& foldername) { + ATH_MSG_DEBUG("streamOutCondObjects: before connectOutput" << m_streamName); if (m_streamer->connectOutput(m_streamName).isFailure()) { ATH_MSG_ERROR("Could not connect stream to output"); return( StatusCode::FAILURE); } IAthenaOutputStreamTool::TypeKeyPairs typeKeys{1}; + ATH_MSG_DEBUG("streamOutCondObjects: before m_readWriteCool"); if (m_readWriteCool) { - IAthenaOutputStreamTool::TypeKeyPair - attrCollPair{"CondAttrListCollection", foldername}; + //ATH_MSG_DEBUG("before CondAttrListCollection " << foldername); + IAthenaOutputStreamTool::TypeKeyPair attrCollPair{"CondAttrListCollection", foldername}; typeKeys[0] = attrCollPair; } + ATH_MSG_DEBUG("streamOutCondObjects: before streamObjects"); if (m_streamer->streamObjects(typeKeys).isFailure()) { ATH_MSG_ERROR("Could not stream out AttributeLists"); return StatusCode::FAILURE; } + ATH_MSG_DEBUG("streamOutCondObjects: before commitOutput"); if (m_streamer->commitOutput().isFailure()) { ATH_MSG_ERROR("Could not commit output stream"); return StatusCode::FAILURE; } + ATH_MSG_DEBUG("streamOutCondObjects: before return"); return StatusCode::SUCCESS; } @@ -579,8 +615,9 @@ SCTCalibWriteTool::streamOutCondObjects(const std::string& foldername) { StatusCode SCTCalibWriteTool::streamOutCondObjectsWithErrMsg(const std::string& foldername) { + ATH_MSG_DEBUG("streamOutCondObjectsWithErrMsg: foldername " << foldername); if (streamOutCondObjects(foldername).isFailure()) { - ATH_MSG_ERROR("Could create conditions object " << foldername); + ATH_MSG_ERROR("Could not create conditions object " << foldername); return StatusCode::FAILURE; } return StatusCode::SUCCESS; @@ -591,6 +628,7 @@ SCTCalibWriteTool::streamOutCondObjectsWithErrMsg(const std::string& foldername) StatusCode SCTCalibWriteTool::registerCondObjects(const std::string& foldername,const std::string& tagname) const { // Register the IOV DB with the conditions data written out + ATH_MSG_DEBUG("registerCondObjects start"); if (m_readWriteCool) { // Can only write out AttrList's if this is NOT write and reg in two steps if (!m_twoStepWriteReg) { @@ -602,8 +640,9 @@ SCTCalibWriteTool::registerCondObjects(const std::string& foldername,const std:: if (!m_manualiov) { SG::ReadHandle<EventInfo> evt{m_eventInfoKey}; + ATH_MSG_DEBUG("registerCondObjects: before get EventInfo"); if (not evt.isValid()) { - ATH_MSG_ERROR("Unable to get the EventInfo"); + ATH_MSG_ERROR("registerCondObjects: Unable to get the EventInfo"); return StatusCode::FAILURE; } @@ -619,17 +658,28 @@ SCTCalibWriteTool::registerCondObjects(const std::string& foldername,const std:: unsigned int beginLB{IOVTime::MINEVENT}; unsigned int endLB{IOVTime::MAXEVENT}; + ATH_MSG_DEBUG("registerCondObjects: registerCondObjects middle"); + if (not tagname.empty()) { + ATH_MSG_DEBUG("registerCondObjects: registerCondObjects before registerIOV 1"); + ATH_MSG_DEBUG("registerCondObjects: foldername, tagname, beginRun, endRun, beginLB, endLB: " << foldername << ", " << tagname << ", " << beginRun << ", " << endRun << ", " << beginLB << ", " << endLB); sc = m_regSvc->registerIOV("CondAttrListCollection", foldername, tagname, beginRun, endRun, beginLB, endLB); + ATH_MSG_DEBUG("registerCondObjects after registerIOV 1"); } else { + ATH_MSG_DEBUG("registerCondObjects before registerIOV 2"); + ATH_MSG_DEBUG("registerCondObjects: foldername, beginRun, endRun, beginLB, endLB: " << foldername << ", " << beginRun << ", " << endRun << ", " << beginLB << ", " << endLB); sc = m_regSvc->registerIOV("CondAttrListCollection", foldername, "", beginRun, endRun, beginLB, endLB); + ATH_MSG_DEBUG("registerCondObjects after registerIOV 2"); } if (sc.isFailure()) { - ATH_MSG_ERROR("Could not register in IOV DB for CondAttrListCollection"); + ATH_MSG_ERROR("registerCondObjects: Could not register in IOV DB for CondAttrListCollection"); return StatusCode::FAILURE; } } } + + ATH_MSG_DEBUG("registerCondObjects end"); + return StatusCode::SUCCESS; } @@ -639,7 +689,7 @@ StatusCode SCTCalibWriteTool::registerCondObjectsWithErrMsg(const std::string& foldername,const std::string& tagname) const { if (m_regIOV) { if (registerCondObjects(foldername,tagname).isFailure()) { - ATH_MSG_ERROR("Could not register " << foldername); + ATH_MSG_ERROR("registerCondObjectsWithErrMsg: Could not register " << foldername); return StatusCode::FAILURE; } } @@ -650,14 +700,18 @@ SCTCalibWriteTool::registerCondObjectsWithErrMsg(const std::string& foldername,c StatusCode SCTCalibWriteTool::recordAndStream(const CondAttrListCollection* pCollection,const std::string& foldername, bool& flag) { + ATH_MSG_DEBUG("recordAndStream start " << foldername); if (m_writeCondObjs) { + ATH_MSG_DEBUG("recordAndStream middle "); if (detStore()->record(pCollection, foldername).isFailure()) { ATH_MSG_ERROR("Could not record "<<foldername); return StatusCode::FAILURE; } flag=true; + ATH_MSG_DEBUG("recordAndStream middle 2"); if (streamOutCondObjectsWithErrMsg(s_defectFolderName).isFailure()) return StatusCode::FAILURE; } + ATH_MSG_DEBUG("recordAndStream end "); return StatusCode::SUCCESS; } diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx index 3336efc690b59cd100b436ffaef5952666219a9f..775f5f10382bb4b5bdbf1d9a9ad35a82bac57db1 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx @@ -115,11 +115,21 @@ SCT_CalibEventInfo::setRunNumber(const int rn) { m_runNumber = rn; } +void +SCT_CalibEventInfo::setEventNumber(const int en) { + m_eventNumber = en; +} + int SCT_CalibEventInfo::runNumber() const { return m_runNumber; } +int +SCT_CalibEventInfo::eventNumber() const { + return m_eventNumber; +} + void SCT_CalibEventInfo::setCounter(const int counterVal) { m_counter = counterVal; diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h index 90a41d23c9c26cfb66320ea775235e8e2a76db49..32c6508f9f6d53ef097f6480a6db17e1dee7ab5e 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h @@ -53,7 +53,9 @@ class SCT_CalibEventInfo: public extends<AthAlgTool, ISCT_CalibEvtInfo> virtual int numLumiBlocks() const; virtual void setRunNumber(const int rn); + virtual void setEventNumber(const int en); virtual int runNumber() const; + virtual int eventNumber() const; virtual void setCounter(const int counterVal); virtual void incrementCounter(); @@ -76,6 +78,7 @@ class SCT_CalibEventInfo: public extends<AthAlgTool, ISCT_CalibEvtInfo> // int m_runNumber{0}; + int m_eventNumber{0}; int m_lumiBlock{0}; int m_timeStamp{0}; int m_bunchCrossing{0};