23 cout <<
" BmnGemHitProducer::Init() " << endl;
26 FairRootManager* ioman = FairRootManager::Instance();
28 fBmnPointsArray = (TClonesArray*) ioman->GetObject(fInputBranchName);
29 fMCTracksArray = (TClonesArray*) ioman->GetObject(
"MCTrack");
31 fBmnHitsArray =
new TClonesArray(fOutputHitsBranchName, 100);
32 ioman->Register(
"BmnGemStripHit",
"GEM", fBmnHitsArray, kTRUE);
34 fBmnGemStripHitMatchesArray =
new TClonesArray(
"BmnMatch");
35 ioman->Register(fOutputGemHitMatchesBranchName,
"GEM", fBmnGemStripHitMatchesArray, kTRUE);
37 TString gPathGemConfig = gSystem->Getenv(
"VMCWORKDIR");
38 gPathGemConfig +=
"/parameters/gem/XMLConfigs/";
46 fBmnHitsArray->Delete();
47 fBmnGemStripHitMatchesArray->Delete();
49 if (!fBmnPointsArray) {
50 Error(
"BmnGemHitProducer::Init()",
" !!! Unknown branch name !!! ");
54 Float_t err[3] = {0.03, 0.03, 0.03};
57 for (Int_t iPoint = 0; iPoint < fBmnPointsArray->GetEntriesFast(); iPoint++) {
59 TRandom* rand_gen =
new TRandom();
63 const Float_t dX = rand_gen->Gaus(0, err[0]);
64 const Float_t dY = rand_gen->Gaus(0, err[1]);
65 const Float_t dZ = rand_gen->Gaus(0, err[2]);
67 const Float_t x_smeared = gemPoint->
GetXIn() + dX;
68 const Float_t y_smeared = gemPoint->
GetYIn() + dY;
69 const Float_t z_smeared = gemPoint->
GetZIn() + dZ;
71 BmnHit* hit =
new((*fBmnHitsArray)[fBmnHitsArray->GetEntriesFast()])
BmnHit(0, TVector3(x_smeared, y_smeared, z_smeared), TVector3(err[0], err[1], err[2]), iPoint);
73 hit->
SetIndex(fBmnHitsArray->GetEntriesFast() - 1);
78 BmnMatch*
match =
new ((*fBmnGemStripHitMatchesArray)[fBmnGemStripHitMatchesArray->GetEntriesFast()])
BmnMatch();
79 match->AddLink(100.0, iPoint);