58 HitsCollection = NULL;
59 sensitiveDetectorName = dname;
81 if (aStep -> GetPreStepPoint() -> GetPhysicalVolume() ->
GetName() !=
"DetectorPhys")
84 G4Track * theTrack = aStep -> GetTrack();
89 G4String particleName = particleDef -> GetParticleName();
92 G4int trackID = theTrack -> GetTrackID();
94 G4double energyDeposit = aStep -> GetTotalEnergyDeposit();
96 G4int Z = particleDef-> GetAtomicNumber();
100 G4int k = ROhist -> GetReplicaNumber(0);
101 G4int i = ROhist -> GetReplicaNumber(2);
102 G4int j = ROhist -> GetReplicaNumber(1);
104 #ifdef G4ANALYSIS_USE_ROOT
115 G4int* hitTrack = matrix -> GetHitTrack(i,j,k);
116 if ( *hitTrack != trackID )
124 matrix -> Fill(trackID, particleDef, i, j, k, 0,
true);
125 #ifdef G4ANALYSIS_USE_ROOT
144 if(energyDeposit != 0)
154 matrix -> Fill(trackID, particleDef, i, j, k, energyDeposit);
159 detectorHit -> SetEdepAndPosition(i, j, k, energyDeposit);
160 HitsCollection -> insert(detectorHit);
164 #ifdef G4ANALYSIS_USE_ROOT
165 if(energyDeposit != 0)
169 if (particleName ==
"proton")
170 analysis -> SecondaryProtonEnergyDeposit(i, energyDeposit/
MeV);
172 else if (particleName ==
"neutron")
173 analysis -> SecondaryNeutronEnergyDeposit(i, energyDeposit/
MeV);
175 else if (particleName ==
"alpha")
176 analysis -> SecondaryAlphaEnergyDeposit(i, energyDeposit/
MeV);
178 else if (particleName ==
"gamma")
179 analysis -> SecondaryGammaEnergyDeposit(i, energyDeposit/
MeV);
181 else if (particleName ==
"e-")
182 analysis -> SecondaryElectronEnergyDeposit(i, energyDeposit/
MeV);
184 else if (particleName ==
"triton")
185 analysis -> SecondaryTritonEnergyDeposit(i, energyDeposit/
MeV);
187 else if (particleName ==
"deuteron")
188 analysis -> SecondaryDeuteronEnergyDeposit(i, energyDeposit/
MeV);
190 else if (particleName ==
"pi+" || particleName ==
"pi-" || particleName ==
"pi0")
191 analysis -> SecondaryPionEnergyDeposit(i, energyDeposit/
MeV);
202 static G4int HCID = -1;
208 HCE -> AddHitsCollection(HCID,HitsCollection);
G4bool ProcessHits(G4Step *aStep, G4TouchableHistory *ROhist)
void EndOfEvent(G4HCofThisEvent *HCE)
virtual G4int GetCollectionID(G4int i)
void insert(G4String str)
IORTDetectorSD(G4String name)
void Initialize(G4HCofThisEvent *)
static IORTAnalysisManager * GetInstance()
static IORTMatrix * GetInstance()
G4CollectionNameVector collectionName
G4THitsCollection< IORTDetectorHit > IORTDetectorHitsCollection