ROOT logo
//
// Visualization of an EMCAL super module.
//
//  Author: Magali Estienne (magali.estienne@cern.ch)
//  June 30 2008
//

#ifndef ALIEVEEMCALSMODULE_H
#define ALIEVEEMCALSMODULE_H

#include "AliEveEMCALSModuleData.h"

class AliEveEMCALData;
class TEveQuadSet;
class TEveBoxSet;
class TEveFrameBox;
class TEvePointSet;
class TClonesArray;
class TTree;
class TGedFrame;
class TGeoNode; 
class TGeoMatrix; 
class AliRun;
class AliEMCALGeometry;
class AliESDEvent;
class AliEMCAL;

class TEveTrans;
class TStyle;
class TBuffer3DTypes;
class TBuffer3D;
class TVirtualPad;
class TVirtualViewer3D;
class AliEveEMCALData;
class AliEMCALHit;
class AliEMCALDigit;

class AliEveEMCALSModule : public TEveElement,
                           public TNamed,
                           public TAtt3D
{

 public:
  AliEveEMCALSModule(Int_t smodid, const Text_t* n, const Text_t* t);
  ~AliEveEMCALSModule();

  void DropData() const;

  virtual Bool_t CanEditMainColor() const { return kTRUE; }

  void  SetDataSource(AliEveEMCALData * const data);
  void  SetSModuleID(Int_t id);
  void  SetFrameColor(Color_t col) { fFrameColor = col; };
  const AliEveEMCALData* GetData() const { return fEMCALData; };
  AliEveEMCALSModuleData* GetSModuleData() const;
  Int_t GetID() const { return fSModuleID; };
  void  SetClusterSize(Int_t size);
  void  SetHitSize(Int_t size);

  void UpdateQuads();

 protected:
  AliEveEMCALData   *fEMCALData;        //  Data for the current event
  AliEveEMCALSModuleData  *fEMCALSModuleData; //  Data of Super Module (SM)
  Color_t                 fFrameColor;        //  Main coloring
  Int_t                   fSModuleID;         //  Id of super module, 0 to 11
  TEveQuadSet             *fQuadSet;          //  Digit container
  TEveQuadSet             *fQuadSet2;         //  Cluster container
  TEvePointSet            *fPointSet;         //  Hit container
  Int_t                   fClusterSize;       //  Cluster point size
  Int_t                   fHitSize;           //  Hit point size
  Int_t                   fDebug;             //  Debug option

  static void InitStatics(AliEveEMCALSModuleData* md);

  static   Bool_t           fgStaticInit;       // Flag for static variable initialization.
  static   Float_t          fgSMBigBBox[3];    //  Bounding Box of full SM
  static   Float_t          fgSMSmallBBox[3];  //  Bounding Box of half SM
  static   TEveFrameBox    *fgFrameBigBox;     // Frame box per full SM
  static   TEveFrameBox    *fgFrameSmallBox;   // Frame box per half SM
  static   TEveRGBAPalette *fgFrameDigPalette; // Signal to color mapping for EMCAL digits
  static   TEveRGBAPalette *fgFrameCluPalette; // Signal to color mapping for EMCAL clusters

  void SetupColor(Int_t val, UChar_t* pix) const;

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

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

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