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.                                                 *
 **************************************************************************/

#ifndef AliEveTRDModuleImp_H
#define AliEveTRDModuleImp_H

/////////////////////////////////////////////////////////////////////////
//
// Implementation of AliEveTRDModule:
//    - AliEveTRDChamber - Data holder
//    - AliEveTRDNode    - Node structure
//
// by A.Bercuci (A.Bercuci@gsi.de)   Fri Oct 27 2006
/////////////////////////////////////////////////////////////////////////

#include <vector>

#include <TEveElement.h>

#include "AliEveTRDModule.h"

class TTree;
class TObjArray;
class TClonesArray;

class TEveTrack;
class TEveGeoTopNode;

class AliTRDgeometry;
class AliTRDdataArrayI;
class AliTRDdigitsManager;

class AliEveTRDHits;
class AliEveTRDDigits;
class AliTRDtrackingChamber;
class AliEveTRDChamber : public TEveElement, public AliEveTRDModule
{
  friend class AliEveTRDDigits;

public:

  AliEveTRDChamber(Int_t det=-1);
  virtual ~AliEveTRDChamber() {}

  Int_t GetNrows()  const {return fNrows;}
  Int_t GetNcols()  const {return fNcols;}
  Int_t GetNtime() const {return fNtime;}

  void  LoadHits(TClonesArray *hits, Int_t &idx);
  void  LoadClusters(TObjArray *cs);
  void  LoadClusters(AliTRDtrackingChamber *tc);
  void  LoadDigits(AliTRDdigitsManager *digits);
  void  LoadTracklets(TTree *trklTree);

  void  SetGeometry(AliTRDgeometry *geo);
  void  SetNtime(Int_t nt) {fNtime = nt;}

protected:
  AliEveTRDDigits  *fDigits;    // digits representation
  AliEveTRDHits    *fHits;      // hits representation
  AliEveTRDHits    *fRecPoints; // cluster representation
  TClonesArray     *fTracklets; // mcm tracklets
  AliTRDgeometry   *fGeo;      // TRD geometry
  TEveGeoTopNode   *fShape;    // rendarable geometry of the chamber 
  // data representation section
  Int_t           fNrows;   // number of rows for this pad plane
  Int_t           fNcols;   // number of columns for this pad plane
  Int_t           fNtime;  // number of timebins

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

  ClassDef(AliEveTRDChamber, 0); // Holder for TRD chamber data
};


class AliEveTRDNode : public TEveElement, public AliEveTRDModule
{
public:
  AliEveTRDNode(const char *typ, Int_t det=0);

  void Paint(Option_t* option="");
  void Reset();

  void Collapse();            // *MENU*
  void Expand();              // *MENU*
  void EnableListElements(Bool_t rnr_self = kTRUE, Bool_t rnr_children = kTRUE);  // *MENU*
  void DisableListElements(Bool_t rnr_self = kTRUE, Bool_t rnr_children = kTRUE); // *MENU*
  void UpdateLeaves();
  void UpdateNode();

  List_i begin() { return fChildren.begin(); }
  List_i end()   { return fChildren.end(); }

  ClassDef(AliEveTRDNode, 0);
};

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