📄 mt01trackersd.cc
字号:
//// ********************************************************************// * DISCLAIMER *// * *// * The following disclaimer summarizes all the specific disclaimers *// * of contributors to this software. The specific disclaimers,which *// * govern, are listed with their locations in: *// * http://cern.ch/geant4/license *// * *// * Neither the authors of this software system, nor their employing *// * institutes,nor the agencies providing financial support for this *// * work make any representation or warranty, express or implied, *// * regarding this software system or assume any liability for its *// * use. *// * *// * This code implementation is the intellectual property of the *// * GEANT4 collaboration. *// * By copying, distributing or modifying the Program (or any work *// * based on the Program) you indicate your acceptance of this *// * statement, and all its terms. *// ********************************************************************////// $Id: mt01TrackerSD.cc,v 1.7 2003/05/28 09:54:10 gcosmo Exp $// GEANT4 tag $Name: geant4-07-00-patch-01 $////....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......#include "mt01TrackerSD.hh"#include "G4HCofThisEvent.hh"#include "G4Step.hh"#include "G4ThreeVector.hh"#include "G4SDManager.hh"#include "G4ios.hh"//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......mt01TrackerSD::mt01TrackerSD(G4String name):G4VSensitiveDetector(name){ G4String HCname; collectionName.insert(HCname="trackerCollection");}//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......mt01TrackerSD::~mt01TrackerSD(){ }//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......void mt01TrackerSD::Initialize(G4HCofThisEvent* HCE){ trackerCollection = new mt01TrackerHitsCollection (SensitiveDetectorName,collectionName[0]); static G4int HCID = -1; if(HCID<0) { HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); } HCE->AddHitsCollection( HCID, trackerCollection ); }//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......G4bool mt01TrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory*){ G4double edep = aStep->GetTotalEnergyDeposit(); if(edep==0.) return false; mt01TrackerHit* newHit = new mt01TrackerHit(); newHit->SetTrackID (aStep->GetTrack()->GetTrackID()); newHit->SetChamberNb(aStep->GetPreStepPoint()->GetTouchable() ->GetReplicaNumber()); newHit->SetEdep (edep); newHit->SetPos (aStep->GetPostStepPoint()->GetPosition()); trackerCollection->insert( newHit ); // newHit->Print(); //newHit->Draw(); return true;}//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......void mt01TrackerSD::EndOfEvent(G4HCofThisEvent*){ G4int i=0; G4int myindex=0; particleoldID=0; particlenewID=1; //if (verboseLevel>0) { G4int NbHits = trackerCollection->entries(); // G4cout<<NbHits<<G4endl; G4double totE = 0; if (NbHits>0) { for(int i=0;i<NbHits;i++) { particlenewID=(*trackerCollection)[i]->GetTrackID(); G4cout<<particlenewID<<G4endl; if (particleoldID==particlenewID) totE += (*trackerCollection)[i]->GetEdep(); if (particleoldID!=particlenewID) { myindex=(G4int)(totE / keV);////////xiugai if( myindex<1000000) energycount[myindex]=energycount[myindex]+1; totE=0+(*trackerCollection)[i]->GetEdep(); } particleoldID=particlenewID; }} // G4cout << "\n-------->Hits Collection: in this event they are " << NbHits // << " hits in the tracker chambers: " << G4endl; // for (G4int i=0;i<NbHits;i++) (*trackerCollection)[i]->Print(); // } }//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -