fixed the tainted variables
[u/mrichter/AliRoot.git] / ITS / AliITSRecPoint.h
index 56b0260..fe534c9 100644 (file)
 #include <AliCluster.h>
 #include <Riostream.h>
 #include <AliLog.h>
-#include <AliITSgeom.h>
-
 
 class AliITSRecPoint : public AliCluster {
  public:
   AliITSRecPoint();
-  AliITSRecPoint(AliITSgeom* geom);
-  AliITSRecPoint(Int_t *lab,Float_t *hit, Int_t *info);
-  AliITSRecPoint(Int_t module,AliITSgeom* geom,Int_t *lab,
-                Float_t *hit, Int_t *info);
+  AliITSRecPoint(Int_t *lab,Float_t *hit, Int_t *info, Bool_t local = kFALSE);
   AliITSRecPoint(const AliITSRecPoint& pt);
   AliITSRecPoint& operator=(const AliITSRecPoint &source);
   
   virtual ~AliITSRecPoint() {}; // distructor
-  Bool_t IsSortable() const {return kTRUE;} // allows for sorting
-  Int_t  *GetTracks(){return fTracks;}// Returns pointer to track array
-  Int_t   GetNTracks() const {return 3;} // returns track array size
+  Bool_t  IsSortable() const {return kTRUE;} // allows for sorting
   Float_t GetDetLocalX() const {return fXloc;} // gets fX
   Float_t GetDetLocalZ() const {return fZloc;} // gets fZ
   Float_t GetdEdX() const {return fdEdX;} // gets fdEdX
-  Float_t GetSigmaDetLocX2() const {return fSigmaY2;} // gets fSigmaX2
-  void SetdEdX(Float_t dedx){fdEdX=dedx;} // sets fdEdX
-  void SetSigmaDetLocX2(Float_t sx2){fSigmaY2=sx2;} // sets fSigmaX2
+  Float_t GetSigmaDetLocX2() const {return GetSigmaY2();} // gets fSigmaX2
+  void    SetdEdX(Float_t dedx){fdEdX=dedx;} // sets fdEdX
   Int_t Compare(const TObject *) const {return 0;} //to be defined
   void Print(ostream *os); 
   // Reads in the content of this class in the format of Print
@@ -55,22 +47,6 @@ class AliITSRecPoint : public AliCluster {
   virtual void Print(Option_t *option="") const {TObject::Print(option);}
   virtual Int_t Read(const char *name) {return TObject::Read(name);}
   
-  void SetITSgeom(AliITSgeom* geom) {fGeom=geom;}
-
-  virtual void SetY(Float_t  y ){fY=y;
-    AliError("For consistency, Use method SetYZ. Data members are only partially set\n");}
-  virtual void SetZ(Float_t  z ){fZ=z;
-    AliError("For consistency, Use method SetYZ. Data members are only partially set\n");}
-  void SetYZ(Int_t module, Float_t y, Float_t z){
-    fY=y;fZ=z;
-    if(fGeom)fGeom->TrackingV2ToDetL(module,y,z,fXloc,fZloc);
-    else AliError("Geometry not set. \n");
-  }
-  void SetXZ(Int_t module, Float_t x, Float_t z){
-    fXloc=x;fZloc=z;
-    if(fGeom)fGeom->DetLToTrackingV2(module,x,z,fY,fZ);
-    else AliError("Geometry not set. Nothing done!!!!!\n");
-  }
   void Use(Int_t = 0) {fQ=-fQ;}
   void UnUse() {fQ=TMath::Abs(fQ);}
   void SetQ(Float_t q) {fQ=q;}
@@ -82,7 +58,9 @@ class AliITSRecPoint : public AliCluster {
   void SetPhiR(Float_t y) { fChargeRatio=y; }
   void SetType(Int_t type){ fType=type;}
   void SetDeltaProbability(Float_t prob){fDeltaProb = prob;}
-  
+  void SetDriftTime(Float_t tim) {fDriftTime=tim;}
+  void SetDriftSide(Int_t sid) {fDriftSide=sid;}
   Int_t IsUsed() const {return (fQ<0)?1:0;}
   Float_t GetQ() const {return TMath::Abs(fQ);}
   Int_t GetDetectorIndex() const { return 0x3FF&fIndex; }
@@ -93,16 +71,22 @@ class AliITSRecPoint : public AliCluster {
   Float_t GetPhiR() const {return fChargeRatio;}
   Int_t GetPindex() const { return 0xFFF00000&fIndex; }  //SSD clusters only
   Int_t GetNindex() const { return 0xFFC00&fIndex; }  //SSD clusters only
-  Int_t GetType() const {return fType;}  // type of the cluster
+  Int_t GetType() const {return fType;}  // type of the cluster (for SPD the number of pixels in the cluster)
   Float_t GetDeltaProbability() const{return fDeltaProb;} //probability to belong to the delta ray
-  
-  // The following two methods deal with the misaligned x position
-  // of a cluster in the tracking coordidate system 
-  virtual Float_t GetX() const {return fX;}
-  virtual void SetX(Float_t x) {fX=x;}
+  Float_t GetDriftTime() const{return  fDriftTime;}
+  Int_t GetDriftSide() const {return fDriftSide;}
+  Int_t GetNpixels() const; // for SPD returns fType, i.e. the number of pixels in the cluster (-1 for SDD and SSD)
+  Int_t GetSPDclusterType() const; // for SPD returns cluster type according to conventional numbering (-1 for SDD and SSD)
+  Int_t GetSDDclusterType() const; 
+  Int_t GetSSDclusterType() const; 
+  static void DecodeSDDclusterType(Int_t cluType, Int_t &cluSizAn, Int_t& cluSizTb, Int_t &drSide);
 
+  Int_t GetClusterType() const {
+    if(fLayer<=1) return GetSPDclusterType();
+    if(fLayer==2 || fLayer==3) return GetSDDclusterType();
+    return GetSSDclusterType();
+  }
  protected:
-  Float_t   fX;        // X coordinate in the misaligned tracking system 
 
   Float_t   fXloc ;        //X of cluster (local coordinates)
   Float_t   fZloc ;        //Z of cluster (local coordinates)
@@ -115,11 +99,11 @@ class AliITSRecPoint : public AliCluster {
   Short_t  fNy;       //number of digits in y direction 
   Float_t  fChargeRatio; //charge ratio
   Int_t    fType;         //quality factor of the cluster
-  Float_t  fDeltaProb;    // probability to be deleta electron
+  Float_t  fDeltaProb;    // probability to be delta electron
+  Float_t  fDriftTime;    // drift time in SDD
+  Char_t   fDriftSide;    // drift region in SDD (0=left=positive xlocal, 1=right)
     
-  AliITSgeom* fGeom;     //!pointer to ITS geometry
-
-  ClassDef(AliITSRecPoint,3)  // AliITSRecPoint class
+  ClassDef(AliITSRecPoint,7)  // AliITSRecPoint class
 };
 // Input and output function for standard C++ input/output.
 ostream& operator<<(ostream &os,AliITSRecPoint &source);