ROOT logo
#ifndef ALITRDGTUTMU_H
#define ALITRDGTUTMU_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliTRDgtuTMU.h 27496 2008-07-22 08:35:45Z cblume $ */

//--------------------------------------------------------------------
//
// This class simulates the tracklet processing in a TMU
//
//--------------------------------------------------------------------

#include "TObject.h"

#include "AliTRDtrackletGTU.h"
#include "AliTRDgtuParam.h"

class TTree;
class TList;
class TClonesArray;
class TBranch;
class AliTRDtrackGTU;
class AliESDEvent;

class AliTRDgtuTMU : public TObject {
 public:
  AliTRDgtuTMU(Int_t stack = -1, Int_t sector = -1);
  ~AliTRDgtuTMU();

  Bool_t SetSector(Int_t sector);
  Bool_t SetStack(Int_t stack);

  Bool_t AddTracklet(AliTRDtrackletGTU *tracklet, Int_t link);

  Bool_t RunTMU(TList *ListOfTracks = 0x0, AliESDEvent *esd = 0x0, Int_t outLabel = -1);
  Bool_t Reset();

  // ----- successive stages of the processing in the TMU -----
  Bool_t RunInputUnit(Int_t layer);
  Bool_t RunZChannelUnit(Int_t layer);
  Bool_t RunTrackFinder(Int_t zchannel, TList* ListOfTracks);
  Bool_t RunTrackMerging(TList* ListOfTracks);
  Bool_t RunTrackReconstruction(TList* ListOfTracks);

  Bool_t CalculateTrackParams(AliTRDtrackGTU *track);
  Bool_t Uniquifier(const TList* inlist, TList *outlist);
  Bool_t CalculatePID(AliTRDtrackGTU *track);

protected:
  TObjArray **fTracklets; // holding all tracklets per link
  TObjArray **fTrackletsPostInput; // holding all tracklets of a layer
				   // after sorting/calculation in input units
  TList **fZChannelTracklets; // holding all tracklets for layer and z-channel
  TClonesArray *fTrackArray; // array of tracks
  TList **fTracks; // lists of tracks
  AliTRDgtuParam *fGtuParam; // pointer to the instance of the GtuParam class

  Int_t fStack;			// Stack of this TMU
  Int_t fSector;		// Sector of this TMU

 private:
  AliTRDgtuTMU(const AliTRDgtuTMU &rhs);              // not implemented
  AliTRDgtuTMU& operator=(const AliTRDgtuTMU &rhs);   // not implemented

  ClassDef(AliTRDgtuTMU, 1);
};

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