ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/
/////////////////////////////////////////////////////////////////////////
//
// - AliEVE implementation -
// Containers for visualisation of TRD data structures
//    - AliEveTRDHits - visualisation of MC Hits, Clusters (RecPoints)
//    - AliEveTRDDigits - visualisation of TRD digits
//
// by A.Bercuci (A.Bercuci@gsi.de)   Fri Oct 27 2006
///////////////////////////////////////////////////////////////////////

#ifndef AliEveTRDData_H
#define AliEveTRDData_H

#include <TEveQuadSet.h>
#include <TEveBoxSet.h>
#include <TEvePointSet.h>
#include <TEveLine.h>

#ifndef ALITRDARRAYADC_H
#include "AliTRDarrayADC.h"
#endif

class AliEveTRDChamber;
class AliEveTRDHits : public TEvePointSet
{
public:
  AliEveTRDHits();
  ~AliEveTRDHits();

  void PointSelected(Int_t n);


private:
  AliEveTRDHits(const AliEveTRDHits&);            // Not implemented
  AliEveTRDHits& operator=(const AliEveTRDHits&); // Not implemented

  ClassDef(AliEveTRDHits, 0); // Base class for TRD hits visualisation
};


class AliTRDdigitsManager;
class AliEveTRDDigits : public TEveQuadSet
{
  //friend class AliEveTRDDigitsEditor;

public:
  AliEveTRDDigits(AliEveTRDChamber *p);
  ~AliEveTRDDigits();
  void			SetData(AliTRDdigitsManager *digits);

protected:
  AliEveTRDChamber *fParent;

private:
  AliEveTRDDigits(const AliEveTRDDigits&);            // Not implemented
  AliEveTRDDigits& operator=(const AliEveTRDDigits&); // Not implemented

  ClassDef(AliEveTRDDigits, 0); // Digits visualisation for TRD
};



class AliEveTRDClusters : public AliEveTRDHits
{
public:
  AliEveTRDClusters();

  void Load(const Char_t *what="all") const; // *MENU*
  void PointSelected(Int_t n);
  void Print(Option_t *o = "") const; // *MENU*

private:
  AliEveTRDClusters(const AliEveTRDClusters&);            // Not implemented
  AliEveTRDClusters& operator=(const AliEveTRDClusters&); // Not implemented

  ClassDef(AliEveTRDClusters, 0); // Base class for TRD clusters visualisation
};



class AliTRDseedV1;
class AliEveTRDTracklet : public TEveLine
{
public:
  AliEveTRDTracklet(AliTRDseedV1 *trklt);
  ~AliEveTRDTracklet();
  AliEveTRDClusters* GetClusters() const {return fClusters;}
  inline void        Load(const Char_t *what="all") const; // *MENU*
  void               Print(Option_t *o="") const; // *MENU*

private:
  AliEveTRDClusters *fClusters;  // clusters

  AliEveTRDTracklet(const AliEveTRDTracklet&);            // Not implemented
  AliEveTRDTracklet& operator=(const AliEveTRDTracklet&); // Not implemented

  ClassDef(AliEveTRDTracklet, 0); // TRD tracklet visualisation
};
void AliEveTRDTracklet::Load(const Char_t *what) const
{
  if(fClusters) fClusters->Load(what);
}


class AliTrackPoint;
class AliTRDtrackV1;
class AliRieman;
class AliEveTRDTrack : public TEveLine
{
public:
  enum AliEveTRDTrackState{
    kSource        = 0 
    ,kPID          = 1 
    ,kTrackCosmics = 2
    ,kTrackModel   = 3
  };
  enum AliEveTRDTrackModel{
    kRieman  = 0
    ,kKalman = 1
  };


  AliEveTRDTrack(AliTRDtrackV1 *trk);
  virtual ~AliEveTRDTrack();
  //AliEveTRDTracklet*  GetTracklet(Int_t plane) const {return plane <6 && plane >= 0 ? fTracklet[plane] : NULL;}
  void    Print(Option_t *opt="a") const; // *MENU*
  void    Load(const Char_t *what="all") const; // *MENU*
  void    SetStatus(UChar_t s=0);         // *MENU*
  void    SetESDstatus(ULong_t stat) {fESDStatus = stat;} 
private:
  AliEveTRDTrack(const AliEveTRDTrack&);            // Not implemented
  AliEveTRDTrack& operator=(const AliEveTRDTrack&); // Not implemented

  UChar_t        fTrackState;   // bit map for the track drawing state
  ULong_t        fESDStatus;    // ESD status bit for this track
  Float_t        fAlpha;        // sector angle for this track  
  AliTrackPoint *fPoints;       // track crossing points
  AliRieman     *fRim;          // rieman fitter
  ClassDef(AliEveTRDTrack, 0);  // TRD track visualisation
};


#include "TEveElement.h"

class AliTRDtrackletMCM;
class AliTRDtrackletWord;
class AliEveTRDTrackletOnline : public TEveLine
{
public:
  AliEveTRDTrackletOnline(AliTRDtrackletMCM *tracklet);
  AliEveTRDTrackletOnline(AliTRDtrackletWord *tracklet);
  ~AliEveTRDTrackletOnline();

  void               ShowMCM(Option_t *opt = "RHT") const; // *MENU*
private:
  Int_t fDetector;
  Int_t fROB;
  Int_t fMCM;

  AliEveTRDTrackletOnline(const AliEveTRDTrackletOnline&);            // Not implemented
  AliEveTRDTrackletOnline& operator=(const AliEveTRDTrackletOnline&); // Not implemented

  ClassDef(AliEveTRDTrackletOnline, 0); // TRD tracklet visualisation
};


class AliTRDmcmSim;
class AliEveTRDmcm : public TEveElement, public TNamed
{
 public:
  AliEveTRDmcm();
  ~AliEveTRDmcm();

  Bool_t Init(Int_t det, Int_t rob, Int_t mcm); // *MENU*
  Bool_t LoadDigits(); // *MENU*
  Bool_t Filter(); // *MENU*
  Bool_t Tracklet(); // *MENU*
  void Draw(Option_t* option = "FHT"); // *MENU*
  Bool_t AssignPointer(const char* ptrname = "mcmtest"); // *MENU*

 protected:
  AliTRDmcmSim *fMCM;

  AliEveTRDmcm(const AliEveTRDmcm&); // not implemented
  AliEveTRDmcm& operator=(const AliEveTRDmcm&); // not implemented

  ClassDef(AliEveTRDmcm, 0);
};

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