BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnSiResiduals.cxx
Go to the documentation of this file.
1#include "BmnSiResiduals.h"
2
3BmnSiResiduals::BmnSiResiduals(Int_t run_period, Int_t run_number, Double_t fieldScale)
6 , outRes(NULL)
9{
10 fPeriod = run_period;
11 fNumber = run_number;
12
13 if (Abs(fieldScale) > DBL_EPSILON)
14 isField = kTRUE;
15
16 TString gPathSiliconConfig = gSystem->Getenv("VMCWORKDIR");
17 gPathSiliconConfig += "/parameters/silicon/XMLConfigs/";
18
19 // Create Silicon detector --------------------------------------------------
20 TString config = (fPeriod == 6) ? "SiliconRunSpring2017.xml" : (fPeriod == 7) ? "SiliconRunSpring2018.xml" : "";
21
22 fDetector = new BmnSiliconStationSet(gPathSiliconConfig + config);
23
24 fBranchSiHits = "BmnSiliconHit";
25 fBranchGlobalTracks = "BmnGlobalTrack";
26 fBranchResiduals = "BmnResiduals";
27 fBranchFairEventHeader = "EventHeader.";
28}
29
31{
32 delete fDetector;
33}
34
36{
37 FairRootManager* ioman = FairRootManager::Instance();
38
39 fSiHits = (TClonesArray*)ioman->GetObject(fBranchSiHits.Data());
40 fGlobalTracks = (TClonesArray*)ioman->GetObject(fBranchGlobalTracks.Data());
41 fFairEventHeader = (FairEventHeader*)ioman->GetObject(fBranchFairEventHeader.Data());
42
44
45 ioman->Register("BmnSiResiduals", "RESID", fSiResiduals, kTRUE);
46 if (TString(ioman->GetInFile()->GetName()).Contains("merge"))
48}
49
51{
52 // fFairEventHeader->SetRunId((isMergedDigits) ? 0 : fNumber);
53 fSiResiduals->Delete();
54 Residuals();
55}
56
58{
59 for (Int_t iGlobTrack = 0; iGlobTrack < fGlobalTracks->GetEntriesFast(); iGlobTrack++) {
60 BmnGlobalTrack* glTrack = (BmnGlobalTrack*)fGlobalTracks->UncheckedAt(iGlobTrack);
61
62 Double_t Tx = glTrack->GetParamFirst()->GetTx();
63 Double_t X0 = glTrack->GetParamFirst()->GetX();
64 Double_t Ty = glTrack->GetParamFirst()->GetTy();
65 Double_t Y0 = glTrack->GetParamFirst()->GetY();
66
67 Double_t Z0 = glTrack->GetParamFirst()->GetZ();
68
69 // Int_t silIdx = glTrack->GetSilHitIndex();
70 // if (silIdx == -1)
71 // return;
72 vector<Int_t> silIndices = glTrack->GetSilHitIndices();
73 if (silIndices.size() == 0)
74 return;
75
76 for (Int_t iHitIdx = 0; iHitIdx < silIndices.size(); iHitIdx++) {
77 Double_t xRes = 0., yRes = 0.;
78 BmnSiliconHit* hit = (BmnSiliconHit*)fSiHits->UncheckedAt(silIndices.at(iHitIdx));
79 Double_t x = hit->GetX();
80 Double_t y = hit->GetY();
81 Double_t z = hit->GetZ();
82
83 Int_t stat = hit->GetStation();
84 Int_t mod = hit->GetModule();
85
86 if (!isField) {
87 xRes = x - (X0 + Tx * (z - Z0));
88 yRes = y - (Y0 + Ty * (z - Z0));
89 }
90
91 BmnResiduals* resid =
92 new ((*fSiResiduals)[fSiResiduals->GetEntriesFast()]) BmnResiduals(stat, mod, xRes, yRes, 0., isField);
93 resid->SetTrackId(iGlobTrack);
94 resid->SetHitId(silIndices.at(iHitIdx));
95 }
96 }
97}
int Int_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
R__EXTERN TSystem * gSystem
BmnGlobalTrack.h.
Int_t GetModule()
Definition BmnHit.h:36
Short_t GetStation() const
Definition BmnHit.h:35
TString fBranchResiduals
TClonesArray * fSiResiduals
FairEventHeader * fFairEventHeader
TClonesArray * fSiHits
TClonesArray * fGlobalTracks
TString fBranchFairEventHeader
virtual void Finish()
TString fBranchGlobalTracks
TString fBranchSiHits
virtual InitStatus Init()
virtual void Exec(Option_t *opt)
BmnSiliconStationSet * fDetector
FairTrackParam * GetParamFirst()
Definition BmnTrack.h:63
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Double_t Abs(Double_t d)