#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
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;}
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; }
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)
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,2) // AliITSRecPoint class
+ ClassDef(AliITSRecPoint,7) // AliITSRecPoint class
};
// Input and output function for standard C++ input/output.
ostream& operator<<(ostream &os,AliITSRecPoint &source);