73 FairRootManager* rootMgr = FairRootManager::Instance();
75 cout <<
"-E- CbmGlobalTrackFitterKF::Init :"
76 <<
" ROOT manager is not instantiated" << endl;
80 fArrayStsHit = (TClonesArray*) rootMgr->GetObject(
"StsHit");
81 if(NULL == fArrayStsHit) {
82 cout <<
"-W- CbmGlobalTrackFitterKF::Init :"
83 <<
" no Sts hit array" << endl;
85 fArrayTrdHit = (TClonesArray*) rootMgr->GetObject(
"TrdHit");
86 if(NULL == fArrayTrdHit) {
87 cout <<
"-W- CbmGlobalTrackFitterKF::Init :"
88 <<
" no TRD hit array" << endl;
90 fArrayTofHit = (TClonesArray*) rootMgr->GetObject(
"TofHit");
91 if(NULL == fArrayTofHit) {
92 cout <<
"-W- CbmGlobalTrackFitterKF::Init :"
93 <<
" no TOF hit array" << endl;
96 fArrayStsTrack = (TClonesArray*) rootMgr->GetObject(
"StsTrack");
97 if(NULL == fArrayStsTrack) {
98 cout <<
"-W- CbmGlobalTrackFitterKF::Init : "
99 <<
"no STS track array!" << endl;
101 fArrayTrdTrack = (TClonesArray*) rootMgr->GetObject(
"TrdTrack");
102 if(NULL == fArrayTrdTrack) {
103 cout <<
"-W- CbmGlobalTrackFitterKF::Init : "
104 <<
"no TRD track array!" << endl;
106 fPrimVertex = (
CbmVertex*) rootMgr->GetObject(
"PrimaryVertex");
107 if(NULL == fPrimVertex) {
108 cout <<
"-W- CbmGlobalTrackFitterKF::Init : "
109 <<
"no Primary Vertex!" << endl;
119 if(NULL==glbTrack || NULL==fArrayStsTrack || NULL==fArrayTrdTrack ||
120 NULL==fArrayStsHit || NULL==fArrayTrdHit || NULL==fPrimVertex)
return;
129 Double_t z = fPrimVertex->
GetZ();
130 Double_t length = 0.;
135 if(-1 == stsTrackIndex) {
141 if(NULL == stsTrack) {
144 FairTrackParam *paramFirst;
152 if(paramFirst->GetQp()) {
153 p = TMath::Abs(1./paramFirst->GetQp());
179 if(-1 == trdTrackIndex) {
183 CbmTrdTrack* trdTrack = (CbmTrdTrack*) fArrayTrdTrack->
185 if(NULL == trdTrack) {
188 if(trdTrack->GetNofHits() < 2) {
191 Int_t trdHitIndex = trdTrack->GetHitIndex(0);
192 CbmTrdHit* trdHit = (CbmTrdHit*) fArrayTrdHit->At(trdHitIndex);
194 while(z < (trdHit->GetZ()-2.)) {
202 length += TMath::Sqrt(TMath::Power(x_new-x_old, 2) +
203 TMath::Power(y_new-y_old, 2) +
204 TMath::Power(z_new-z_old, 2));
211 for(Int_t iTrd = 1; iTrd < trdTrack->GetNofHits(); iTrd++) {
213 trdHitIndex = trdTrack->GetHitIndex(iTrd);
215 trdHit = (CbmTrdHit*) fArrayTrdHit->At(trdHitIndex);
218 if(trdHit->GetDx() > trdHit->GetDy()) {
220 y_new = trdHit->GetY();
222 x_new = trdHit->GetX();
226 length += TMath::Sqrt(TMath::Power(x_new-x_old, 2) +
227 TMath::Power(y_new-y_old, 2) +
228 TMath::Power(z_new-z_old, 2));
240 x_new = tofHit->GetX();
241 y_new = tofHit->GetY();
242 z_new = tofHit->GetZ();
243 length += TMath::Sqrt(TMath::Power(x_new-x_old, 2) +
244 TMath::Power(y_new-y_old, 2) +
245 TMath::Power(z_new-z_old, 2));