BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnGemHitProducer.cxx
Go to the documentation of this file.
1
#include "
BmnGemHitProducer.h
"
2
3
#include "BmnHit.h"
4
#include "CbmStsPoint.h"
5
#include "FairRootManager.h"
6
#include "
TRandom.h
"
7
#include "
TSystem.h
"
8
9
using
std::cout;
10
11
BmnGemHitProducer::BmnGemHitProducer
()
12
{
13
fInputBranchName
=
"StsPoint"
;
14
fOutputHitsBranchName
=
"BmnHit"
;
15
fOutputGemHitMatchesBranchName
=
"BmnGemStripHitMatch"
;
16
}
17
18
BmnGemHitProducer::~BmnGemHitProducer
() {}
19
20
InitStatus
BmnGemHitProducer::Init
()
21
{
22
23
cout <<
" BmnGemHitProducer::Init() "
<< endl;
24
25
// Get ROOT Manager
26
FairRootManager* ioman = FairRootManager::Instance();
27
28
fBmnPointsArray
= (
TClonesArray
*)ioman->GetObject(
fInputBranchName
);
29
fMCTracksArray
= (
TClonesArray
*)ioman->GetObject(
"MCTrack"
);
30
31
fBmnHitsArray
=
new
TClonesArray
(
fOutputHitsBranchName
, 100);
32
ioman->Register(
"BmnGemStripHit"
,
"GEM"
,
fBmnHitsArray
,
kTRUE
);
33
34
fBmnGemStripHitMatchesArray
=
new
TClonesArray
(
"BmnMatch"
);
35
ioman->Register(
fOutputGemHitMatchesBranchName
,
"GEM"
,
fBmnGemStripHitMatchesArray
,
kTRUE
);
36
37
TString
gPathGemConfig =
gSystem
->Getenv(
"VMCWORKDIR"
);
38
gPathGemConfig +=
"/parameters/gem/XMLConfigs/"
;
39
GemStationSet
=
new
BmnGemStripStationSet
(gPathGemConfig +
"GemRunSpring2018.xml"
);
40
41
return
kSUCCESS;
42
}
43
44
void
BmnGemHitProducer::Exec
(
Option_t
* opt)
45
{
46
47
fBmnHitsArray
->Delete();
48
fBmnGemStripHitMatchesArray
->Delete();
49
50
if
(!
fBmnPointsArray
) {
51
Error
(
"BmnGemHitProducer::Init()"
,
" !!! Unknown branch name !!! "
);
52
return
;
53
}
54
55
Float_t
err[3] = {0.03, 0.03, 0.03};
// Uncertainties of coordinates
56
// Float_t err[3] = {0.0, 0.0, 0.0}; // Uncertainties of coordinates
57
58
for
(
Int_t
iPoint = 0; iPoint <
fBmnPointsArray
->GetEntriesFast(); iPoint++) {
59
60
TRandom
* rand_gen =
new
TRandom
();
61
62
CbmStsPoint
* gemPoint = (
CbmStsPoint
*)
fBmnPointsArray
->UncheckedAt(iPoint);
63
64
const
Float_t
dX = rand_gen->
Gaus
(0, err[0]);
65
const
Float_t
dY = rand_gen->
Gaus
(0, err[1]);
66
const
Float_t
dZ = rand_gen->
Gaus
(0, err[2]);
67
68
const
Float_t
x_smeared = gemPoint->
GetXIn
() + dX;
69
const
Float_t
y_smeared = gemPoint->
GetYIn
() + dY;
70
const
Float_t
z_smeared = gemPoint->
GetZIn
() + dZ;
71
72
BmnHit
* hit =
new
((*fBmnHitsArray)[
fBmnHitsArray
->GetEntriesFast()])
73
BmnHit
(0,
TVector3
(x_smeared, y_smeared, z_smeared),
TVector3
(err[0], err[1], err[2]), iPoint);
74
// BmnHit* hit = new ((*fBmnHitsArray)[fBmnHitsArray->GetEntriesFast()]) BmnHit(kGEM, TVector3(x_smeared,
75
// y_smeared, z_smeared), TVector3(1.0, 1.0, 0.0), iPoint);
76
hit->
SetIndex
(
fBmnHitsArray
->GetEntriesFast() - 1);
77
hit->
SetType
(1);
78
hit->
SetStation
(
GemStationSet
->GetPointStationOwnership(gemPoint->
GetZIn
()));
79
// hit->SetStation(DefineStationByZ(gemPoint->GetZIn()));
80
81
BmnMatch
*
match
=
82
new
((*fBmnGemStripHitMatchesArray)[
fBmnGemStripHitMatchesArray
->GetEntriesFast()])
BmnMatch
();
83
match
->AddLink(100.0, iPoint);
84
85
delete
rand_gen;
86
}
87
}
88
89
Int_t
BmnGemHitProducer::DefineStationByZ
(
Double_t
z)
90
{
91
const
Int_t
nStation = 7;
92
Int_t
minIdx = -1;
93
Double_t
minDz = 10000;
94
95
Double_t
zPos[nStation] = {100.0, 120.0, 140.0, 160.0, 180.0, 200.0, 220.0};
96
97
for
(
Int_t
i
= 0;
i
< nStation; ++
i
) {
98
Double_t
dz =
Abs
(z - zPos[
i
]);
99
if
(dz < minDz) {
100
minDz = dz;
101
minIdx =
i
;
102
}
103
}
104
return
minIdx;
105
}
106
107
void
BmnGemHitProducer::Finish
() {}
i
int i
Definition
P4_F32vec4.h:22
Int_t
int Int_t
Float_t
float Float_t
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
Option_t
const char Option_t
Error
void Error(const char *location, const char *msgfmt,...)
TRandom.h
TSystem.h
gSystem
R__EXTERN TSystem * gSystem
BmnGemHitProducer::fOutputHitsBranchName
TString fOutputHitsBranchName
Definition
BmnGemHitProducer.h:34
BmnGemHitProducer::fBmnPointsArray
TClonesArray * fBmnPointsArray
Input array of Gem Points.
Definition
BmnGemHitProducer.h:38
BmnGemHitProducer::fInputBranchName
TString fInputBranchName
Definition
BmnGemHitProducer.h:32
BmnGemHitProducer::Init
virtual InitStatus Init()
Virtual method Init.
Definition
BmnGemHitProducer.cxx:20
BmnGemHitProducer::fMCTracksArray
TClonesArray * fMCTracksArray
Input array of MC Tracks.
Definition
BmnGemHitProducer.h:41
BmnGemHitProducer::Finish
virtual void Finish()
Virtual method Finish.
Definition
BmnGemHitProducer.cxx:107
BmnGemHitProducer::DefineStationByZ
Int_t DefineStationByZ(Double_t z)
Definition
BmnGemHitProducer.cxx:89
BmnGemHitProducer::Exec
virtual void Exec(Option_t *opt)
Virtual method Exec.
Definition
BmnGemHitProducer.cxx:44
BmnGemHitProducer::~BmnGemHitProducer
virtual ~BmnGemHitProducer()
Destructor.
Definition
BmnGemHitProducer.cxx:18
BmnGemHitProducer::BmnGemHitProducer
BmnGemHitProducer()
Default constructor.
Definition
BmnGemHitProducer.cxx:11
BmnGemHitProducer::fBmnHitsArray
TClonesArray * fBmnHitsArray
Output array of Gem Hits.
Definition
BmnGemHitProducer.h:44
BmnGemHitProducer::fOutputGemHitMatchesBranchName
TString fOutputGemHitMatchesBranchName
Definition
BmnGemHitProducer.h:35
BmnGemHitProducer::fBmnGemStripHitMatchesArray
TClonesArray * fBmnGemStripHitMatchesArray
Output array of GEM Hit Matches.
Definition
BmnGemHitProducer.h:47
BmnGemHitProducer::GemStationSet
BmnGemStripStationSet * GemStationSet
Definition
BmnGemHitProducer.h:49
BmnGemStripStationSet
Definition
BmnGemStripStationSet.h:15
BmnHit
Definition
BmnHit.h:21
BmnHit::SetType
void SetType(Int_t type)
Definition
BmnHit.h:54
BmnHit::SetIndex
void SetIndex(Int_t id)
Definition
BmnHit.h:49
BmnHit::SetStation
void SetStation(Short_t st)
Definition
BmnHit.h:52
BmnMatch
Definition
BmnMatch.h:25
CbmStsPoint
Definition
CbmStsPoint.h:23
CbmStsPoint::GetXIn
Double_t GetXIn() const
Accessors.
Definition
CbmStsPoint.h:64
CbmStsPoint::GetZIn
Double_t GetZIn() const
Definition
CbmStsPoint.h:66
CbmStsPoint::GetYIn
Double_t GetYIn() const
Definition
CbmStsPoint.h:65
TClonesArray
TRandom
TRandom::Gaus
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
TString
TVector3
BmnGemHitProducer.h
TMath::Abs
Double_t Abs(Double_t d)
match
Definition
BmnMwpcTrackFinder.cxx:27
detectors
gem
BmnGemHitProducer.cxx
Generated on
for BmnRoot by
1.17.0