BmnRoot 26.10.0-210-gc52d34b0
Software framework of the BM@N experiment
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
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
bool Bool_t
double Double_t
static Bool_t Make(BmnAligner &aligner, const char *dataPath, const char *solutionPath, Double_t sigmaScale=1.0, ENoise noise=kHitErrors, const TVector2 &stdDevXY=TVector2())
BmnAlignTestTask()=delete