BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
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
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
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
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
int Int_t
double Double_t
const char Option_t
BmnGlobalTrack.h.
Int_t GetGemTrackIndex() const
Accessors.
BmnStatus TGeoTrackPropagate(FairTrackParam *par, Double_t zOut, Int_t pdg, vector< Double_t > *F, Double_t *length, Bool_t isField)
virtual void Exec(Option_t *opt)
FairEventHeader * fFairEventHeader
TString fBranchSilTracks
TString fBranchGemHits
TString fBranchFairEventHeader
virtual void Finish()
TString fBranchSilHits
TClonesArray * fSilHits
TClonesArray * fSilTracks
TString fBranchGlobTracks
TClonesArray * fGemTracks
TClonesArray * fGlobalTracks
TString fBranchGemTracks
virtual InitStatus Init()
TClonesArray * fGemHits
FairTrackParam * GetParamFirst()
Definition BmnTrack.h:63
Int_t GetNHits() const
Accessors.
Definition BmnTrack.h:49
Int_t GetHitIndex(Int_t iHit) const
Definition BmnTrack.h:51