γ-γ coincidence matrix¶

本节从上一节生成的 eurica_addback.root 文件出发,构造 γ-γ 符合矩阵。

上一节已经完成事件重构、时间修正和 addback。本节不再重复这些处理过程,而是直接使用 addback 后的 γ hit,讨论如何从事件中的多条 γ 构造二维符合矩阵,并利用开窗得到开窗谱。

从探测阵列到 γ-γ 符合矩阵¶

在多探测器 γ 探测阵列中,多个探测器从不同方向同时记录 γ 的能量和时间。一次核退激过程可能连续发射多条 γ。如果这些 γ 在同一个重构事件中被探测到,就可能形成 γ-γ 符合。

在忽略 $\theta,\phi$ 依赖时,不同角度上的探测器可以近似看作等价的 γ 测量单元。因此,在本节的 γ-γ 能量关联分析中,我们暂时不把探测器角度作为分析坐标,而主要关心同一个事件中不同 γ 之间的能量关系。

假设要检查 $121\ {\rm keV}$ γ 是否与 $244\ {\rm keV}$ γ 符合。直接做法是:先在某个探测器或某一组探测器中寻找 $121\ {\rm keV}$ γ,然后在同一个事件中遍历其他探测器,检查是否同时存在 $244\ {\rm keV}$ γ。对于一对指定的 γ,这种检查是可以完成的。

但是在实际 γ 能谱中,往往存在许多 γ 峰。我们并不总是事先知道哪些 γ 彼此符合。如果对每一条 γ 都逐一设置条件,再遍历所有探测器和所有事件去寻找它的符合 γ,分析过程会非常繁琐,也不利于整体观察能级级联关系。

为了避免上述繁琐过程,γ 谱学中通常先构造 γ-γ 符合矩阵。其基本做法是:对每一个重构事件,将其中所有 γ hit 两两配对,并把每一对 γ 的能量填入二维直方图:

$$ E_{\gamma 1}, \qquad E_{\gamma 2}. $$

这样,所有可能的 γ-γ 符合关系都被预先整理到同一个二维矩阵中。之后,如果想检查某一条 γ 与哪些 γ 符合,只需要在矩阵的一个能量轴上设置开窗,再将对应区域投影到另一个能量轴上。得到的开窗谱就显示了与该 γ 符合的其他 γ。

为了构造对称 γ-γ 符合矩阵,通常对同一个 γ-γ pair 同时填入

$$ (E_i,E_j), \qquad (E_j,E_i). $$

这种处理隐含的前提是:经过能量刻度和时间修正后,不同探测器对 γ 的响应可以近似认为一致。这样,矩阵的两个能量轴可以看作等价的能量轴,对称填充才是合理的。


γ-γ 符合矩阵与 开窗谱(gated spectrum)¶

γ-γ 符合矩阵的构造可以先从一个简化的事件列表理解。

图中左侧给出了几个事件。每个事件包含若干条 γ hit。例如,一个事件中包含 $422\ {\rm keV}$ 和 $885\ {\rm keV}$ 两条 γ;另一个事件包含 $277\ {\rm keV}$、$615\ {\rm keV}$ 和 $339\ {\rm keV}$ 三条 γ。

需要把其中所有 γ hit 两两配对。如果一个事件中有两条 γ,能量分别为 $E_i$ 和 $E_j$,则在二维直方图中填入这个能量对。对于对称 γ-γ 符合矩阵,通常同时填入 $$ (E_i,E_j), \qquad (E_j,E_i). $$ 例如,包含 $422\ {\rm keV}$ 和 $885\ {\rm keV}$ 的事件会贡献两个矩阵点:

$$ (422,885), \qquad (885,422). $$

如果一个事件中有三条 γ:

$$ E_1,\quad E_2,\quad E_3, $$

则会贡献六个有序 pair:

$$ (E_1,E_2),\quad (E_2,E_1), $$

$$ (E_1,E_3),\quad (E_3,E_1), $$

$$ (E_2,E_3),\quad (E_3,E_2). $$

这就是 γ-γ 符合矩阵关于对角线对称的原因。

矩阵中的一个点表示:在同一个事件中观测到了对应能量的两条 γ。不过,这个点并不能自动解释为真实的核能级级联关系。偶然符合、Compton 本底、峰下本底等都可能对矩阵产生贡献。因此,矩阵中的结构还需要通过时间条件、开窗谱和本底扣除进一步判断。


总投影谱(Total projection spectrum)¶

将 γ-γ 符合矩阵沿一个能量轴投影,得到的能谱称为总投影谱。它不能简单等同于普通的一维能谱。

在普通一维能谱中,一条 γ 被探测到一次,就计数一次。而在 γ-γ 符合矩阵的投影中,一条 γ 会按照与其符合的 γ 数目重复计数。因此,如果一个事件中的 γ 重数为 $M$,那么其中每条 γ 在矩阵投影中会贡献 $M-1$ 次计数。

数学上,沿 $E_x$ 轴的投影可写为

$$ P(E_x)=\sum_{E_y} M(E_x,E_y), $$

其中 $M(E_x,E_y)$ 是 γ-γ 符合矩阵。

因此,$P(E_x)$ 表示的是与 $E_x$ 发生符合的 pair 数目,而不是 $E_x$ 在原始一维 γ 能谱中出现的次数。

总投影谱的作用是帮助选择可能的开窗 γ 峰。那些经常与其他 γ 发生符合的跃迁,在总投影谱中会更加明显。


开窗(gate) 与 开窗谱(gated spectrum)¶

开窗是在 γ-γ 符合矩阵的一个能量轴上选择某一条 γ 峰。例如,在 $615\ {\rm keV}$ 上开窗,就是在一个能量轴上选择 $615\ {\rm keV}$ 附近的计数,并把这部分计数投影到另一个能量轴上。得到的能谱称为 $615\ {\rm keV}$ 开窗谱,表示与 $615\ {\rm keV}$ γ 符合的其他 γ 的能量分布。

在理想情况下,可以把开窗理解为选择 $E_x=E_g$。但在实际能谱中,γ 峰具有有限能量分辨率,峰面积分布在若干个 channel 中。因此,实际开窗必须选取一个有限能量范围。对于中心能量为 $E_g$、半宽为 $\Delta E$ 的开窗,开窗谱可以写成

$$ G(E_y \mid E_g)=\sum_{E_x \in [E_g-\Delta E,\ E_g+\Delta E]} M(E_x,E_y). $$

这个能谱回答的是一个条件问题:如果一个事件中观测到能量位于 $E_g$ 附近的 γ,那么另一个与它符合的 γ 的能量分布是什么?

开窗宽度 $\Delta E$ 一般根据总投影谱中该 γ 峰的实际峰形和能量分辨率选择。

实际选择时通常遵循以下原则:

  1. 开窗应覆盖该 γ 峰的主要全能峰区域;
  2. 开窗边界应尽量避开相邻 γ 峰;
  3. 若峰附近本底较高,开窗不宜过宽;
  4. 若后续要做峰旁窗本底扣除,峰旁窗的宽度应与 peak 窗保持一致或明确归一化;
  5. 不同能量处的探测器分辨率不同,因此高能 γ 峰可能需要比低能 γ 峰稍宽的开窗。

在示意图中,对 $615\ {\rm keV}$ 开窗后,开窗谱中出现 $186\ {\rm keV}$、$277\ {\rm keV}$、$339\ {\rm keV}$ 和 $761\ {\rm keV}$ 的峰。这说明在事件列表中,$615\ {\rm keV}$ 与这些 γ 出现在同一个事件中。由于 $615\ {\rm keV}$ 在这个例子中同时出现在多个级联分支中,所以 $615\ {\rm keV}$ 开窗谱会同时包含来自不同级联分支的 γ。

相比之下,对 $186\ {\rm keV}$ 开窗后,只得到 $615\ {\rm keV}$ 和 $761\ {\rm keV}$。这个开窗更干净,因为 $186\ {\rm keV}$ 在示意图中只出现在一个级联分支中。

这说明开窗谱的质量不仅取决于开窗宽度,也取决于所选 γ 峰本身是否干净。一个孤立、强度适中、峰下本底较低的 γ 峰,通常比一个被多个级联分支共享或被邻近峰污染的 γ 峰更适合作为开窗对象。

In [2]:
TCanvas *c1=new TCanvas("c1","c1");
TFile *fin = new TFile("eurica_addback.root");
TTree *tree = (TTree*)fin->Get("tree");

addback能谱¶

In [4]:
.L peaks.C
In [5]:
tree->Draw("ae>>hae(1500,0,1500)");
peaks("hae");
c1->SetLogy();
c1->Draw();

从 addback 后 hit 构造 γ-γ pair¶

对每个事件,将所有 addback 后 γ hit 两两配对。同一个 hit 不能与自身配对。下面的 macro 生成一个新的 tree,其中保存每个 γ-γ pair 的两个能量、两个时间和两个探测器编号。

In [7]:
void make_ggpair()
{
  TFile *fin = new TFile("eurica_addback.root");
  TTree *tree = (TTree*)fin->Get("tree");

  const int maxhit = 200;

  int ahit;
  int aid[maxhit];
  double ae[maxhit];
  double at[maxhit];

  tree->SetBranchAddress("ahit",&ahit);
  tree->SetBranchAddress("aid",aid);
  tree->SetBranchAddress("ae",ae);
  tree->SetBranchAddress("at",at);

  TFile *fout = new TFile("eurica_ggpair.root","recreate");
  TTree *tout = new TTree("tree","gamma-gamma pairs");

  double ex, ey;
  double tx, ty;
  int idx, idy;

  tout->Branch("ex",&ex,"ex/D");
  tout->Branch("ey",&ey,"ey/D");
  tout->Branch("tx",&tx,"tx/D");
  tout->Branch("ty",&ty,"ty/D");
  tout->Branch("idx",&idx,"idx/I");
  tout->Branch("idy",&idy,"idy/I");

  Long64_t nentries = tree->GetEntries();

  for (Long64_t entry = 0; entry < nentries; entry++) {
    tree->GetEntry(entry);

    for (int i = 0; i < ahit; i++) {
      for (int j = 0; j < ahit; j++) {

        if (i == j) continue;

        ex  = ae[i];
        ey  = ae[j];
        tx  = at[i];
        ty  = at[j];
        idx = aid[i];
        idy = aid[j];

        tout->Fill();
      }
    }
  }

  fout->Write();
  fout->Close();
}
In [8]:
make_ggpair();
In [9]:
TFile *fin = new TFile("eurica_ggpair.root");
TTree *tree = (TTree*)fin->Get("tree");

时间差与 prompt 条件¶

γ-γ pair tree 中同时包含 prompt 符合和 random 符合。为了区分它们,首先检查 pair 中两条 γ 的时间差:

$$ \Delta t = t_x - t_y. $$

In [11]:
c1->Clear();
gPad->SetLogy(0);
tree->Draw("tx-ty>>hdt(400,-1000,1000)");
c1->Draw();

根据上一节中时间修正后得到的时间分辨,本节采用

$$ |\Delta t| < 180\ {\rm ns} $$

作为 prompt 条件, 同时也可以定义一个远离 prompt 峰的 random 时间窗。 prompt 条件选择的是时间上接近的 γ-γ pair,因此它们是真实级联符合的候选。random 时间窗选择的是远离 prompt 峰的 pair,主要代表偶然符合。

In [13]:
TCut prompt_cut = "abs(tx-ty)<180";
TCut random_cut = "abs(tx-ty)>400 && abs(tx-ty)<3000";
In [14]:
TCanvas *c2 = new TCanvas("c2","random gamma-gamma matrix",1000,500);
c2->Divide(2,1);
c2->cd(1);
tree->Draw("ey:ex>>hgg_prompt(1500,0,1500,1500,0,1500)",prompt_cut,"colz");
gPad->SetLogz();
c2->cd(2);
tree->Draw("ey:ex>>hgg_random(1500,0,1500,1500,0,1500)",random_cut,"colz");
gPad->SetLogz();
c2->Draw();

在 prompt 矩阵中,真实 γ 级联关系会表现为对应 γ 能量交叉处的局域符合点。random 矩阵不代表真实核能级级联。但强 γ 峰仍然可能形成明显的横线、竖线或交叉结构,因为强峰有较高概率与其他无关 γ 发生偶然符合。

因此,prompt γ-γ 符合矩阵中的一个点不能自动解释为真实级联。它还需要结合时间条件、random 本底、开窗谱以及已知能级方案进行判断。

总投影谱¶

总投影谱中152Eu和133Ba的一系列$\gamma$ 峰清晰可见。

In [17]:
c1->Clear();
TH2D *hgg = (TH2D*)gDirectory->Get("hgg_prompt");
TH1D *hproj = hgg->ProjectionX("hproj");
peaks("hproj");
c1->Draw();

对 $121\ {\rm keV}$ γ 开窗¶

下面将开窗的概念应用到真实 γ 峰。这里以 $121\ {\rm keV}$ γ 为例。

开窗宽度 $\Delta E$ 的选择需要在“保留峰面积”和“减少本底污染”之间折中。开窗太窄,会丢失全能峰两侧的有效计数,使开窗谱统计降低;开窗太宽,则会引入更多 Compton 本底、峰下本底以及邻近峰污染。 实际选择时通常遵循以下原则:

  1. 开窗应覆盖该 γ 峰的主要全能峰区域;
  2. 开窗边界应尽量避开相邻 γ 峰;
  3. 不同能量处的探测器分辨率不同,因此高能 γ 峰可能需要比低能 γ 峰稍宽的开窗。
In [19]:
TCut gate121 = "abs(ex-121)<2";

这表示在 $E_x$ 轴上选择

119 keV<$E_x$<123 keV.

然后将这个区域投影到 $E_y$ 轴,得到 $121\ {\rm keV}$ 开窗谱:

In [20]:
c1->Clear();
tree->Draw("ey>>hgate121(1000,0,1000)",prompt_cut && gate121);
peaks("hgate121");
c1->Draw();

如果某个 γ 峰在 $121\ {\rm keV}$ 开窗谱中明显增强,说明这条 γ 可能与 $121\ {\rm keV}$ γ 处于同一级联过程中。

但是,仅根据开窗谱判断符合关系是不够的。$121\ {\rm keV}$ 开窗中不仅包含全能峰的计数,也包含 peak 下方连续本底的计数。这些本底计数同样会产生自己的符合谱。因此,需要回到二维 γ-γ 符合矩阵中观察 peak 窗和峰旁窗的结构。

在二维矩阵中观察 $121\ {\rm keV}$ peak 窗和side-gate spectrum(左右侧本底窗)¶

为了理解 $121\ {\rm keV}$ 开窗谱中的成分,可以在 prompt γ-γ 符合矩阵上同时标出 peak 窗和峰side-gate spectrum。

In [22]:
TCanvas *c3 = new TCanvas("c3","121-keV peak and side gates",1000,700);
  tree->Draw("ey:ex>>hgg(300,0,300,1000,0,1000)",prompt_cut,"colz");

  // peak gate: 121 +- 2 keV
  TLine *p1 = new TLine(119,0,119,1000);
  TLine *p2 = new TLine(123,0,123,1000);
  p1->SetLineColor(kRed);
  p2->SetLineColor(kRed);
  p1->SetLineWidth(2);
  p2->SetLineWidth(2);
  p1->Draw("same");
  p2->Draw("same");

  // left side gate: 116 +- 2 keV
  TLine *l1 = new TLine(114,0,114,1000);
  TLine *l2 = new TLine(118,0,118,1000);
  l1->SetLineColor(kOrange+1);
  l2->SetLineColor(kOrange+1);
  l1->Draw("same");
  l2->Draw("same");

  // right side gate: 126 +- 2 keV
  TLine *r1 = new TLine(124,0,124,1000);
  TLine *r2 = new TLine(128,0,128,1000);
  r1->SetLineColor(kOrange+1);
  r2->SetLineColor(kOrange+1);
  r1->Draw("same");
  r2->Draw("same");
  gPad->SetLogz();
  c3->Draw();

二维图的三个区域分别对应:

In [24]:
TCut gate121       = "abs(ex-121)<2";
TCut gate121_left  = "abs(ex-116)<2";
TCut gate121_right = "abs(ex-126)<2";

在二维矩阵中可以这样理解:

  • 红色 peak 窗选择 $121\ {\rm keV}$ peak 附近的 γ-γ pair;
  • left/right side gate 选择 $121\ {\rm keV}$ peak 两侧的连续本底区域;
  • peak 窗的投影包含真实 $121\ {\rm keV}$ 符合,也包含 peak 下方本底的符合;
  • side gate 的投影用于近似估计 peak 下方本底产生的符合谱。

一般地,本底扣除可写为

$$ G_{\rm sub}(E) = G_{\rm peak}(E) - \alpha G_{\rm side}(E), $$

其中 $G_{\rm peak}(E)$ 是 peak 开窗谱,$G_{\rm side}(E)$ 是side-gate spectrum估计的本底谱,$\alpha$ 是归一化因子。

如果 peak 窗和side-gate的宽度相同,并且局部本底近似平坦,则 $\alpha$ 可以接近 $1$。如果开窗宽度不同,或者峰下方本底水平与左右峰旁窗的平均本底水平不同,则必须先对side-gate spectrum进行归一化,然后再扣除。

一个实际做法是:在一维投影能谱中比较 peak 窗下方的本底计数与side-gate spectrum中的本底计数,用它们的比值确定 $\alpha$。

将这个本底谱从 peak 开窗谱中扣除后,剩余峰更接近于真正与 $121\ {\rm keV}$ 跃迁符合的 γ。

峰左右侧本底扣除¶

同时显示 peak 开窗谱、峰左右侧窗本底谱和扣除后的开窗谱:

In [27]:
tree->Draw("ey>>hgate121_peak(1000,0,1000)",prompt_cut && gate121, "goff");

tree->Draw("ey>>hgate121_left(1000,0,1000)",prompt_cut && gate121_left, "goff");

tree->Draw("ey>>hgate121_right(1000,0,1000)",prompt_cut && gate121_right, "goff");

  TH1D *hpeak  = (TH1D*)gDirectory->Get("hgate121_peak");
  TH1D *hleft  = (TH1D*)gDirectory->Get("hgate121_left");
  TH1D *hright = (TH1D*)gDirectory->Get("hgate121_right");

  TH1D *hside = (TH1D*)hleft->Clone("hside");
  hside->Add(hright);
  hside->Scale(0.5);

  TH1D *hsub = (TH1D*)hpeak->Clone("hgate121_sub");
  hsub->Add(hside,-1.0);

  TCanvas *c4 = new TCanvas("c4","121-keV gate spectra",800,1000);
  c4->Divide(1,2);
  c4->cd(1);
  hpeak->Draw();
  hside->SetLineColor(kRed);
  hside->Draw("hist same");
  c4->cd(2);
  hsub->Draw("hist");
  c4->Draw();

总结¶

可以通过在峰两侧较平坦的本底区域设置side gate,估计并扣除 Compton 本底及峰下本底的贡献,从而得到更接近真实 γ-γ 符合关系的开窗谱。

这种side-gate method是二维对称 γ-γ 符合矩阵中最基本、最直观的本底扣除方法。在 γ 峰较孤立、峰两侧存在相对平坦本底区域时,推荐优先使用上述方法。

但是,当 γ 峰密度很高时,大多数 γ 峰两侧很难找到干净、平坦的本底区域。此时,这个方法不再可靠,也不便于逐个 γ 峰手动处理。

例如,在熔合蒸发反应中,复合核被布居到高自旋态后会通过级联 γ 退激,产生大量彼此接近的 γ 峰。此类 γ 能谱峰密度高、Compton 本底复杂,难以为每个 γ 峰选择合适的side gate。因此,需要寻找更系统、更方便的二维矩阵本底处理方法。

In [ ]: