29 cout <<
" BmnSiliconHitProducer::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(
"BmnSiliconHit",
"SILICON", fBmnHitsArray, kTRUE);
40 fBmnSiliconHitMatchesArray =
new TClonesArray(
"BmnMatch");
41 ioman->Register(fOutputSiliconHitMatchesBranchName,
"SILICON", fBmnSiliconHitMatchesArray, kTRUE);
43 TString gPathConfig = gSystem->Getenv(
"VMCWORKDIR");
44 gPathConfig +=
"/parameters/silicon/XMLConfigs/";
52 fBmnHitsArray->Delete();
53 fBmnSiliconHitMatchesArray->Delete();
55 if (!fBmnPointsArray) {
56 Error(
"BmnSiliconHitProducer::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 = siliconPoint->
GetXIn() + dX;
74 const Float_t y_smeared = siliconPoint->
GetYIn() + dY;
75 const Float_t z_smeared = siliconPoint->
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 ((*fBmnSiliconHitMatchesArray)[fBmnSiliconHitMatchesArray->GetEntriesFast()])
BmnMatch();
84 match->AddLink(100.0, iPoint);