粒子物理与核物理实验中的数
据分析
杨振伟
清华大学
第八讲:Geant4 的探测
器模拟介绍(3)
2012-4-26 1
上讲回顾
粒子定义
G4ParticleDefinition
6大类粒子:G4LeptonConstructor
G4BosonConstructor
G4MesonConstructor
G4BaryonConstructor
G4IonConstructor
G4ShortlivedConstructor
产生事例:G4ParticleGun
物理过程:电磁、强作用、衰变、光轻子-强
子作用、光学、参数化、输运(必要过程)
2012-4-26 2
本讲要点
灵敏探测器(Sensitive Detector)
读取灵敏探测器数据
存入ROOT文件
cmake方式编译Geant4应用程序
(适用于Geant4 )
产生主事例(自学)
G4HEPEvtInterface
2012-4-26 3
灵敏探测器(Sensitive Detector)
2012-4-26 4
灵敏探测器
灵敏探测器(SD)的首要任务是通过粒子“迹”(track)上的
“步”(step)的信息,构造“击中”(hit)。
这些击中经过数字化,被读出模块读出的信息是真正的模拟结果。(当
然在模拟中我们也可以忽略数字化而直接读出hit的信息或者其它信息,
这些信息实际上是所谓的"Monte Carlo Truth")
用户灵敏探测器继承自抽象基类G4VSensitiveDetector,用户需要完成
3个主要函数:
ProcessHits(G4Step* aStep, G4TouchableHistory*)
构造“击中”,被G4SteppingManager调用
Initialize(G4HCofThisEvent* HCE)
初始化,事例开始时调用,指定构造的“击中”与当前事例关联起来
EndOfEvent(G4HCofThisEvent*)
事例结束时调用
参见例子N02/src/
2012-4-26 5
定义和添加灵敏探测器(1)
,
,
()中添加SD
在探测器构造中添加敏感探测器,比如:
//SDManager
G4SDManager* SDman = G4SDManager::GetSDMpointer();
//创建敏感探测器
G4String trackerChamberSDname = "ExN02/TrackerChamberSD";
ExN02TrackerSD* aTrackerSD = new ExN02TrackerSD( trackerChamberSDname );
//添加到SDManager
SDman->AddNewDetector( aTrackerSD );
//为logical体积设定敏感探测器!!!
hamber->SetSensitiveDetector( aTrackerSD );
参见例子N02/src/
2012-4-26 6
定义和添加灵敏探测器(2)
将多个logical体积添加为
灵敏探测器时:
假设有3个体积V1,V2, V1
V3 V2
如果定义这3个体积的时 V3
候,先定义V1,再定义V2,
最后定义V3,则V1,V2,
各自被覆盖掉一部分。
如果希望蓝色区域为SD,则需要
V2->SetSensitiveDetector(....)
2012-4-26 7
读取灵敏探测器数据
存入ROOT文件
2012-4-26 8
读取敏感探测器的信息
在EventAction类的EndOfEventAction()函数中,可以读取
该事例中存储的Hits。中
加入下面代码,查看每个事例中的Hits数目:
//获得该事例的HitsCollection(可能不止一个)
G4HCofThisEvent* hc = evt->GetHCofThisEvent();
G4int NbOfColl = hc->GetNumberOfCollections();
//获得第0个HitsCollection,即ExN02TrackerHitsCollection
//也可以通过Collec
粒子物理与核物理实验中的数据分析-粒子物理与核物理实验 来自淘豆网www.taodocs.com转载请标明出处.