47 dbPDG = TDatabasePDG::Instance();
49 cout <<
"-W- CbmStsTrackFitterIdeal::Init : "
50 <<
"Database PDG is not instantiated!" << endl;
53 FairRootManager* rootMgr = FairRootManager::Instance();
55 cerr <<
"-E- CbmStsTrackFitterIdeal::Init : "
56 <<
"ROOT manager is not instantiated!" << endl;
60 fArrayMCTrack = (TClonesArray*) rootMgr->GetObject(
"MCTrack");
61 if(NULL == fArrayMCTrack) {
62 cout <<
"-W- CbmStsTrackFitterIdeal::Init : "
63 <<
"no MC track array!" << endl;
66 fArrayStsPoint = (TClonesArray*) rootMgr->GetObject(
"StsPoint");
67 if(NULL == fArrayStsPoint) {
68 cout <<
"-W- CbmStsTrackFitterIdeal::Init : "
69 <<
"no STS point array!" << endl;
72 fArrayStsHit = (TClonesArray*) rootMgr->GetObject(
"StsHit");
73 if(NULL == fArrayStsHit) {
74 cout <<
"-W- CbmStsTrackFitterIdeal::Init : "
75 <<
"no STS hit array!" << endl;
86 if(NULL == fArrayStsPoint || NULL == fArrayStsHit )
return 0;
94 if(hitIndex < 0)
return 0;
95 hit = (
CbmStsHit*) fArrayStsHit->At(hitIndex);
96 if(NULL == hit)
return 0;
97 pointIndex = hit->GetRefIndex();
99 if(pointIndex < 0)
return 0;
101 if(NULL == point)
return 0;
107 if(hitIndex < 0)
return 0;
108 hit = (
CbmStsHit*) fArrayStsHit->At(hitIndex);
109 if(NULL == hit)
return 0;
110 pointIndex = hit->GetRefIndex();
112 if(pointIndex < 0)
return 0;
113 point = (
CbmStsPoint*) fArrayStsPoint->At(pointIndex);
114 if(NULL == point)
return 0;
128 point->Position(pos);
129 point->Momentum(mom);
134 trackParam->SetX(pos.X());
135 trackParam->SetY(pos.Y());
136 trackParam->SetZ(pos.Z());
137 trackParam->SetTx(mom.X()/mom.Z());
138 trackParam->SetTy(mom.Y()/mom.Z());
139 Int_t mcTrackIndex = point->GetTrackID();
140 if(mcTrackIndex < 0)
return;
142 if(NULL == mcTrack)
return;
144 TParticlePDG* particle = dbPDG->GetParticle(pdgCode);
145 if(NULL == particle)
return;
146 trackParam->SetQp(particle->Charge() / mom.Mag());