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 AliEveTPCLoader_H
#define AliEveTPCLoader_H

#include <TEveElement.h>
#include <vector>

class AliRawReaderRoot;

class AliEveTPCData;
class AliEveTPCSector2D;
class AliEveTPCSector3D;

//------------------------------------------------------------------------------
// AliEveTPCLoader
//
// GUI front-end for loading and displaying of TPC data in a stand-alone mode.
//

class AliEveTPCLoader : public TEveElementList
{
  friend class AliEveTPCLoaderEditor;

public:
  AliEveTPCLoader(const Text_t* n="AliEveTPCLoader", const Text_t* t=0);
  virtual ~AliEveTPCLoader();

  virtual void RemoveElementLocal(TEveElement* el);
  virtual void RemoveElementsLocal();

  void SetFile(const Text_t* f) { fFile = f; }
  void SetDoubleSR(Bool_t d)    { fDoubleSR = d; }

  const Text_t* GetTPCEquipementMap() const  { return fTPCEquipementMap; }
  void SetTPCEquipementMap(const Text_t* em) { fTPCEquipementMap = em; }
  AliRawReaderRoot* GetReader()        const { return fReader; }
  void SetReader(AliRawReaderRoot* reader)   { fReader = reader; }
  AliEveTPCData* GetData() const { return fData; }
  void     SetData(AliEveTPCData* d);

  void OpenFile();
  void LoadEvent();
  void NextEvent(Bool_t rewindOnEnd=kTRUE);
  void GotoEvent(Int_t event);
  static void* LoopEvent(AliEveTPCLoader* loader);

  void UpdateSectors(Bool_t dropNonPresent=kFALSE);
  void ReloadSectors();
  void CreateSectors3D();
  void DeleteSectors3D();

  void SetInitParams(Int_t mint, Int_t maxt, Int_t thr, Int_t maxval=128);

  void SetCutOnEta(Bool_t cut) { fCutOnEta = cut; }
  void SetEtaMax(Float_t max) { fEtaMax = max; }
  void SetEtaMin(Float_t min) { fEtaMin = min; }

  Float_t GetCutOnEta() { return fCutOnEta; }
  Float_t GetEtaMax() { return fEtaMax; }
  Float_t GetEtaMin() { return fEtaMin; }

protected:
  TString           fFile;      // File holding raw-data.
  Int_t             fEvent;     // Current event.
  Bool_t            fDoubleSR;  // Set to true for double sampling-rate.

  TString           fTPCEquipementMap; // Equipement-map file-name, if set passed to raw-reader.
  AliRawReaderRoot *fReader;           // Raw-data reader.
  AliEveTPCData    *fData;             // TPC data container.

  std::vector<AliEveTPCSector2D*> fSec2Ds; // 2D sector representations.
  std::vector<AliEveTPCSector3D*> fSec3Ds; // 3D sector representations.

  Bool_t   fSetInitSectorParams; // If true, initial parameters of 2D and 3D sectors are set from values below.
  Int_t    fInitMinTime;         // Min time for display.
  Int_t    fInitMaxTime;         // Max time for display.
  Int_t    fInitThreshold;       // Threshold.
  Int_t    fInitMaxVal;          // Maximum-signal value (all signals above mapped to saturation color).

  Bool_t fCutOnEta;              // Bool for apply eta cut
  Float_t fEtaMax;               // Maximum eta value for cut
  Float_t fEtaMin;               // Minimum eta value for cut

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

  ClassDef(AliEveTPCLoader, 0); // Front-end for stand-alone inspection of TPC raw-data.
};

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