X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliTrackReference.cxx;h=40af88e4d2f38e90bf4ef01238c71af903fa2dd9;hb=61fbadb94da3022c3ce17eaf3819450f5b44cce9;hp=7c3fb26a5d643a0f75a297b00438fa3cc1fe3bb6;hpb=2cad796f08f8cb2b113fc042ad01bb5b2b4fc670;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliTrackReference.cxx b/STEER/AliTrackReference.cxx index 7c3fb26a5d6..40af88e4d2f 100644 --- a/STEER/AliTrackReference.cxx +++ b/STEER/AliTrackReference.cxx @@ -13,12 +13,15 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ +/* $Id$ */ -#include "AliTrackReference.h" #include "TVirtualMC.h" -#include "TParticle.h" + #include "AliRun.h" -#include "TLorentzVector.h" +#include "AliTrackReference.h" +#include "AliExternalTrackParam.h" +#include "AliKalmanTrack.h" +#include // // Track Reference object is created every time particle is @@ -37,6 +40,7 @@ ClassImp(AliTrackReference) //_______________________________________________________________________ AliTrackReference::AliTrackReference(): + TObject(), fTrack(0), fX(0), fY(0), @@ -44,7 +48,9 @@ ClassImp(AliTrackReference) fPx(0), fPy(0), fPz(0), - fLength(0) + fLength(0), + fTime(0), + fUserId(0) { // // Default constructor @@ -54,7 +60,19 @@ ClassImp(AliTrackReference) } //_______________________________________________________________________ -AliTrackReference::AliTrackReference(Int_t label) { +AliTrackReference::AliTrackReference(Int_t label) : + TObject(), + fTrack(label), + fX(0), + fY(0), + fZ(0), + fPx(0), + fPy(0), + fPz(0), + fLength(gMC->TrackLength()), + fTime(gMC->TrackTime()), + fUserId(0) +{ // // Create Reference object out of label and // data in TVirtualMC object @@ -66,19 +84,15 @@ AliTrackReference::AliTrackReference(Int_t label) { // GSI, Jan 31, 2003 // - TLorentzVector vec; + Double_t vec[4]; - fTrack = label; - fLength = gMC->TrackLength(); - fTime = gMC->TrackTime(); - - gMC->TrackPosition(vec); + gMC->TrackPosition(vec[0],vec[1],vec[2]); fX = vec[0]; fY = vec[1]; fZ = vec[2]; - gMC->TrackMomentum(vec); + gMC->TrackMomentum(vec[0],vec[1],vec[2],vec[3]); fPx = vec[0]; fPy = vec[1]; @@ -99,3 +113,38 @@ AliTrackReference::AliTrackReference(Int_t label) { SetBit(BIT(7), gMC->IsTrackStop()); } //_______________________________________________________________________ +AliExternalTrackParam * AliTrackReference::MakeTrack(const AliTrackReference *ref, Double_t mass) +{ + // + // Make dummy track from the track reference + // negative mass means opposite charge + // + Double_t xx[5]; + Double_t cc[15]; + for (Int_t i=0;i<15;i++) cc[i]=0; + Double_t x = ref->X(), y = ref->Y(), z = ref->Z(); + Double_t alpha = TMath::ATan2(y,x); + Double_t xr = TMath::Sqrt(x*x+y*y); + xx[0] = ref->LocalY(); + xx[1] = z; + xx[3] = ref->Pz()/ref->Pt(); + xx[4] = 1./ref->Pt(); + if (mass<0) xx[4]*=-1.; // negative mass - negative direction + Double_t alphap = TMath::ATan2(ref->Py(),ref->Px())-alpha; + if (alphap> TMath::Pi()) alphap-=TMath::Pi(); + if (alphap<-TMath::Pi()) alphap+=TMath::Pi(); + xx[2] = TMath::Sin(alphap); + + AliExternalTrackParam * track = new AliExternalTrackParam(xr,alpha,xx,cc); + return track; +} + +//_______________________________________________________________________ +void +AliTrackReference::Print(Option_t* opt) const +{ + cout << Form("Label %d P=%7.2f (X,Y,Z)=(%7.2f,%7.2f,%7.2f) (PX,PY,PZ)=(%7.2f,%7.2f,%7.2f)" + " Length=%7.2f Time=%7.2f UserId=%d", + Label(),P(),Px(),Py(),Pz(),X(),Y(),Z(),GetLength(),GetTime()) << endl; +} +