ROOT logo
#ifndef ALIITSSUMTP_H
#define ALIITSSUMTP_H

///////////////////////////////////////////////////////////////////
//                                                               //
// Class for ITS trackpoints summary + some aux. info  )         //
// Author: Ruben Shahoian                                        //
//                                                               //
///////////////////////////////////////////////////////////////////

/* $Id$ */

class AliTrackPointArray;
#include <TObjArray.h>
#include "AliESDVertex.h"

class AliITSSumTP : public TObject
{
 public:
  enum {kCrvTPC,kCrvTPCErr,kCrvGlo,kCrvGloErr,kNVarPerTrack};
  enum {kTPCInX,kTPCInY,kTPCInZ,kTPCSpare};
  //
  AliITSSumTP() : fTracks(0),fVertex(),fNVars(0),fCrvVars(0),fTPCVars(0) {fTracks.SetOwner(kTRUE);}
  AliITSSumTP(const AliITSSumTP& src);
  virtual ~AliITSSumTP() {Reset();}
  AliITSSumTP &operator=(const  AliITSSumTP& src);
  virtual void Print(Option_t* opt="") const;
  //
  AliESDVertex& GetVertex()             const {return (AliESDVertex&)fVertex;}
  AliTrackPointArray* GetTrack(Int_t i) const {return (AliTrackPointArray*)fTracks[i];}
  TObjArray&   GetTracks()              const {return (TObjArray&) fTracks;}
  Int_t        GetNTracks()             const {return fNVars/kNVarPerTrack;}
  Double_t     GetCrvTPC(Int_t i)       const {return fCrvVars[i*kNVarPerTrack+kCrvTPC];}
  Double_t     GetCrvTPCErr(Int_t i)    const {return fCrvVars[i*kNVarPerTrack+kCrvTPCErr];}
  Double_t     GetCrvGlo(Int_t i)       const {return fCrvVars[i*kNVarPerTrack+kCrvGlo];}
  Double_t     GetCrvGloErr(Int_t i)    const {return fCrvVars[i*kNVarPerTrack+kCrvGloErr];}
  void         GetTPCInnerXYZ(int i, double* xyz) const;
  void         SetTPCInnerXYZ(int i, const double* xyz);
  //
  void         Reset();
  void         BookNTracks(Int_t n);
  void         SetCrvTPC(Int_t i, Double_t v)       {fCrvVars[i*kNVarPerTrack+kCrvTPC] = v;}
  void         SetCrvTPCErr(Int_t i, Double_t v)    {fCrvVars[i*kNVarPerTrack+kCrvTPCErr] = v;}
  void         SetCrvGlo(Int_t i, Double_t v)       {fCrvVars[i*kNVarPerTrack+kCrvGlo] = v;}
  void         SetCrvGloErr(Int_t i, Double_t v)    {fCrvVars[i*kNVarPerTrack+kCrvGloErr] = v;}
  void         AddTrack(AliTrackPointArray* trc)    {fTracks.AddLast((TObject*)trc);}
  void         SetVertex(const AliESDVertex* vtx)   {fVertex = *vtx;}
  //
 protected:
  //
  TObjArray    fTracks;               // TrackPoints
  AliESDVertex fVertex;               // ESD Vertex
  Int_t        fNVars;                // Ntracks*kNVarPerTrack
  Double32_t*  fCrvVars;               //[fNVars];
  Double32_t*  fTPCVars;               //[fNVars];


  ClassDef(AliITSSumTP,2)
};


//---------------------------------------------------------------
inline void AliITSSumTP::GetTPCInnerXYZ(int i, double* xyz) const
{
  // get tpc inner coordinates
  if (!fTPCVars) {xyz[0]=xyz[1]=xyz[2]=0; return;}  // for BWD compatibility
  xyz[0] = fTPCVars[i*kNVarPerTrack+kTPCInX];
  xyz[1] = fTPCVars[i*kNVarPerTrack+kTPCInY];
  xyz[2] = fTPCVars[i*kNVarPerTrack+kTPCInZ];
}

//---------------------------------------------------------------
inline void AliITSSumTP::SetTPCInnerXYZ(int i, const double* xyz)
{
  // Set tpc inner coordinates
  if (!fTPCVars) return; // for BWD compatibility
  fTPCVars[i*kNVarPerTrack+kTPCInX] = xyz[0];
  fTPCVars[i*kNVarPerTrack+kTPCInY] = xyz[1];
  fTPCVars[i*kNVarPerTrack+kTPCInZ] = xyz[2];
}


#endif

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