00001 //---------------------------------------------------------------------------// 00009 00010 // A pure virtual class that represents a generic Bes sensitive 00011 // Detector. Bes subsystems should inherit from this class when 00012 // implementing their hit scoring. 00013 00014 #include "BesSensitiveDetector.hh" 00015 #include "BesSensitiveManager.hh" 00016 #include "BesTruthTrack.hh" 00017 00018 // 00019 // Constructor 00020 // 00021 BesSensitiveDetector::BesSensitiveDetector( const G4String name) 00022 : G4VSensitiveDetector(name) 00023 { 00024 BesSensitiveManager* manager = BesSensitiveManager::GetSensitiveManager(); 00025 manager->AddSensitiveDetector(this); 00026 } 00027 00028 // Ask the sensitive detector manager 00029 // 00030 void BesSensitiveDetector::GetCurrentTrackIndex(G4int& trackIndex, G4int& g4TrackId) const 00031 { 00032 BesSensitiveManager* manager = BesSensitiveManager::GetSensitiveManager(); 00033 if(manager) 00034 { 00035 trackIndex = manager->GetCurrentTrackIndex(); 00036 std::vector<BesTruthTrack*>* trackList = manager->GetTrackList(); 00037 if(trackList) 00038 { 00039 G4int size = trackList->size(); 00040 if(size>0) 00041 { 00042 for(G4int i=0;i<size;i++) 00043 { 00044 if( (*trackList)[i]->GetIndex() == trackIndex ) 00045 { 00046 g4TrackId = (*trackList)[i]->GetG4TrackId(); 00047 break; 00048 } 00049 } 00050 } 00051 } 00052 } 00053 } 00054 00055 00056 00057 00058 00059 00060 00061