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

/* $Id$ */
//
// this is a class
// AliComplexCluster
// by M. Ivanov
//

#include "TObject.h"
#include "TMath.h"
#include "AliTPCclusterMI.h"
//

class AliComplexCluster : public TObject {
public:

  AliComplexCluster();
  virtual ~AliComplexCluster() {;}
  Bool_t    IsSortable() const;
  Int_t Compare(const TObject *o) const;
  // the following getters are needed by HLT
  // please dont remove... C. Loizides
  Int_t GetTrack(Int_t i)const {return fTracks[i];} //labels of overlapped tracks
  Float_t GetX()const {return fX;}
  Float_t GetY()const {return fY;}
  Float_t GetQ()const {return fQ;}
  Float_t GetSigmaX2()const {return fSigmaX2;}
  Float_t GetSigmaY2()const {return fSigmaY2;}
  Float_t GetSigmaXY()const {return fSigmaXY;}
  Float_t GetArea()const {return fArea;}
  Float_t GetMax()const {return fMax;}
private:
  Int_t     fTracks[3];//labels of overlapped tracks
  Float_t   fX ;       //Y of cluster
  Float_t   fY ;       //Z of cluster
  Float_t   fQ ;       //Q of cluster (in ADC counts)
  Float_t   fSigmaX2;  //Sigma Y square of cluster
  Float_t   fSigmaY2;  //Sigma Z square of cluster
  Float_t   fSigmaXY;  //      XY moment 
  Float_t   fArea;     //area of cluster
  Float_t   fMax;     //amplitude at maximum 

  ClassDef(AliComplexCluster,1)
    // Cluster manager
};



class AliTPCTrackerPoint  {  
 public:

  AliTPCTrackerPoint():
    fTX(0),
    fTZ(0),
    fTY(0),
    fTAngleZ(0),
    fTAngleY(0),
    fSigmaZ(0),
    fSigmaY(0),
    fErrZ(0),
    fErrY(0),
    fIsShared(0){}
  virtual ~AliTPCTrackerPoint(){}
  AliTPCTrackerPoint &operator=(const AliTPCTrackerPoint& o);
  Float_t  GetX() const  {return (fTX*0.01);}
  Float_t  GetZ() const {return (fTZ*0.01);}
  Float_t  GetY() const {return (fTY*0.01);}
  Float_t  GetAngleZ() const  {return (Float_t(fTAngleZ)*0.02);}
  Float_t  GetAngleY() const {return (Float_t(fTAngleY)*0.02);}
  //
  void     SetX(Float_t x)  { fTX = Short_t(TMath::Nint(x*100.));} 
  void     SetY(Float_t y)  { fTY = Short_t(TMath::Nint(y*100.));} 
  void     SetZ(Float_t z)  { fTZ = Short_t(TMath::Nint(z*100.));} 
  void     SetAngleZ(Float_t anglez) {fTAngleZ = Char_t(TMath::Nint(anglez*50.));}
  void     SetAngleY(Float_t angley) {fTAngleY = Char_t(TMath::Nint(angley*50.));}
  Float_t  GetSigmaZ() const {return (fSigmaZ*0.02);}
  Float_t  GetSigmaY() const {return (fSigmaY*0.02);}  
  Float_t  GetErrZ()   const {return (fErrZ*0.005);}
  Float_t  GetErrY()   const {return (fErrY*0.005);}
  void     SetErrZ(Float_t errz) {fErrZ = UChar_t(TMath::Nint(errz*200.));}
  void     SetErrY(Float_t erry) {fErrY = UChar_t(TMath::Nint(erry*200.));}

  void     SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
  void     SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}

  Char_t   IsShared() const {return fIsShared;}
  void     SetShared(Char_t s) {fIsShared=s;}

  //
 private:
  Short_t   fTX;        // x position of the cluster  in cm - 10 mum prec
  Short_t   fTZ;        // current prolongation in Z  in cm - 10 mum prec.
  Short_t   fTY;        // current prolongation in Y  in cm - 10 mum prec.
  Char_t    fTAngleZ;    // angle 
  Char_t    fTAngleY;    // angle 
  UShort_t  fSigmaZ;     // shape  Z - normalised shape - normaliziation 1 - precision 2 percent
  UShort_t  fSigmaY;     // shape  Y - normalised shape - normaliziation 1 - precision 2 percent
  UShort_t  fErrZ;       // z error estimate - in  mm - 50 mum precision 
  UShort_t  fErrY;       // y error estimate - in  mm - 50 mum precision 
  Char_t   fIsShared;     // indicate sharing of the point between several tracks

  ClassDef(AliTPCTrackerPoint,2)  
};

class AliTPCClusterPoint  {
 public:
  AliTPCClusterPoint():
                      fCZ(0),
                      fCY(0), 
                      fSigmaZ(0),
                      fSigmaY(0),
                      fQ(0),
                      fMax(0),
                      fCType(0){}
  virtual ~AliTPCClusterPoint(){}
  Float_t  GetZ() const    {return (fCZ*0.01);}
  Float_t  GetY() const   {return (fCY*0.01);}
  Float_t  GetSigmaZ() const {return (fSigmaZ*0.02);}
  Float_t  GetSigmaY() const {return (fSigmaY*0.02);}  
  Int_t  GetType() const  {return fCType;}
  Int_t  GetMax()  const {return fMax;}
  Float_t  GetQ()  const {return fQ;}

  //
  void     SetY(Float_t y){ fCY = Short_t(TMath::Nint(y*100.));} 
  void     SetZ(Float_t z){ fCZ = Short_t(TMath::Nint(z*100.));} 
  void     SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
  void     SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
  void     SetQ(Float_t q) {fQ = UShort_t(q);}
  void     SetMax(Float_t max) {fMax = UShort_t(max);}
  void     SetType(Char_t type) {fCType = type;}
 private:
  Short_t  fCZ;       // current cluster position Z in cm - 100 mum precision
  Short_t  fCY;       // current cluster position Y in cm - 100 mum precision
  UChar_t  fSigmaZ;   // shape  Z - normalised shape - normaliziation 1 - precision 2 percent
  UChar_t  fSigmaY;   // shape  Y - normalised shape - normaliziation 1 - precision 2 percent
  UShort_t fQ;        // total charge in cluster 
  UShort_t fMax;      // charge at maximum  
  Char_t   fCType;    // type of the cluster

  //
  ClassDef(AliTPCClusterPoint,1)  
};


class AliTPCExactPoint : public TObject{
 public:
  AliTPCExactPoint():TObject(),
    fEZ(0.),
    fEY(0.),
    fEX(0.),
    fEAngleZ(0.),
    fEAngleY(0.),
    fEAmp(0.),
    fEPrim(0.),
    fTrackID(0),
    fRow(0),
    fSec(0){}
 private:
  Float_t fEZ;       // current "exact" position according simulation
  Float_t fEY;       // current "exact" position according simulation
  Float_t fEX;       // x poistion of the cluster
  Float_t fEAngleZ;  // angle Z
  Float_t fEAngleY;  // angle Y
  Float_t fEAmp;     // total charge deposited in row
  Float_t fEPrim;    // primary charge deposited in row
  Int_t   fTrackID;  // id of the track
  Int_t   fRow;      // row
  Int_t   fSec;      //sector
  ClassDef(AliTPCExactPoint,1)  
};


class AliTPCTrackPoint: public TObject{
 public:
  AliTPCTrackPoint():TObject(),
    fTPoint(),
    fCPoint(){}

  // AliTPCClusterPoint & GetCPoint(){return fCPoint;}
  AliTPCTrackerPoint & GetTPoint(){return fTPoint;}
  AliTPCclusterMI & GetCPoint(){return fCPoint;}  
 private:
  //  AliTPCClusterPoint fCPoint; 
  //Char_t fIsShared;
  AliTPCTrackerPoint fTPoint;  // track point
  AliTPCclusterMI    fCPoint;  // cluster point
  ClassDef(AliTPCTrackPoint,1)  
};

class AliTPCTrackPoint2: public AliTPCTrackPoint{
 public:
  AliTPCTrackPoint2():AliTPCTrackPoint(),
    fGX(0.),
    fGY(0.),
    fGZ(0.),
    fDY(0.),
    fDZ(0.),
    fDYU(0.),
    fDYD(0),
    fDZU(0.),
    fDZD(0.),
    fDDY(0),
    fDDZ(0.),
    fID(0),
    fLab(0){}
 private: 
  Float_t fGX;    //global poition of the point
  Float_t fGY;    //global poition of the point
  Float_t fGZ;    //global poition of the point
  //
  Float_t fDY;    //distortion of the clusters from the global helix (3 point interpolation)
  Float_t fDZ;    //distortion of the clusters from the global helix (3 point interpolation)
  //
  Float_t fDYU;  //derivation in y up
  Float_t fDYD;  //distortion of y down
  //
  Float_t fDZU;  //derivation in y up
  Float_t fDZD;  //distortion of y down
  //
  Float_t fDDY;  //derivation in y,z up-down
  Float_t fDDZ;  //derivation in y,z up-down
  //
  Int_t   fID;            //id of the corresponding track
  Int_t   fLab;           //MC label of the track
  ClassDef(AliTPCTrackPoint2,1)  
};






#endif //ALICOMPLEXCLUSTER_H
 AliComplexCluster.h:1
 AliComplexCluster.h:2
 AliComplexCluster.h:3
 AliComplexCluster.h:4
 AliComplexCluster.h:5
 AliComplexCluster.h:6
 AliComplexCluster.h:7
 AliComplexCluster.h:8
 AliComplexCluster.h:9
 AliComplexCluster.h:10
 AliComplexCluster.h:11
 AliComplexCluster.h:12
 AliComplexCluster.h:13
 AliComplexCluster.h:14
 AliComplexCluster.h:15
 AliComplexCluster.h:16
 AliComplexCluster.h:17
 AliComplexCluster.h:18
 AliComplexCluster.h:19
 AliComplexCluster.h:20
 AliComplexCluster.h:21
 AliComplexCluster.h:22
 AliComplexCluster.h:23
 AliComplexCluster.h:24
 AliComplexCluster.h:25
 AliComplexCluster.h:26
 AliComplexCluster.h:27
 AliComplexCluster.h:28
 AliComplexCluster.h:29
 AliComplexCluster.h:30
 AliComplexCluster.h:31
 AliComplexCluster.h:32
 AliComplexCluster.h:33
 AliComplexCluster.h:34
 AliComplexCluster.h:35
 AliComplexCluster.h:36
 AliComplexCluster.h:37
 AliComplexCluster.h:38
 AliComplexCluster.h:39
 AliComplexCluster.h:40
 AliComplexCluster.h:41
 AliComplexCluster.h:42
 AliComplexCluster.h:43
 AliComplexCluster.h:44
 AliComplexCluster.h:45
 AliComplexCluster.h:46
 AliComplexCluster.h:47
 AliComplexCluster.h:48
 AliComplexCluster.h:49
 AliComplexCluster.h:50
 AliComplexCluster.h:51
 AliComplexCluster.h:52
 AliComplexCluster.h:53
 AliComplexCluster.h:54
 AliComplexCluster.h:55
 AliComplexCluster.h:56
 AliComplexCluster.h:57
 AliComplexCluster.h:58
 AliComplexCluster.h:59
 AliComplexCluster.h:60
 AliComplexCluster.h:61
 AliComplexCluster.h:62
 AliComplexCluster.h:63
 AliComplexCluster.h:64
 AliComplexCluster.h:65
 AliComplexCluster.h:66
 AliComplexCluster.h:67
 AliComplexCluster.h:68
 AliComplexCluster.h:69
 AliComplexCluster.h:70
 AliComplexCluster.h:71
 AliComplexCluster.h:72
 AliComplexCluster.h:73
 AliComplexCluster.h:74
 AliComplexCluster.h:75
 AliComplexCluster.h:76
 AliComplexCluster.h:77
 AliComplexCluster.h:78
 AliComplexCluster.h:79
 AliComplexCluster.h:80
 AliComplexCluster.h:81
 AliComplexCluster.h:82
 AliComplexCluster.h:83
 AliComplexCluster.h:84
 AliComplexCluster.h:85
 AliComplexCluster.h:86
 AliComplexCluster.h:87
 AliComplexCluster.h:88
 AliComplexCluster.h:89
 AliComplexCluster.h:90
 AliComplexCluster.h:91
 AliComplexCluster.h:92
 AliComplexCluster.h:93
 AliComplexCluster.h:94
 AliComplexCluster.h:95
 AliComplexCluster.h:96
 AliComplexCluster.h:97
 AliComplexCluster.h:98
 AliComplexCluster.h:99
 AliComplexCluster.h:100
 AliComplexCluster.h:101
 AliComplexCluster.h:102
 AliComplexCluster.h:103
 AliComplexCluster.h:104
 AliComplexCluster.h:105
 AliComplexCluster.h:106
 AliComplexCluster.h:107
 AliComplexCluster.h:108
 AliComplexCluster.h:109
 AliComplexCluster.h:110
 AliComplexCluster.h:111
 AliComplexCluster.h:112
 AliComplexCluster.h:113
 AliComplexCluster.h:114
 AliComplexCluster.h:115
 AliComplexCluster.h:116
 AliComplexCluster.h:117
 AliComplexCluster.h:118
 AliComplexCluster.h:119
 AliComplexCluster.h:120
 AliComplexCluster.h:121
 AliComplexCluster.h:122
 AliComplexCluster.h:123
 AliComplexCluster.h:124
 AliComplexCluster.h:125
 AliComplexCluster.h:126
 AliComplexCluster.h:127
 AliComplexCluster.h:128
 AliComplexCluster.h:129
 AliComplexCluster.h:130
 AliComplexCluster.h:131
 AliComplexCluster.h:132
 AliComplexCluster.h:133
 AliComplexCluster.h:134
 AliComplexCluster.h:135
 AliComplexCluster.h:136
 AliComplexCluster.h:137
 AliComplexCluster.h:138
 AliComplexCluster.h:139
 AliComplexCluster.h:140
 AliComplexCluster.h:141
 AliComplexCluster.h:142
 AliComplexCluster.h:143
 AliComplexCluster.h:144
 AliComplexCluster.h:145
 AliComplexCluster.h:146
 AliComplexCluster.h:147
 AliComplexCluster.h:148
 AliComplexCluster.h:149
 AliComplexCluster.h:150
 AliComplexCluster.h:151
 AliComplexCluster.h:152
 AliComplexCluster.h:153
 AliComplexCluster.h:154
 AliComplexCluster.h:155
 AliComplexCluster.h:156
 AliComplexCluster.h:157
 AliComplexCluster.h:158
 AliComplexCluster.h:159
 AliComplexCluster.h:160
 AliComplexCluster.h:161
 AliComplexCluster.h:162
 AliComplexCluster.h:163
 AliComplexCluster.h:164
 AliComplexCluster.h:165
 AliComplexCluster.h:166
 AliComplexCluster.h:167
 AliComplexCluster.h:168
 AliComplexCluster.h:169
 AliComplexCluster.h:170
 AliComplexCluster.h:171
 AliComplexCluster.h:172
 AliComplexCluster.h:173
 AliComplexCluster.h:174
 AliComplexCluster.h:175
 AliComplexCluster.h:176
 AliComplexCluster.h:177
 AliComplexCluster.h:178
 AliComplexCluster.h:179
 AliComplexCluster.h:180
 AliComplexCluster.h:181
 AliComplexCluster.h:182
 AliComplexCluster.h:183
 AliComplexCluster.h:184
 AliComplexCluster.h:185
 AliComplexCluster.h:186
 AliComplexCluster.h:187
 AliComplexCluster.h:188
 AliComplexCluster.h:189
 AliComplexCluster.h:190
 AliComplexCluster.h:191
 AliComplexCluster.h:192
 AliComplexCluster.h:193
 AliComplexCluster.h:194
 AliComplexCluster.h:195
 AliComplexCluster.h:196
 AliComplexCluster.h:197
 AliComplexCluster.h:198
 AliComplexCluster.h:199
 AliComplexCluster.h:200
 AliComplexCluster.h:201
 AliComplexCluster.h:202
 AliComplexCluster.h:203
 AliComplexCluster.h:204
 AliComplexCluster.h:205
 AliComplexCluster.h:206
 AliComplexCluster.h:207
 AliComplexCluster.h:208
 AliComplexCluster.h:209
 AliComplexCluster.h:210
 AliComplexCluster.h:211
 AliComplexCluster.h:212
 AliComplexCluster.h:213
 AliComplexCluster.h:214
 AliComplexCluster.h:215
 AliComplexCluster.h:216
 AliComplexCluster.h:217
 AliComplexCluster.h:218
 AliComplexCluster.h:219
 AliComplexCluster.h:220
 AliComplexCluster.h:221
 AliComplexCluster.h:222
 AliComplexCluster.h:223
 AliComplexCluster.h:224
 AliComplexCluster.h:225
 AliComplexCluster.h:226
 AliComplexCluster.h:227
 AliComplexCluster.h:228
 AliComplexCluster.h:229
 AliComplexCluster.h:230
 AliComplexCluster.h:231
 AliComplexCluster.h:232
 AliComplexCluster.h:233
 AliComplexCluster.h:234
 AliComplexCluster.h:235
 AliComplexCluster.h:236
 AliComplexCluster.h:237
 AliComplexCluster.h:238