]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliKFParticleBase.h
Stefan Rosegger and Jim Thomas
[u/mrichter/AliRoot.git] / STEER / AliKFParticleBase.h
index a15689bf189d7db51920c1af102c9c30da2c619f..818087a5dddc33d650b2d956ed32b9dbc31e285d 100644 (file)
@@ -64,7 +64,12 @@ class AliKFParticleBase :public TObject {
 
   //* Destructor 
 
-  virtual ~AliKFParticleBase(){};
+  virtual ~AliKFParticleBase() { ; }
+
+ //* Initialisation from "cartesian" coordinates ( X Y Z Px Py Pz )
+ //* Parameters, covariance matrix, charge, and mass hypothesis should be provided 
+
+  void Initialize( const Double_t Param[], const Double_t Cov[], Int_t Charge, Double_t Mass );
 
   //* Initialise covariance matrix and set current parameters to 0.0 
 
@@ -100,9 +105,14 @@ class AliKFParticleBase :public TObject {
   //* error flag returned (0 means no error during calculations) 
 
   Int_t GetMomentum    ( Double_t &P, Double_t &SigmaP ) const ;
+  Int_t GetPt          ( Double_t &Pt, Double_t &SigmaPt ) const ;
+  Int_t GetEta         ( Double_t &Eta, Double_t &SigmaEta ) const ;
+  Int_t GetPhi         ( Double_t &Phi, Double_t &SigmaPhi ) const ;
   Int_t GetMass        ( Double_t &M, Double_t &SigmaM ) const ;
   Int_t GetDecayLength ( Double_t &L, Double_t &SigmaL ) const ;
+  Int_t GetDecayLengthXY ( Double_t &L, Double_t &SigmaL ) const ;
   Int_t GetLifeTime    ( Double_t &T, Double_t &SigmaT ) const ;
+  Int_t GetR           ( Double_t &R, Double_t &SigmaR ) const ;
 
   //*
   //*  MODIFIERS
@@ -143,14 +153,19 @@ class AliKFParticleBase :public TObject {
 
   void SetProductionVertex( const AliKFParticleBase &Vtx );
 
-  //* Set hard mass constraint 
+  //* Set mass constraint 
 
-  void SetMassConstraint( Double_t Mass );
+  void SetMassConstraint( Double_t Mass, Double_t SigmaMass = 0 );
   
+  //* Set no decay length for resonances
+
+  void SetNoDecayLength();
+
+
   //* Everything in one go  
 
   void Construct( const AliKFParticleBase *vDaughters[], Int_t NDaughters, 
-                 const AliKFParticleBase *ProdVtx=0,   Double_t Mass=-1  );
+                 const AliKFParticleBase *ProdVtx=0,   Double_t Mass=-1, Bool_t IsConstrained=0  );
 
 
   //*
@@ -194,8 +209,7 @@ class AliKFParticleBase :public TObject {
 
   Double_t GetDistanceFromVertex( const Double_t vtx[] ) const;
   Double_t GetDistanceFromVertex( const AliKFParticleBase &Vtx ) const;
-  Double_t GetDistanceFromParticleBz( Double_t Bz,
-                                     const AliKFParticleBase &p ) const;
+  Double_t GetDistanceFromParticle( const AliKFParticleBase &p ) const;
 
   //* Calculate sqrt(Chi2/ndf) deviation from vertex
   //* v = [xyz], Cv=[Cxx,Cxy,Cyy,Cxz,Cyz,Czz]-covariance matrix
@@ -203,14 +217,17 @@ class AliKFParticleBase :public TObject {
   Double_t GetDeviationFromVertex( const Double_t v[], 
                                   const Double_t Cv[]=0 ) const;
   Double_t GetDeviationFromVertex( const AliKFParticleBase &Vtx ) const;
-  Double_t GetDeviationFromParticleBz( Double_t Bz, 
-                                      const AliKFParticleBase &p ) const;  
+  Double_t GetDeviationFromParticle( const AliKFParticleBase &p ) const;  
 
   //* Subtract the particle from the vertex  
 
-  void SubtractFromVertex( Double_t v[], Double_t Cv[], 
-                          Double_t &vChi2, Int_t vNDF ) const ;
-  
+  void SubtractFromVertex( AliKFParticleBase &Vtx ) const;
+
+  //* Special method for creating gammas
+
+  void ConstructGammaBz( const AliKFParticleBase &daughter1,
+                        const AliKFParticleBase &daughter2, double Bz  );
+
  protected:
 
   static Int_t IJ( Int_t i, Int_t j ){ 
@@ -223,9 +240,14 @@ class AliKFParticleBase :public TObject {
   void TransportLine( Double_t S, Double_t P[], Double_t C[] ) const ;
   Double_t GetDStoPointLine( const Double_t xyz[] ) const;
 
+  static Bool_t InvertSym3( const Double_t A[], Double_t Ainv[] );
+
   static void MultQSQt( const Double_t Q[], const Double_t S[], 
                        Double_t SOut[] );
 
+  static Double_t GetSCorrection( const Double_t Part[], const Double_t XYZ[] );
+
+  void GetMeasurement( const Double_t XYZ[], Double_t m[], Double_t V[] ) const ;
 
   Double_t fP[8];  //* Main particle parameters {X,Y,Z,Px,Py,Pz,E,S[=DecayLength/P]}
   Double_t fC[36]; //* Low-triangle covariance matrix of fP