Geant4: 官方文档第一遍阅读笔记(2)

4.1.3

一个Logical Volume代表了一系列其中的Volume的嵌套结构,虽然具体的位置信息不记录,但是记录了相关的包含与被包含的信息。

Geant4运行将Logical Volume分割成许多Region,每个Region可以定义不同的产额阈值(production cuts)等设定。

同一个Region可以包括多个Logical Volume 但是一个Logical Volume只能属于一个Region

4.1.4

G4PVReplica 代表许多只在位置存在区别的Volume. Replica必须放置在一个完全恰好完全填充的空间内。

Replica可以放在另一个Replica中。

参数化的Volume需要重载G4VPVParameterisation类,其中包括的方法包括 ComputeTransformation, ComputeDimensions等,方法通常包括的参数有Copy number, Solid, 等

除了参数化重复和Replica的重复,还可以通过将交代的Volume分割成许多Division达到相似的目的

4.1.5

touchable能够获得Tracking过程中涉及的geometry的信息,虽然Tracking在实际的调用过程中不是使用touchable对象完成的信息的获取。

例如,获得Solid的transformation,获得Physical Volume的包含其他Volume的层级结构。

Volume hierarchy在Geant4中被称为history,Geant4的例子的传播和Tracking过程利用了G4TouchableHistory类。Touchable history包含了最重要的用来定义给定的Physical Volume层级结构的信息。而这些信息可以在Tracking中的每一个Step获取。

G4TouchableHistoryHandle CreateTouchableHistoryHandle() const;

4.1.8

Nagigator用于定位点和计算点到空间边界的距离。在Tracking步骤时,navigator应当是唯一的与tracking相作用的点。

在Tracking时,数据可以通过Touchable获得,而Touchable有两种获取方式

  1. 通过Step
G4TouchableHandle theTouchable = preStepPoint->GetTouchableHand();
G4int copyNo = theTouchable->GetCopyNumber();
  1. 通过Navigator
G4TouchableHistoryHandle aTouchable = aNavigator->CreateTouchableHistoryHandle();
G4int copyNo -> aTouchable->GetCopyNumber();

4.4

Hit是Track过程中粒子与sensitive detector的一次物理作用。
在Hit中,我们可以获得包括
3. Step时间与位置
4. Track动量与能量
5. Step能量沉积
6. 其他
的信息

在一次Event过程中,会产生许多hit对象,G4HitsCollection类的对象用于储存这些Hit这些对象。

与重定义G4THitsCollection一起使用时,用户必须声明自己定义的Hit类对应的G4Allocator类,并重载Hit类中相应的操作符,让G4THitsCollection使用管理的的是自己定义的Hit对象

// class MyTrackerHit : public G4VHit
MyTrackerHit& operator=(const MyTrackerHit&) = default;
G4bool operator==(const TrackerHit&) const;

inline void* operator new(size_t);
inline void operator delete(void*)

G4Allocator并不强制设置,但是这是程序推荐的方式。注意,G4Allocator只被没有继承的基类使用,如果设置了G4Allocator,就不要写自己的Trajectory类,因为G4Trajectory类依赖于G4Allocator,而被继承后的类无法调用。

HitMap是G4HitsCollection的替代。HitMap不依赖于Hit。Map指的映射是Volume到数据项的映射,例如SensitiveDetector到能量沉积的映射。

所有的HitMap对象会储存在HCofThisEvent中。

G4HCofThisEvent* HCofEvent = currentEvent->GetCofThisEvent();
MyHitsCollection* myCollection = (MyHitsColection*)(HCOfEvent->GetHC(collectionID);

HitCollection对应的对象为SensitiveDetector,而HitMap对应的对象为G4VPrimitiveScorer。它在创建的时候会自动实例化一个对应的HitMap对象。

通过对PrimitiveScorer对象添加Filter可以获得更加精细的输出,例如对Secondary粒子分别添加gammaFilter,electronFilter等,可以在HitMap中获得对应的分别统计量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值