Developing #138
Updated by Vratislav Chudoba over 6 years ago
<h2>Проверить:</h2> <p>Проверить:</p>
<ol>
<li>правильность получения координаты с детектора;</li>
<li>наличие dE-E диаграмм;</li>
<li>идентификацию частиц с помощью графических вырезов;</li>
<li>построение вектора регистрируемой частицы (<sup>3</sup>He) с учетом реконструированной точки прохождения реакции и сравнение с MCTrack;</li>
</ol>
<h2>Результаты:</h2>
<p>Вся функциональность проверялась в ветке "dev"</p>
<p>commit fa3d6cd9f146706da436500b202a2c7d355f2f7f<br />
Merge: 1dd6321 4b81d63<br />
Author: Mikhail Kozlov <kozlov.m.your@yandex.ru><br />
Date: Thu Mar 8 00:44:47 2018 +0300</p>
<p>Макросы симуляции и восстановления приложены их отношение к пунктам понятно из описания.</p>
<h3>пункт 1:</h3>
<p>Проверка восстановления координат попадения частицы в детектор проведена, картинки dE-E получены для пучка состоящего из <sup>1,2,3</sup>H и <sup>3,4,6</sup>He.</p>
<p><img alt="" height="446" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/055/original/trackReco.png" width="694" /></p>
<p>пункт 2:</p>
<p>Диаграммы dE-E можно увидеть в описанию предыдущего пункта.</p>
<h3>пункт 3:</h3>
<p>Проверка работы с геометрическими вырезами выглядит следующим образом:</p>
<p><img alt="" height="491" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/056/original/dE-Ecuts.png" width="764" /></p>
<p><br />
Картинка, которая на первой взглад пугает на самом деле очень хорошая и красивая. В симмуляции пускались два пучка:</p>
<pre>
ERIonMixGenerator* generator = new ERIonMixGenerator(ionName, Z, A, Q, 1);
generator->AddBackgroundIon("Triton", 1, 3, 1, 0.2 / 0.20);
generator->AddBackgroundIon("Alpha", 1, 4, 1, 0.4 / 0.60);
generator->AddBackgroundIon("Deuteron", 1, 2, 1, 0.2 / 0.20);
generator->AddBackgroundIon("proton", 1, 1, 1, 0.2 / 0.20);
generator->SetKinERange(0.001, 0.02);
Double32_t sigmaTheta = 0.004*TMath::RadToDeg();
generator->SetThetaSigma(0, 0);
generator->SetThetaRange(16, 18);
generator->SetPhiRange(0, 270);
generator->SetBoxXYZ(2, 2, 2, 2, 2.);</pre>
<p>и</p>
<pre>
ERIonMixGenerator* generator2 = new ERIonMixGenerator("HE3", 2, 3, 2, 1);
generator2->SetKinERange(0.001, 0.03);
generator2->SetThetaSigma(0, 0);
generator2->SetThetaRange(10, 12);
generator2->SetPhiRange(90, 360);
generator2->SetBoxXYZ(8, 2, 8, 2, 2.);</pre>
<p>Их попадение в детектор видно на панели 6. Поскольку оба пучка присутствовали в каждом событию, из-за их распределения по углу Фи в детектор попадает 1/3 пучка <sup>6</sup>He (включая примеси) и 2/3 пучка <sup>3</sup>He из всего набора событий. Значит вероятность того, что две частицы попадают одновременно в детектор равна 2/9. В первом столбце видим грязную картину dE-E и присутствие грязи обясняется одновременным попаданием двух частиц и накладыванием амплитуд (картинка суммарная по всем стрипам).</p>
<p>Реконструкция точки попадения в детектор на картинке 3 показывает два локуса пучка и синие прямоуголники вызванные неоднозначностью реконструкции, когда сигнал появляется в двух стрипах на каждой стороне одновременно. Это ожидаемый эффект и картинка правильная.</p>
<p>На картинке 2 показано распределение точек попадения в детектор с учетом выреза частицы <sup>3</sup>He. Видим замечательный отбор искоемой частицы с небольшим загразнением в местах, где можно ожидать неоднозночность реконструкции позиции из-за регистрации двух частиц.</p>
<p>Количественный анализ картинки 3 основан на следующих соображениях: в локусе зеленного вылета видим 3266 событий, в красном вырезе 5737. В сумме получается 9003. Если добавим точки, которые в неправильных местах (с учетом вероятности попадения двух частиц в детектор одновременно - 2/9) получаем цифру примерно 11000, которая очень близко к полной статистике картинки 3.</p>
<h3>пункт 4:</h3>
<p>По аналогии с пунктом 3 использовались два генератора, на этот раз без примесий. Видим картинку качественно похожую на ту, которая представлена в пункте 3. Это сильно повлияло на очистку dE-E картинки и чистоту отбора (см. панель 2).</p>
<p><img alt="" height="489" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/058/original/particleReco1.png" width="761" /></p>
<p>Для восстановления искаемой частицы, которая попадала в телескоп применялся макрос check3He.C, в котором создается новое дерево с веткой particle класса TLorentzVector, в которой должна храниться информация о налетающем <sup>3</sup>He. В переменной energy просто дублируется восстановленная кинетическая энергия <sup>3</sup>He. Картинку выводим с помощью макроса showT1Sim.C.</p>
<p><img alt="" height="493" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/057/original/particleReco2.png" width="768" /></p>
<p>Для того, чтобы увидеть на панели 5 ожидаемую разницу между энергией MCTrack и ERQTelescopeTrack пришлось уделить особое внимание последовательности включения генераторов в FairPrimaryGenerator (см. Известные проблемы). На панели шесть видим пик в близи нуля, который показывает разницу между разыгранной энергией и восстановленной</p>
<pre>
tr->Draw("MCTrack.fEnergy*1000-2809 - ERQTelescopeTrack_DoubleSi_SD2_XY_1.fSumEdep*1000", "cut3He && MCTrack.fPdgCode == 1000020030");</pre>
<p>Количественный анализ не проводился, но восстановление на перый взглад работает.</p>
<h2>Известные проблемы</h2>
<h3>Энергия пучка</h3>
<p>Если задаем пучок как</p>
<p> Int_t Z = 2, A = 6, Q = 2;<br />
TString ionName = "6He";<br />
ERIonMixGenerator* generator = new ERIonMixGenerator(ionName, Z, A, Q, 1);<br />
<br />
generator->AddBackgroundIon("Triton", 1, 3, 1, 0.2 / 0.20);<br />
generator->AddBackgroundIon("Alpha", 1, 4, 1, 0.4 / 0.60);<br />
generator->AddBackgroundIon("HE3", 2, 3, 2, 0.2 / 0.20);<br />
generator->AddBackgroundIon("Deuteron", 1, 2, 1, 0.2 / 0.20);<br />
generator->AddBackgroundIon("proton", 1, 1, 1, 0.2 / 0.20);<br />
<br />
generator->SetKinERange(0.001, 0.02);</p>
<p>то заданная энергия касается только основной частицы - <sup>6</sup>He. Для остальных из картинки видим следующее:</p>
<table align="left" border="1" cellpadding="1" cellspacing="1" height="80" width="555">
<caption>Энергии пучковых частиц</caption>
<tbody>
<tr>
<td>частица</td>
<td style="text-align: center;">протон</td>
<td style="text-align: center;">дейтон</td>
<td style="text-align: center;">тритон</td>
<td style="text-align: center;">3He</td>
<td style="text-align: center;">4He</td>
<td style="text-align: center;">6He</td>
</tr>
<tr>
<td>энергия (МэВ)</td>
<td style="text-align: center;">30</td>
<td style="text-align: center;">15</td>
<td style="text-align: center;">10</td>
<td style="text-align: center;">40</td>
<td style="text-align: center;">30</td>
<td style="text-align: center;">20</td>
</tr>
</tbody>
</table>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Откуда взялись такие энергии?</p>
<h3>Сравнение восстановленной и симмулированной энергии.</h3>
<p>Напрямую невозможно сравнивать записанную информацию в ветках класса TClonesArray с помощью TTree::Draw и отборов. Это скорее всего связанно с тем, что такое сравнение происходить по элементам массива (например М1[0] - М2[0], M1[1] - M2[1]). Так просто работает TTree::Draw. Поскольку в текущей задаче у нас была максимальная управляемость пучком, было можно легко добиться результата. Если будет задача комплексная и полетит много разных частиц, придется сравнивать симуляцию и реконструкцию пособытийно. Это очень неприятная переспектива.</p>
<ol>
<li>правильность получения координаты с детектора;</li>
<li>наличие dE-E диаграмм;</li>
<li>идентификацию частиц с помощью графических вырезов;</li>
<li>построение вектора регистрируемой частицы (<sup>3</sup>He) с учетом реконструированной точки прохождения реакции и сравнение с MCTrack;</li>
</ol>
<h2>Результаты:</h2>
<p>Вся функциональность проверялась в ветке "dev"</p>
<p>commit fa3d6cd9f146706da436500b202a2c7d355f2f7f<br />
Merge: 1dd6321 4b81d63<br />
Author: Mikhail Kozlov <kozlov.m.your@yandex.ru><br />
Date: Thu Mar 8 00:44:47 2018 +0300</p>
<p>Макросы симуляции и восстановления приложены их отношение к пунктам понятно из описания.</p>
<h3>пункт 1:</h3>
<p>Проверка восстановления координат попадения частицы в детектор проведена, картинки dE-E получены для пучка состоящего из <sup>1,2,3</sup>H и <sup>3,4,6</sup>He.</p>
<p><img alt="" height="446" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/055/original/trackReco.png" width="694" /></p>
<p>пункт 2:</p>
<p>Диаграммы dE-E можно увидеть в описанию предыдущего пункта.</p>
<h3>пункт 3:</h3>
<p>Проверка работы с геометрическими вырезами выглядит следующим образом:</p>
<p><img alt="" height="491" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/056/original/dE-Ecuts.png" width="764" /></p>
<p><br />
Картинка, которая на первой взглад пугает на самом деле очень хорошая и красивая. В симмуляции пускались два пучка:</p>
<pre>
ERIonMixGenerator* generator = new ERIonMixGenerator(ionName, Z, A, Q, 1);
generator->AddBackgroundIon("Triton", 1, 3, 1, 0.2 / 0.20);
generator->AddBackgroundIon("Alpha", 1, 4, 1, 0.4 / 0.60);
generator->AddBackgroundIon("Deuteron", 1, 2, 1, 0.2 / 0.20);
generator->AddBackgroundIon("proton", 1, 1, 1, 0.2 / 0.20);
generator->SetKinERange(0.001, 0.02);
Double32_t sigmaTheta = 0.004*TMath::RadToDeg();
generator->SetThetaSigma(0, 0);
generator->SetThetaRange(16, 18);
generator->SetPhiRange(0, 270);
generator->SetBoxXYZ(2, 2, 2, 2, 2.);</pre>
<p>и</p>
<pre>
ERIonMixGenerator* generator2 = new ERIonMixGenerator("HE3", 2, 3, 2, 1);
generator2->SetKinERange(0.001, 0.03);
generator2->SetThetaSigma(0, 0);
generator2->SetThetaRange(10, 12);
generator2->SetPhiRange(90, 360);
generator2->SetBoxXYZ(8, 2, 8, 2, 2.);</pre>
<p>Их попадение в детектор видно на панели 6. Поскольку оба пучка присутствовали в каждом событию, из-за их распределения по углу Фи в детектор попадает 1/3 пучка <sup>6</sup>He (включая примеси) и 2/3 пучка <sup>3</sup>He из всего набора событий. Значит вероятность того, что две частицы попадают одновременно в детектор равна 2/9. В первом столбце видим грязную картину dE-E и присутствие грязи обясняется одновременным попаданием двух частиц и накладыванием амплитуд (картинка суммарная по всем стрипам).</p>
<p>Реконструкция точки попадения в детектор на картинке 3 показывает два локуса пучка и синие прямоуголники вызванные неоднозначностью реконструкции, когда сигнал появляется в двух стрипах на каждой стороне одновременно. Это ожидаемый эффект и картинка правильная.</p>
<p>На картинке 2 показано распределение точек попадения в детектор с учетом выреза частицы <sup>3</sup>He. Видим замечательный отбор искоемой частицы с небольшим загразнением в местах, где можно ожидать неоднозночность реконструкции позиции из-за регистрации двух частиц.</p>
<p>Количественный анализ картинки 3 основан на следующих соображениях: в локусе зеленного вылета видим 3266 событий, в красном вырезе 5737. В сумме получается 9003. Если добавим точки, которые в неправильных местах (с учетом вероятности попадения двух частиц в детектор одновременно - 2/9) получаем цифру примерно 11000, которая очень близко к полной статистике картинки 3.</p>
<h3>пункт 4:</h3>
<p>По аналогии с пунктом 3 использовались два генератора, на этот раз без примесий. Видим картинку качественно похожую на ту, которая представлена в пункте 3. Это сильно повлияло на очистку dE-E картинки и чистоту отбора (см. панель 2).</p>
<p><img alt="" height="489" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/058/original/particleReco1.png" width="761" /></p>
<p>Для восстановления искаемой частицы, которая попадала в телескоп применялся макрос check3He.C, в котором создается новое дерево с веткой particle класса TLorentzVector, в которой должна храниться информация о налетающем <sup>3</sup>He. В переменной energy просто дублируется восстановленная кинетическая энергия <sup>3</sup>He. Картинку выводим с помощью макроса showT1Sim.C.</p>
<p><img alt="" height="493" src="http://er.jinr.ru/develop/system/rich/rich_files/rich_files/000/000/057/original/particleReco2.png" width="768" /></p>
<p>Для того, чтобы увидеть на панели 5 ожидаемую разницу между энергией MCTrack и ERQTelescopeTrack пришлось уделить особое внимание последовательности включения генераторов в FairPrimaryGenerator (см. Известные проблемы). На панели шесть видим пик в близи нуля, который показывает разницу между разыгранной энергией и восстановленной</p>
<pre>
tr->Draw("MCTrack.fEnergy*1000-2809 - ERQTelescopeTrack_DoubleSi_SD2_XY_1.fSumEdep*1000", "cut3He && MCTrack.fPdgCode == 1000020030");</pre>
<p>Количественный анализ не проводился, но восстановление на перый взглад работает.</p>
<h2>Известные проблемы</h2>
<h3>Энергия пучка</h3>
<p>Если задаем пучок как</p>
<p> Int_t Z = 2, A = 6, Q = 2;<br />
TString ionName = "6He";<br />
ERIonMixGenerator* generator = new ERIonMixGenerator(ionName, Z, A, Q, 1);<br />
<br />
generator->AddBackgroundIon("Triton", 1, 3, 1, 0.2 / 0.20);<br />
generator->AddBackgroundIon("Alpha", 1, 4, 1, 0.4 / 0.60);<br />
generator->AddBackgroundIon("HE3", 2, 3, 2, 0.2 / 0.20);<br />
generator->AddBackgroundIon("Deuteron", 1, 2, 1, 0.2 / 0.20);<br />
generator->AddBackgroundIon("proton", 1, 1, 1, 0.2 / 0.20);<br />
<br />
generator->SetKinERange(0.001, 0.02);</p>
<p>то заданная энергия касается только основной частицы - <sup>6</sup>He. Для остальных из картинки видим следующее:</p>
<table align="left" border="1" cellpadding="1" cellspacing="1" height="80" width="555">
<caption>Энергии пучковых частиц</caption>
<tbody>
<tr>
<td>частица</td>
<td style="text-align: center;">протон</td>
<td style="text-align: center;">дейтон</td>
<td style="text-align: center;">тритон</td>
<td style="text-align: center;">3He</td>
<td style="text-align: center;">4He</td>
<td style="text-align: center;">6He</td>
</tr>
<tr>
<td>энергия (МэВ)</td>
<td style="text-align: center;">30</td>
<td style="text-align: center;">15</td>
<td style="text-align: center;">10</td>
<td style="text-align: center;">40</td>
<td style="text-align: center;">30</td>
<td style="text-align: center;">20</td>
</tr>
</tbody>
</table>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Откуда взялись такие энергии?</p>
<h3>Сравнение восстановленной и симмулированной энергии.</h3>
<p>Напрямую невозможно сравнивать записанную информацию в ветках класса TClonesArray с помощью TTree::Draw и отборов. Это скорее всего связанно с тем, что такое сравнение происходить по элементам массива (например М1[0] - М2[0], M1[1] - M2[1]). Так просто работает TTree::Draw. Поскольку в текущей задаче у нас была максимальная управляемость пучком, было можно легко добиться результата. Если будет задача комплексная и полетит много разных частиц, придется сравнивать симуляцию и реконструкцию пособытийно. Это очень неприятная переспектива.</p>