ROOT logo
// @(#)root/eve:$Id$
// Author: Matevz Tadel 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 AliEveTrackCounter_H
#define AliEveTrackCounter_H

#include "TEveElement.h"
#include "TList.h"

class AliEveTrack;
class AliEveTracklet;
class TEveTrackList;

//______________________________________________________________________________
// Short description of AliEveTrackCounter
//

class AliEveTrackCounter :  public TEveElement, public TNamed
{
  friend class AliEveTrackCounterEditor;

public:
  enum EClickAction_e { kCA_PrintTrackInfo, kCA_ToggleTrack };

  AliEveTrackCounter(const Text_t* name="AliEveTrackCounter", const Text_t* title="");
  virtual ~AliEveTrackCounter();

  Int_t GetEventId() const { return fEventId; }
  void  SetEventId(Int_t id) { fEventId = id; }

  void Reset();

  void RegisterTracks(TEveTrackList* tlist, Bool_t goodTracks);
  void RegisterTracklets(TEveTrackList* tlist, Bool_t goodTracks);

  void DoTrackAction(AliEveTrack* track);
  void DoTrackletAction(AliEveTracklet* track);

  Int_t GetClickAction() const  { return fClickAction; }
  void  SetClickAction(Int_t a) { fClickAction = a; }

  void OutputEventTracks();
  void PrintEventTracks();

  Bool_t GetActive() const { return fActive; }
  void   SetActive(Bool_t a) { fActive = a; }

  static AliEveTrackCounter* fgInstance;

  static Bool_t IsActive();

protected:
  Int_t fBadLineStyle;  // TEveLine-style used for secondary/bad tracks.
  Int_t fClickAction;   // Action to take when a track is ctrl-clicked.

  Int_t fEventId;       // Current event-id.

  Int_t fAllTracks;     // Counter of all tracks.
  Int_t fGoodTracks;    // Counter of good tracks.
  Int_t fAllTracklets;  // Counter of all tracklets.
  Int_t fGoodTracklets; // Counter of good tracklets.

  TList fTrackLists;    // List of track-lists registered for management.
  TList fTrackletLists; // List of tracklet-lists registered for management.

  Bool_t fActive;

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

  ClassDef(AliEveTrackCounter, 0); // Class for selection of good/primary tracks with basic processing functionality.
};

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