|
|
Definition at line 68 of file AlgFactory.cxx.
References fAlgHandleList, fConfigRecordIsModified, DbiConfigStream::GetConfigSet(), DynamicPluggableFactory::GetInstance(), gSystem(), DynamicPluggableFactory::IsRegistered(), DynamicPluggableFactory::LendAlg(), DynamicPluggableFactory::LendAlgConfig(), MSG, and Register().
Referenced by AltDeMuxModule::AltDeMuxModule(), BandClusterListModule::BandClusterListModule(), FitTrackSAListModule::BeginJob(), DmxDeMuxFilterModule::BeginJob(), DigitListModule::BeginJob(), AltAlgSliceList::buildCandidates(), AlgEventSRList::BuildEventFromUnassoc(), ThruMuonListModule::Config(), MSTClusterListModule::Config(), FitTrackMSListModule::Config(), FitTrack3ListModule::Config(), FitThruMuonListModule::Config(), FarDetStripListModule::Config(), FarDetSliceListModule::Config(), FarDetShieldPlankListModule::Config(), DigiPairListModule::Config(), CutDigiPairListModule::Config(), Cluster3DModule::Config(), BandClusterListModule::Config(), AtNuFitModule::Config(), AtNuFindModule::Config(), AltModuleStpPatternRec::Config(), AltModuleSliceList::Config(), AlgEventSRList::CreatePrimaryShower(), CutDigiPairListModule::CutDigiPairListModule(), FitTrack3ListModule::DefaultConfig(), FarDetStripListModule::DefaultConfig(), FarDetSliceListModule::DefaultConfig(), FarDetShieldPlankListModule::DefaultConfig(), Cluster3DModule::DefaultConfig(), AtNuFitModule::DefaultConfig(), AtNuFindModule::DefaultConfig(), AltModuleStpPatternRec::DefaultConfig(), AltModuleSliceList::DefaultConfig(), DigiPairListModule::DigiPairListModule(), DmxDeMuxCosmicsModule::DmxDeMuxCosmicsModule(), DmxDeMuxModule::DmxDeMuxModule(), FitThruMuonListModule::FitThruMuonListModule(), main(), AlgEventSRList::MergeShowers(), MSTClusterListModule::MSTClusterListModule(), AlgSliceSRList::PassAll(), TrackSRListModule::Reco(), ThruMuonListModule::Reco(), SuperSliceListModule::Reco(), SubShowerSRListModule::Reco(), StripSRListModule::Reco(), SliceSRListModule::Reco(), SliceFromChopModule::Reco(), ShowerSRListModule::Reco(), ShowerEMListModule::Reco(), ShieldPlankListModule::Reco(), RealCalDetPIDModule::Reco(), MSTClusterListModule::Reco(), FitTrackSRListModule::Reco(), FitTrackSAListModule::Reco(), FitTrackMSListModule::Reco(), FitTrack3ListModule::Reco(), FitThruMuonListModule::Reco(), FitShowerEMListModule::Reco(), FilterDigitListModule::Reco(), FarDetStripListModule::Reco(), FarDetSliceListModule::Reco(), FarDetShieldPlankListModule::Reco(), FarDetEventModule::Reco(), FarDetDataQualityModule::Reco(), EventSRListModule::Reco(), DmxDeMuxFilterModule::Reco(), DmxDeMuxCosmicsModule::Reco(), DigitListModule::Reco(), DigiPairListModule::Reco(), DeMuxDigitListModule::Reco(), CutDigiPairListModule::Reco(), ClusterSRListModule::Reco(), Cluster3DModule::Reco(), ChopModule::Reco(), CalDetSIModule::Reco(), BiggestChopModule::Reco(), BandClusterListModule::Reco(), AtNuFitModule::Reco(), AtNuFindModule::Reco(), AltModuleStpPatternRec::Reco(), AltModuleSliceList::Reco(), AltDeMuxModule::Reco(), AlgEventSRList::ReConstructShowers(), AltAlgStpPatternRecList::RunAlg(), AlgTrackSRList::RunAlg(), AlgTrackAtNuList::RunAlg(), AlgThruMuonList::RunAlg(), AlgThruMuon::RunAlg(), AlgSuperSliceList::RunAlg(), AlgSubShowerSRList::RunAlg(), AlgSliceListFromChopList::RunAlg(), AlgShowerSSList::RunAlg(), AlgShowerSRList::RunAlg(), AlgShowerEMList::RunAlg(), AlgShowerAtNuList::RunAlg(), AlgShieldPlankList::RunAlg(), AlgMCDigitList::RunAlg(), AlgFitTrackSRList::RunAlg(), AlgFitTrackSAList::RunAlg(), AlgFitTrackMSList::RunAlg(), AlgFitTrackAtNuList::RunAlg(), AlgFitTrack3List::RunAlg(), AlgFitThruMuonList::RunAlg(), AlgFitShowerEMList::RunAlg(), AlgFarDetStripList::RunAlg(), AlgFarDetSliceList::RunAlg(), AlgFarDetShieldPlankList::RunAlg(), AlgFarDetDataQuality::RunAlg(), AlgEventSRList::RunAlg(), AlgDigitList::RunAlg(), AlgDigiPairList::RunAlg(), AlgDeMuxDigitList::RunAlg(), AlgClusterSRList::RunAlg(), AlgCluster3DList::RunAlg(), AlgChopListSharp2::RunAlg(), AlgChopListSharp::RunAlg(), AlgChopListPerfectMC::RunAlg(), AlgChopListMitre::RunAlg(), AlgChopListGeneric::RunAlg(), AlgChopListFar::RunAlg(), AlgCaldetDigitList::RunAlg(), AlgAtNuRecoMCTruth::RunAlg(), AlgAtNuReco::RunAlg(), AlgStripSRList::RunAlgFar(), AlgStripSRList::RunAlgMixed(), AlgStripSRList::RunAlgNear(), AlgMSTClusterList::RunAlgOnSlice(), AlgBandClusterList::RunAlgOnSlice(), AlgSliceSRList::SlicetheSnarl(), AlgSliceSRList::SlicetheSnarl_ASAP(), AlgSliceSRList::SlicetheSnarl_MST(), AlgTrackSRList::SpectrometerTracking(), StripSRKeyFromTime(), and ThruMuonListModule::ThruMuonListModule(). 00070 {
00071 const char *algnm = Strip(aalgnm);
00072 const char *cnfnm = Strip(ccnfnm);
00073
00074 TString regstr(algnm);
00075 regstr = regstr + ":" + cnfnm;
00076 AlgHandle *ah = (AlgHandle *)
00077 fAlgHandleList.FindObject(regstr.Data());
00078
00079 if (ah) {
00080 delete [] algnm; delete [] cnfnm;
00081 return *ah;
00082 }
00083
00084 DynamicPluggableFactory &dpf =
00085 DynamicPluggableFactory::GetInstance();
00086
00087 Bool_t ljreg = kFALSE;
00088 if ((ljreg = !dpf.IsRegistered(regstr.Data())))
00089 Register(algnm, cnfnm);
00090 AlgBase &ab = dpf.LendAlg(algnm);
00091 AlgConfig &ac = dpf.LendAlgConfig(regstr.Data());
00092 TRef acr = ∾
00093 ah = new AlgHandle(&ab, acr);
00094
00095 ah->SetName(regstr.Data());
00096 fAlgHandleList.Add(ah);
00097
00098 fConfigRecordIsModified = kTRUE;
00099
00100 if (ljreg) {
00101 TString macroname("DBtxt_");
00102 macroname = macroname + algnm + "_" + cnfnm + ".C";
00103 char *mac = gSystem->Which(gROOT->GetMacroPath(), macroname,
00104 kReadPermission);
00105 if (mac) {
00106 MSG("Alg", Msg::kInfo)
00107 << "AlgFactory: (AlgorithmClass:AlgConfigName) = ("
00108 << regstr.Data() << ") parameters set from ROOT macro file: "
00109 << mac << endl;
00110 gROOT->Macro(macroname.Data());
00111 }
00112
00113 else {
00114
00115
00116 DbiConfigStream cfstream(algnm,cnfnm);
00117 const DbiConfigSet *cfset = cfstream.GetConfigSet();
00118 if (cfset) {
00119 cfstream >> ∾
00120 MSG("Alg", Msg::kInfo)
00121 << "AlgFactory: (AlgorithmClass:AlgConfigName) = ("
00122 << regstr.Data() << ") parameters set from DB table entry: "
00123 << algnm << "," << cnfnm << endl;
00124 }
00125 else {
00126
00127
00128 MSG("Alg", Msg::kError)
00129 << "AlgFactory: (AlgorithmClass:AlgConfigName) = ("
00130 << regstr.Data() << ") - failed to find ROOT macro file: "
00131 << macroname << " in " << gROOT->GetMacroPath() << endl;
00132 MSG("Alg", Msg::kError)
00133 << "AlgFactory: (AlgorithmClass:AlgConfigName) = ("
00134 << regstr.Data() << ") parameters not available in database."
00135 << " This is likely to be fatal." << endl;
00136 }
00137 }
00138 delete [] mac;
00139 }
00140
00141 delete [] algnm; delete [] cnfnm;
00142 return *ah;
00143 }
|