29 cout <<
" BmnVSPHitProducer::Init() " << endl;
32 FairRootManager* ioman = FairRootManager::Instance();
34 fBmnPointsArray = (TClonesArray*) ioman->GetObject(fInputBranchName);
35 fMCTracksArray = (TClonesArray*) ioman->GetObject(
"MCTrack");
37 fBmnHitsArray =
new TClonesArray(fOutputHitsBranchName, 100);
38 ioman->Register(
"BmnVSPHit",
"VSP", fBmnHitsArray, kTRUE);
40 fBmnVSPHitMatchesArray =
new TClonesArray(
"BmnMatch");
41 ioman->Register(fOutputVSPHitMatchesBranchName,
"VSP", fBmnVSPHitMatchesArray, kTRUE);
43 TString gPathConfig = gSystem->Getenv(
"VMCWORKDIR");
44 gPathConfig +=
"/parameters/vsp/XMLConfigs/";
52 fBmnHitsArray->Delete();
53 fBmnVSPHitMatchesArray->Delete();
55 if (!fBmnPointsArray) {
56 Error(
"BmnVSPHitProducer::Init()",
" !!! Unknown branch name !!! ");
60 Float_t err[3] = {0.03, 0.03, 0.03};
63 for (Int_t iPoint = 0; iPoint < fBmnPointsArray->GetEntriesFast(); iPoint++) {
65 TRandom* rand_gen =
new TRandom();
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]);
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;
77 BmnHit* hit =
new((*fBmnHitsArray)[fBmnHitsArray->GetEntriesFast()])
BmnHit(0, TVector3(x_smeared, y_smeared, z_smeared), TVector3(err[0], err[1], err[2]), iPoint);
79 hit->
SetIndex(fBmnHitsArray->GetEntriesFast() - 1);
83 BmnMatch*
match =
new ((*fBmnVSPHitMatchesArray)[fBmnVSPHitMatchesArray->GetEntriesFast()])
BmnMatch();
84 match->AddLink(100.0, iPoint);