Added GetPxPyPz
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Nov 2004 08:32:41 +0000 (08:32 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Nov 2004 08:32:41 +0000 (08:32 +0000)
HLT/ITS/AliL3ITStrack.cxx
HLT/ITS/AliL3ITStrack.h

index 8a5ab82..1a96f67 100644 (file)
@@ -29,8 +29,8 @@
 ClassImp(AliL3ITStrack)
 
 //____________________________________________________________________________
-AliL3ITStrack::AliL3ITStrack():AliITStrackV2(),
-  fESDHLTtrack(0)
+AliL3ITStrack::AliL3ITStrack()
+              :AliITStrackV2(),fESDHLTtrack(0)
 {
   //------------------------------------------------------------------
   //Constructor
@@ -38,7 +38,9 @@ AliL3ITStrack::AliL3ITStrack():AliITStrackV2(),
 }
 
 //____________________________________________________________________________
-AliL3ITStrack::AliL3ITStrack(const AliL3ITStrack& t) : AliITStrackV2(t) {
+AliL3ITStrack::AliL3ITStrack(const AliL3ITStrack& t) 
+              : AliITStrackV2(t), fESDHLTtrack(0)
+{
   //------------------------------------------------------------------
   //Copy constructor
   //------------------------------------------------------------------
@@ -46,7 +48,25 @@ AliL3ITStrack::AliL3ITStrack(const AliL3ITStrack& t) : AliITStrackV2(t) {
 }
 
 //____________________________________________________________________________
-AliL3ITStrack::AliL3ITStrack(AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *) {
+AliL3ITStrack::AliL3ITStrack(AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *) 
+              : AliITStrackV2(), fESDHLTtrack(0) 
+{
+  // The method constructs an AliL3ITStrack object from an ESD HLT track
+  fESDHLTtrack=&t;
+  Set(t,zvertex);
+}
+
+//____________________________________________________________________________
+AliL3ITStrack::AliL3ITStrack(const AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *) 
+              : AliITStrackV2(), fESDHLTtrack(0) 
+{
+  // The method constructs an AliL3ITStrack object from an ESD HLT track
+  Set(t,zvertex);
+}
+
+//____________________________________________________________________________
+void AliL3ITStrack::Set(const AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *) {
   // The method constructs an AliL3ITStrack object from an ESD HLT track
  
   SetChi2(0.);
@@ -124,11 +144,9 @@ AliL3ITStrack::AliL3ITStrack(AliESDHLTtrack& t, Double_t zvertex) throw (const C
   fC30=0;   fC31=0;   fC32=0;
   fC40=0;   fC41=0;   fC42=0;   fC43=0;
 
-  fESDHLTtrack=&t;
   fESDtrack=0;
 
   SetFakeRatio(0.);
-
 }
 
 //_____________________________________________________________________________
@@ -145,3 +163,23 @@ Int_t AliL3ITStrack::Compare(const TObject *o) const {
   else if (c<co) return -1;
   return 0;
 }
+
+Bool_t AliL3ITStrack::GetPxPyPzAt(Double_t x,Double_t *p) const {
+  //---------------------------------------------------------------------
+  // This function returns the global track momentum components
+  // at the position "x" using the helix track approximation
+  //---------------------------------------------------------------------
+  p[0]=fP4;
+  p[1]=fP2+(x-fX)*fP4/AliKalmanTrack::GetConvConst(); 
+  p[2]=fP3;
+
+  if (TMath::Abs(p[0])<=0)        return kFALSE;
+  if (TMath::Abs(p[1])> 0.999999) return kFALSE;
+
+  Double_t pt=1./TMath::Abs(p[0]);
+  Double_t cs=TMath::Cos(fAlpha), sn=TMath::Sin(fAlpha);
+  Double_t r=TMath::Sqrt(1 - p[1]*p[1]);
+  p[0]=pt*(r*cs - p[1]*sn); p[1]=pt*(p[1]*cs + r*sn); p[2]=pt*p[2];
+
+  return kTRUE;
+}
index c8cd00c..2c1fb60 100644 (file)
@@ -23,16 +23,20 @@ class AliESDHLTtrack;
 class AliL3ITStrack : public AliITStrackV2 {
 public:
   AliL3ITStrack();
-  AliL3ITStrack(AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *);
   AliL3ITStrack(const AliL3ITStrack& t);
+  AliL3ITStrack(AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *);
+  AliL3ITStrack(const AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *);
 
   Int_t Compare(const TObject *o) const;
 
   // Set and get the pointer to the HLT ESD track
   AliESDHLTtrack *GetESDHLTtrack() const {return fESDHLTtrack; }
   void SetESDHLTtrack(AliESDHLTtrack *esdhlttrack) { fESDHLTtrack = esdhlttrack; }
+  Bool_t GetPxPyPzAt(Double_t x,Double_t *p) const;
 
 protected:
+  void Set(const AliESDHLTtrack& t, Double_t zvertex) throw (const Char_t *);
+
   AliESDHLTtrack *fESDHLTtrack;   //! pointer to the connected ESD HLT track
 
   ClassDef(AliL3ITStrack,1)   //HLT ITS reconstructed track