File indexing completed on 2025-02-23 09:19:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #include "CCalSensitiveDetectors.hh"
0032
0033
0034
0035 G4ThreadLocal CCalSensitiveDetectors* CCalSensitiveDetectors::theInstance = nullptr;
0036
0037
0038 CCalSensitiveDetectors* CCalSensitiveDetectors::getInstance() {
0039 if ( theInstance == nullptr ) {
0040 static G4ThreadLocalSingleton< CCalSensitiveDetectors > inst;
0041 theInstance = inst.Instance();
0042 }
0043 return theInstance;
0044 }
0045
0046
0047 void CCalSensitiveDetectors::registerVolume( const G4String& string, G4LogicalVolume* logv ) {
0048 theLVs.insert(mmslv::value_type(string, logv));
0049 #ifdef debug
0050 G4cout << "CCalSensitiveDetectors : Register " << logv->GetName()
0051 << " in category " << string << G4endl;
0052 #endif
0053 }
0054
0055
0056 std::vector<G4LogicalVolume*>
0057 CCalSensitiveDetectors::getVolumes( const G4String& string, G4bool exist ) {
0058 mmslv::const_iterator mmscite;
0059 std::pair<mmslv::iterator, mmslv::iterator> mmsdi;
0060 mmsdi = theLVs.equal_range(string);
0061 std::vector<G4LogicalVolume*> lvs;
0062 for (mmscite = mmsdi.first; mmscite != mmsdi.second; mmscite++ ) {
0063 lvs.push_back(const_cast<G4LogicalVolume*>((*mmscite).second));
0064 }
0065 if (exist) G4cout << "CCalSensitiveDetector : " << lvs.size()
0066 << " detectors for " << string << G4endl;
0067 return lvs;
0068 }
0069
0070
0071 G4bool CCalSensitiveDetectors::setSensitive( const G4String& string, G4VSensitiveDetector* sens ) {
0072 G4bool result=false;
0073 mmslv::const_iterator mmscite;
0074 std::pair<mmslv::iterator, mmslv::iterator> mmsdi;
0075 mmsdi = theLVs.equal_range(string);
0076 for (mmscite = mmsdi.first; mmscite != mmsdi.second; mmscite++ ) {
0077 G4LogicalVolume* lv = const_cast<G4LogicalVolume*>((*mmscite).second);
0078 lv ->SetSensitiveDetector(sens);
0079 result = true;
0080 #ifdef debug
0081 G4cout << " Associate SD " << sens->GetName() << " to " << lv->GetName() << G4endl;
0082 #endif
0083 }
0084 return result;
0085 }