TRD module
[u/mrichter/AliRoot.git] / TRD / TRDbase / AliTRDtrackGTU.h
CommitLineData
52c19022 1#ifndef ALITRDTRACKGTU_H
2#define ALITRDTRACKGTU_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id: AliTRDtrackGTU.h 27496 2008-07-22 08:35:45Z cblume $ */
7
8//---------------------------------------------------------------
9//
10// TRD track as calculated in the GTU (for L1 contribution)
11//
12//---------------------------------------------------------------
13
14#include "TClonesArray.h"
15
16#include "AliTRDtrackletGTU.h"
4d6aee34 17class AliESDTrdTrack;
52c19022 18
19class AliTRDtrackGTU : public TObject {
20 public:
21 AliTRDtrackGTU();
dd09a2e2 22 AliTRDtrackGTU(const AliTRDtrackGTU &rhs);
23 AliTRDtrackGTU& operator=(const AliTRDtrackGTU &rhs);
d9a2bdff 24 AliTRDtrackGTU& operator=(const AliESDTrdTrack &rhs);
52c19022 25 ~AliTRDtrackGTU();
26
27// ----- Track properties
d2c8b010 28 Int_t GetPtInt() const { return AliTRDgtuParam::GetPt(fTrackletMask, (Int_t) this->GetA(), 0, 0, 0, 0); }
29 Float_t GetPt() const { return (Float_t) this->GetPtInt() / 128.; }
52c19022 30 Int_t GetPID() const { return fPID; }
31 Int_t GetSector() const { return fSector; }
32 Int_t GetStack() const { return fStack; }
80f93426 33 Int_t GetLabel() const { return fLabel; }
52c19022 34
35 AliESDTrdTrack* CreateTrdTrack() const;
36
37// ----- compositing tracklets
38 Int_t GetNTracklets() const;
39 Int_t GetTrackletMask() const { return fTrackletMask; }
40 Bool_t IsTrackletInLayer(Int_t layer) const;
5f006bd7 41 Int_t GetTrackletIndex(Int_t layer) { return IsTrackletInLayer(layer) ? ((AliTRDtrackletGTU*) (*fTracklets)[layer])->GetIndex() : -1; }
44eafcf2 42 AliTRDtrackletGTU* GetTracklet(Int_t layer) const;
52c19022 43
44// ----- Quantities used internally for the calculation
45 Float_t GetA() const { return fA; }
46 Float_t GetB() const { return fB; }
47 Float_t GetC() const { return fC; }
48 Int_t GetZChannel() const { return fZChannel; }
49 Int_t GetZSubChannel();
d2c8b010 50 Int_t GetRefLayer() const { return AliTRDgtuParam::GetRefLayer(fRefLayerIdx); }
52c19022 51 Int_t GetRefLayerIdx() const { return fRefLayerIdx; }
52 Int_t GetYapprox();
53
54
4d6aee34 55 void AddTracklet(const AliTRDtrackletGTU * const tracklet, Int_t layer);
52c19022 56
57 void SetStack(Int_t stack) { fStack = stack; }
58 void SetSector(Int_t sector) { fSector = sector; }
52c19022 59 void SetPID(Int_t pid) { fPID = pid; }
34d48b8f 60 void SetLabel(Int_t label) { fLabel = label; }
52c19022 61
62 void SetZChannel(Int_t zch) { fZChannel = zch; }
63 void SetRefLayerIdx(Int_t reflayer) { fRefLayerIdx = reflayer; }
64// void SetInnerIntPoint(Float_t *x);
65// void SetOuterIntPoint(Float_t *x);
66 void SetFitParams(Float_t a, Float_t b, Float_t c);
67
4cc89512 68 Bool_t CookLabel();
69
52c19022 70 protected:
71
4cc89512 72 Int_t fStack; // TRD stack to which this track belongs
73 Int_t fSector; // sector in which the track was found
52c19022 74
4cc89512 75 Int_t fPID; // PID calculated from tracklet PID
76
77 TClonesArray *fTracklets; // array holding the tracklets composing this track
78 Int_t fTrackletMask; // mask in which layers tracklets have been assigned
79 Int_t fNTracklets; // number of tracklets in this track
52c19022 80
4cc89512 81 Int_t fRefLayerIdx; // index of the reference layer in which this track was found
82 Int_t fZChannel; // z-channel unit in which this track was found
83 Int_t fZSubChannel; // z-subchannel of the assigned tracklets
52c19022 84
4cc89512 85 Float_t fA; // fit parameter of y' = a + b*x + c*z
86 Float_t fB; // fit parameter of y' = a + b*x + c*z
87 Float_t fC; // fit parameter of y' = a + b*x + c*z
52c19022 88
4cc89512 89 Int_t fLabel; // MC label
52c19022 90
52c19022 91 ClassDef(AliTRDtrackGTU, 1);
92};
93
94#endif