BmnRoot
26.10.0-210-gc52d34b0
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnAlignTestTask.h
Go to the documentation of this file.
1
/*
2
BM@N alignment routine
3
BM@N experiment at NICA complex, JINR, 2025
4
5
Department: Math & Soft Group of HEP lab
6
Author: Igor Polev, polev@jinr.int
7
8
BmnAlignTestTask class declaration
9
Synthetic alignment tasks with a known answer
10
*/
11
12
#ifndef BMNALIGNTESTTASK_H
13
#define BMNALIGNTESTTASK_H
14
15
#include "
BmnAligner.h
"
16
17
#include <
TVector2.h
>
18
19
/*
20
* Builds a dataset whose true misalignment is known, so that a solution can be
21
* compared against the answer instead of against itself.
22
*
23
* Takes a loaded aligner, fits straight tracks to its real data, displaces the
24
* detector by a randomized solution, and writes out hits made by the
25
* measurement model of the displaced detector, plus the solution that produced
26
* them. The real hits are taken in the geometry of the aligner's last result,
27
* the nominal one if it has none.
28
*
29
* The randomized solution is drawn from the aligner's presigmas, which are
30
* therefore the truth sigmas here, not the priors the task will be solved
31
* with. It obeys the aligner's constraints, so the alignment of the task must
32
* use the same constraints file. For a model
33
* with a target element the tracks that come from the vertex pass through it
34
* exactly, the others keep their own lines; the target sits at z0, the z where
35
* the real tracks meet the beam, which Make() measures and reports. See Make().
36
*
37
* The aligner is left as it was found, except for the states of its vertex
38
* hits, which Make() tests (Align() tests them again anyway).
39
*
40
* A consumer of BmnAligner, not part of it - production alignment never needs
41
* this, and the solver should not carry it.
42
*/
43
44
class
BmnAlignTestTask
45
{
46
public
:
47
// where the noise sigma of a synthetic hit comes from
48
enum
ENoise
49
{
50
kHitErrors
,
// the error fields of its source hit
51
kElementMeans
,
// the mean hit error of its element in the source data
52
kUserValues
// stdDevXY of Make(), the same for every hit
53
};
54
55
BmnAlignTestTask
() =
delete
;
56
57
static
Bool_t
Make
(
58
BmnAligner
& aligner,
59
const
char
* dataPath,
// .root file to write the synthetic hits into
60
const
char
* solutionPath,
// .json file to write the truth solution into
61
Double_t
sigmaScale = 1.0,
// truth StdDev = presigma * sigmaScale; 0 for the nominal geometry
62
ENoise
noise =
kHitErrors
,
63
const
TVector2
& stdDevXY =
TVector2
()
// kUserValues only; a zero component means no noise there
64
);
65
};
66
67
#endif
// BMNALIGNTESTTASK_H
BmnAligner.h
Bool_t
bool Bool_t
Double_t
double Double_t
TVector2.h
BmnAlignTestTask::Make
static Bool_t Make(BmnAligner &aligner, const char *dataPath, const char *solutionPath, Double_t sigmaScale=1.0, ENoise noise=kHitErrors, const TVector2 &stdDevXY=TVector2())
Definition
BmnAlignTestTask.cxx:109
BmnAlignTestTask::BmnAlignTestTask
BmnAlignTestTask()=delete
BmnAlignTestTask::ENoise
ENoise
Definition
BmnAlignTestTask.h:49
BmnAlignTestTask::kHitErrors
@ kHitErrors
Definition
BmnAlignTestTask.h:50
BmnAlignTestTask::kUserValues
@ kUserValues
Definition
BmnAlignTestTask.h:52
BmnAlignTestTask::kElementMeans
@ kElementMeans
Definition
BmnAlignTestTask.h:51
BmnAligner
Definition
BmnAligner.h:36
TVector2
align_new
src
BmnAlignTestTask.h
Generated on
for BmnRoot by
1.17.0