diff --git a/Inputs/DetectorConfiguration/e628.detector b/Inputs/DetectorConfiguration/e628.detector index cada95eea565c463827ddfb020671f11d0d45365..4892f6d01fcd8ec27112d56dd6f62003800a264d 100644 --- a/Inputs/DetectorConfiguration/e628.detector +++ b/Inputs/DetectorConfiguration/e628.detector @@ -76,7 +76,7 @@ VIS= all %%%%%%%%%%%%%%%%%%%%%%%%%%% -TiaraHyball +Tiara TiaraHyballWedge Z= -147 R= 0 diff --git a/NPLib/Tiara/TTiaraBarrelPhysics.cxx b/NPLib/Tiara/TTiaraBarrelPhysics.cxx index 67dd8ccbc4974901452a716680726b91d5f5dc07..af95b28f031ec5e7ad49f197c7c6d0c3c4f5f487 100644 --- a/NPLib/Tiara/TTiaraBarrelPhysics.cxx +++ b/NPLib/Tiara/TTiaraBarrelPhysics.cxx @@ -733,8 +733,8 @@ for(unsigned int k = 0 ; k < sizeB ; k++){ class brlproxy{ public: brlproxy(){ - NPA::DetectorFactory::getInstance()->AddToken("TiaraInnerBarrel=","Tiara"); - NPA::DetectorFactory::getInstance()->AddDetector("TiaraInnerBarrel=",TTiaraBarrelPhysics::Construct); + NPA::DetectorFactory::getInstance()->AddToken("Tiara","Tiara"); + NPA::DetectorFactory::getInstance()->AddDetector("Tiara",TTiaraBarrelPhysics::Construct); } }; diff --git a/NPLib/Tiara/TTiaraHyballPhysics.cxx b/NPLib/Tiara/TTiaraHyballPhysics.cxx index 55a620cc36fbab676bf5015d352329b2c75819e7..17860efd3373619f8d4db6855d5939ec5de0ef27 100644 --- a/NPLib/Tiara/TTiaraHyballPhysics.cxx +++ b/NPLib/Tiara/TTiaraHyballPhysics.cxx @@ -786,8 +786,8 @@ extern "C"{ class proxy{ public: proxy(){ - NPA::DetectorFactory::getInstance()->AddToken("TiaraHyballWedge","Tiara"); - NPA::DetectorFactory::getInstance()->AddDetector("TiaraHyballWedge",TTiaraHyballPhysics::Construct); + NPA::DetectorFactory::getInstance()->AddToken("Tiara","Tiara"); + NPA::DetectorFactory::getInstance()->AddDetector("Tiara",TTiaraHyballPhysics::Construct); } }; diff --git a/NPSimulation/Core/NPSDetectorFactory.cc b/NPSimulation/Core/NPSDetectorFactory.cc index da823e94def76c8e9bceb828fe614e98587f5eca..dc04247933a3622a096a75fd2b6be55f5b365112 100644 --- a/NPSimulation/Core/NPSDetectorFactory.cc +++ b/NPSimulation/Core/NPSDetectorFactory.cc @@ -85,7 +85,12 @@ NPS::VDetector* DetectorFactory::Construct(std::string Token){ if(m_Construct.find(Token)!=m_Construct.end()) return m_Construct[Token](); - + + // Test for an alternative token + else if(m_TokenAlternative.find(Token)!=m_TokenAlternative.end()){ + return m_Construct[m_TokenAlternative[Token]](); + } + else{ std::cout << "Warning: Detector with Token " << Token << " has no Constructor or no Library" << std::endl; return NULL; @@ -130,3 +135,16 @@ void DetectorFactory::AddToken(std::string Token, std::string LibName){ m_TokenLib[Token] = LibName; } +//////////////////////////////////////////////////////////////////////////////// + void DetectorFactory::AddTokenAlternative(std::string MainToken, std::string TokenAlternative){ + // Make sure the main token exit: + if(m_TokenLib.find(MainToken)==m_TokenLib.end()){ + cout << "\033[1;33m **** ERROR: Cannot add Alternative token " << TokenAlternative << " to main token " + << MainToken << " because main token does not exist\033[0m" << endl ; + exit(1); + } + + else{ + m_TokenAlternative[TokenAlternative] = MainToken; + } + } diff --git a/NPSimulation/Core/NPSDetectorFactory.hh b/NPSimulation/Core/NPSDetectorFactory.hh index 19484638f27699625d62db76f9cd8f4a40bddfa9..85929df1d5bc458a1abe25f9ebb245e083c55156 100644 --- a/NPSimulation/Core/NPSDetectorFactory.hh +++ b/NPSimulation/Core/NPSDetectorFactory.hh @@ -17,6 +17,7 @@ class DetectorFactory{ NPS::VDetector* Construct(std::string Token); void ReadClassList(std::string FileList); void AddToken(std::string Token, std::string LibName); + void AddTokenAlternative(std::string mainToken, std::string Alternative); void AddDetector(std::string Token, ClassDetectorFactoryFn fn); void CreateClassList(string FileName); private: @@ -25,6 +26,8 @@ class DetectorFactory{ std::map<std::string,ClassDetectorFactoryFn> m_Construct; // Map that Match the Token with the Lib to be loaded std::map<std::string,std::string> m_TokenLib; + // Map of alternative token + std::map<std::string,std::string> m_TokenAlternative; }; } #endif diff --git a/NPSimulation/Tiara/Tiara.cc b/NPSimulation/Tiara/Tiara.cc index 579bff71e135bd42ba6b7d22f9f632f535c8451d..29b69712f7ed1e9c6b7ed0e6c4f12f6610800fa6 100644 --- a/NPSimulation/Tiara/Tiara.cc +++ b/NPSimulation/Tiara/Tiara.cc @@ -874,8 +874,8 @@ extern "C"{ class brlproxy{ public: brlproxy(){ - NPS::DetectorFactory::getInstance()->AddToken("TiaraInnerBarrel=","Tiara"); - NPS::DetectorFactory::getInstance()->AddDetector("TiaraInnerBarrel=",Tiara::Construct); + NPS::DetectorFactory::getInstance()->AddToken("Tiara","Tiara"); + NPS::DetectorFactory::getInstance()->AddDetector("Tiara",Tiara::Construct); } };