BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnSiliconHitProducer.cxx
Go to the documentation of this file.
2
3#include "BmnSiliconHit.h"
4#include "CbmMCTrack.h"
5#include "CbmStsPoint.h"
6#include "FairRootManager.h"
7#include "TCanvas.h"
8#include "TH1F.h"
9#include "TRandom.h"
10#include "TSystem.h"
11
12using std::cout;
13using namespace TMath;
14
21
23
25{
26
27 cout << " BmnSiliconHitProducer::Init() " << endl;
28
29 // Get ROOT Manager
30 FairRootManager* ioman = FairRootManager::Instance();
31
32 fBmnPointsArray = (TClonesArray*)ioman->GetObject(fInputBranchName);
33 fMCTracksArray = (TClonesArray*)ioman->GetObject("MCTrack");
34
36 ioman->Register("BmnSiliconHit", "SILICON", fBmnHitsArray, kTRUE);
37
40
41 TString gPathConfig = gSystem->Getenv("VMCWORKDIR");
42 gPathConfig += "/parameters/silicon/XMLConfigs/";
43 SiliconStationSet = new BmnSiliconStationSet(gPathConfig + "SiliconRunSpring2018.xml");
44
45 return kSUCCESS;
46}
47
49{
50
51 fBmnHitsArray->Delete();
53
54 if (!fBmnPointsArray) {
55 Error("BmnSiliconHitProducer::Init()", " !!! Unknown branch name !!! ");
56 return;
57 }
58
59 Float_t err[3] = {0.03, 0.03, 0.03}; // Uncertainties of coordinates
60 // Float_t err[3] = {0.0, 0.0, 0.0}; // Uncertainties of coordinates
61
62 for (Int_t iPoint = 0; iPoint < fBmnPointsArray->GetEntriesFast(); iPoint++) {
63
64 TRandom* rand_gen = new TRandom();
65
66 CbmStsPoint* siliconPoint = (CbmStsPoint*)fBmnPointsArray->UncheckedAt(iPoint);
67
68 const Float_t dX = rand_gen->Gaus(0, err[0]);
69 const Float_t dY = rand_gen->Gaus(0, err[1]);
70 const Float_t dZ = rand_gen->Gaus(0, err[2]);
71
72 const Float_t x_smeared = siliconPoint->GetXIn() + dX;
73 const Float_t y_smeared = siliconPoint->GetYIn() + dY;
74 const Float_t z_smeared = siliconPoint->GetZIn() + dZ;
75
76 BmnHit* hit = new ((*fBmnHitsArray)[fBmnHitsArray->GetEntriesFast()])
77 BmnHit(0, TVector3(x_smeared, y_smeared, z_smeared), TVector3(err[0], err[1], err[2]), iPoint);
78 // BmnHit* hit = new ((*fBmnHitsArray)[fBmnHitsArray->GetEntriesFast()]) BmnHit(kSILICON,
79 // TVector3(x_smeared, y_smeared, z_smeared), TVector3(1.0, 1.0, 0.0), iPoint);
80 hit->SetIndex(fBmnHitsArray->GetEntriesFast() - 1);
81 hit->SetType(1);
82 hit->SetStation(SiliconStationSet->GetPointStationOwnership(siliconPoint->GetZIn()));
83
84 BmnMatch* match = new ((*fBmnSiliconHitMatchesArray)[fBmnSiliconHitMatchesArray->GetEntriesFast()]) BmnMatch();
85 match->AddLink(100.0, iPoint);
86
87 delete rand_gen;
88 }
89}
90
int Int_t
float Float_t
constexpr Bool_t kTRUE
const char Option_t
void Error(const char *location, const char *msgfmt,...)
R__EXTERN TSystem * gSystem
void SetType(Int_t type)
Definition BmnHit.h:54
void SetIndex(Int_t id)
Definition BmnHit.h:49
void SetStation(Short_t st)
Definition BmnHit.h:52
TClonesArray * fMCTracksArray
Input array of MC Tracks.
TClonesArray * fBmnPointsArray
Input array of Silicon Points.
BmnSiliconStationSet * SiliconStationSet
virtual ~BmnSiliconHitProducer()
Destructor.
BmnSiliconHitProducer()
Default constructor.
virtual void Exec(Option_t *opt)
Virtual method Exec.
TClonesArray * fBmnHitsArray
Output array of Silicon Hits.
virtual void Finish()
Virtual method Finish.
virtual InitStatus Init()
Virtual method Init.
TClonesArray * fBmnSiliconHitMatchesArray
Output array of Silicon Hit Matches.
Double_t GetXIn() const
Accessors.
Definition CbmStsPoint.h:64
Double_t GetZIn() const
Definition CbmStsPoint.h:66
Double_t GetYIn() const
Definition CbmStsPoint.h:65
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)