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

#include "AliEveTrackCounterEditor.h"
#include "AliEveTrackCounter.h"
#include "AliEveEventManager.h"
#include "AliESDEvent.h"

#include "TGedEditor.h"
#include "TVirtualPad.h"
#include "TColor.h"

// Cleanup these includes:
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TGComboBox.h"
#include "TGMsgBox.h"

#include "TGButtonGroup.h"

#include "TTree.h"
#include "TH1F.h"

#include "TCanvas.h"
#include "TLatex.h"
#include "TEveManager.h"

#include "TROOT.h"
#include "TSystem.h" // File input/output for track-count status.
#include "TDatime.h"

//______________________________________________________________________________
// GUI editor for AliEveTrackCounter.
//

ClassImp(AliEveTrackCounterEditor)

//______________________________________________________________________________
AliEveTrackCounterEditor::AliEveTrackCounterEditor(const TGWindow *p, Int_t width, Int_t height,
                                               UInt_t options, Pixel_t back) :
   TGedFrame(p, width, height, options | kVerticalFrame, back),
   fM(0), fAF(0), fDF(0),
   fClickAction(0),
   fInfoLabelTracks   (0),
   fInfoLabelTracklets(0),
   fEventId(0),
   fEventCat(0),
   fScanSummaryFile(0)
{
   // Constructor.

   MakeTitle("AliEveTrackCounter");

   Int_t labelW = 42;


   // Active frame

   fAF = new TGVerticalFrame(this);

   { // Deactivate button
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF, 210, 20, kFixedWidth);

      TGTextButton* b = new TGTextButton(f, "Deactivate");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 4));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoDeactivate()");

      fAF->AddFrame(f, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   }
   { // ClickAction
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF);
      TGLabel* lab = new TGLabel(f, "Click:");
      f->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 10, 1, 2));
      fClickAction = new TGComboBox(f);
      fClickAction->AddEntry("Print", 0);
      fClickAction->AddEntry("Toggle", 1);
      TGListBox* lb = fClickAction->GetListBox();
      lb->Resize(lb->GetWidth(), 2*16);
      fClickAction->Resize(70, 20);
      fClickAction->Connect("Selected(Int_t)", "AliEveTrackCounterEditor", this,
                            "DoClickAction(Int_t)");
      f->AddFrame(fClickAction, new TGLayoutHints(kLHintsLeft, 1, 2, 1, 1));

      fAF->AddFrame(f);
   }
   { // fInfoLabelTracks
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF);
      TGLabel* lab = new TGLabel(f, "Tracks:");
      f->AddFrame(lab, new TGLayoutHints(kLHintsLeft, 1, 5, 1, 2));

      fInfoLabelTracks = new TGLabel(f);
      f->AddFrame(fInfoLabelTracks, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 9, 1, 2));

      fAF->AddFrame(f);
   }
   { // fInfoLabelTracklets
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF);
      TGLabel* lab = new TGLabel(f, "Tracklets:");
      f->AddFrame(lab, new TGLayoutHints(kLHintsLeft, 1, 5, 1, 2));

      fInfoLabelTracklets = new TGLabel(f);
      f->AddFrame(fInfoLabelTracklets, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 9, 1, 2));

      fAF->AddFrame(f);
   }
   {
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF, 210, 20, kFixedWidth);

      TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth);
      TGLabel* l = new TGLabel(g, "Event:");
      g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0));
      f->AddFrame(g);

      TGTextButton* b;

      b = new TGTextButton(f, "Prev");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoPrev()");

      fEventId = new TGNumberEntry(f, 0, 3, -1,TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
                                   TGNumberFormat::kNELLimitMinMax, 0, 10000);
      f->AddFrame(fEventId, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      fEventId->Connect("ValueSet(Long_t)", "AliEveTrackCounterEditor", this, "DoSetEvent()");

      b = new TGTextButton(f, "Next");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoNext()");

      fAF->AddFrame(f);
   }
   {
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF, 210, 20, kFixedWidth);

      TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth);
      TGLabel* l = new TGLabel(g, "Report:");
      g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0));
      f->AddFrame(g);

      TGTextButton* b;

      b = new TGTextButton(f, "Print");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoPrintReport()");

      b = new TGTextButton(f, "File");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoFileReport()");

      fAF->AddFrame(f, new TGLayoutHints(kLHintsLeft, 0, 0, 4, 0));
   }
   {
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF, 210, 20, kFixedWidth);

      TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth);
      TGLabel* l = new TGLabel(g, "Histos:");
      g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0));
      f->AddFrame(g);

      TGTextButton* b;

      b = new TGTextButton(f, "Show");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoShowHistos()");

      fAF->AddFrame(f, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   }
   {
      TGHorizontalFrame* f = new TGHorizontalFrame(fAF, 210, 20, kFixedWidth);

      TGButtonGroup *fTypeSelector = new TGButtonGroup(f, "Event Categorization");
      new TGRadioButton(fTypeSelector, "Good");
      new TGRadioButton(fTypeSelector, "Splash");
      new TGRadioButton(fTypeSelector, "Empty");
      new TGRadioButton(fTypeSelector, "Background");
      new TGRadioButton(fTypeSelector, "Unclear/Other");
      fTypeSelector->Connect("Clicked(Int_t)", "AliEveTrackCounterEditor", this, "DoEventCategorization(Int_t)");

      f->AddFrame(fTypeSelector, new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 2, 3, 2, 2));
   
      fAF->AddFrame(f, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   }

   AddFrame(fAF, new TGLayoutHints(kLHintsNormal|kLHintsExpandX|kLHintsExpandY));


   // Disabled frame

   fDF = new TGVerticalFrame(this);

   { // Activate button
      TGHorizontalFrame* f = new TGHorizontalFrame(fDF, 210, 20, kFixedWidth);

      TGTextButton* b = new TGTextButton(f, "Activate");
      f->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
      b->Connect("Clicked()", "AliEveTrackCounterEditor", this, "DoActivate()");

      fDF->AddFrame(f, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   }

   AddFrame(fDF, new TGLayoutHints(kLHintsNormal|kLHintsExpandX|kLHintsExpandY));

   AliEveEventManager::GetMaster()->Connect("NewEventLoaded()", "AliEveTrackCounterEditor", this, "UpdateModel()");
}

AliEveTrackCounterEditor::~AliEveTrackCounterEditor()
{
  // Destructor.

  AliEveEventManager::GetMaster()->Disconnect("NewEventLoaded()", this);

  if (fScanSummaryFile) {
    fScanSummaryFile->close();
    delete fScanSummaryFile;
    fScanSummaryFile = 0;
  }
}

/******************************************************************************/

void AliEveTrackCounterEditor::UpdateModel()
{
  TEveException e;
  if (fGedEditor && fM && fGedEditor->GetModel() == fM->GetEditorObject(e))
  {
    SetModel(fM->GetEditorObject(e));
  }
}

//______________________________________________________________________________
void AliEveTrackCounterEditor::SetModel(TObject* obj)
{
   // Set model object.

   fM = static_cast<AliEveTrackCounter*>(obj);

   if (fM->GetActive())
   {
      ShowFrame(fAF); HideFrame(fDF);
 
      fClickAction->Select(fM->fClickAction, kFALSE);
      fInfoLabelTracks   ->SetText(Form("All: %3d; Primaries: %3d", fM->fAllTracks,    fM->fGoodTracks));
      fInfoLabelTracklets->SetText(Form("All: %3d; Primaries: %3d", fM->fAllTracklets, fM->fGoodTracklets));
      fEventId->SetNumber(fM->GetEventId());
   }
   else
   {
     ShowFrame(fDF); HideFrame(fAF);
   }

   Layout();
}

/******************************************************************************/

void AliEveTrackCounterEditor::DoActivate()
{
   // Activate track-counter

   fM->SetActive(kTRUE);
   AliEveEventManager::GetMaster()->GotoEvent(AliEveEventManager::GetMaster()->GetEventId());
   fGedEditor->Layout();

   if (fScanSummaryFile) {
     fScanSummaryFile->close();
     delete fScanSummaryFile;
   }

   char fname[200];
   TDatime dat;
   snprintf(fname, 200,"ScanSummary.%i.%i.txt", dat.GetDate(), dat.GetTime());
   fScanSummaryFile = new ofstream(fname);
   (*fScanSummaryFile) << "Scan summary" << std::endl;
   (*fScanSummaryFile) << "Scan started at " << dat.GetDate() << " " << dat.GetTime() << std::endl;
   AliESDEvent *esd = AliEveEventManager::AssertESD();
   (*fScanSummaryFile) << "Run number " << esd->GetRunNumber() << std::endl;
}

void AliEveTrackCounterEditor::DoDeactivate()
{
   // Deactivate track-counter.

   fM->SetActive(kFALSE);
   AliEveEventManager::GetMaster()->GotoEvent(AliEveEventManager::GetMaster()->GetEventId());

   if (fScanSummaryFile) {
     fScanSummaryFile->close();
     delete fScanSummaryFile;
     fScanSummaryFile = 0;
   }
}

/******************************************************************************/

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoPrev()
{
   // Slot for Prev.

   AliEveEventManager::GetMaster()->PrevEvent();
}

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoNext()
{
   // Slot for Next.

   if (fScanSummaryFile) {
     AliESDEvent *esd = AliEveEventManager::AssertESD();
     (*fScanSummaryFile) << std::hex << std::right ;
     fScanSummaryFile->width(5); (*fScanSummaryFile) << esd->GetPeriodNumber() << "   " ;
     fScanSummaryFile->width(6); (*fScanSummaryFile) << esd->GetOrbitNumber() << "   ";
     fScanSummaryFile->width(4); (*fScanSummaryFile) << esd->GetBunchCrossNumber() << "   ";
     switch (fEventCat) {
     case 1: (*fScanSummaryFile) << "GOOD        "; break;
     case 2: (*fScanSummaryFile) << "SPLASH      "; break;
     case 3: (*fScanSummaryFile) << "EMPTY       "; break;
     case 4: (*fScanSummaryFile) << "BACKGROUND  "; break;
     case 5: (*fScanSummaryFile) << "OTHER       "; break;
     default: break;
     }
     if (fM->GetActive())
       {
	 (*fScanSummaryFile) << std::dec;
	 fScanSummaryFile->width(5); (*fScanSummaryFile) << fM->fAllTracks << "  ";
	 fScanSummaryFile->width(5); (*fScanSummaryFile) << fM->fGoodTracks << "     ";
	 fScanSummaryFile->width(5); (*fScanSummaryFile) << fM->fAllTracklets << "  ";
	 fScanSummaryFile->width(5); (*fScanSummaryFile) << fM->fGoodTracklets << "   ";
       }
     if ((esd->GetPrimaryVertex()) && (esd->GetPrimaryVertex()->GetStatus()))
       { fScanSummaryFile->width(9); (*fScanSummaryFile) << esd->GetPrimaryVertex()->GetZ(); }
     else { (*fScanSummaryFile) << "NOVTX    "; }

     (*fScanSummaryFile) << std::endl;
   }

   AliEveEventManager::GetMaster()->NextEvent();
}

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoSetEvent()
{
   // Slot for SetEvent.

   AliEveEventManager::GetMaster()->GotoEvent((Int_t) fEventId->GetNumber());
}

/******************************************************************************/

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoPrintReport()
{
   // Slot for PrintReport.

   fM->PrintEventTracks();
}

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoFileReport()
{
   // Slot for FileReport.

   fM->OutputEventTracks();
}

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoShowHistos()
{
  // Slot for ShowHistos.

  TEveUtil::Macro("make_scan_results.C");
  TEveUtil::Macro("show_scan_results.C");
}

/******************************************************************************/

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoClickAction(Int_t mode)
{
   // Slot for ClickAction.

   fM->SetClickAction(mode);
}

//______________________________________________________________________________
void AliEveTrackCounterEditor::DoEventCategorization(Int_t mode)
{
   // Slot for ClickAction.

  printf("Mode is %i\n", mode);
  fEventCat = mode;
}
 AliEveTrackCounterEditor.cxx:1
 AliEveTrackCounterEditor.cxx:2
 AliEveTrackCounterEditor.cxx:3
 AliEveTrackCounterEditor.cxx:4
 AliEveTrackCounterEditor.cxx:5
 AliEveTrackCounterEditor.cxx:6
 AliEveTrackCounterEditor.cxx:7
 AliEveTrackCounterEditor.cxx:8
 AliEveTrackCounterEditor.cxx:9
 AliEveTrackCounterEditor.cxx:10
 AliEveTrackCounterEditor.cxx:11
 AliEveTrackCounterEditor.cxx:12
 AliEveTrackCounterEditor.cxx:13
 AliEveTrackCounterEditor.cxx:14
 AliEveTrackCounterEditor.cxx:15
 AliEveTrackCounterEditor.cxx:16
 AliEveTrackCounterEditor.cxx:17
 AliEveTrackCounterEditor.cxx:18
 AliEveTrackCounterEditor.cxx:19
 AliEveTrackCounterEditor.cxx:20
 AliEveTrackCounterEditor.cxx:21
 AliEveTrackCounterEditor.cxx:22
 AliEveTrackCounterEditor.cxx:23
 AliEveTrackCounterEditor.cxx:24
 AliEveTrackCounterEditor.cxx:25
 AliEveTrackCounterEditor.cxx:26
 AliEveTrackCounterEditor.cxx:27
 AliEveTrackCounterEditor.cxx:28
 AliEveTrackCounterEditor.cxx:29
 AliEveTrackCounterEditor.cxx:30
 AliEveTrackCounterEditor.cxx:31
 AliEveTrackCounterEditor.cxx:32
 AliEveTrackCounterEditor.cxx:33
 AliEveTrackCounterEditor.cxx:34
 AliEveTrackCounterEditor.cxx:35
 AliEveTrackCounterEditor.cxx:36
 AliEveTrackCounterEditor.cxx:37
 AliEveTrackCounterEditor.cxx:38
 AliEveTrackCounterEditor.cxx:39
 AliEveTrackCounterEditor.cxx:40
 AliEveTrackCounterEditor.cxx:41
 AliEveTrackCounterEditor.cxx:42
 AliEveTrackCounterEditor.cxx:43
 AliEveTrackCounterEditor.cxx:44
 AliEveTrackCounterEditor.cxx:45
 AliEveTrackCounterEditor.cxx:46
 AliEveTrackCounterEditor.cxx:47
 AliEveTrackCounterEditor.cxx:48
 AliEveTrackCounterEditor.cxx:49
 AliEveTrackCounterEditor.cxx:50
 AliEveTrackCounterEditor.cxx:51
 AliEveTrackCounterEditor.cxx:52
 AliEveTrackCounterEditor.cxx:53
 AliEveTrackCounterEditor.cxx:54
 AliEveTrackCounterEditor.cxx:55
 AliEveTrackCounterEditor.cxx:56
 AliEveTrackCounterEditor.cxx:57
 AliEveTrackCounterEditor.cxx:58
 AliEveTrackCounterEditor.cxx:59
 AliEveTrackCounterEditor.cxx:60
 AliEveTrackCounterEditor.cxx:61
 AliEveTrackCounterEditor.cxx:62
 AliEveTrackCounterEditor.cxx:63
 AliEveTrackCounterEditor.cxx:64
 AliEveTrackCounterEditor.cxx:65
 AliEveTrackCounterEditor.cxx:66
 AliEveTrackCounterEditor.cxx:67
 AliEveTrackCounterEditor.cxx:68
 AliEveTrackCounterEditor.cxx:69
 AliEveTrackCounterEditor.cxx:70
 AliEveTrackCounterEditor.cxx:71
 AliEveTrackCounterEditor.cxx:72
 AliEveTrackCounterEditor.cxx:73
 AliEveTrackCounterEditor.cxx:74
 AliEveTrackCounterEditor.cxx:75
 AliEveTrackCounterEditor.cxx:76
 AliEveTrackCounterEditor.cxx:77
 AliEveTrackCounterEditor.cxx:78
 AliEveTrackCounterEditor.cxx:79
 AliEveTrackCounterEditor.cxx:80
 AliEveTrackCounterEditor.cxx:81
 AliEveTrackCounterEditor.cxx:82
 AliEveTrackCounterEditor.cxx:83
 AliEveTrackCounterEditor.cxx:84
 AliEveTrackCounterEditor.cxx:85
 AliEveTrackCounterEditor.cxx:86
 AliEveTrackCounterEditor.cxx:87
 AliEveTrackCounterEditor.cxx:88
 AliEveTrackCounterEditor.cxx:89
 AliEveTrackCounterEditor.cxx:90
 AliEveTrackCounterEditor.cxx:91
 AliEveTrackCounterEditor.cxx:92
 AliEveTrackCounterEditor.cxx:93
 AliEveTrackCounterEditor.cxx:94
 AliEveTrackCounterEditor.cxx:95
 AliEveTrackCounterEditor.cxx:96
 AliEveTrackCounterEditor.cxx:97
 AliEveTrackCounterEditor.cxx:98
 AliEveTrackCounterEditor.cxx:99
 AliEveTrackCounterEditor.cxx:100
 AliEveTrackCounterEditor.cxx:101
 AliEveTrackCounterEditor.cxx:102
 AliEveTrackCounterEditor.cxx:103
 AliEveTrackCounterEditor.cxx:104
 AliEveTrackCounterEditor.cxx:105
 AliEveTrackCounterEditor.cxx:106
 AliEveTrackCounterEditor.cxx:107
 AliEveTrackCounterEditor.cxx:108
 AliEveTrackCounterEditor.cxx:109
 AliEveTrackCounterEditor.cxx:110
 AliEveTrackCounterEditor.cxx:111
 AliEveTrackCounterEditor.cxx:112
 AliEveTrackCounterEditor.cxx:113
 AliEveTrackCounterEditor.cxx:114
 AliEveTrackCounterEditor.cxx:115
 AliEveTrackCounterEditor.cxx:116
 AliEveTrackCounterEditor.cxx:117
 AliEveTrackCounterEditor.cxx:118
 AliEveTrackCounterEditor.cxx:119
 AliEveTrackCounterEditor.cxx:120
 AliEveTrackCounterEditor.cxx:121
 AliEveTrackCounterEditor.cxx:122
 AliEveTrackCounterEditor.cxx:123
 AliEveTrackCounterEditor.cxx:124
 AliEveTrackCounterEditor.cxx:125
 AliEveTrackCounterEditor.cxx:126
 AliEveTrackCounterEditor.cxx:127
 AliEveTrackCounterEditor.cxx:128
 AliEveTrackCounterEditor.cxx:129
 AliEveTrackCounterEditor.cxx:130
 AliEveTrackCounterEditor.cxx:131
 AliEveTrackCounterEditor.cxx:132
 AliEveTrackCounterEditor.cxx:133
 AliEveTrackCounterEditor.cxx:134
 AliEveTrackCounterEditor.cxx:135
 AliEveTrackCounterEditor.cxx:136
 AliEveTrackCounterEditor.cxx:137
 AliEveTrackCounterEditor.cxx:138
 AliEveTrackCounterEditor.cxx:139
 AliEveTrackCounterEditor.cxx:140
 AliEveTrackCounterEditor.cxx:141
 AliEveTrackCounterEditor.cxx:142
 AliEveTrackCounterEditor.cxx:143
 AliEveTrackCounterEditor.cxx:144
 AliEveTrackCounterEditor.cxx:145
 AliEveTrackCounterEditor.cxx:146
 AliEveTrackCounterEditor.cxx:147
 AliEveTrackCounterEditor.cxx:148
 AliEveTrackCounterEditor.cxx:149
 AliEveTrackCounterEditor.cxx:150
 AliEveTrackCounterEditor.cxx:151
 AliEveTrackCounterEditor.cxx:152
 AliEveTrackCounterEditor.cxx:153
 AliEveTrackCounterEditor.cxx:154
 AliEveTrackCounterEditor.cxx:155
 AliEveTrackCounterEditor.cxx:156
 AliEveTrackCounterEditor.cxx:157
 AliEveTrackCounterEditor.cxx:158
 AliEveTrackCounterEditor.cxx:159
 AliEveTrackCounterEditor.cxx:160
 AliEveTrackCounterEditor.cxx:161
 AliEveTrackCounterEditor.cxx:162
 AliEveTrackCounterEditor.cxx:163
 AliEveTrackCounterEditor.cxx:164
 AliEveTrackCounterEditor.cxx:165
 AliEveTrackCounterEditor.cxx:166
 AliEveTrackCounterEditor.cxx:167
 AliEveTrackCounterEditor.cxx:168
 AliEveTrackCounterEditor.cxx:169
 AliEveTrackCounterEditor.cxx:170
 AliEveTrackCounterEditor.cxx:171
 AliEveTrackCounterEditor.cxx:172
 AliEveTrackCounterEditor.cxx:173
 AliEveTrackCounterEditor.cxx:174
 AliEveTrackCounterEditor.cxx:175
 AliEveTrackCounterEditor.cxx:176
 AliEveTrackCounterEditor.cxx:177
 AliEveTrackCounterEditor.cxx:178
 AliEveTrackCounterEditor.cxx:179
 AliEveTrackCounterEditor.cxx:180
 AliEveTrackCounterEditor.cxx:181
 AliEveTrackCounterEditor.cxx:182
 AliEveTrackCounterEditor.cxx:183
 AliEveTrackCounterEditor.cxx:184
 AliEveTrackCounterEditor.cxx:185
 AliEveTrackCounterEditor.cxx:186
 AliEveTrackCounterEditor.cxx:187
 AliEveTrackCounterEditor.cxx:188
 AliEveTrackCounterEditor.cxx:189
 AliEveTrackCounterEditor.cxx:190
 AliEveTrackCounterEditor.cxx:191
 AliEveTrackCounterEditor.cxx:192
 AliEveTrackCounterEditor.cxx:193
 AliEveTrackCounterEditor.cxx:194
 AliEveTrackCounterEditor.cxx:195
 AliEveTrackCounterEditor.cxx:196
 AliEveTrackCounterEditor.cxx:197
 AliEveTrackCounterEditor.cxx:198
 AliEveTrackCounterEditor.cxx:199
 AliEveTrackCounterEditor.cxx:200
 AliEveTrackCounterEditor.cxx:201
 AliEveTrackCounterEditor.cxx:202
 AliEveTrackCounterEditor.cxx:203
 AliEveTrackCounterEditor.cxx:204
 AliEveTrackCounterEditor.cxx:205
 AliEveTrackCounterEditor.cxx:206
 AliEveTrackCounterEditor.cxx:207
 AliEveTrackCounterEditor.cxx:208
 AliEveTrackCounterEditor.cxx:209
 AliEveTrackCounterEditor.cxx:210
 AliEveTrackCounterEditor.cxx:211
 AliEveTrackCounterEditor.cxx:212
 AliEveTrackCounterEditor.cxx:213
 AliEveTrackCounterEditor.cxx:214
 AliEveTrackCounterEditor.cxx:215
 AliEveTrackCounterEditor.cxx:216
 AliEveTrackCounterEditor.cxx:217
 AliEveTrackCounterEditor.cxx:218
 AliEveTrackCounterEditor.cxx:219
 AliEveTrackCounterEditor.cxx:220
 AliEveTrackCounterEditor.cxx:221
 AliEveTrackCounterEditor.cxx:222
 AliEveTrackCounterEditor.cxx:223
 AliEveTrackCounterEditor.cxx:224
 AliEveTrackCounterEditor.cxx:225
 AliEveTrackCounterEditor.cxx:226
 AliEveTrackCounterEditor.cxx:227
 AliEveTrackCounterEditor.cxx:228
 AliEveTrackCounterEditor.cxx:229
 AliEveTrackCounterEditor.cxx:230
 AliEveTrackCounterEditor.cxx:231
 AliEveTrackCounterEditor.cxx:232
 AliEveTrackCounterEditor.cxx:233
 AliEveTrackCounterEditor.cxx:234
 AliEveTrackCounterEditor.cxx:235
 AliEveTrackCounterEditor.cxx:236
 AliEveTrackCounterEditor.cxx:237
 AliEveTrackCounterEditor.cxx:238
 AliEveTrackCounterEditor.cxx:239
 AliEveTrackCounterEditor.cxx:240
 AliEveTrackCounterEditor.cxx:241
 AliEveTrackCounterEditor.cxx:242
 AliEveTrackCounterEditor.cxx:243
 AliEveTrackCounterEditor.cxx:244
 AliEveTrackCounterEditor.cxx:245
 AliEveTrackCounterEditor.cxx:246
 AliEveTrackCounterEditor.cxx:247
 AliEveTrackCounterEditor.cxx:248
 AliEveTrackCounterEditor.cxx:249
 AliEveTrackCounterEditor.cxx:250
 AliEveTrackCounterEditor.cxx:251
 AliEveTrackCounterEditor.cxx:252
 AliEveTrackCounterEditor.cxx:253
 AliEveTrackCounterEditor.cxx:254
 AliEveTrackCounterEditor.cxx:255
 AliEveTrackCounterEditor.cxx:256
 AliEveTrackCounterEditor.cxx:257
 AliEveTrackCounterEditor.cxx:258
 AliEveTrackCounterEditor.cxx:259
 AliEveTrackCounterEditor.cxx:260
 AliEveTrackCounterEditor.cxx:261
 AliEveTrackCounterEditor.cxx:262
 AliEveTrackCounterEditor.cxx:263
 AliEveTrackCounterEditor.cxx:264
 AliEveTrackCounterEditor.cxx:265
 AliEveTrackCounterEditor.cxx:266
 AliEveTrackCounterEditor.cxx:267
 AliEveTrackCounterEditor.cxx:268
 AliEveTrackCounterEditor.cxx:269
 AliEveTrackCounterEditor.cxx:270
 AliEveTrackCounterEditor.cxx:271
 AliEveTrackCounterEditor.cxx:272
 AliEveTrackCounterEditor.cxx:273
 AliEveTrackCounterEditor.cxx:274
 AliEveTrackCounterEditor.cxx:275
 AliEveTrackCounterEditor.cxx:276
 AliEveTrackCounterEditor.cxx:277
 AliEveTrackCounterEditor.cxx:278
 AliEveTrackCounterEditor.cxx:279
 AliEveTrackCounterEditor.cxx:280
 AliEveTrackCounterEditor.cxx:281
 AliEveTrackCounterEditor.cxx:282
 AliEveTrackCounterEditor.cxx:283
 AliEveTrackCounterEditor.cxx:284
 AliEveTrackCounterEditor.cxx:285
 AliEveTrackCounterEditor.cxx:286
 AliEveTrackCounterEditor.cxx:287
 AliEveTrackCounterEditor.cxx:288
 AliEveTrackCounterEditor.cxx:289
 AliEveTrackCounterEditor.cxx:290
 AliEveTrackCounterEditor.cxx:291
 AliEveTrackCounterEditor.cxx:292
 AliEveTrackCounterEditor.cxx:293
 AliEveTrackCounterEditor.cxx:294
 AliEveTrackCounterEditor.cxx:295
 AliEveTrackCounterEditor.cxx:296
 AliEveTrackCounterEditor.cxx:297
 AliEveTrackCounterEditor.cxx:298
 AliEveTrackCounterEditor.cxx:299
 AliEveTrackCounterEditor.cxx:300
 AliEveTrackCounterEditor.cxx:301
 AliEveTrackCounterEditor.cxx:302
 AliEveTrackCounterEditor.cxx:303
 AliEveTrackCounterEditor.cxx:304
 AliEveTrackCounterEditor.cxx:305
 AliEveTrackCounterEditor.cxx:306
 AliEveTrackCounterEditor.cxx:307
 AliEveTrackCounterEditor.cxx:308
 AliEveTrackCounterEditor.cxx:309
 AliEveTrackCounterEditor.cxx:310
 AliEveTrackCounterEditor.cxx:311
 AliEveTrackCounterEditor.cxx:312
 AliEveTrackCounterEditor.cxx:313
 AliEveTrackCounterEditor.cxx:314
 AliEveTrackCounterEditor.cxx:315
 AliEveTrackCounterEditor.cxx:316
 AliEveTrackCounterEditor.cxx:317
 AliEveTrackCounterEditor.cxx:318
 AliEveTrackCounterEditor.cxx:319
 AliEveTrackCounterEditor.cxx:320
 AliEveTrackCounterEditor.cxx:321
 AliEveTrackCounterEditor.cxx:322
 AliEveTrackCounterEditor.cxx:323
 AliEveTrackCounterEditor.cxx:324
 AliEveTrackCounterEditor.cxx:325
 AliEveTrackCounterEditor.cxx:326
 AliEveTrackCounterEditor.cxx:327
 AliEveTrackCounterEditor.cxx:328
 AliEveTrackCounterEditor.cxx:329
 AliEveTrackCounterEditor.cxx:330
 AliEveTrackCounterEditor.cxx:331
 AliEveTrackCounterEditor.cxx:332
 AliEveTrackCounterEditor.cxx:333
 AliEveTrackCounterEditor.cxx:334
 AliEveTrackCounterEditor.cxx:335
 AliEveTrackCounterEditor.cxx:336
 AliEveTrackCounterEditor.cxx:337
 AliEveTrackCounterEditor.cxx:338
 AliEveTrackCounterEditor.cxx:339
 AliEveTrackCounterEditor.cxx:340
 AliEveTrackCounterEditor.cxx:341
 AliEveTrackCounterEditor.cxx:342
 AliEveTrackCounterEditor.cxx:343
 AliEveTrackCounterEditor.cxx:344
 AliEveTrackCounterEditor.cxx:345
 AliEveTrackCounterEditor.cxx:346
 AliEveTrackCounterEditor.cxx:347
 AliEveTrackCounterEditor.cxx:348
 AliEveTrackCounterEditor.cxx:349
 AliEveTrackCounterEditor.cxx:350
 AliEveTrackCounterEditor.cxx:351
 AliEveTrackCounterEditor.cxx:352
 AliEveTrackCounterEditor.cxx:353
 AliEveTrackCounterEditor.cxx:354
 AliEveTrackCounterEditor.cxx:355
 AliEveTrackCounterEditor.cxx:356
 AliEveTrackCounterEditor.cxx:357
 AliEveTrackCounterEditor.cxx:358
 AliEveTrackCounterEditor.cxx:359
 AliEveTrackCounterEditor.cxx:360
 AliEveTrackCounterEditor.cxx:361
 AliEveTrackCounterEditor.cxx:362
 AliEveTrackCounterEditor.cxx:363
 AliEveTrackCounterEditor.cxx:364
 AliEveTrackCounterEditor.cxx:365
 AliEveTrackCounterEditor.cxx:366
 AliEveTrackCounterEditor.cxx:367
 AliEveTrackCounterEditor.cxx:368
 AliEveTrackCounterEditor.cxx:369
 AliEveTrackCounterEditor.cxx:370
 AliEveTrackCounterEditor.cxx:371
 AliEveTrackCounterEditor.cxx:372
 AliEveTrackCounterEditor.cxx:373
 AliEveTrackCounterEditor.cxx:374
 AliEveTrackCounterEditor.cxx:375
 AliEveTrackCounterEditor.cxx:376
 AliEveTrackCounterEditor.cxx:377
 AliEveTrackCounterEditor.cxx:378
 AliEveTrackCounterEditor.cxx:379
 AliEveTrackCounterEditor.cxx:380
 AliEveTrackCounterEditor.cxx:381
 AliEveTrackCounterEditor.cxx:382
 AliEveTrackCounterEditor.cxx:383
 AliEveTrackCounterEditor.cxx:384
 AliEveTrackCounterEditor.cxx:385
 AliEveTrackCounterEditor.cxx:386
 AliEveTrackCounterEditor.cxx:387
 AliEveTrackCounterEditor.cxx:388
 AliEveTrackCounterEditor.cxx:389
 AliEveTrackCounterEditor.cxx:390
 AliEveTrackCounterEditor.cxx:391
 AliEveTrackCounterEditor.cxx:392
 AliEveTrackCounterEditor.cxx:393
 AliEveTrackCounterEditor.cxx:394
 AliEveTrackCounterEditor.cxx:395
 AliEveTrackCounterEditor.cxx:396
 AliEveTrackCounterEditor.cxx:397