104 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++)
108 if(!pTrack)
continue;
109 if(pTrack->
GetFlag() < 3)
continue;
112 Int_t iHit1 = pTrack->GetHitIndex(0);
114 if(!currenthit1)
continue;
115 if(currenthit1->GetXint() == -999 || currenthit1->GetYint() == -999)
continue;
116 Int_t refindex1 = currenthit1->GetRefIndex();
122 TVector3 StartPosErr = TVector3(0,0,0);
123 TVector3 StartMom = TVector3 (fPoint1->GetPXtot(),fPoint1->GetPYtot(),fPoint1->GetPZtot());
125 TVector3 StartMomErr = TVector3(0,0,0);
149 Int_t hitcounter = pTrack->GetNofHits();
150 Int_t iHit = pTrack->GetHitIndex(hitcounter - 1);
152 if(!currenthit)
continue;
153 if(currenthit->GetXint() == -999 || currenthit->GetYint() == -999)
continue;
154 Int_t refindex = currenthit->GetRefIndex();
164 TVector3 EndPosErr = TVector3(0,0,0);
165 TVector3 EndMom = TVector3(iPoint->GetPXtot(), iPoint->GetPYtot(), iPoint->GetPZtot());
166 TVector3 EndMomErr = TVector3(0,0,0);
169 TDatabasePDG *fdbPDG= TDatabasePDG::Instance();
170 TParticlePDG *
fParticle= fdbPDG->GetParticle(PDGCode);
171 Double_t fCharge= fParticle->Charge();
174 Int_t size1 = clref1.GetEntriesFast();
176 FairTrackParP *fStart =
new (clref1[size1]) FairTrackParP(StartPos, StartMom, StartPosErr, StartMomErr, fCharge, TVector3(0.,0.,0.), TVector3(0.,1.,0.), TVector3(0.,0.,1.));
179 Int_t size = clref.GetEntriesFast();
180 FairTrackParP *fRes =
new(clref[size]) FairTrackParP();
183 Int_t size2 = clref2.GetEntriesFast();
184 FairTrackParP *fFinal =
new(clref2[size2]) FairTrackParP();
185 FairTrackParH *fFinalH =
new FairTrackParH(EndPos, EndMom, EndPosErr, EndMomErr, fCharge);
188 TVector3 v0 = TVector3(0, 0, 0);
191 TVector3 center = TVector3(currenthit->GetX(), currenthit->GetY(), currenthit->GetZ());
192 TVector3 wiredir = currenthit->GetWireDirection();
194 TVector3 second = center + wiredir;
195 TVector3 first = center - wiredir;
197 fPro->SetWire(first, second);
198 fPro->PropagateToVirtualPlaneAtPCA(2);
200 Bool_t rc =
fPro->Propagate(fStart, fRes, PDGCode);
203 Double_t PD[3], RD[15], H[3], CH, SPU, DJ[3], DK[3], PC[3], RC[15];
206 PC[0] = fFinalH->GetQp()/fFinalH->GetQ();
207 PC[1] = fFinalH->GetLambda();
208 PC[2] = fFinalH->GetPhi();
212 H[0] = 0; H[1] = 0; H[2] = 20;
215 DJ[0] = fRes->GetJVer().X();
216 DJ[1] = fRes->GetJVer().Y();
217 DJ[2] = fRes->GetJVer().Z();
218 DK[0] = fRes->GetKVer().X();
219 DK[1] = fRes->GetKVer().Y();
220 DK[2] = fRes->GetKVer().Z();
222 fUtil->FromSCToSD(PC, RC, H, CH, DJ, DK, IERR, SPU, PD, RD);
224 TVector3 positionsd =
fUtil->FromMARSToSDCoord(TVector3(fFinalH->GetX(), fFinalH->GetY(), fFinalH->GetZ()), fRes->GetOrigin(), fRes->GetIVer(), fRes->GetJVer(), fRes->GetKVer());
229 fFinal->SetTrackPar(v, w, PD[1], PD[2], CH*PD[0], RD,
230 fRes->GetOrigin(), fRes->GetIVer(), fRes->GetJVer(),
231 fRes->GetKVer(),SPU);
TClonesArray * fTrackParFinal
static T Sqrt(const T &x)
Double_t GetXInLocal() const
Double_t GetYInLocal() const
TClonesArray * fPointArray
TClonesArray * fTrackParIni
TClonesArray * fTrackParGeane
TClonesArray * fTrackArray