ROOT logo
#ifndef ALITRDCLUSTERINFO_H
#define ALITRDCLUSTERINFO_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  TRD cluster summary info for performance                              //
//                                                                        //
//  Authors:                                                              //
//    Alexandru Bercuci <A.Bercuci@gsi.de>                                //
//                                                                        //
////////////////////////////////////////////////////////////////////////////


#ifndef Root_TObject
#include "TObject.h"
#endif

class AliTRDcluster;
class AliTRDclusterInfo : public TObject
{
public:
  AliTRDclusterInfo();

  Float_t   GetAnisochronity() const {return fD;}
  inline void GetCluster(Int_t &det, Float_t &x, Float_t &y, Float_t &z, Float_t &q, Int_t &t, Float_t *cov=0x0) const;
  void      GetMC(Int_t &pdg, Int_t &label) const {pdg  = fPdg; label= fLbl; }
  void      GetGlobalPosition(Float_t &yt, Float_t &zt, Float_t &dydx, Float_t &dzdx, Float_t *cov=0x0) const {
      dydx = fdydx; dzdx = fdzdx; yt   = fYt; zt   = fZt;
      if(cov) memcpy(cov, fCov, 3*sizeof(Float_t));}
  Int_t     GetNpads() const {return fNpad;}
  void      GetCenterPad(Int_t &c, Int_t &r) const {c=fCol; r=fRow;}
  Float_t   GetResolution() const {return fdy;}
  Float_t   GetDriftLength() const {return fXd;}
  Short_t*  GetSignals() {return fSignal;}
  Float_t   GetYDisplacement() const {return fYd;}
  Float_t   GetTilt() const { return fTilt;}

  void      Print(Option_t *opt="") const;

  void      SetAnisochronity(Float_t d) {fD = d;}
  void      SetCluster(AliTRDcluster *c);
  void      SetMC(Int_t pdg, Int_t label){
      fPdg  = pdg;
      fLbl  = label;}
  void      SetGlobalPosition(Float_t yt, Float_t zt, Float_t dydx, Float_t dzdx, Float_t *cov=0x0) {
      fdydx = dydx; fdzdx = dzdx; fYt   = yt; fZt   = zt;
      if(cov) memcpy(fCov, cov, 3*sizeof(Float_t));}
  void      SetResolution(Float_t dy) {fdy = dy;}
  void      SetDriftLength(Float_t d) {fXd = d;}
  void      SetTilt(Float_t t) {fTilt = t;}

private:
  UShort_t fDet;   // detector
  UChar_t  fCol;   // central pad column
  UChar_t  fRow;   // pad row
  UChar_t  fNpad;  // no. of pads in the cluster
  Short_t  fPdg;   // particle code
  Short_t  fLbl;   // track label (MC)
  Short_t  fLocalTime; // calibrate drift time
  Float_t  fQ;     // cluster charge (REC)
  Float_t  fX;     // x coordinate (REC)
  Float_t  fY;     // y coordinate (REC)
  Float_t  fYd;    // displacement from pad center y coordinate
  Float_t  fZ;     // z coordinate (REC)
  Float_t  fdydx;  // slope in phi (MC)
  Float_t  fdzdx;  // slope in theta (MC)
  Float_t  fXd;    // drift length
  Float_t  fYt;    // y coordinate (MC)
  Float_t  fZt;    // z coordinate (MC)
  Float_t  fCov[3];// covariance matrix in the yz plane (track)
  Float_t  fCovCl[3];// covariance matrix in the yz plane (cluster)
  Float_t  fdy;    // difference in y after tilt correction
  Float_t  fD;     // distance to the anode wire
  Float_t  fTilt;  // pad tilt;
  Short_t  fSignal[7]; //cluster signals

  ClassDef(AliTRDclusterInfo, 3) // extracted cluster2MC information
};


//_________________________________________________
inline void AliTRDclusterInfo::GetCluster(Int_t &det, Float_t &x, Float_t &y, Float_t &z, Float_t &q, Int_t &t, Float_t *cov) const
{
  det = fDet;
  x   = fX;
  y   = fY;
  z   = fZ;
  q   = fQ;
  t   = fLocalTime;
  if(cov) memcpy(cov, fCovCl, 3*sizeof(Float_t));
}

#endif

 AliTRDclusterInfo.h:1
 AliTRDclusterInfo.h:2
 AliTRDclusterInfo.h:3
 AliTRDclusterInfo.h:4
 AliTRDclusterInfo.h:5
 AliTRDclusterInfo.h:6
 AliTRDclusterInfo.h:7
 AliTRDclusterInfo.h:8
 AliTRDclusterInfo.h:9
 AliTRDclusterInfo.h:10
 AliTRDclusterInfo.h:11
 AliTRDclusterInfo.h:12
 AliTRDclusterInfo.h:13
 AliTRDclusterInfo.h:14
 AliTRDclusterInfo.h:15
 AliTRDclusterInfo.h:16
 AliTRDclusterInfo.h:17
 AliTRDclusterInfo.h:18
 AliTRDclusterInfo.h:19
 AliTRDclusterInfo.h:20
 AliTRDclusterInfo.h:21
 AliTRDclusterInfo.h:22
 AliTRDclusterInfo.h:23
 AliTRDclusterInfo.h:24
 AliTRDclusterInfo.h:25
 AliTRDclusterInfo.h:26
 AliTRDclusterInfo.h:27
 AliTRDclusterInfo.h:28
 AliTRDclusterInfo.h:29
 AliTRDclusterInfo.h:30
 AliTRDclusterInfo.h:31
 AliTRDclusterInfo.h:32
 AliTRDclusterInfo.h:33
 AliTRDclusterInfo.h:34
 AliTRDclusterInfo.h:35
 AliTRDclusterInfo.h:36
 AliTRDclusterInfo.h:37
 AliTRDclusterInfo.h:38
 AliTRDclusterInfo.h:39
 AliTRDclusterInfo.h:40
 AliTRDclusterInfo.h:41
 AliTRDclusterInfo.h:42
 AliTRDclusterInfo.h:43
 AliTRDclusterInfo.h:44
 AliTRDclusterInfo.h:45
 AliTRDclusterInfo.h:46
 AliTRDclusterInfo.h:47
 AliTRDclusterInfo.h:48
 AliTRDclusterInfo.h:49
 AliTRDclusterInfo.h:50
 AliTRDclusterInfo.h:51
 AliTRDclusterInfo.h:52
 AliTRDclusterInfo.h:53
 AliTRDclusterInfo.h:54
 AliTRDclusterInfo.h:55
 AliTRDclusterInfo.h:56
 AliTRDclusterInfo.h:57
 AliTRDclusterInfo.h:58
 AliTRDclusterInfo.h:59
 AliTRDclusterInfo.h:60
 AliTRDclusterInfo.h:61
 AliTRDclusterInfo.h:62
 AliTRDclusterInfo.h:63
 AliTRDclusterInfo.h:64
 AliTRDclusterInfo.h:65
 AliTRDclusterInfo.h:66
 AliTRDclusterInfo.h:67
 AliTRDclusterInfo.h:68
 AliTRDclusterInfo.h:69
 AliTRDclusterInfo.h:70
 AliTRDclusterInfo.h:71
 AliTRDclusterInfo.h:72
 AliTRDclusterInfo.h:73
 AliTRDclusterInfo.h:74
 AliTRDclusterInfo.h:75
 AliTRDclusterInfo.h:76
 AliTRDclusterInfo.h:77
 AliTRDclusterInfo.h:78
 AliTRDclusterInfo.h:79
 AliTRDclusterInfo.h:80
 AliTRDclusterInfo.h:81
 AliTRDclusterInfo.h:82
 AliTRDclusterInfo.h:83
 AliTRDclusterInfo.h:84
 AliTRDclusterInfo.h:85
 AliTRDclusterInfo.h:86
 AliTRDclusterInfo.h:87
 AliTRDclusterInfo.h:88
 AliTRDclusterInfo.h:89
 AliTRDclusterInfo.h:90
 AliTRDclusterInfo.h:91
 AliTRDclusterInfo.h:92
 AliTRDclusterInfo.h:93
 AliTRDclusterInfo.h:94
 AliTRDclusterInfo.h:95
 AliTRDclusterInfo.h:96