ROOT logo
#ifndef ALIITSTRACKMI_H
#define ALIITSTRACKMI_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//-------------------------------------------------------------------------
//                       ITS Track Class
//
//        Origin: Marian Ivanov, CERN, Marian.Ivanov@cern.ch 
//     dEdx analysis by: Boris Batyunya, JINR, Boris.Batiounia@cern.ch
//-------------------------------------------------------------------------

/* $Id$ */

/*****************************************************************************
 *                          December 18, 2000                                *
 *  Internal view of the ITS track parametrisation as well as the order of   *
 *           track parameters are subject for possible changes !             *
 *  Use GetExternalParameters() and GetExternalCovariance() to access ITS    *
 *      track information regardless of its internal representation.         *
 * This formation is now fixed in the following way:                         *
 *      external param0:   local Y-coordinate of a track (cm)                *
 *      external param1:   local Z-coordinate of a track (cm)                *
 *      external param2:   local sine of the track momentum azimuthal angle  *
 *      external param3:   tangent of the track momentum dip angle           *
 *      external param4:   1/pt (1/(GeV/c))                                  *
 *****************************************************************************/

#include <AliKalmanTrack.h>

#include "AliITStrackV2.h"

class AliESDtrack;

//_____________________________________________________________________________
class AliITStrackMI : public AliITStrackV2 {
public:
  AliITStrackMI();
  AliITStrackMI(AliESDtrack& t,Bool_t c=kFALSE);
  AliITStrackMI(const AliITStrackMI& t);
  virtual ~AliITStrackMI()  {if (fWinner) fWinner->fWinner = 0;} // release associated seed
  Int_t GetProlongationFast(Double_t alpha, Double_t xr,Double_t &y, Double_t &z);
  Bool_t UpdateMI(const AliCluster *c, Double_t chi2, Int_t i);  

  void SetReconstructed(Bool_t sr=kTRUE){fReconstructed = sr;}  
  Bool_t GetReconstructed() const {return fReconstructed;}
  void SetChi2MIP(Int_t i,Float_t val){fChi2MIP[i]=val;}
  Float_t GetChi2MIP(Int_t i) const {return fChi2MIP[i];}  
  void IncrementNSkipped(){fNSkipped++;} // increment by 1 the # of skipped cls
  Float_t GetNSkipped() const {return fNSkipped;}
  void SetNSkipped(Float_t n) {fNSkipped=n;}
  void IncrementNUsed(){fNUsed++;} // increment by 1 the # of shared clusters
  Float_t GetNUsed() const {return fNUsed;}
  void SetNUsed(Float_t n) {fNUsed=n;}

  Int_t Compare(const TObject *o) const;
  Double_t GetCov33() const {return GetCovariance()[9];} // cov. matrix el. 3,3
  //Double_t GetCov44() const {return GetCovariance()[15];}// cov. matrix el. 4,4
  Float_t GetDy(Int_t i) const {return fDy[i];}
  Float_t GetDz(Int_t i) const {return fDz[i];}
  Float_t GetD(Int_t i) const {return fD[i];}
  Double_t GetD(Double_t x, Double_t y) const
    {return AliITStrackV2::GetD(x,y);}
  Float_t *GetDP() {return fD;}
  void SetD(Int_t i, Float_t d) {fD[i]=d;}
  Float_t GetDnorm(Int_t i) const {return fDnorm[i];}
  Float_t *GetDnormP() {return fDnorm;}
  void SetDnorm(Int_t i, Float_t d) {fDnorm[i]=d;}
  Float_t GetSigmaY(Int_t i) const {return fSigmaY[i];}
  Float_t GetSigmaZ(Int_t i) const {return fSigmaZ[i];}
  Float_t GetSigmaYZ(Int_t i) const {return fSigmaYZ[i];}
  void SetSigmaY(Int_t i, Float_t s) {fSigmaY[i]=s;}
  void SetSigmaZ(Int_t i, Float_t s) {fSigmaZ[i]=s;}
  void SetSigmaYZ(Int_t i, Float_t s) {fSigmaYZ[i]=s;}
  Float_t GetNDeadZone() const {return fNDeadZone;}
  void SetNDeadZone(Float_t d) {fNDeadZone=d;}
  Int_t* ClIndex() {return fClIndex;}
  Int_t GetClIndex(Int_t i) const {return fClIndex[i];}
  void SetClIndex(Int_t i, Int_t c) {fClIndex[i]=c;}
  Float_t GetNormChi2(Int_t i) const {return fNormChi2[i];}
  void SetNormChi2(Int_t i, Float_t n) {fNormChi2[i]=n;}
  Bool_t GetConstrain() const {return fConstrain;}
  void SetConstrain(Bool_t c) {fConstrain=c;}
  Float_t GetExpQ() const {return fExpQ;}
  void SetExpQ(Float_t f) {fExpQ=f;}
  Float_t GetNormQ(Int_t i) const {return fNormQ[i];}
  void SetNormQ(Int_t i, Float_t q) {fNormQ[i]=q;}
  Float_t GetdEdxMismatch() const {return fdEdxMismatch;}
  void SetdEdxMismatch(Float_t m) {fdEdxMismatch=m;}
  Float_t GetNy(Int_t i) const {return fNy[i];}
  void SetNy(Int_t i, Float_t f) {fNy[i]=f;}
  Float_t GetNz(Int_t i) const {return fNz[i];}
  void SetNz(Int_t i, Float_t f) {fNz[i]=f;}
  Bool_t GetGoldV0() const {return fGoldV0;}
  void SetGoldV0(Bool_t g) {fGoldV0=g;}
  Float_t GetChi22() const {return fChi22;}
  void SetChi22(Float_t c) {fChi22=c;}
  Float_t GetDeadZoneProbability(Int_t ilayer) const {return fDeadZoneProbability[ilayer];}
  void SetDeadZoneProbability(Int_t ilayer,Float_t d) {fDeadZoneProbability[ilayer]=d;}
  //
  AliITStrackMI*  GetWinner()        const {return fWinner;}
  void   SetWinner(AliITStrackMI* p);
  //
  Double_t GetPredictedChi2MI(Double_t cy, Double_t cz, Double_t cerry, Double_t cerrz, Double_t covyz=0.) const;
  Bool_t IsGoldPrimary();
protected:

  Float_t fNUsed;                          // number of shared clusters
  Float_t fNSkipped;                       // number of skipped clusters
  Float_t fNDeadZone;                     // number of clusters in dead zone
  Float_t fDeadZoneProbability[6];        // probability to cross dead zone
  Bool_t  fReconstructed;                 // reconstructed - accepted flag
  Float_t fChi2MIP[12];                   // MIP chi squres 

  Float_t fDy[12];           //dy in layer
  Float_t fDz[12];           //dz in layer
  Float_t fSigmaY[12];       //sigma y 
  Float_t fSigmaZ[12];       //sigma z
  Float_t fSigmaYZ[12];       //covariance of y and z
  Float_t fNy[6];              //expected size of cluster
  Float_t fNz[6];              //expected size of cluster
  Float_t fD[2];            //distance to the vertex
  Float_t fDnorm[2];        // normalized distance to the vertex
  Float_t fNormQ[6];        // normalized Q
  Float_t fExpQ;            // expected Q
  Float_t fNormChi2[6];     // normalized chi2 
  Float_t fChi22;           // chi22
  Float_t fdEdxMismatch;    
  Bool_t fConstrain;        //indication of the vertex constrain
  Int_t  fClIndex[6];       //cluster Index
  AliITStrackMI* fWinner;   //! pointer on winner candidate
  Bool_t fGoldV0;           //corresponding gold V0 found
  //
 private:
  AliITStrackMI &operator=(const AliITStrackMI &tr);

  ClassDef(AliITStrackMI,4)   //ITS reconstructed track
};

inline void AliITStrackMI::SetWinner(AliITStrackMI* p) 
{
  // connect winning hypothesis with the seed
  if (fWinner) fWinner->fWinner = 0; // release previous winner
  fWinner = p; 
  if (p) p->fWinner = this;
}

#endif


 AliITStrackMI.h:1
 AliITStrackMI.h:2
 AliITStrackMI.h:3
 AliITStrackMI.h:4
 AliITStrackMI.h:5
 AliITStrackMI.h:6
 AliITStrackMI.h:7
 AliITStrackMI.h:8
 AliITStrackMI.h:9
 AliITStrackMI.h:10
 AliITStrackMI.h:11
 AliITStrackMI.h:12
 AliITStrackMI.h:13
 AliITStrackMI.h:14
 AliITStrackMI.h:15
 AliITStrackMI.h:16
 AliITStrackMI.h:17
 AliITStrackMI.h:18
 AliITStrackMI.h:19
 AliITStrackMI.h:20
 AliITStrackMI.h:21
 AliITStrackMI.h:22
 AliITStrackMI.h:23
 AliITStrackMI.h:24
 AliITStrackMI.h:25
 AliITStrackMI.h:26
 AliITStrackMI.h:27
 AliITStrackMI.h:28
 AliITStrackMI.h:29
 AliITStrackMI.h:30
 AliITStrackMI.h:31
 AliITStrackMI.h:32
 AliITStrackMI.h:33
 AliITStrackMI.h:34
 AliITStrackMI.h:35
 AliITStrackMI.h:36
 AliITStrackMI.h:37
 AliITStrackMI.h:38
 AliITStrackMI.h:39
 AliITStrackMI.h:40
 AliITStrackMI.h:41
 AliITStrackMI.h:42
 AliITStrackMI.h:43
 AliITStrackMI.h:44
 AliITStrackMI.h:45
 AliITStrackMI.h:46
 AliITStrackMI.h:47
 AliITStrackMI.h:48
 AliITStrackMI.h:49
 AliITStrackMI.h:50
 AliITStrackMI.h:51
 AliITStrackMI.h:52
 AliITStrackMI.h:53
 AliITStrackMI.h:54
 AliITStrackMI.h:55
 AliITStrackMI.h:56
 AliITStrackMI.h:57
 AliITStrackMI.h:58
 AliITStrackMI.h:59
 AliITStrackMI.h:60
 AliITStrackMI.h:61
 AliITStrackMI.h:62
 AliITStrackMI.h:63
 AliITStrackMI.h:64
 AliITStrackMI.h:65
 AliITStrackMI.h:66
 AliITStrackMI.h:67
 AliITStrackMI.h:68
 AliITStrackMI.h:69
 AliITStrackMI.h:70
 AliITStrackMI.h:71
 AliITStrackMI.h:72
 AliITStrackMI.h:73
 AliITStrackMI.h:74
 AliITStrackMI.h:75
 AliITStrackMI.h:76
 AliITStrackMI.h:77
 AliITStrackMI.h:78
 AliITStrackMI.h:79
 AliITStrackMI.h:80
 AliITStrackMI.h:81
 AliITStrackMI.h:82
 AliITStrackMI.h:83
 AliITStrackMI.h:84
 AliITStrackMI.h:85
 AliITStrackMI.h:86
 AliITStrackMI.h:87
 AliITStrackMI.h:88
 AliITStrackMI.h:89
 AliITStrackMI.h:90
 AliITStrackMI.h:91
 AliITStrackMI.h:92
 AliITStrackMI.h:93
 AliITStrackMI.h:94
 AliITStrackMI.h:95
 AliITStrackMI.h:96
 AliITStrackMI.h:97
 AliITStrackMI.h:98
 AliITStrackMI.h:99
 AliITStrackMI.h:100
 AliITStrackMI.h:101
 AliITStrackMI.h:102
 AliITStrackMI.h:103
 AliITStrackMI.h:104
 AliITStrackMI.h:105
 AliITStrackMI.h:106
 AliITStrackMI.h:107
 AliITStrackMI.h:108
 AliITStrackMI.h:109
 AliITStrackMI.h:110
 AliITStrackMI.h:111
 AliITStrackMI.h:112
 AliITStrackMI.h:113
 AliITStrackMI.h:114
 AliITStrackMI.h:115
 AliITStrackMI.h:116
 AliITStrackMI.h:117
 AliITStrackMI.h:118
 AliITStrackMI.h:119
 AliITStrackMI.h:120
 AliITStrackMI.h:121
 AliITStrackMI.h:122
 AliITStrackMI.h:123
 AliITStrackMI.h:124
 AliITStrackMI.h:125
 AliITStrackMI.h:126
 AliITStrackMI.h:127
 AliITStrackMI.h:128
 AliITStrackMI.h:129
 AliITStrackMI.h:130
 AliITStrackMI.h:131
 AliITStrackMI.h:132
 AliITStrackMI.h:133
 AliITStrackMI.h:134
 AliITStrackMI.h:135
 AliITStrackMI.h:136
 AliITStrackMI.h:137
 AliITStrackMI.h:138
 AliITStrackMI.h:139
 AliITStrackMI.h:140
 AliITStrackMI.h:141
 AliITStrackMI.h:142
 AliITStrackMI.h:143
 AliITStrackMI.h:144
 AliITStrackMI.h:145
 AliITStrackMI.h:146
 AliITStrackMI.h:147
 AliITStrackMI.h:148
 AliITStrackMI.h:149
 AliITStrackMI.h:150