⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mt01trackersd.cc

📁 利用linux环境下蒙特卡罗计算工具geant4实现伽玛射线与探测器乘积能量的模拟过程
💻 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 + -