00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "G4VPrimitiveScorer.hh"
00031 #include "G4MultiFunctionalDetector.hh"
00032 #include "G4SDManager.hh"
00033 #include "G4Step.hh"
00034 #include "G4TouchableHistory.hh"
00035 #include "G4UnitsTable.hh"
00036
00037 G4VPrimitiveScorer::G4VPrimitiveScorer(G4String name, G4int depth)
00038 :primitiveName(name),detector(0),filter(0),verboseLevel(0),indexDepth(depth),
00039 unitName("NoUnit"),unitValue(1.0),fNi(0),fNj(0),fNk(0)
00040 {;}
00041
00042 G4VPrimitiveScorer::~G4VPrimitiveScorer()
00043 {;}
00044
00045 G4int G4VPrimitiveScorer::GetCollectionID(G4int)
00046 {
00047 if(detector)
00048 return G4SDManager::GetSDMpointer()
00049 ->GetCollectionID(detector->GetName()+"/"+primitiveName);
00050 else
00051 return -1;
00052 }
00053
00054 void G4VPrimitiveScorer::Initialize(G4HCofThisEvent*)
00055 {;}
00056
00057 void G4VPrimitiveScorer::EndOfEvent(G4HCofThisEvent*)
00058 {;}
00059
00060 void G4VPrimitiveScorer::clear()
00061 {;}
00062
00063 void G4VPrimitiveScorer::DrawAll()
00064 {;}
00065
00066 void G4VPrimitiveScorer::PrintAll()
00067 {;}
00068
00069 G4int G4VPrimitiveScorer::GetIndex(G4Step* aStep)
00070 {
00071 G4StepPoint* preStep = aStep->GetPreStepPoint();
00072 G4TouchableHistory* th = (G4TouchableHistory*)(preStep->GetTouchable());
00073 return th->GetReplicaNumber(indexDepth);
00074 }
00075
00076 void G4VPrimitiveScorer::CheckAndSetUnit(const G4String& unit,
00077 const G4String& category){
00078 if ( G4UnitDefinition::GetCategory(unit) == category){
00079 unitName = unit;
00080 unitValue = G4UnitDefinition::GetValueOf(unit);
00081 } else {
00082 G4String msg = "Invalid unit ["+unit+"] (Current unit is [" +GetUnit()+"] ) requested for " + GetName();
00083 G4Exception("G4VPrimitiveScorer::CheckAndSetUnit","Det0151",JustWarning,msg);
00084 }
00085 }