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有两种获取方式
- 通过Step
G4TouchableHandle theTouchable = preStepPoint->GetTouchableHand();
G4int copyNo = theTouchable->GetCopyNumber();
- 通过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中获得对应的分别统计量。