BmnRoot
Loading...
Searching...
No Matches
BmnVSPHitProducer.cxx
Go to the documentation of this file.
1#include "BmnVSPHitProducer.h"
2#include "BmnVSPHit.h"
3#include "CbmStsPoint.h"
4#include "CbmMCTrack.h"
5
6#include "FairRootManager.h"
7
8#include "TRandom.h"
9#include "TCanvas.h"
10#include "TH1F.h"
11#include "TSystem.h"
12
13using std::cout;
14using namespace TMath;
15
17 fInputBranchName = "VSPPoint";
18 fOutputHitsBranchName = "BmnHit";
19 fOutputVSPHitMatchesBranchName = "BmnVSPHitMatch";
20}
21
26
28
29 cout << " BmnVSPHitProducer::Init() " << endl;
30
31 //Get ROOT Manager
32 FairRootManager* ioman = FairRootManager::Instance();
33
34 fBmnPointsArray = (TClonesArray*) ioman->GetObject(fInputBranchName);
35 fMCTracksArray = (TClonesArray*) ioman->GetObject("MCTrack");
36
37 fBmnHitsArray = new TClonesArray(fOutputHitsBranchName, 100);
38 ioman->Register("BmnVSPHit", "VSP", fBmnHitsArray, kTRUE);
39
40 fBmnVSPHitMatchesArray = new TClonesArray("BmnMatch");
41 ioman->Register(fOutputVSPHitMatchesBranchName, "VSP", fBmnVSPHitMatchesArray, kTRUE);
42
43 TString gPathConfig = gSystem->Getenv("VMCWORKDIR");
44 gPathConfig += "/parameters/vsp/XMLConfigs/";
45 VSPStationSet = new BmnVSPStationSet(gPathConfig + "VSP_Run9.xml");
46
47 return kSUCCESS;
48}
49
50void BmnVSPHitProducer::Exec(Option_t* opt) {
51
52 fBmnHitsArray->Delete();
53 fBmnVSPHitMatchesArray->Delete();
54
55 if (!fBmnPointsArray) {
56 Error("BmnVSPHitProducer::Init()", " !!! Unknown branch name !!! ");
57 return;
58 }
59
60 Float_t err[3] = {0.03, 0.03, 0.03}; // Uncertainties of coordinates
61 // Float_t err[3] = {0.0, 0.0, 0.0}; // Uncertainties of coordinates
62
63 for (Int_t iPoint = 0; iPoint < fBmnPointsArray->GetEntriesFast(); iPoint++) {
64
65 TRandom* rand_gen = new TRandom();
66
67 CbmStsPoint* VSPPoint = (CbmStsPoint*) fBmnPointsArray->UncheckedAt(iPoint);
68
69 const Float_t dX = rand_gen->Gaus(0, err[0]);
70 const Float_t dY = rand_gen->Gaus(0, err[1]);
71 const Float_t dZ = rand_gen->Gaus(0, err[2]);
72
73 const Float_t x_smeared = VSPPoint->GetXIn() + dX;
74 const Float_t y_smeared = VSPPoint->GetYIn() + dY;
75 const Float_t z_smeared = VSPPoint->GetZIn() + dZ;
76
77 BmnHit* hit = new((*fBmnHitsArray)[fBmnHitsArray->GetEntriesFast()])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(kVSP, TVector3(x_smeared, y_smeared, z_smeared), TVector3(1.0, 1.0, 0.0), iPoint);
79 hit->SetIndex(fBmnHitsArray->GetEntriesFast() - 1);
80 hit->SetType(1);
81 hit->SetStation(VSPStationSet->GetPointStationOwnership(VSPPoint->GetZIn()));
82
83 BmnMatch* match = new ((*fBmnVSPHitMatchesArray)[fBmnVSPHitMatchesArray->GetEntriesFast()]) BmnMatch();
84 match->AddLink(100.0, iPoint);
85
86 delete rand_gen;
87 }
88}
89
void SetType(Int_t type)
Definition BmnHit.h:81
void SetIndex(Int_t id)
Definition BmnHit.h:57
void SetStation(Short_t st)
Definition BmnHit.h:69
virtual InitStatus Init()
virtual void Exec(Option_t *opt)
Int_t GetPointStationOwnership(Double_t zcoord)
Double_t GetXIn() const
Definition CbmStsPoint.h:69
Double_t GetZIn() const
Definition CbmStsPoint.h:71
Double_t GetYIn() const
Definition CbmStsPoint.h:70