<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://ctd.inp.nsk.su/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ctd.inp.nsk.su/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=K.A.Chilikin</id>
		<title>Charm-Tau Detector - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://ctd.inp.nsk.su/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=K.A.Chilikin"/>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Special:Contributions/K.A.Chilikin"/>
		<updated>2026-05-13T00:26:03Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.24</generator>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses2.pdf</id>
		<title>File:AnalysisAmplitudeAnalyses2.pdf</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses2.pdf"/>
				<updated>2025-11-06T09:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Амплитудные анализы распадов чармония&amp;quot;. Докладчик Кирилл Чиликин, 06/11/2025.&lt;br /&gt;
&lt;br /&gt;
[[Category: Not public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Main_Page"/>
				<updated>2025-11-06T09:04:28Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VEPP6 detector talks ==&lt;br /&gt;
* [[:File:Концепция детекторной инфраструктуры для экcперимента ВЭПП-6 250403.pdf|Концепция детекторной инфраструктуры для эксперимента ВЭПП-6]] (pdf) Докладчик Виктор Бобровников 03/03/2025&lt;br /&gt;
* [[:File:VEPP6detector CDRdevelop1st meeting27032025.pdf|Проект ВЭПП-6: детектор или Детектор для Φ-ψ фабрики в ИЯФ.]] (pdf) Докладчик Александр Барняков. 27/03/2025&lt;br /&gt;
* [[:File:Трекер на straw tubes для детектора ВЭПП-6.pptx|Трекер на straw tubes для детектора ВЭПП-6.]] (pptx) Докладчик Андрей Соколов. 10/04/2025&lt;br /&gt;
* [[:File:VEPP6detector_CDRdevelop4th_meeting24042025pid.pdf‎|Проект ВЭПП-6: детектор или Идентификация для Φ-ψ фабрики в ИЯФ.]] (pdf) Докладчик Александр Барняков. 24/04/2025&lt;br /&gt;
* [[:File:LKr vepp6.pdf|Калориметр детектора КЕДР на основе жидкого криптона]] (pdf) Докладчик Сергей Пелеганчук. 23/05/25&lt;br /&gt;
* [[:File:IT VEPP6.pptx|Возможные варианты внутреннего трекера детектора ВЭПП-6]] (pptx) Докладчик Лев Шехтман. 29/05/25&lt;br /&gt;
* [[:File:BraginMagnit.pptx|Соленоид для детектора Супер-стау-фабрики (Solenoid for CTF detector)]] (pptx) Докладчик Алексей Брагин. 05/06/25&lt;br /&gt;
* [[:File:Epifanov pureCsI 03July2025.odp|Статус R&amp;amp;D CsI(pure)]] (odp) ([[:File:Epifanov pureCsI 03July2025.pdf|pdf-версия]])  Докладчик Денис Епифанов. 03/07/2025&lt;br /&gt;
* [https://indico.belle2.org/event/12273/contributions/78333/attachments/30986/45852/bellell_trg_koga_20241013_ver2.pdf| Триггер Belle II] (pdf на сайте коллаборации) Рассказчик Павел Кроковный. 25/09/2025&lt;br /&gt;
* [[:File:Доклад Триггер КМД-3 для ВЭПП6.pptx|Триггер КМД-3]] (pptx) Докладчик Антон Горковенко. 25/09/2025&lt;br /&gt;
* [[:File:Trigger system_proposal.pdf|Триггер ВЭПП6. Первые оценки.]] (pdf Collaboration only) Докладчик Леонид Эпштейн. 25/09/2025&lt;br /&gt;
* [[:File:DCprojectVEPP6Short.pdf|Проектные параметры ДК для ВЭПП-6]] (pdf) Докладчик Корнелий Тодышев. 09/10/2025&lt;br /&gt;
* [[:File:Концепт ДК КМД3 30 10 25.pdf|Концепт новой ДК КМД3]] (pdf) Докладчик Александр Попов. 30/10/2025&lt;br /&gt;
&lt;br /&gt;
== VEPP6 physics talks ==&lt;br /&gt;
* [[:File:R-vepp6.pdf|Статус измерения R на низкой энергии]] (pdf) Докладчик Татьяна Харламова. 23/04/2025&lt;br /&gt;
* [[:File:Barion note.pdf|Физика барионов]] (pdf) Докладчик Александр Бобров. &lt;br /&gt;
* [[:File:Glueballs.pdf|Изучение экзотических адронов в распадах J/ψ. Глюболлы.]] (pdf) Докладчик Леонид Кардапольцев. 28/05/2025&lt;br /&gt;
* [[:File:AnalysisKSpectroscopy.pdf|Пакет для анализа и спектроскопия K-мезонов]] (pdf) Докладчик Кирилл Чиликин. 04/06/2025&lt;br /&gt;
* [[:File:AnalysisAmplitudeAnalyses.pdf|Амплитудные анализы распадов чармония в мезоны]] (pdf Collaboration only) Докладчик Кирилл Чиликин. 02/10/2025&lt;br /&gt;
* [[:File:Charmonium.pdf|Физика чармония]] (pdf Collaboration only) Докладчик Анна Винокурова. 09/10/2025&lt;br /&gt;
* [[:File:Strangeonium.pdf|Физика стрэнджония]] (pdf Collaboration only) Докладчик Леонид Кардапольцев. 09/10/2025&lt;br /&gt;
* [[:File:Bobrovjf 6.pdf|Measurement of the e^+e^- → p^+p^- cross section near the threshold with a high energy resolution]] (pdf) Докладчик Александр Бобров. 30/10/2025&lt;br /&gt;
* [[:File:AnalysisAmplitudeAnalyses2.pdf|Амплитудные анализы распадов чармония в мезоны]] (pdf Collaboration only) Докладчик Кирилл Чиликин. 06/11/2025&lt;br /&gt;
&lt;br /&gt;
== VEPP6 collider talks ==&lt;br /&gt;
* [[VEPP6 Collider talks]] (Collaboration only. To see these materials you need to contact [[User:E.M.Baldin|Evgenii Baldin]])&lt;br /&gt;
&lt;br /&gt;
== Collaboration only ==&lt;br /&gt;
To see these materials you need to contact [[User:E.M.Baldin|Evgenii Baldin]]&lt;br /&gt;
* [[Internal Main]]&lt;br /&gt;
&lt;br /&gt;
== Archive ==&lt;br /&gt;
* [[Main Page c-tau Factory|c-tau Factory project]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses2.pdf</id>
		<title>File:AnalysisAmplitudeAnalyses2.pdf</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses2.pdf"/>
				<updated>2025-11-06T09:03:48Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Амплитудные анализы распадов чармония&amp;quot;. Докладчик Кирилл Чиликин, 09/10/2025.&lt;br /&gt;
&lt;br /&gt;
[[Category: Not public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses2.pdf</id>
		<title>File:AnalysisAmplitudeAnalyses2.pdf</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses2.pdf"/>
				<updated>2025-11-06T09:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &amp;quot;Амплитудные анализы распадов чармония&amp;quot;. Докладчик Кирилл Чиликин, 09/10/2025.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Амплитудные анализы распадов чармония&amp;quot;. Докладчик Кирилл Чиликин, 09/10/2025.&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Main_Page"/>
				<updated>2025-10-09T09:41:33Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VEPP6 detector talks ==&lt;br /&gt;
* [[:File:Концепция детекторной инфраструктуры для экcперимента ВЭПП-6 250403.pdf|Концепция детекторной инфраструктуры для эксперимента ВЭПП-6]] (pdf) Докладчик Виктор Бобровников 03/03/2025&lt;br /&gt;
* [[:File:VEPP6detector CDRdevelop1st meeting27032025.pdf|Проект ВЭПП-6: детектор или Детектор для Φ-ψ фабрики в ИЯФ.]] (pdf) Докладчик Александр Барняков. 27/03/2025&lt;br /&gt;
* [[:File:Трекер на straw tubes для детектора ВЭПП-6.pptx|Трекер на straw tubes для детектора ВЭПП-6.]] (pptx) Докладчик Андрей Соколов. 10/04/2025&lt;br /&gt;
* [[:File:VEPP6detector_CDRdevelop4th_meeting24042025pid.pdf‎|Проект ВЭПП-6: детектор или Идентификация для Φ-ψ фабрики в ИЯФ.]] (pdf) Докладчик Александр Барняков. 24/04/2025&lt;br /&gt;
* [[:File:LKr vepp6.pdf|Калориметр детектора КЕДР на основе жидкого криптона]] (pdf) Докладчик Сергей Пелеганчук. 23/05/25&lt;br /&gt;
* [[:File:IT VEPP6.pptx|Возможные варианты внутреннего трекера детектора ВЭПП-6]] (pptx) Докладчик Лев Шехтман. 29/05/25&lt;br /&gt;
* [[:File:BraginMagnit.pptx|Соленоид для детектора Супер-стау-фабрики (Solenoid for CTF detector)]] (pptx) Докладчик Алексей Брагин. 05/06/25&lt;br /&gt;
* [[:File:Epifanov pureCsI 03July2025.odp|Статус R&amp;amp;D CsI(pure)]] (odp) ([[:File:Epifanov pureCsI 03July2025.pdf|pdf-версия]])  Докладчик Денис Епифанов. 03/07/2025&lt;br /&gt;
* [https://indico.belle2.org/event/12273/contributions/78333/attachments/30986/45852/bellell_trg_koga_20241013_ver2.pdf| Триггер Belle II] (pdf на сайте коллаборации) Рассказчик Павел Кроковный. 25/09/2025&lt;br /&gt;
* [[:File:Доклад Триггер КМД-3 для ВЭПП6.pptx|Триггер КМД-3]] (pptx) Докладчик Антон Горковенко. 25/09/2025&lt;br /&gt;
* [[:File:Trigger system_proposal.pdf|Триггер ВЭПП6. Первые оценки.]] (pdf Collaboration only) Докладчик Леонид Эпштейн. 25/09/2025&lt;br /&gt;
* [[:File:DCprojectVEPP6Short.pdf|Проектные параметры ДК для ВЭПП-6]] (pdf) Докладчик Корнелий Тодышев. 09/10/2025&lt;br /&gt;
&lt;br /&gt;
== VEPP6 physics talks ==&lt;br /&gt;
* [[:File:R-vepp6.pdf|Статус измерения R на низкой энергии]] (pdf) Докладчик Татьяна Харламова. 23/04/2025&lt;br /&gt;
* [[:File:Barion note.pdf|Физика барионов]] (pdf) Докладчик Александр Бобров. &lt;br /&gt;
* [[:File:Glueballs.pdf|Изучение экзотических адронов в распадах J/ψ. Глюболлы.]] (pdf) Докладчик Леонид Кардапольцев. 28/05/2025&lt;br /&gt;
* [[:File:AnalysisKSpectroscopy.pdf|Пакет для анализа и спектроскопия K-мезонов]] (pdf) Докладчик Кирилл Чиликин. 04/06/2025&lt;br /&gt;
* [[:File:AnalysisAmplitudeAnalyses.pdf|Амплитудные анализы распадов чармония в мезоны]] (pdf Collaboration only) Докладчик Кирилл Чиликин. 02/10/2025&lt;br /&gt;
* [[:File:Charmonium.pdf|Физика чармония]] (pdf Collaboration only) Докладчик Анна Винокурова. 09/10/2025&lt;br /&gt;
* [[:File:Strangeonium.pdf|Физика стрэнджония]] (pdf Collaboration only) Докладчик Леонид Кардапольцев. 09/10/2025&lt;br /&gt;
&lt;br /&gt;
== VEPP6 collider talks ==&lt;br /&gt;
* [[VEPP6 Collider talks]] (Collaboration only. To see these materials you need to contact [[User:E.M.Baldin|Evgenii Baldin]])&lt;br /&gt;
&lt;br /&gt;
== Collaboration only ==&lt;br /&gt;
To see these materials you need to contact [[User:E.M.Baldin|Evgenii Baldin]]&lt;br /&gt;
* [[Internal Main]]&lt;br /&gt;
&lt;br /&gt;
== Archive ==&lt;br /&gt;
* [[Main Page c-tau Factory|c-tau Factory project]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses.pdf</id>
		<title>File:AnalysisAmplitudeAnalyses.pdf</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses.pdf"/>
				<updated>2025-10-09T09:38:51Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Амплитудные анализы распадов чармония в мезоны&amp;quot;. Докладчик Кирилл Чиликин, 09/10/2025.&lt;br /&gt;
&lt;br /&gt;
[[Category: Not public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses.pdf</id>
		<title>File:AnalysisAmplitudeAnalyses.pdf</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisAmplitudeAnalyses.pdf"/>
				<updated>2025-10-09T09:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-06-05T06:30:44Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Warning! The described analysis version is currently accepted to the development branch, but there are no releases with it yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/sctau/aurora/-/tree/dev-gcf1 dev-gcf1] from Aurora repository, or use its nightly build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
asetup Aurora,dev-gcf1,latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations, unnecessary data copying at the end of operation of each algorithm,&lt;br /&gt;
lack of kinematic fits for fast simulation, necessity to manually specify particle properties such as self-conjugation, and others.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, extrainfo1, fit1, combiner2, extrainfo2,&lt;br /&gt;
                   fit2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event loader.&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra information tool ===&lt;br /&gt;
&lt;br /&gt;
Extra information tool saves values of the specified variables to ExtraInfo (string to value map) for the particles in the specified list.&lt;br /&gt;
For example, one can save the value of particle invariant mass before kinematic fit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Save pi0 mass before fit.&lt;br /&gt;
extrainfo1 = ExtraInfoTool(&lt;br /&gt;
    'ExtraInfo1',&lt;br /&gt;
    particleList='pi0',&lt;br /&gt;
    extraInfo=[['M', 'M']]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument in the two-item list is the ExtraInfo name and the second one is the variable name.&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool performs mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm.&lt;br /&gt;
Lists of the variables to be saved are set for the particle itself or its selected daughter particles.&lt;br /&gt;
It is possible to define aliases for variable names, they will be used as branch names.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Define aliases.&lt;br /&gt;
aliases = [['M_before_fit', 'extraInfo(M)'],&lt;br /&gt;
           ['p_before_fit', 'extraInfo(p)']]&lt;br /&gt;
&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M_before_fit', 'p_before_fit', 'M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc', 'pidkpi',&lt;br /&gt;
           'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M_before_fit', 'M', 'J/psi -&amp;gt; K+ K- ^pi0'],&lt;br /&gt;
          ['px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc',&lt;br /&gt;
           'J/psi -&amp;gt; K+ K- [ pi0 -&amp;gt; ^gamma ^gamma ]']],&lt;br /&gt;
    aliases=aliases&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that its is possible to use several different ntuple algorithms for different lists of reconstructed particles.&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Main_Page"/>
				<updated>2025-06-04T05:05:49Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: /* VEPP6 physics talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VEPP6 detector talks ==&lt;br /&gt;
* [[:File:Концепция детекторной инфраструктуры для экcперимента ВЭПП-6 250403.pdf|Концепция детекторной инфраструктуры для эксперимента ВЭПП-6]] (pdf) Докладчик Виктор Бобровников 03/03/2025&lt;br /&gt;
* [[:File:VEPP6detector CDRdevelop1st meeting27032025.pdf|Проект ВЭПП-6: детектор или Детектор для Φ-ψ фабрики в ИЯФ.]] (pdf) Докладчик Александр Барняков. 27/03/2025&lt;br /&gt;
* [[:File:Трекер на straw tubes для детектора ВЭПП-6.pptx|Трекер на straw tubes для детектора ВЭПП-6.]] (pptx) Докладчик Андрей Соколов. 10/04/2025&lt;br /&gt;
* [[:File:VEPP6detector_CDRdevelop4th_meeting24042025pid.pdf‎|Проект ВЭПП-6: детектор или Идентификация для Φ-ψ фабрики в ИЯФ.]] (pdf) Докладчик Александр Барняков. 24/04/2025&lt;br /&gt;
* [[:File:LKr vepp6.pdf|Калориметр детектора КЕДР на основе жидкого криптона]] (pdf) Докладчик Сергей Пелеганчук. 23/05/25&lt;br /&gt;
* [[:File:IT VEPP6.pptx|Возможные варианты внутреннего трекера детектора ВЭПП-6]] (pptx) Докладчик Лев Шехтман. 29/05/25&lt;br /&gt;
&lt;br /&gt;
== VEPP6 physics talks ==&lt;br /&gt;
* [[:File:R-vepp6.pdf|Статус измерения R на низкой энергии]] (pdf) Докладчик Татьяна Харламова. 23/04/2025&lt;br /&gt;
* [[:File:Barion note.pdf|Физика барионов]] (pdf) Докладчик Александр Бобров. &lt;br /&gt;
* [[:File:Glueballs.pdf|Изучение экзотических адронов в распадах J/ψ. Глюболлы.]] (pdf) Докладчик Леонид Кардапольцев. 28/05/2025&lt;br /&gt;
* [[:File:AnalysisKSpectroscopy.pdf|Пакет для анализа и спектроскопия K-мезонов]] (pdf) Докладчик Кирилл Чиликин. 04/06/2025&lt;br /&gt;
&lt;br /&gt;
== Collaboration only ==&lt;br /&gt;
To see these materials you need to contact [[User:E.M.Baldin|Evgenii Baldin]]&lt;br /&gt;
* [[Internal Main]]&lt;br /&gt;
&lt;br /&gt;
== Archive ==&lt;br /&gt;
* [[Main Page c-tau Factory|c-tau Factory project]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisKSpectroscopy.pdf</id>
		<title>File:AnalysisKSpectroscopy.pdf</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/File:AnalysisKSpectroscopy.pdf"/>
				<updated>2025-06-04T05:02:24Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-05-30T09:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Warning! The described analysis version is in review but has not been accepted to the development branch yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/chilikin/aurora/-/tree/bugfix/warnings-documentation-analysis bugfix/warnings-documentation-analysis] from Kirill Chilikin's repository, and also use&lt;br /&gt;
the database &amp;lt;code&amp;gt;/home/chilikin/sctau/magnetic_field_database/database.txt&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations, unnecessary data copying at the end of operation of each algorithm,&lt;br /&gt;
lack of kinematic fits for fast simulation, necessity to manually specify particle properties such as self-conjugation, and others.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, extrainfo1, fit1, combiner2, extrainfo2,&lt;br /&gt;
                   fit2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event loader.&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra information tool ===&lt;br /&gt;
&lt;br /&gt;
Extra information tool saves values of the specified variables to ExtraInfo (string to value map) for the particles in the specified list.&lt;br /&gt;
For example, one can save the value of particle invariant mass before kinematic fit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Save pi0 mass before fit.&lt;br /&gt;
extrainfo1 = ExtraInfoTool(&lt;br /&gt;
    'ExtraInfo1',&lt;br /&gt;
    particleList='pi0',&lt;br /&gt;
    extraInfo=[['M', 'M']]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument in the two-item list is the ExtraInfo name and the second one is the variable name.&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool performs mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm.&lt;br /&gt;
Lists of the variables to be saved are set for the particle itself or its selected daughter particles.&lt;br /&gt;
It is possible to define aliases for variable names, they will be used as branch names.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Define aliases.&lt;br /&gt;
aliases = [['M_before_fit', 'extraInfo(M)'],&lt;br /&gt;
           ['p_before_fit', 'extraInfo(p)']]&lt;br /&gt;
&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M_before_fit', 'p_before_fit', 'M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc', 'pidkpi',&lt;br /&gt;
           'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M_before_fit', 'M', 'J/psi -&amp;gt; K+ K- ^pi0'],&lt;br /&gt;
          ['px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc',&lt;br /&gt;
           'J/psi -&amp;gt; K+ K- [ pi0 -&amp;gt; ^gamma ^gamma ]']],&lt;br /&gt;
    aliases=aliases&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that its is possible to use several different ntuple algorithms for different lists of reconstructed particles.&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-05-30T09:54:44Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Warning! The described analysis version is in review but has not been accepted to the development branch yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/chilikin/aurora/-/tree/bugfix/warnings-documentation-analysis bugfix/warnings-documentation-analysis] from Kirill Chilikin's repository, and also use&lt;br /&gt;
the database &amp;lt;code&amp;gt;/home/chilikin/sctau/magnetic_field_database/database.txt&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations, unnecessary data copying at the end of operation of each algorithm,&lt;br /&gt;
lack of kinematic fits for fast simulation, necessity to manually specify particle properties such as self-conjugation, and others.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, extrainfo1, fit1, combiner2, extrainfo2,&lt;br /&gt;
                   fit2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event loader.&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra information tool ===&lt;br /&gt;
&lt;br /&gt;
Extra information tool saves values of the specified variables to ExtraInfo (string to value map) for the particles in the specified list.&lt;br /&gt;
For example, one can save the value of particle invariant mass before kinematic fit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Save pi0 mass before fit.&lt;br /&gt;
extrainfo1 = ExtraInfoTool(&lt;br /&gt;
    'ExtraInfo1',&lt;br /&gt;
    particleList='pi0',&lt;br /&gt;
    extraInfo=[['M', 'M']]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument in the two-item list is the ExtraInfo name and the second one is the variable name.&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool perform mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm.&lt;br /&gt;
Lists of the variables to be saved are set for the particle itself or its selected daughter particles.&lt;br /&gt;
It is possible to define aliases for variable names, they will be used as branch names.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Define aliases.&lt;br /&gt;
aliases = [['M_before_fit', 'extraInfo(M)'],&lt;br /&gt;
           ['p_before_fit', 'extraInfo(p)']]&lt;br /&gt;
&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M_before_fit', 'p_before_fit', 'M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc', 'pidkpi',&lt;br /&gt;
           'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M_before_fit', 'M', 'J/psi -&amp;gt; K+ K- ^pi0'],&lt;br /&gt;
          ['px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc',&lt;br /&gt;
           'J/psi -&amp;gt; K+ K- [ pi0 -&amp;gt; ^gamma ^gamma ]']],&lt;br /&gt;
    aliases=aliases&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that its is possible to use several different ntuple algorithms for different lists of reconstructed particles.&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/AuroraMaster</id>
		<title>AuroraMaster</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/AuroraMaster"/>
				<updated>2025-05-30T09:52:50Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: Replaced content with &amp;quot;
The AuroraMaster analysis configuration system used in Aurora version 2.x has been removed in the development version (branch [https://git.inp.nsk.su/sctau/aurora/-/tree/...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The AuroraMaster analysis configuration system used in Aurora version 2.x has been removed in the development version (branch [https://git.inp.nsk.su/sctau/aurora/-/tree/dev-gcf1?ref_type=heads dev-gcf1]).&lt;br /&gt;
The analysis is now configured by creation of various analysis tools using usual Python functions and joining them into analysis-tool chain of AnalysisAlgorithm.&lt;br /&gt;
Please see the page [[Use_Analysis_package]] for details.&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-05-30T09:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Warning! The described analysis version is in review but has not been accepted to the development branch yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/chilikin/aurora/-/tree/bugfix/warnings-documentation-analysis bugfix/warkings-documentation-analysis] from Kirill Chilikin's repository, and also use&lt;br /&gt;
the database &amp;lt;code&amp;gt;/home/chilikin/sctau/magnetic_field_database/database.txt&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations, unnecessary data copying at the end of operation of each algorithm,&lt;br /&gt;
lack of kinematic fits for fast simulation, necessity to manually specify particle properties such as self-conjugation, and others.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, extrainfo1, fit1, combiner2, extrainfo2,&lt;br /&gt;
                   fit2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event loader.&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra information tool ===&lt;br /&gt;
&lt;br /&gt;
Extra information tool saves values of the specified variables to ExtraInfo (string to value map) for the particles in the specified list.&lt;br /&gt;
For example, one can save the value of particle invariant mass before kinematic fit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Save pi0 mass before fit.&lt;br /&gt;
extrainfo1 = ExtraInfoTool(&lt;br /&gt;
    'ExtraInfo1',&lt;br /&gt;
    particleList='pi0',&lt;br /&gt;
    extraInfo=[['M', 'M']]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument in the two-item list is the ExtraInfo name and the second one is the variable name.&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool perform mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm.&lt;br /&gt;
Lists of the variables to be saved are set for the particle itself or its selected daughter particles.&lt;br /&gt;
It is possible to define aliases for variable names, they will be used as branch names.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Define aliases.&lt;br /&gt;
aliases = [['M_before_fit', 'extraInfo(M)'],&lt;br /&gt;
           ['p_before_fit', 'extraInfo(p)']]&lt;br /&gt;
&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M_before_fit', 'p_before_fit', 'M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc', 'pidkpi',&lt;br /&gt;
           'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M_before_fit', 'M', 'J/psi -&amp;gt; K+ K- ^pi0'],&lt;br /&gt;
          ['px', 'py', 'pz', 'px_mc', 'py_mc', 'pz_mc',&lt;br /&gt;
           'J/psi -&amp;gt; K+ K- [ pi0 -&amp;gt; ^gamma ^gamma ]']],&lt;br /&gt;
    aliases=aliases&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that its is possible to use several different ntuple algorithms for different lists of reconstructed particles.&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-05-29T10:32:46Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Warning! The described analysis version is in review but has not been accepted to the development branch yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/chilikin/aurora/-/tree/feature/135-move-pid-to-track 135-move-pid-to-track] from Kirill Chilikin's repository, and also use&lt;br /&gt;
the database &amp;lt;code&amp;gt;/home/chilikin/sctau/magnetic_field_database/database.txt&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations, unnecessary data copying at the end of operation of each algorithm,&lt;br /&gt;
lack of kinematic fits for fast simulation, necessity to manually specify particle properties such as self-conjugation, and others.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, extrainfo1, fit1, combiner2, extrainfo2,&lt;br /&gt;
                   fit2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event loader.&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra information tool ===&lt;br /&gt;
&lt;br /&gt;
Extra information tool saves values of the specified variables to ExtraInfo (string to value map) for the particles in the specified list.&lt;br /&gt;
For example, one can save the value of particle invariant mass before kinematic fit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Save pi0 mass before fit.&lt;br /&gt;
extrainfo1 = ExtraInfoTool(&lt;br /&gt;
    'ExtraInfo1',&lt;br /&gt;
    particleList='pi0',&lt;br /&gt;
    extraInfo=[['M', 'M']]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument in the two-item list is the ExtraInfo name and the second one is the variable name.&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool perform mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm.&lt;br /&gt;
Lists of the variables to be saved are set for the particle itself or its selected daughter particles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'pidkpi', 'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M', 'J/psi -&amp;gt; K+ K- ^pi0']]&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that its is possible to use several different ntuple algorithms for different lists of reconstructed particles.&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-05-21T11:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Warning! The described analysis version is in review but has not been accepted to the development branch yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/chilikin/aurora/-/tree/feature/114-add-fast-simulation 114-add-fast-simulation] from Kirill Chilikin's repository, and also use&lt;br /&gt;
the database &amp;lt;code&amp;gt;/home/chilikin/sctau/magnetic_field_database/database.txt&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations and unnecessary data copying at the end of operation of each module.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, combiner2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool perform mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Now fitter does not work because error matrix is not available!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'pidkpi', 'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M', 'J/psi -&amp;gt; K+ K- ^pi0']]&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package</id>
		<title>Use Analysis package</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/Use_Analysis_package"/>
				<updated>2025-05-21T11:11:25Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New analysis package ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Warning! The described analysis version is in review but has not been accepted to the development branch yet. You need to compile the branch&lt;br /&gt;
[https://git.inp.nsk.su/chilikin/aurora/-/tree/feature/114-add-fast-simulation 114-add-fast-simulation] from Kirill Chilikin's repository, and also use&lt;br /&gt;
the database &amp;lt;code&amp;gt;/home/chilikin/sctau/magnetic_field_database/database.txt&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous version of the analysis package from the releases 2.x had multiple issues, such as incorrect particle combinations and unnecessary data copying at the end of operation of each module.&lt;br /&gt;
A major rewrite is ongoing. It is recommended to use the development branch dev-gcf1 to work with analysis. The page [[MC_Data_Sets]] contains information about the available MC. The example&lt;br /&gt;
&amp;lt;pre&amp;gt;Analysis/AnalysisExamples/jobOptions/ReconstructJpsiKpKmPiz.py&amp;lt;/pre&amp;gt; will be explained below in detail.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
At the beginning the user needs to set up the services and input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Particle data.&lt;br /&gt;
particle_data = ParticleDataService('ParticleDataService')&lt;br /&gt;
&lt;br /&gt;
# Conditions database.&lt;br /&gt;
conditions = ConditionsService('ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=['local_database/database.txt',&lt;br /&gt;
                             AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The particle-data service provides the particle data. Conditions service reads experimental conditions from&lt;br /&gt;
the database. The database &amp;lt;code&amp;gt;local_database&amp;lt;/code&amp;gt; should contain the beam parameters generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;ImportBeamParametersJpsi.py&amp;lt;/code&amp;gt; from the same directory. The central database contains located at the path&lt;br /&gt;
returned by the function &amp;lt;code&amp;gt;AuroraConditions.databasePath()&amp;lt;/code&amp;gt; contains the magnetic-field data.&lt;br /&gt;
&lt;br /&gt;
== Input data ==&lt;br /&gt;
&lt;br /&gt;
After the services, input data file is selected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Event data service and Podio input algorithm.&lt;br /&gt;
podioevent, podioinput = Analysis.inputMdst('jpsi_kpkmpiz_1.root')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this example, the input file is generated by the script&lt;br /&gt;
&amp;lt;code&amp;gt;GenerateSignalMCJpsiKpKmPiz.py&amp;lt;/code&amp;gt; from this directory.&lt;br /&gt;
&lt;br /&gt;
== Analysis algorithm ==&lt;br /&gt;
&lt;br /&gt;
The analysis is performed by analysis algorithm created by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Analysis algorithm.&lt;br /&gt;
analysis = AnalysisAlgorithm(&lt;br /&gt;
    'Analysis',&lt;br /&gt;
    eventLoader=event_loader,&lt;br /&gt;
    analysisTools=[cut1, combiner1, combiner2]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The analysis algorithm calls analysis tools sequentially. The first tool is always the event loader which loads particle from the reconstruction results, while&lt;br /&gt;
the remaining chain is configured by the user.&lt;br /&gt;
&lt;br /&gt;
=== Event loader ===&lt;br /&gt;
&lt;br /&gt;
The event loader is set up as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_loader = EventLoaderTool(&lt;br /&gt;
    'EventLoader',&lt;br /&gt;
    particleLists=['pi+', 'K+', 'gamma']&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument &amp;lt;code&amp;gt;particleLists&amp;lt;/code&amp;gt; specifies particle lists to be loaded. All particles are loaded without any selection requirements. Antiparticles are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
=== Cut tool ===&lt;br /&gt;
&lt;br /&gt;
Cut tool applies selection requirements, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Apply selection criteria for kaons.&lt;br /&gt;
cut1 = CutTool(&lt;br /&gt;
    'Cut1',&lt;br /&gt;
    outputParticleList='K+:sel',&lt;br /&gt;
    inputParticleLists=['K+'],&lt;br /&gt;
    cut='pt &amp;gt; 0.1'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new list &amp;lt;code&amp;gt;K+:sel&amp;lt;/code&amp;gt; contains kaons from the original list &amp;lt;code&amp;gt;K+&amp;lt;/code&amp;gt; satisfying the requirement &amp;lt;code&amp;gt;pt &amp;gt; 0.1 GeV/c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Combiner tool ===&lt;br /&gt;
&lt;br /&gt;
Combiner tool creates particles from combinations of the specified daughter particles and applies the specified selection requirement for the combined particle, for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Reconstruct pi0 -&amp;gt; gamma gamma.&lt;br /&gt;
combiner1 = ParticleCombinerTool(&lt;br /&gt;
    'Combiner1',&lt;br /&gt;
    decayString='pi0 -&amp;gt; gamma gamma',&lt;br /&gt;
    cut='0.120 &amp;lt; M &amp;lt; 0.150'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kinematic fitter tool ===&lt;br /&gt;
&lt;br /&gt;
Kinematic fitter tool perform mass fit for all particles in the specified list, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Perform mass fit for pi0.&lt;br /&gt;
fit1 = KinematicFitterTool(&lt;br /&gt;
    'Fit1',&lt;br /&gt;
    particleList='pi0'&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Now fitter does not work because error matrix is not available!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ntuple algorithm ==&lt;br /&gt;
&lt;br /&gt;
After analysis, the reconstructed particles are saved into output file by ntuple algorithm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Create ntuple.&lt;br /&gt;
ntuple1 = NtupleAlg('NtupleAlg1',&lt;br /&gt;
    listName='J/psi:channel1',&lt;br /&gt;
    fileName='scttuple/jpsi1',&lt;br /&gt;
    tupleTitle='',&lt;br /&gt;
    vars=[['M', ''],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'pidkpi', 'J/psi -&amp;gt; ^K+ ^K- pi0'],&lt;br /&gt;
          ['E', 'px', 'py', 'pz', 'M', 'J/psi -&amp;gt; K+ K- ^pi0']]&lt;br /&gt;
)&lt;br /&gt;
NTupleSvc(Output = [&amp;quot;scttuple DATAFILE='jpsi_kpkmpiz_reconstructed.root' OPT='NEW' TYP='ROOT'&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gaudi application ==&lt;br /&gt;
&lt;br /&gt;
Finally, the user needs to create Gaudi application specifying all necessary algorithms and services:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Application.&lt;br /&gt;
options= {&lt;br /&gt;
    'TopAlg' : [podioinput, analysis, ntuple1],&lt;br /&gt;
    'EvtSel' : 'NONE',&lt;br /&gt;
    'ExtSvc' : [particle_data, podioevent, conditions],&lt;br /&gt;
    'EvtMax' : -1,&lt;br /&gt;
    'AuditAlgorithms' : True,&lt;br /&gt;
    'AuditTools' : True,&lt;br /&gt;
    'AuditServices' : True,&lt;br /&gt;
    'OutputLevel' : INFO,&lt;br /&gt;
    'HistogramPersistency' : 'ROOT',&lt;br /&gt;
}&lt;br /&gt;
ApplicationMgr(**options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decay description ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module supports string description of particle decays. [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Generation/Generators/EvtGen_i/share/evt.pdl The EvtGen particle naming scheme] is used. The following strings are valid decay expressions:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; K- pi+&amp;quot;&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; [rho0 -&amp;gt; pi+ pi-] pi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A decay string may or may not contain the arrow and the right-hand side. Spaces around the arrow are optional. Nested decays are expressed with square brackets.&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''labeled''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;lowpt&amp;quot; is a label. Labels allow working with several lists of the same particle type. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D*+ -&amp;gt; [D0 -&amp;gt; K- pi+] pi+:lowpt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A particle in the decay string can be '''selected''' using the &amp;quot;^&amp;quot; symbol:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;D0 -&amp;gt; ^K- ^pi+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;K-&amp;quot; and &amp;quot;pi+&amp;quot; are selected here.&lt;br /&gt;
&lt;br /&gt;
== Cuts description ==&lt;br /&gt;
&lt;br /&gt;
Set of [[Analysis variables|predefined variables]] is included in the &amp;lt;code&amp;gt;Analysis&amp;lt;/code&amp;gt; module. There are several types of variables:&lt;br /&gt;
&lt;br /&gt;
* ''Particle variables''. A variable is calculated for a given particle, e.g.: &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; (mass).&lt;br /&gt;
* ''Parametric particle variables''. A variable is calculate for a given particle and depends on one or several parameters, e.g. &amp;lt;code&amp;gt;deltaM&amp;lt;/code&amp;gt; depends on the beam energy.&lt;br /&gt;
* ''Event variables''. A variable is calculated for an event, e.g. &amp;lt;code&amp;gt;ncharged&amp;lt;/code&amp;gt; (number of tracks).&lt;br /&gt;
&lt;br /&gt;
Selection criteria are imposed with string expressions like:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;M &amp;lt; 0.12&amp;quot;  # the mass less than 0.12 GeV&lt;br /&gt;
* &amp;quot;charge == 0&amp;quot; # zero electric charge&lt;br /&gt;
* &amp;quot;1.8 &amp;lt; M &amp;lt; 1.9&amp;quot;  # the mass is between 1.8 GeV and 1.9 GeV&lt;br /&gt;
* &amp;quot;charge == 0 and M &amp;lt; 0.12&amp;quot;&lt;br /&gt;
* &amp;quot;charge == 0 and [M &amp;lt; 0.12 or pt &amp;gt; 0.1]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Square brackets are used to manage the order of logical operations. The following operators are available: &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;=&amp;quot;, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;=&amp;quot;, &amp;quot;==&amp;quot;, &amp;quot;!=&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;or&amp;quot;.&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	<entry>
		<id>https://ctd.inp.nsk.su/wiki/index.php/MC_Data_Sets</id>
		<title>MC Data Sets</title>
		<link rel="alternate" type="text/html" href="https://ctd.inp.nsk.su/wiki/index.php/MC_Data_Sets"/>
				<updated>2025-05-21T10:24:19Z</updated>
		
		<summary type="html">&lt;p&gt;K.A.Chilikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MC sample for the development branch dev-gcf1 is located at&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ceph/users/chilikin/generic_mc/jpsi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and consists of 50 files with 1000000 generic J/psi events in each file. The files are stored in the subdirectory &amp;lt;code&amp;gt;mc&amp;lt;/code&amp;gt;.&lt;br /&gt;
The subdirectory &amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt; database contains the local database with beam energy of this MC sample. To use it in analysis,&lt;br /&gt;
please include the database file to the list of testing-payload locations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conditions = ConditionsService(&lt;br /&gt;
    'ConditionsSvc',&lt;br /&gt;
    testingPayloadLocations=[ \&lt;br /&gt;
        '/ceph/users/chilikin/generic_mc/jpsi/database/database.txt',&lt;br /&gt;
        AuroraConditions.databasePath()]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Not_public]]&lt;/div&gt;</summary>
		<author><name>K.A.Chilikin</name></author>	</entry>

	</feed>