diff --git a/GaudiExamples/options/AlgToolsClone.py b/GaudiExamples/options/AlgToolsClone.py index 0549ad0b2b94c72204de1cbc697b91f84f2da9f1..326b9ddf24eee21de6291d3851e46a0a2255e1a1 100644 --- a/GaudiExamples/options/AlgToolsClone.py +++ b/GaudiExamples/options/AlgToolsClone.py @@ -9,8 +9,7 @@ GaudiExamplesCommonConf() myalg = MyAlgorithm('MyAlg', PrivateToolsOnly = True, - Cardinality = 20, - IsClonable = True) + Cardinality = 20) ToolSvc(OutputLevel = INFO ) diff --git a/GaudiExamples/options/AsyncIncidents.py b/GaudiExamples/options/AsyncIncidents.py index 3e1896c036c2e3a1d6a2b539e27ff1f8e3f96a04..b0c4b76019f2b5214f01a95e4820fd9d4363aaf6 100644 --- a/GaudiExamples/options/AsyncIncidents.py +++ b/GaudiExamples/options/AsyncIncidents.py @@ -53,14 +53,12 @@ AITestSvc2=IncidentAsyncTestSvc("IncidentAwareService2", Priority=1) AITestAlg1=IncidentAsyncTestAlg("IncidentAwareTestAlg1", ServiceName="IncidentAwareService1", - IsClonable=True, Cardinality=5, inpKeys=['/Event/DAQ/ODIN'] ) AITestAlg2=IncidentAsyncTestAlg("IncidentAwareTestAlg2", ServiceName="IncidentAwareService2", - IsClonable=False, Cardinality=1, inpKeys=['/Event/Hlt/DecReports'] ) diff --git a/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py b/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py index 5c5ec7da9b30869359c94672c7b0f563e73b031f..b736302210f60533a9ff410aa5caa4fd3e6e9c52 100644 --- a/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py +++ b/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py @@ -41,13 +41,11 @@ product_name="MyCollision" writer = WriteHandleAlg("Writer", OutputLevel=DEBUG, - UseHandle=True, - IsClonable=True) + UseHandle=True) writer.Output.Path = "/Event/"+product_name reader = ReadHandleAlg("Reader", - OutputLevel=DEBUG, - IsClonable=True) + OutputLevel=DEBUG) reader.Input.Path = product_name diff --git a/GaudiExamples/src/AlgTools/MyAlgorithm.h b/GaudiExamples/src/AlgTools/MyAlgorithm.h index 4caf912b48fc5db4ae54a213cdf19fa24d7992dc..d55f60413675eb2f6a7dd79728280634957d40b4 100644 --- a/GaudiExamples/src/AlgTools/MyAlgorithm.h +++ b/GaudiExamples/src/AlgTools/MyAlgorithm.h @@ -25,6 +25,8 @@ public: StatusCode execute() override; StatusCode finalize() override; + bool isClonable() const override { return true; } + private: Gaudi::Property<std::string> m_privateToolType{this, "ToolWithName", "MyTool", "Type of the tool to use (internal name is ToolWithName)"}; diff --git a/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h b/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h index 84eb86083a6b8abcd52e3b6dd15e0436234eb911..8782616ecb40d3ff7d3ecd90ff5f26e8847c96a9 100644 --- a/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h +++ b/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h @@ -26,6 +26,8 @@ public: StatusCode execute() override; StatusCode finalize() override; + bool isClonable() const override { return true; } + private: Gaudi::Property<std::string> m_privateToolType{this, "ToolWithName", "MyTool", "Type of the tool to use (internal name is ToolWithName)"}; diff --git a/GaudiExamples/src/IO/ReadHandleAlg.h b/GaudiExamples/src/IO/ReadHandleAlg.h index 2c45d44aea46157762c21fc8e3ba9e74fc1157aa..84e22642fe8437c71ecdd86de579eb2572329e1d 100644 --- a/GaudiExamples/src/IO/ReadHandleAlg.h +++ b/GaudiExamples/src/IO/ReadHandleAlg.h @@ -26,6 +26,8 @@ public: /// Constructor: A constructor of this form must be provided. ReadHandleAlg(const std::string& nam, ISvcLocator* pSvc); + bool isClonable() const override { return true; } + /// Standard Destructor ~ReadHandleAlg() override = default; diff --git a/GaudiExamples/src/IO/WriteHandleAlg.h b/GaudiExamples/src/IO/WriteHandleAlg.h index bd919169a2e6c19f22a9413dbea77be535c88e50..96aec44025e5afc68db9de7aea70e0ec6c13d435 100644 --- a/GaudiExamples/src/IO/WriteHandleAlg.h +++ b/GaudiExamples/src/IO/WriteHandleAlg.h @@ -20,6 +20,7 @@ class WriteHandleAlg : public GaudiAlgorithm { friend class AlgFactory<WriteHandleAlg> ; public: + bool isClonable() const override { return true; } /// the execution of the algorithm StatusCode execute () override ; // the execution of the algorithm diff --git a/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h b/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h index ee76618b2263587418e8c0b9d075395f9ad96266..6ee0a69493a9179ca95a5a57f7928ba06456acd8 100644 --- a/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h +++ b/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h @@ -18,6 +18,8 @@ public: StatusCode execute() override; StatusCode finalize() override; + bool isClonable() const override { return true; } + static std::string& incident(); private: diff --git a/GaudiExamples/tests/qmtest/refs/Aida2Root.ref b/GaudiExamples/tests/qmtest/refs/Aida2Root.ref index f472f86352ef01ec8369ad63c43f778af6f3c718..b6f0df6282eb3960bb5426feece7e01dc8377ac2 100644 --- a/GaudiExamples/tests/qmtest/refs/Aida2Root.ref +++ b/GaudiExamples/tests/qmtest/refs/Aida2Root.ref @@ -31,7 +31,7 @@ ApplicationMgr INFO Application Manager Configured successfully SimpleHistos DEBUG Property update for OutputLevel : new value = 2 SimpleHistos DEBUG Initialize base class GaudiCommon<Algorithm> SimpleHistos DEBUG could not locate CounterSummarySvc, no counter summary will be made -SimpleHistos DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos #properties = 51 +SimpleHistos DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos #properties = 50 SimpleHistos DEBUG Property ['Name': Value] = 'AutoStringIDPurgeMap':{ '/' : '=SLASH=' } SimpleHistos DEBUG Property ['Name': Value] = 'UseSequencialNumericAutoIDs':False SimpleHistos DEBUG Property ['Name': Value] = 'HeaderFor1DHistoTable':| Title | # | Mean | RMS | Skewness | Kurtosis | @@ -64,7 +64,6 @@ SimpleHistos DEBUG Property ['Name': Value] = 'ErrorsPrint':True SimpleHistos DEBUG Property ['Name': Value] = 'IsIOBound':False SimpleHistos DEBUG Property ['Name': Value] = 'NeededResources':[ ] SimpleHistos DEBUG Property ['Name': Value] = 'Cardinality':1 -SimpleHistos DEBUG Property ['Name': Value] = 'IsClonable':False SimpleHistos DEBUG Property ['Name': Value] = 'RegisterForContextService':True SimpleHistos DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc SimpleHistos DEBUG Property ['Name': Value] = 'Timeline':False @@ -94,7 +93,7 @@ SimpleHistos DEBUG GaudiHistoAlgorithm:: The histogram path is set to be SimpleHistos DEBUG input handles: 0 SimpleHistos DEBUG output handles: 0 SimpleHistos DEBUG Data Deps for SimpleHistos -Histos2 SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2 #properties = 53 +Histos2 SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2 #properties = 52 Histos2 SUCCESS Property ['Name': Value] = 'Histo2':('',-5.00000,5.00000,200) Histos2 SUCCESS Property ['Name': Value] = 'Histo1':('Histogram1',-3.00000,3.00000,200) Histos2 SUCCESS Property ['Name': Value] = 'AutoStringIDPurgeMap':{ '/' : '=SLASH=' } @@ -129,7 +128,6 @@ Histos2 SUCCESS Property ['Name': Value] = 'ErrorsPrint':True Histos2 SUCCESS Property ['Name': Value] = 'IsIOBound':False Histos2 SUCCESS Property ['Name': Value] = 'NeededResources':[ ] Histos2 SUCCESS Property ['Name': Value] = 'Cardinality':1 -Histos2 SUCCESS Property ['Name': Value] = 'IsClonable':False Histos2 SUCCESS Property ['Name': Value] = 'RegisterForContextService':True Histos2 SUCCESS Property ['Name': Value] = 'MonitorService':MonitorSvc Histos2 SUCCESS Property ['Name': Value] = 'Timeline':False @@ -148,7 +146,7 @@ Histos2 SUCCESS Property ['Name': Value] = 'Enable':True Histos2 SUCCESS Property ['Name': Value] = 'OutputLevel':3 Histos2 SUCCESS Property ['Name': Value] = 'ExtraOutputs':[] Histos2 SUCCESS Property ['Name': Value] = 'ExtraInputs':[] -Aida2Root SUCCESS List of ALL properties of Aida2Root/Aida2Root #properties = 56 +Aida2Root SUCCESS List of ALL properties of Aida2Root/Aida2Root #properties = 55 Aida2Root SUCCESS Property ['Name': Value] = 'Profs2D':[ 'SimpleHistos/321' , 'SimpleHistos/2dprof' ] Aida2Root SUCCESS Property ['Name': Value] = 'Profs1D':[ 'SimpleHistos/Expo V Gauss 1DProf' ] Aida2Root SUCCESS Property ['Name': Value] = 'Histos3D':[ 'SimpleHistos/3D plot AutoID' , 'SimpleHistos/3d' ] @@ -186,7 +184,6 @@ Aida2Root SUCCESS Property ['Name': Value] = 'ErrorsPrint':True Aida2Root SUCCESS Property ['Name': Value] = 'IsIOBound':False Aida2Root SUCCESS Property ['Name': Value] = 'NeededResources':[ ] Aida2Root SUCCESS Property ['Name': Value] = 'Cardinality':1 -Aida2Root SUCCESS Property ['Name': Value] = 'IsClonable':False Aida2Root SUCCESS Property ['Name': Value] = 'RegisterForContextService':True Aida2Root SUCCESS Property ['Name': Value] = 'MonitorService':MonitorSvc Aida2Root SUCCESS Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/AlgTools2.ref b/GaudiExamples/tests/qmtest/refs/AlgTools2.ref index bed4f0e3d567434dfc01059c5c363661857c1457..049a920fa7e8a1a41aea4d3e89c052ded2df07f0 100644 --- a/GaudiExamples/tests/qmtest/refs/AlgTools2.ref +++ b/GaudiExamples/tests/qmtest/refs/AlgTools2.ref @@ -34,7 +34,7 @@ StatusCodeSvc INFO initialize MyAlg DEBUG Property update for OutputLevel : new value = 2 MyAlg DEBUG Initialize base class GaudiCommon<Algorithm> MyAlg DEBUG could not locate CounterSummarySvc, no counter summary will be made -MyAlg DEBUG List of ALL properties of MyGaudiAlgorithm/MyAlg #properties = 45 +MyAlg DEBUG List of ALL properties of MyGaudiAlgorithm/MyAlg #properties = 44 MyAlg DEBUG Property ['Name': Value] = 'trackSelection':/Event/MyAnalysis/Tracks MyAlg DEBUG Property ['Name': Value] = 'raw':/Rec/RAW MyAlg DEBUG Property ['Name': Value] = 'hits':/Event/Rec/Hits @@ -61,7 +61,6 @@ MyAlg DEBUG Property ['Name': Value] = 'ErrorsPrint':True MyAlg DEBUG Property ['Name': Value] = 'IsIOBound':False MyAlg DEBUG Property ['Name': Value] = 'NeededResources':[ ] MyAlg DEBUG Property ['Name': Value] = 'Cardinality':1 -MyAlg DEBUG Property ['Name': Value] = 'IsClonable':False MyAlg DEBUG Property ['Name': Value] = 'RegisterForContextService':True MyAlg DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc MyAlg DEBUG Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref index b959f516430b47ae9b0348a54806f52eb12b4ffb..c35831f257af0ef5f43c4b60f5fb7fe20b5adc9a 100644 --- a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref +++ b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref @@ -31,7 +31,7 @@ seq_2 INFO Member list: Prescaler/s2_Prescaler, EventCounter/s2_C s2_Prescaler DEBUG Property update for OutputLevel : new value = 2 s2_Prescaler DEBUG Initialize base class GaudiCommon<Algorithm> s2_Prescaler DEBUG could not locate CounterSummarySvc, no counter summary will be made -s2_Prescaler DEBUG List of ALL properties of Prescaler/s2_Prescaler #properties = 37 +s2_Prescaler DEBUG List of ALL properties of Prescaler/s2_Prescaler #properties = 36 s2_Prescaler DEBUG Property ['Name': Value] = 'PercentPass':75.000000 s2_Prescaler DEBUG Property ['Name': Value] = 'RequireObjects':[ ] s2_Prescaler DEBUG Property ['Name': Value] = 'VetoObjects':[ ] @@ -49,7 +49,6 @@ s2_Prescaler DEBUG Property ['Name': Value] = 'PropertiesPrint':False s2_Prescaler DEBUG Property ['Name': Value] = 'ErrorsPrint':True s2_Prescaler DEBUG Property ['Name': Value] = 'NeededResources':[ ] s2_Prescaler DEBUG Property ['Name': Value] = 'Cardinality':1 -s2_Prescaler DEBUG Property ['Name': Value] = 'IsClonable':False s2_Prescaler DEBUG Property ['Name': Value] = 'RegisterForContextService':True s2_Prescaler DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc s2_Prescaler DEBUG Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref index fbd883aa7b8afa4c55e9c2f0ad3f041123eed650..901cc069e72f4aa2cf5ff8ca29cc30594d72148a 100644 --- a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref +++ b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref @@ -40,7 +40,7 @@ seq_3 INFO Member list: Prescaler/s2_Prescaler, HelloWorld/s2_HW s2_Prescaler DEBUG Property update for OutputLevel : new value = 2 s2_Prescaler DEBUG Initialize base class GaudiCommon<Algorithm> s2_Prescaler DEBUG could not locate CounterSummarySvc, no counter summary will be made -s2_Prescaler DEBUG List of ALL properties of Prescaler/s2_Prescaler #properties = 37 +s2_Prescaler DEBUG List of ALL properties of Prescaler/s2_Prescaler #properties = 36 s2_Prescaler DEBUG Property ['Name': Value] = 'PercentPass':75.000000 s2_Prescaler DEBUG Property ['Name': Value] = 'RequireObjects':[ ] s2_Prescaler DEBUG Property ['Name': Value] = 'VetoObjects':[ ] @@ -58,7 +58,6 @@ s2_Prescaler DEBUG Property ['Name': Value] = 'PropertiesPrint':False s2_Prescaler DEBUG Property ['Name': Value] = 'ErrorsPrint':True s2_Prescaler DEBUG Property ['Name': Value] = 'NeededResources':[ ] s2_Prescaler DEBUG Property ['Name': Value] = 'Cardinality':1 -s2_Prescaler DEBUG Property ['Name': Value] = 'IsClonable':False s2_Prescaler DEBUG Property ['Name': Value] = 'RegisterForContextService':True s2_Prescaler DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc s2_Prescaler DEBUG Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref b/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref index 83ef373b35e703e78e0278cad30d34ba5fdb60c8..029dbd1b95e765750b334b93a756863e8858bb7a 100644 --- a/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref +++ b/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref @@ -30,7 +30,7 @@ RndmGenSvc.Engine INFO Generator engine type:CLHEP::RanluxEngine RndmGenSvc.Engine INFO Current Seed:1234567 Luxury:3 RndmGenSvc INFO Using Random engine:HepRndm::Engine<CLHEP::RanluxEngine> EvtTupleSvc INFO Added stream file:PFN:EvtColsEx.tags as EVTCOLS -Fill SUCCESS List of ALL properties of Gaudi::Examples::EvtColAlg/Fill #properties = 65 +Fill SUCCESS List of ALL properties of Gaudi::Examples::EvtColAlg/Fill #properties = 64 Fill SUCCESS Property ['Name': Value] = 'EvtColDir':Fill Fill SUCCESS Property ['Name': Value] = 'EvtColTopDir': Fill SUCCESS Property ['Name': Value] = 'EvtColLUN':EVTCOLS @@ -77,7 +77,6 @@ Fill SUCCESS Property ['Name': Value] = 'ErrorsPrint':True Fill SUCCESS Property ['Name': Value] = 'IsIOBound':False Fill SUCCESS Property ['Name': Value] = 'NeededResources':[ ] Fill SUCCESS Property ['Name': Value] = 'Cardinality':1 -Fill SUCCESS Property ['Name': Value] = 'IsClonable':False Fill SUCCESS Property ['Name': Value] = 'RegisterForContextService':True Fill SUCCESS Property ['Name': Value] = 'MonitorService':MonitorSvc Fill SUCCESS Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref b/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref index c5869fc909851af1357d27fdf169813639c306ab..9a5dd6ccf42df1fb224d9c1af9c36bacbab1f9aa 100644 --- a/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref +++ b/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref @@ -26,7 +26,7 @@ StatusCodeSvc INFO initialize Test1 DEBUG Property update for OutputLevel : new value = 2 Test1 DEBUG Initialize base class GaudiCommon<Algorithm> Test1 DEBUG could not locate CounterSummarySvc, no counter summary will be made -Test1 DEBUG List of ALL properties of GaudiCommonTests/Test1 #properties = 36 +Test1 DEBUG List of ALL properties of GaudiCommonTests/Test1 #properties = 35 Test1 DEBUG Property ['Name': Value] = 'RequireObjects':[ ] Test1 DEBUG Property ['Name': Value] = 'VetoObjects':[ ] Test1 DEBUG Property ['Name': Value] = 'StatEntityList':[ ] @@ -44,7 +44,6 @@ Test1 DEBUG Property ['Name': Value] = 'ErrorsPrint':True Test1 DEBUG Property ['Name': Value] = 'IsIOBound':False Test1 DEBUG Property ['Name': Value] = 'NeededResources':[ ] Test1 DEBUG Property ['Name': Value] = 'Cardinality':1 -Test1 DEBUG Property ['Name': Value] = 'IsClonable':False Test1 DEBUG Property ['Name': Value] = 'RegisterForContextService':True Test1 DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc Test1 DEBUG Property ['Name': Value] = 'Timeline':False @@ -69,7 +68,7 @@ Test1 DEBUG Data Deps for Test1 Test2 DEBUG Property update for OutputLevel : new value = 2 Test2 DEBUG Initialize base class GaudiCommon<Algorithm> Test2 DEBUG could not locate CounterSummarySvc, no counter summary will be made -Test2 DEBUG List of ALL properties of GaudiCommonTests/Test2 #properties = 36 +Test2 DEBUG List of ALL properties of GaudiCommonTests/Test2 #properties = 35 Test2 DEBUG Property ['Name': Value] = 'RequireObjects':[ ] Test2 DEBUG Property ['Name': Value] = 'VetoObjects':[ ] Test2 DEBUG Property ['Name': Value] = 'StatEntityList':[ ] @@ -87,7 +86,6 @@ Test2 DEBUG Property ['Name': Value] = 'ErrorsPrint':True Test2 DEBUG Property ['Name': Value] = 'IsIOBound':False Test2 DEBUG Property ['Name': Value] = 'NeededResources':[ ] Test2 DEBUG Property ['Name': Value] = 'Cardinality':1 -Test2 DEBUG Property ['Name': Value] = 'IsClonable':False Test2 DEBUG Property ['Name': Value] = 'RegisterForContextService':True Test2 DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc Test2 DEBUG Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/Histograms.ref b/GaudiExamples/tests/qmtest/refs/Histograms.ref index 44389cc1bd3fc8090b161fe243b97e84db3ea85d..ce7626988aa7e5b1b18bd669fe26b966d379da36 100644 --- a/GaudiExamples/tests/qmtest/refs/Histograms.ref +++ b/GaudiExamples/tests/qmtest/refs/Histograms.ref @@ -29,7 +29,7 @@ ApplicationMgr INFO Application Manager Configured successfully SimpleHistos DEBUG Property update for OutputLevel : new value = 2 SimpleHistos DEBUG Initialize base class GaudiCommon<Algorithm> SimpleHistos DEBUG could not locate CounterSummarySvc, no counter summary will be made -SimpleHistos DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos #properties = 51 +SimpleHistos DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos #properties = 50 SimpleHistos DEBUG Property ['Name': Value] = 'AutoStringIDPurgeMap':{ '/' : '=SLASH=' } SimpleHistos DEBUG Property ['Name': Value] = 'UseSequencialNumericAutoIDs':False SimpleHistos DEBUG Property ['Name': Value] = 'HeaderFor1DHistoTable':| Title | # | Mean | RMS | Skewness | Kurtosis | @@ -62,7 +62,6 @@ SimpleHistos DEBUG Property ['Name': Value] = 'ErrorsPrint':True SimpleHistos DEBUG Property ['Name': Value] = 'IsIOBound':False SimpleHistos DEBUG Property ['Name': Value] = 'NeededResources':[ ] SimpleHistos DEBUG Property ['Name': Value] = 'Cardinality':1 -SimpleHistos DEBUG Property ['Name': Value] = 'IsClonable':False SimpleHistos DEBUG Property ['Name': Value] = 'RegisterForContextService':True SimpleHistos DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc SimpleHistos DEBUG Property ['Name': Value] = 'Timeline':False @@ -92,7 +91,7 @@ SimpleHistos DEBUG GaudiHistoAlgorithm:: The histogram path is set to be SimpleHistos DEBUG input handles: 0 SimpleHistos DEBUG output handles: 0 SimpleHistos DEBUG Data Deps for SimpleHistos -Histos2 SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2 #properties = 53 +Histos2 SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2 #properties = 52 Histos2 SUCCESS Property ['Name': Value] = 'Histo2':('',-5.00000,5.00000,200) Histos2 SUCCESS Property ['Name': Value] = 'Histo1':('Histogram1',-3.00000,3.00000,200) Histos2 SUCCESS Property ['Name': Value] = 'AutoStringIDPurgeMap':{ '/' : '=SLASH=' } @@ -127,7 +126,6 @@ Histos2 SUCCESS Property ['Name': Value] = 'ErrorsPrint':True Histos2 SUCCESS Property ['Name': Value] = 'IsIOBound':False Histos2 SUCCESS Property ['Name': Value] = 'NeededResources':[ ] Histos2 SUCCESS Property ['Name': Value] = 'Cardinality':1 -Histos2 SUCCESS Property ['Name': Value] = 'IsClonable':False Histos2 SUCCESS Property ['Name': Value] = 'RegisterForContextService':True Histos2 SUCCESS Property ['Name': Value] = 'MonitorService':MonitorSvc Histos2 SUCCESS Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref b/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref index 80ec6fccc6c10498f173865c3a1609ab40647df0..9955b41d3caf18fb44ee9d7d52b708718064e31a 100644 --- a/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref +++ b/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref @@ -35,7 +35,7 @@ EventAlgs INFO Member list: Gaudi::Examples::ExtendedEvtCol/Fill RndmGenSvc.Engine INFO Generator engine type:CLHEP::RanluxEngine RndmGenSvc.Engine INFO Current Seed:1234567 Luxury:3 RndmGenSvc INFO Using Random engine:HepRndm::Engine<CLHEP::RanluxEngine> -Fill SUCCESS List of ALL properties of Gaudi::Examples::ExtendedEvtCol/Fill #properties = 66 +Fill SUCCESS List of ALL properties of Gaudi::Examples::ExtendedEvtCol/Fill #properties = 65 Fill SUCCESS Property ['Name': Value] = 'Tracks':MyTracks Fill SUCCESS Property ['Name': Value] = 'EvtColDir':Fill Fill SUCCESS Property ['Name': Value] = 'EvtColTopDir': @@ -83,7 +83,6 @@ Fill SUCCESS Property ['Name': Value] = 'ErrorsPrint':True Fill SUCCESS Property ['Name': Value] = 'IsIOBound':False Fill SUCCESS Property ['Name': Value] = 'NeededResources':[ ] Fill SUCCESS Property ['Name': Value] = 'Cardinality':1 -Fill SUCCESS Property ['Name': Value] = 'IsClonable':False Fill SUCCESS Property ['Name': Value] = 'RegisterForContextService':True Fill SUCCESS Property ['Name': Value] = 'MonitorService':MonitorSvc Fill SUCCESS Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref b/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref index fc86bc0608300b04a38de20122e9129910f8b267..dd09616947a0dcb4916634c67e638d5c96de29c1 100644 --- a/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref +++ b/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref @@ -30,7 +30,7 @@ StatusCodeSvc INFO initialize Test1 DEBUG Property update for OutputLevel : new value = 2 Test1 DEBUG Initialize base class GaudiCommon<Algorithm> Test1 DEBUG could not locate CounterSummarySvc, no counter summary will be made -Test1 DEBUG List of ALL properties of GaudiCommonTests/Test1 #properties = 36 +Test1 DEBUG List of ALL properties of GaudiCommonTests/Test1 #properties = 35 Test1 DEBUG Property ['Name': Value] = 'RequireObjects':[ ] Test1 DEBUG Property ['Name': Value] = 'VetoObjects':[ ] Test1 DEBUG Property ['Name': Value] = 'StatEntityList':[ ] @@ -48,7 +48,6 @@ Test1 DEBUG Property ['Name': Value] = 'ErrorsPrint':True Test1 DEBUG Property ['Name': Value] = 'IsIOBound':False Test1 DEBUG Property ['Name': Value] = 'NeededResources':[ ] Test1 DEBUG Property ['Name': Value] = 'Cardinality':1 -Test1 DEBUG Property ['Name': Value] = 'IsClonable':False Test1 DEBUG Property ['Name': Value] = 'RegisterForContextService':True Test1 DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc Test1 DEBUG Property ['Name': Value] = 'Timeline':False @@ -73,7 +72,7 @@ Test1 DEBUG Data Deps for Test1 Test2 DEBUG Property update for OutputLevel : new value = 2 Test2 DEBUG Initialize base class GaudiCommon<Algorithm> Test2 DEBUG could not locate CounterSummarySvc, no counter summary will be made -Test2 DEBUG List of ALL properties of GaudiCommonTests/Test2 #properties = 36 +Test2 DEBUG List of ALL properties of GaudiCommonTests/Test2 #properties = 35 Test2 DEBUG Property ['Name': Value] = 'RequireObjects':[ ] Test2 DEBUG Property ['Name': Value] = 'VetoObjects':[ ] Test2 DEBUG Property ['Name': Value] = 'StatEntityList':[ ] @@ -91,7 +90,6 @@ Test2 DEBUG Property ['Name': Value] = 'ErrorsPrint':True Test2 DEBUG Property ['Name': Value] = 'IsIOBound':False Test2 DEBUG Property ['Name': Value] = 'NeededResources':[ ] Test2 DEBUG Property ['Name': Value] = 'Cardinality':1 -Test2 DEBUG Property ['Name': Value] = 'IsClonable':False Test2 DEBUG Property ['Name': Value] = 'RegisterForContextService':True Test2 DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc Test2 DEBUG Property ['Name': Value] = 'Timeline':False diff --git a/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref b/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref index e1dc71b7dbaadf670f27c43f00ba9947a5bf871e..e68103358ccd3651d1ec49e08275e1b26015f69b 100644 --- a/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref +++ b/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref @@ -72,7 +72,7 @@ TimelineSvc DEBUG initialize DataCreator VERBOSE ServiceLocatorHelper::service: found service TimelineSvc DataCreator DEBUG Initialize base class GaudiCommon<Algorithm> DataCreator DEBUG could not locate CounterSummarySvc, no counter summary will be made -DataCreator DEBUG List of ALL properties of GaudiTesting::PutDataObjectAlg/DataCreator #properties = 38 +DataCreator DEBUG List of ALL properties of GaudiTesting::PutDataObjectAlg/DataCreator #properties = 37 DataCreator DEBUG Property ['Name': Value] = 'DataSvc':EventDataSvc DataCreator DEBUG Property ['Name': Value] = 'Paths':[ 'A' , 'B' , 'C' , 'D' ] DataCreator DEBUG Property ['Name': Value] = 'RequireObjects':[ ] @@ -92,7 +92,6 @@ DataCreator DEBUG Property ['Name': Value] = 'ErrorsPrint':True DataCreator DEBUG Property ['Name': Value] = 'IsIOBound':False DataCreator DEBUG Property ['Name': Value] = 'NeededResources':[ ] DataCreator DEBUG Property ['Name': Value] = 'Cardinality':1 -DataCreator DEBUG Property ['Name': Value] = 'IsClonable':False DataCreator DEBUG Property ['Name': Value] = 'RegisterForContextService':True DataCreator DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc DataCreator DEBUG Property ['Name': Value] = 'Timeline':False @@ -124,7 +123,7 @@ OddEvents VERBOSE ServiceLocatorHelper::service: found service EventData OddEvents VERBOSE ServiceLocatorHelper::service: found service TimelineSvc OddEvents DEBUG Initialize base class GaudiCommon<Algorithm> OddEvents DEBUG could not locate CounterSummarySvc, no counter summary will be made -OddEvents DEBUG List of ALL properties of GaudiTesting::OddEventsFilter/OddEvents #properties = 36 +OddEvents DEBUG List of ALL properties of GaudiTesting::OddEventsFilter/OddEvents #properties = 35 OddEvents DEBUG Property ['Name': Value] = 'RequireObjects':[ ] OddEvents DEBUG Property ['Name': Value] = 'VetoObjects':[ ] OddEvents DEBUG Property ['Name': Value] = 'StatEntityList':[ ] @@ -142,7 +141,6 @@ OddEvents DEBUG Property ['Name': Value] = 'ErrorsPrint':True OddEvents DEBUG Property ['Name': Value] = 'IsIOBound':False OddEvents DEBUG Property ['Name': Value] = 'NeededResources':[ ] OddEvents DEBUG Property ['Name': Value] = 'Cardinality':1 -OddEvents DEBUG Property ['Name': Value] = 'IsClonable':False OddEvents DEBUG Property ['Name': Value] = 'RegisterForContextService':True OddEvents DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc OddEvents DEBUG Property ['Name': Value] = 'Timeline':False @@ -172,7 +170,7 @@ EvenEvents VERBOSE ServiceLocatorHelper::service: found service EventData EvenEvents VERBOSE ServiceLocatorHelper::service: found service TimelineSvc EvenEvents DEBUG Initialize base class GaudiCommon<Algorithm> EvenEvents DEBUG could not locate CounterSummarySvc, no counter summary will be made -EvenEvents DEBUG List of ALL properties of GaudiTesting::EvenEventsFilter/EvenEvents #properties = 36 +EvenEvents DEBUG List of ALL properties of GaudiTesting::EvenEventsFilter/EvenEvents #properties = 35 EvenEvents DEBUG Property ['Name': Value] = 'RequireObjects':[ ] EvenEvents DEBUG Property ['Name': Value] = 'VetoObjects':[ ] EvenEvents DEBUG Property ['Name': Value] = 'StatEntityList':[ ] @@ -190,7 +188,6 @@ EvenEvents DEBUG Property ['Name': Value] = 'ErrorsPrint':True EvenEvents DEBUG Property ['Name': Value] = 'IsIOBound':False EvenEvents DEBUG Property ['Name': Value] = 'NeededResources':[ ] EvenEvents DEBUG Property ['Name': Value] = 'Cardinality':1 -EvenEvents DEBUG Property ['Name': Value] = 'IsClonable':False EvenEvents DEBUG Property ['Name': Value] = 'RegisterForContextService':True EvenEvents DEBUG Property ['Name': Value] = 'MonitorService':MonitorSvc EvenEvents DEBUG Property ['Name': Value] = 'Timeline':False diff --git a/GaudiHive/options/ReadAndWriteWhiteBoard.py b/GaudiHive/options/ReadAndWriteWhiteBoard.py index 64160094dd69ca662d0cce0bedeca3214e8d712c..391d0d21281dceb591f5c99bd0708d8575987ce6 100644 --- a/GaudiHive/options/ReadAndWriteWhiteBoard.py +++ b/GaudiHive/options/ReadAndWriteWhiteBoard.py @@ -34,7 +34,6 @@ loader = HiveReadAlgorithm("Loader", ) reader = ReadHandleAlg ("Reader", - IsClonable=True, OutputLevel=INFO, NeededResources=["ROOTIO"]) reader.Input.Path=product_name diff --git a/GaudiHive/src/AlgResourcePool.cpp b/GaudiHive/src/AlgResourcePool.cpp index 810c096da750b41a8f4a3adaea5cbb9cfd7177db..49fa6c4d942ad255e72ff8d8c7b1b5b39f74de25 100644 --- a/GaudiHive/src/AlgResourcePool.cpp +++ b/GaudiHive/src/AlgResourcePool.cpp @@ -337,7 +337,26 @@ StatusCode AlgResourcePool::decodeTopAlgs() { queue->push(ialgo); m_algList.push_back(ialgo); - m_n_of_allowed_instances[algo_id] = ialgo->cardinality(); + if (ialgo->isClonable()) { + m_n_of_allowed_instances[algo_id] = ialgo->cardinality(); + } else { + if (ialgo->cardinality() == 1) { + m_n_of_allowed_instances[algo_id] = 1; + } else { + if (! m_overrideUnClonable) { + info() << "Algorithm " << ialgo->name() + << " is un-Clonable but Cardinality was set to " + << ialgo->cardinality() + << ". Only creating 1 instance" << endmsg; + m_n_of_allowed_instances[algo_id] = 1; + } else { + warning() << "Overriding UnClonability of Algorithm " + << ialgo->name() << ". Setting Cardinality to " + << ialgo->cardinality() << endmsg; + m_n_of_allowed_instances[algo_id] = ialgo->cardinality(); + } + } + } m_n_of_created_instances[algo_id] = 1; state_type requirements(0); @@ -357,7 +376,7 @@ StatusCode AlgResourcePool::decodeTopAlgs() { // potentially create clones; if not lazy creation we have to do it now if (!m_lazyCreation) { - for (unsigned int i =1, end =ialgo->cardinality();i<end; ++i){ + for (unsigned int i =1, end =m_n_of_allowed_instances[algo_id];i<end; ++i){ debug() << "type/name to create clone of: " << item_type << "/" << item_name << endmsg; IAlgorithm* ialgoClone(nullptr); diff --git a/GaudiHive/src/AlgResourcePool.h b/GaudiHive/src/AlgResourcePool.h index a7a2773cb0caa078e2ca3f0ed07d697c38119792..41dda85359280aa211e1759bcc12676a89ac6d11 100644 --- a/GaudiHive/src/AlgResourcePool.h +++ b/GaudiHive/src/AlgResourcePool.h @@ -81,6 +81,8 @@ private: Gaudi::Property<bool> m_lazyCreation{this, "CreateLazily", false, ""}; Gaudi::Property<std::vector<std::string>> m_topAlgNames{ this, "TopAlg", {}, "names of the algorithms to be passed to the algorithm manager"}; + Gaudi::Property<bool> m_overrideUnClonable{this, "OverrideUnClonable", false, + "override the Un-Clonability of Algorithms. Use with caution!"}; /// The list of all algorithms created withing the Pool which are not top ListAlg m_algList; diff --git a/GaudiHive/src/CPUCruncher.h b/GaudiHive/src/CPUCruncher.h index b65c3f58e67ff681a7d5531a519c3f2ed403760e..304806757770cdb6229e7899f7ebc4aa7510d640 100644 --- a/GaudiHive/src/CPUCruncher.h +++ b/GaudiHive/src/CPUCruncher.h @@ -22,6 +22,8 @@ class CPUCruncher : public GaudiAlgorithm public: typedef tbb::concurrent_hash_map<std::string, unsigned int> CHM; + bool isClonable() const override { return true; } + /// the execution of the algorithm StatusCode execute() override; /// Its initialization diff --git a/GaudiKernel/GaudiKernel/Algorithm.h b/GaudiKernel/GaudiKernel/Algorithm.h index c1472c47c23b80631ec94da762554f812562ea2b..63351d4fb1b71f9bc670f475cfab4ff35ad5f06b 100644 --- a/GaudiKernel/GaudiKernel/Algorithm.h +++ b/GaudiKernel/GaudiKernel/Algorithm.h @@ -480,8 +480,8 @@ private: void initToolHandles() const; public: - /// Specifies the clonability of the algorithm - bool isClonable() const override { return m_isClonable; } + // /// Specifies the clonability of the algorithm + // bool isClonable() const override { return false; } /// Return the cardinality unsigned int cardinality() const override { return m_cardinality; } @@ -547,7 +547,7 @@ private: protected: /// Hook for for derived classes to provide a custom visitor for data handles. std::unique_ptr<IDataHandleVisitor> m_updateDataHandles; - + private: // Properties Gaudi::Property<int> m_outputLevel{this, "OutputLevel", MSG::NIL, "output level"}; @@ -574,7 +574,6 @@ private: Gaudi::Property<bool> m_registerContext{this, "RegisterForContextService", false, "flag to enforce the registration for Algorithm Context Service"}; - Gaudi::Property<bool> m_isClonable{this, "IsClonable", false, "thread-safe enough for cloning?"}; Gaudi::Property<int> m_cardinality{this, "Cardinality", 1, "how many clones to create - 0 means algo is reentrant"}; Gaudi::Property<std::vector<std::string>> m_neededResources{ this, "NeededResources", {}, "named resources needed during event looping"}; diff --git a/GaudiKernel/GaudiKernel/IAlgorithm.h b/GaudiKernel/GaudiKernel/IAlgorithm.h index beb7de33e9b179a96347b89bb23ac823bed791d0..4e5fcb48b75202acec074ab277307eef52696e75 100644 --- a/GaudiKernel/GaudiKernel/IAlgorithm.h +++ b/GaudiKernel/GaudiKernel/IAlgorithm.h @@ -52,7 +52,7 @@ public: /** Specify if the algorithm is clonable */ - virtual bool isClonable() const = 0; + virtual bool isClonable() const { return false; } /** Cardinality (Maximum number of clones that can exist) * special value 0 means that algorithm is reentrant diff --git a/GaudiKernel/src/Lib/Algorithm.cpp b/GaudiKernel/src/Lib/Algorithm.cpp index 6787c1150f5aa37fe5b1b7bd3ad50ecc4b1ee08f..f83baaad28560777bf61d69c92e4da8343ddf90f 100644 --- a/GaudiKernel/src/Lib/Algorithm.cpp +++ b/GaudiKernel/src/Lib/Algorithm.cpp @@ -150,11 +150,6 @@ StatusCode Algorithm::sysInitialize() sc = StatusCode::FAILURE; } - // Set IsClonable to true if the Cardinality is greater than one - if ( m_cardinality > 1 ) { - m_isClonable = true; - } - algExecStateSvc()->addAlg( this ); //