ROOT logo
//
// Fill containers for visualisation of EMCAL data structures
//
// Author: Magali Estienne (magali.estienne@cern.ch)
// June 30 2008
//

#ifndef ALIEVEEMCALDATA_H
#define ALIEVEEMCALDATA_H

#include <TGeoNode.h> 
#include <TGeoMatrix.h>
#include <TEveRGBAPalette.h>
#include <TEveTrans.h>
#include <TEveQuadSet.h> 
#include <TEvePointSet.h>

#include "AliESDEvent.h"
#include "AliRun.h"

class Riostream;
class map;
class TTree;
class AliRun;
class AliRunLoader;
class AliEMCAL;
class AliEMCALLoader;
class AliEMCALGeometry;
class AliEveEMCALSModuleData;
class TClonesArray; 
class TGedFrame; 
class TEveBoxSet; 
class TEveUtil; 

class AliEveEMCALData : public TObject, public TEveRefCnt
{
 public:
  AliEveEMCALData();
  AliEveEMCALData(AliRunLoader* rl, TGeoNode* node, TGeoHMatrix* m);
  ~AliEveEMCALData();

  void SetTree(TTree* const tree);
  void SetESD(AliESDEvent* const esd);
  void SetNode(TGeoNode* const node);
  void InitEMCALGeom(AliRunLoader* const rl);
  void GetGeomInfo(Int_t id, Int_t &iSupMod, Double_t& x, Double_t& y, Double_t& z);

  void CreateAllSModules();
  void CreateSModule(Int_t sm);
  void DropAllSModules();
  void DeleteSuperModules();

  void LoadHits(TTree* const t);
  void LoadDigits(TTree* t);
  void LoadRecPoints(TTree* const t);
  void LoadHitsFromEMCALLoader(AliEMCALLoader* const emcl);
  void LoadDigitsFromEMCALLoader(AliEMCALLoader* const emcl);
  void LoadRecPointsFromEMCALLoader(AliEMCALLoader* const emcl);
  void LoadDigitsFromESD();
  void LoadRecPointsFromESD();
  void LoadRaw() const;

  AliEveEMCALSModuleData* GetSModuleData(Int_t sm);
  TEvePointSet*           GetPointSetData() const {return fPoint;};

 protected:
  AliEMCAL*         fEmcal;     // EMCal data member
  AliEMCALGeometry* fGeom;      // Data member to set/call EMCAL geometry
  TGeoNode*         fNode;      // Node for bbox definition
  TGeoHMatrix*      fHMatrix;   // matrix for local to global transformation
  TTree*            fTree;      // Tree
  AliESDEvent*      fESD;       // Esd
  Int_t             fNsm;       // Total number of Super Modules
  Int_t             fNsmfull;   // Number of full size Super Modules
  Int_t             fNsmhalf;   // Number of half size Super Modules
  std::vector<AliEveEMCALSModuleData*>   fSM;       // vector of fNsm SModules
  std::vector<AliEveEMCALSModuleData*>   fSMfull;   // vector of fNsmfull SModules
  std::vector<AliEveEMCALSModuleData*>   fSMhalf;   // vector of fNhalf SModules
  AliRunLoader*     fRunLoader; // Run Loader
  Int_t             fDebug;     // Debug option
  TEvePointSet*     fPoint;     // TEvePointSet for hits 

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

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

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