BmnRoot
26.10.0-210-gc52d34b0
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnCombineVertexFinder.cxx
Go to the documentation of this file.
1
#include "
BmnCombineVertexFinder.h
"
2
3
#include "
BmnMath.h
"
4
#include "
TCanvas.h
"
5
#include "
TFitResult.h
"
6
#include "
TGraph.h
"
7
#include "vector"
8
9
using namespace
std;
10
using namespace
TMath
;
11
12
BmnCombineVertexFinder::~BmnCombineVertexFinder
()
13
{
14
delete
fKalman
;
15
}
16
17
InitStatus
BmnCombineVertexFinder::Init
()
18
{
19
if
(fVerbose > 1)
20
cout <<
"=========================== Combined Vertex finder init started ===================="
<< endl;
21
22
fKalman
=
new
BmnKalmanFilter
();
23
24
// Get ROOT Manager
25
FairRootManager* ioman = FairRootManager::Instance();
26
if
(
nullptr
== ioman)
27
Fatal
(
"Init"
,
"FairRootManager is not instantiated"
);
28
29
fCbmVertex
= (
CbmVertex
*)ioman->GetObject(
"PrimaryVertex."
);
// in
30
if
(!
fCbmVertex
) {
31
cout <<
"BmnCombineVertexFinder::Init(): branch PrimaryVertex not found! Task will be deactivated"
<< endl;
32
SetActive(
kFALSE
);
33
return
kERROR;
34
}
35
36
fMpdVertex
= (
CbmVertex
*)ioman->GetObject(
"MpdVertex."
);
// in
37
if
(!
fMpdVertex
) {
38
cout <<
"BmnCombineVertexFinder::Init(): branch MpdVertex not found! Task will be deactivated"
<< endl;
39
SetActive(
kFALSE
);
40
return
kERROR;
41
}
42
43
fBeamTrackArray
= (
TClonesArray
*)ioman->GetObject(
"BmnBeamTrack"
);
// in
44
if
(!
fBeamTrackArray
) {
45
cout <<
"BmnCombineVertexFinder::Init(): branch BmnBeamTrack not found! Task will be deactivated"
<< endl;
46
SetActive(
kFALSE
);
47
return
kERROR;
48
}
49
50
fCombineVertexArray
=
new
TClonesArray
(
"CbmVertex"
, 2);
// out
51
ioman->Register(
"CombineVertex"
,
"VERTEX"
,
fCombineVertexArray
,
kTRUE
);
52
53
if
(fVerbose > 1)
54
cout <<
"=========================== Combined Vertex finder init finished ==================="
<< endl;
55
56
return
kSUCCESS;
57
}
58
59
void
BmnCombineVertexFinder::Exec
(
Option_t
* opt)
60
{
61
62
if
(!IsActive())
63
return
;
64
65
if
(fVerbose > 1) {
66
cout <<
"======================== Combined Vertex finder exec started ======================"
<< endl;
67
}
68
69
fCombineVertexArray
->Delete();
70
71
CbmVertex
combVertexCbm = *
fCbmVertex
;
72
CbmVertex
combVertexMpd = *
fMpdVertex
;
73
74
BmnTrack
* beamTrack =
nullptr
;
75
beamTrack = (
BmnTrack
*)
fBeamTrackArray
->At(0);
76
if
(beamTrack !=
nullptr
) {
77
combVertexCbm =
CombineVertex
(
fCbmVertex
, beamTrack);
78
combVertexMpd =
CombineVertex
(
fMpdVertex
, beamTrack);
79
}
80
81
new
((*fCombineVertexArray)[0])
CbmVertex
(combVertexCbm);
82
new
((*fCombineVertexArray)[1])
CbmVertex
(combVertexMpd);
83
84
if
(fVerbose > 1)
85
cout <<
"\n======================== Combined Vertex finder exec finished ======================"
<< endl;
86
}
87
88
CbmVertex
BmnCombineVertexFinder::CombineVertex
(
CbmVertex
* vrtx,
BmnTrack
* beamTrack)
89
{
90
Double_t
weightPrimaryVertex[2] = {0.0, 0.0};
91
Double_t
weightBeam[2] = {0.0, 0.0};
92
93
FairTrackParam par = *(beamTrack->
GetParamLast
());
94
fKalman
->TGeoTrackPropagate(&par, vrtx->
GetZ
(), 2212,
nullptr
,
nullptr
, 1);
95
96
Double_t
primaryVertexX = vrtx->
GetX
();
97
Double_t
primaryVertexY = vrtx->
GetY
();
98
99
weightPrimaryVertex[0] = 1 / vrtx->
GetCovariance
(0, 0);
100
weightPrimaryVertex[1] = 1 / vrtx->
GetCovariance
(1, 1);
101
weightBeam[0] = 1 / par.GetCovariance(0, 0);
102
weightBeam[1] = 1 / par.GetCovariance(1, 1);
103
Double_t
beamVertexX = par.GetX();
104
Double_t
beamVertexY = par.GetY();
105
106
Double_t
X = (primaryVertexX * weightPrimaryVertex[0] + beamVertexX * weightBeam[0])
107
/ (weightPrimaryVertex[0] + weightBeam[0]);
108
Double_t
Y = (primaryVertexY * weightPrimaryVertex[1] + beamVertexY * weightBeam[1])
109
/ (weightPrimaryVertex[1] + weightBeam[1]);
110
Double_t
Z = vrtx->
GetZ
();
111
Double_t
chi2 = vrtx->
GetChi2
();
112
Int_t
NTracks = vrtx->
GetNTracks
() + 1;
113
Int_t
NDF = NTracks * 2;
114
TMatrixFSym
* covMat =
new
TMatrixFSym
(3);
115
vrtx->
CovMatrix
(*covMat);
116
117
CbmVertex
combVrtx;
118
combVrtx.
SetVertex
(X, Y, Z, chi2, NDF, NTracks, *covMat);
119
return
combVrtx;
120
}
121
122
void
BmnCombineVertexFinder::Finish
() {}
BmnCombineVertexFinder.h
BmnMath.h
Int_t
int Int_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
Option_t
const char Option_t
TCanvas.h
Fatal
void Fatal(const char *location, const char *msgfmt,...)
TFitResult.h
TGraph.h
TMatrixFSym
TMatrixTSym< Float_t > TMatrixFSym
BmnCombineVertexFinder::fBeamTrackArray
TClonesArray * fBeamTrackArray
Definition
BmnCombineVertexFinder.h:37
BmnCombineVertexFinder::Finish
virtual void Finish()
Definition
BmnCombineVertexFinder.cxx:122
BmnCombineVertexFinder::fMpdVertex
CbmVertex * fMpdVertex
Definition
BmnCombineVertexFinder.h:36
BmnCombineVertexFinder::Init
virtual InitStatus Init()
Definition
BmnCombineVertexFinder.cxx:17
BmnCombineVertexFinder::CombineVertex
CbmVertex CombineVertex(CbmVertex *vrtx, BmnTrack *beamTrack)
Definition
BmnCombineVertexFinder.cxx:88
BmnCombineVertexFinder::fKalman
BmnKalmanFilter * fKalman
Definition
BmnCombineVertexFinder.h:41
BmnCombineVertexFinder::Exec
virtual void Exec(Option_t *opt)
Definition
BmnCombineVertexFinder.cxx:59
BmnCombineVertexFinder::fCombineVertexArray
TClonesArray * fCombineVertexArray
Definition
BmnCombineVertexFinder.h:39
BmnCombineVertexFinder::~BmnCombineVertexFinder
virtual ~BmnCombineVertexFinder()
Definition
BmnCombineVertexFinder.cxx:12
BmnCombineVertexFinder::fCbmVertex
CbmVertex * fCbmVertex
Definition
BmnCombineVertexFinder.h:35
BmnKalmanFilter
Definition
BmnKalmanFilter.h:28
BmnTrack
Definition
BmnTrack.h:20
BmnTrack::GetParamLast
FairTrackParam * GetParamLast()
Definition
BmnTrack.h:65
CbmVertex
CbmVertex.h.
Definition
CbmVertex.h:21
CbmVertex::SetVertex
void SetVertex(Double_t x, Double_t y, Double_t z, Double_t chi2, Int_t ndf, Int_t nTracks, const TMatrixFSym &covMat)
Set the member variables.
Definition
CbmVertex.cxx:127
CbmVertex::GetZ
Double_t GetZ() const
Definition
CbmVertex.h:60
CbmVertex::CovMatrix
void CovMatrix(TMatrixFSym &covMat) const
Definition
CbmVertex.cxx:100
CbmVertex::GetX
Double_t GetX() const
Accessors.
Definition
CbmVertex.h:58
CbmVertex::GetNTracks
Int_t GetNTracks() const
Definition
CbmVertex.h:63
CbmVertex::GetChi2
Double_t GetChi2() const
Definition
CbmVertex.h:61
CbmVertex::GetCovariance
Double_t GetCovariance(Int_t i, Int_t j) const
Definition
CbmVertex.cxx:115
CbmVertex::GetY
Double_t GetY() const
Definition
CbmVertex.h:59
TClonesArray
TMath
reconstruction
globaltracking
BmnCombineVertexFinder.cxx
Generated on
for BmnRoot by
1.17.0