BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnResiduals.cxx
Go to the documentation of this file.
1
#include "
BmnResiduals.h
"
2
3
#include "BmnKalmanFilter.h"
4
#include "FairLogger.h"
5
6
BmnResiduals::BmnResiduals
(
Int_t
period,
Int_t
number)
7
:
fGlobalTracks
(nullptr)
8
,
fGemHits
(nullptr)
9
,
fSilHits
(nullptr)
10
,
fGemTracks
(nullptr)
11
,
fSilTracks
(nullptr)
12
{
13
fPeriod
= period;
14
fNumber
= number;
15
16
fBranchGemHits
=
"BmnGemStripHit"
;
17
fBranchSilHits
=
"BmnSiliconHit"
;
18
19
fBranchGemTracks
=
"BmnGemTrack"
;
20
fBranchSilTracks
=
"BmnSiliconTrack"
;
21
fBranchGlobTracks
=
"BmnGlobalTrack"
;
22
23
fBranchFairEventHeader
=
"DstEventHeader."
;
24
}
25
26
InitStatus
BmnResiduals::Init
()
27
{
28
FairRootManager* ioman = FairRootManager::Instance();
29
fFairEventHeader
= (
FairEventHeader
*)ioman->GetObject(
fBranchFairEventHeader
.Data());
30
31
fGemTracks
= (
TClonesArray
*)ioman->GetObject(
fBranchGemTracks
.Data());
32
fSilTracks
= (
TClonesArray
*)ioman->GetObject(
fBranchSilTracks
.Data());
33
fGlobalTracks
= (
TClonesArray
*)ioman->GetObject(
fBranchGlobTracks
.Data());
34
35
fGemHits
= (
TClonesArray
*)ioman->GetObject(
fBranchGemHits
.Data());
36
fSilHits
= (
TClonesArray
*)ioman->GetObject(
fBranchSilHits
.Data());
37
38
if
(
fFairEventHeader
!=
nullptr
)
39
fFairEventHeader
->SetRunId(
fNumber
);
40
else
41
LOG(debug) << __PRETTY_FUNCTION__
42
<<
": fFairEventHeader is not initalized. fBranchFairEventHeader == "
<<
fBranchFairEventHeader
;
43
44
return
kSUCCESS;
45
}
46
47
void
BmnResiduals::Exec
(
Option_t
* opt)
48
{
49
if
(!
fGlobalTracks
|| !IsActive())
50
return
;
51
52
for
(
Int_t
iTrack = 0; iTrack <
fGlobalTracks
->GetEntriesFast(); iTrack++) {
53
BmnGlobalTrack
* glTrack = (
BmnGlobalTrack
*)
fGlobalTracks
->UncheckedAt(iTrack);
54
55
vector<BmnHit*> allHits;
56
57
BmnTrack
* gemTr =
nullptr
;
58
BmnTrack
* silTr =
nullptr
;
59
60
if
(glTrack->
GetGemTrackIndex
() != -1)
61
gemTr = (
BmnTrack
*)
fGemTracks
->UncheckedAt(glTrack->
GetGemTrackIndex
());
62
63
// GEM track
64
if
(glTrack->
GetGemTrackIndex
() != -1)
65
for
(
Int_t
iHit = 0; iHit < gemTr->
GetNHits
(); iHit++) {
66
BmnGemStripHit
* hit = (
BmnGemStripHit
*)
fGemHits
->UncheckedAt(gemTr->
GetHitIndex
(iHit));
67
allHits.push_back(hit);
68
}
69
70
// SILICON track
71
for
(
Int_t
iHit = 0; iHit < silTr->
GetNHits
(); iHit++) {
72
BmnSiliconHit
* hit = (
BmnSiliconHit
*)
fSilHits
->UncheckedAt(silTr->
GetHitIndex
(iHit));
73
allHits.push_back(hit);
74
}
75
76
Double_t
xRes = 0., yRes = 0.;
77
// Double_t a = 0., b = 0.;
78
79
// for (Int_t iHit = 0; iHit < allHits.size(); iHit++) {
80
// Double_t x = allHits[iHit]->GetX();
81
// Double_t y = allHits[iHit]->GetY();
82
// Double_t z = allHits[iHit]->GetZ();
83
84
// // YZ-plane, linear fit
85
// a = LineFit(allHits, iHit, "ZY").X();
86
// b = LineFit(allHits, iHit, "ZY").Y();
87
// yRes = y - (a * z + b);
88
89
// // XZ-plane
90
// if (fIsField) {
91
// Double_t A = Pol2Fit(allHits, iHit).X();
92
// Double_t B = Pol2Fit(allHits, iHit).Y();
93
// Double_t C = Pol2Fit(allHits, iHit).Z();
94
// xRes = x - (A * z * z + B * z + C);
95
// } else {
96
// a = LineFit(allHits, iHit, "ZX").X();
97
// b = LineFit(allHits, iHit, "ZX").Y();
98
// xRes = x - (a * z + b);
99
// }
100
// allHits[iHit]->SetResXY(xRes, yRes);
101
// }
102
103
BmnKalmanFilter
* fKalman =
new
BmnKalmanFilter
();
104
FairTrackParam par = *(glTrack->
GetParamFirst
());
105
106
for
(
size_t
iHit = 0; iHit < allHits.size(); iHit++) {
107
Double_t
x = allHits[iHit]->GetX();
108
Double_t
y = allHits[iHit]->GetY();
109
Double_t
z = allHits[iHit]->GetZ();
110
fKalman->
TGeoTrackPropagate
(&par, z, 2212,
nullptr
,
nullptr
);
111
xRes = x - par.GetX();
112
yRes = y - par.GetY();
113
allHits[iHit]->SetResXY(xRes, yRes);
114
}
115
delete
fKalman;
116
}
117
}
118
119
void
BmnResiduals::Finish
() {}
Int_t
int Int_t
Double_t
double Double_t
Option_t
const char Option_t
BmnResiduals.h
BmnGemStripHit
Definition
BmnGemStripHit.h:9
BmnGlobalTrack
BmnGlobalTrack.h.
Definition
BmnGlobalTrack.h:14
BmnGlobalTrack::GetGemTrackIndex
Int_t GetGemTrackIndex() const
Accessors.
Definition
BmnGlobalTrack.h:34
BmnKalmanFilter
Definition
BmnKalmanFilter.h:28
BmnKalmanFilter::TGeoTrackPropagate
BmnStatus TGeoTrackPropagate(FairTrackParam *par, Double_t zOut, Int_t pdg, vector< Double_t > *F, Double_t *length, Bool_t isField)
Definition
BmnKalmanFilter.cxx:438
BmnResiduals::fPeriod
Int_t fPeriod
Definition
BmnResiduals.h:34
BmnResiduals::Exec
virtual void Exec(Option_t *opt)
Definition
BmnResiduals.cxx:47
BmnResiduals::fFairEventHeader
FairEventHeader * fFairEventHeader
Definition
BmnResiduals.h:53
BmnResiduals::fBranchSilTracks
TString fBranchSilTracks
Definition
BmnResiduals.h:49
BmnResiduals::fBranchGemHits
TString fBranchGemHits
Definition
BmnResiduals.h:40
BmnResiduals::fBranchFairEventHeader
TString fBranchFairEventHeader
Definition
BmnResiduals.h:52
BmnResiduals::Finish
virtual void Finish()
Definition
BmnResiduals.cxx:119
BmnResiduals::BmnResiduals
BmnResiduals()
Definition
BmnResiduals.h:22
BmnResiduals::fNumber
Int_t fNumber
Definition
BmnResiduals.h:35
BmnResiduals::fBranchSilHits
TString fBranchSilHits
Definition
BmnResiduals.h:43
BmnResiduals::fSilHits
TClonesArray * fSilHits
Definition
BmnResiduals.h:44
BmnResiduals::fSilTracks
TClonesArray * fSilTracks
Definition
BmnResiduals.h:50
BmnResiduals::fBranchGlobTracks
TString fBranchGlobTracks
Definition
BmnResiduals.h:37
BmnResiduals::fGemTracks
TClonesArray * fGemTracks
Definition
BmnResiduals.h:47
BmnResiduals::fGlobalTracks
TClonesArray * fGlobalTracks
Definition
BmnResiduals.h:38
BmnResiduals::fBranchGemTracks
TString fBranchGemTracks
Definition
BmnResiduals.h:46
BmnResiduals::Init
virtual InitStatus Init()
Definition
BmnResiduals.cxx:26
BmnResiduals::fGemHits
TClonesArray * fGemHits
Definition
BmnResiduals.h:41
BmnSiliconHit
Definition
BmnSiliconHit.h:9
BmnTrack
Definition
BmnTrack.h:20
BmnTrack::GetParamFirst
FairTrackParam * GetParamFirst()
Definition
BmnTrack.h:63
BmnTrack::GetNHits
Int_t GetNHits() const
Accessors.
Definition
BmnTrack.h:49
BmnTrack::GetHitIndex
Int_t GetHitIndex(Int_t iHit) const
Definition
BmnTrack.h:51
FairEventHeader
TClonesArray
alignment
BmnResiduals.cxx
Generated on
for BmnRoot by
1.17.0