我有一个简单的几何结构,由一块薄硅板(我的敏感探测器)组成,我在其中发射一束 511 keV 光子的准直光束。我只想选择那些用敏感探测器散射过一次康普顿的光子。
我试图在我的 SensitiveDetector.cc(称为 SensitiveDetectorCPET03.cc)中放置一个条件来执行此操作,但没有成功。我希望使用 G4Step 类来告诉我主光子是否是康普顿散射的。
我的代码部分(在 SensitiveDetectorCPET03.cc 中)尝试应用此条件如下
(HitCPET04.hh 是 myHit 脚本)
G4bool SensitiveDetectorCPET04::ProcessHits(G4Step* aStep, G4TouchableHistory*){
HitCPET04* newHit = new HitCPET04();
我想访问 GetProcessDefinedStep() 因为我的印象是这会告诉我主光子和敏感探测器(如果有的话)之间发生了什么物理过程。所以我首先介绍这行代码。
G4StepPoint* postStepPoint = aStep->GetPostStepPoint();
现在我尝试创建一个名为“process”的常量指针,我希望它指向
存储在 GetProcessDefinedStep() 中的信息,希望它可以告诉我是什么过程导致我的光子散射。所以我写了这行代码
```const G4VProcess *process = postStepPoint->GetProcessDefinedStep();```
如果我可以写一个条件,比如..
if( *process == "compt" ){
fHitsCollection->insert( newHit );
// get analysis manager```
auto analysisManager = G4AnalysisManager::Instance();
G4double En = KineticEnergy/keV;
G4double theta = acos( 2- 511.0/En );
// fill ntuple
analysisManager->FillNtupleDColumn(0, KineticEnergy/keV);
analysisManager->FillNtupleDColumn(1, theta/deg);
analysisManager->AddNtupleRow(0);
std::cout << postStepPoint << std::endl;
}
return true;
}
那么我想我会很好,但这不起作用。我的编译器对我大喊大叫
没有运算符 "==" 匹配这些操作数 -- 操作数类型是: const G4VProcess == const char [6]
我不知道如何使用此错误消息来修复我的代码。
我是 Geant4 的新手,所以我提前道歉,我的知识非常有限。我想如何设置条件以仅记录那些用敏感探测器散射一次康普顿的光子。
感谢您花时间阅读我的请求。
此致
彼得