Dimitri just makes it work
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometry.h
CommitLineData
dd9a6ee3 1#ifndef ALITRDGEOMETRY_H
2#define ALITRDGEOMETRY_H
f7336fa3 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8#include <TObject.h>
9#include <TMath.h>
10
11#include "AliRun.h"
12#include "AliRecPoint.h"
94de3818 13#include "AliGeometry.h"
f7336fa3 14
15#include "AliTRDconst.h"
16
17class AliTRDgeometry : public AliGeometry {
18
19 public:
20
21 AliTRDgeometry();
8230f242 22 virtual ~AliTRDgeometry();
f7336fa3 23
8230f242 24 virtual void CreateGeometry(Int_t *idtmed);
f7336fa3 25 virtual Int_t IsVersion() const = 0;
26 virtual void Init();
94de3818 27 virtual Bool_t Local2Global(Int_t d, Float_t *local, Float_t *global) const;
28 virtual Bool_t Local2Global(Int_t p, Int_t c, Int_t s, Float_t *local, Float_t *global) const;
f7336fa3 29 virtual Bool_t Rotate(Int_t d, Float_t *pos, Float_t *rot);
94de3818 30 virtual Bool_t RotateBack(Int_t d, Float_t *rot, Float_t *pos) const;
f7336fa3 31
6f1e466d 32 virtual void SetPHOShole() = 0;
33 virtual void SetRICHhole() = 0;
34
f7336fa3 35 virtual void SetRowPadSize(Float_t size) { fRowPadSize = size; };
36 virtual void SetColPadSize(Float_t size) { fColPadSize = size; };
37 virtual void SetTimeBinSize(Float_t size) { fTimeBinSize = size; };
38
6f1e466d 39 virtual Bool_t GetPHOShole() = 0;
40 virtual Bool_t GetRICHhole() = 0;
41
94de3818 42 virtual Int_t GetDetector(Int_t p, Int_t c, Int_t s) const;
43 virtual Int_t GetPlane(Int_t d) const;
44 virtual Int_t GetChamber(Int_t d) const;
45 virtual Int_t GetSector(Int_t d) const;
f7336fa3 46
47 virtual Int_t GetRowMax(Int_t p, Int_t c, Int_t s) { return fRowMax[p][c][s]; };
48 virtual Int_t GetColMax(Int_t p) { return fColMax[p]; };
49 virtual Int_t GetTimeMax() { return fTimeMax; };
50
94de3818 51 virtual Float_t GetRow0(Int_t p, Int_t c, Int_t s) const { return fRow0[p][c][s]; };
52 virtual Float_t GetCol0(Int_t p) const { return fCol0[p]; };
53 virtual Float_t GetTime0(Int_t p) const { return fTime0[p]; };
f7336fa3 54
94de3818 55 virtual Float_t GetRowPadSize() const { return fRowPadSize; };
56 virtual Float_t GetColPadSize() const { return fColPadSize; };
57 virtual Float_t GetTimeBinSize() const { return fTimeBinSize; };
f7336fa3 58
94de3818 59 virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos, TMatrix &mat) const;
60 virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos) const;
f7336fa3 61
62 protected:
63
64 Float_t fCwidth[kNplan]; // Width of the chambers
65
66 Int_t fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows
67 Int_t fColMax[kNplan]; // Number of pad-columns
68 Int_t fTimeMax; // Number of time buckets
69
70 Float_t fRow0[kNplan][kNcham][kNsect]; // Row-position of pad 0
71 Float_t fCol0[kNplan]; // Column-position of pad 0
72 Float_t fTime0[kNplan]; // Time-position of pad 0
73
74 Float_t fRowPadSize; // Pad size in z-direction
75 Float_t fColPadSize; // Pad size in rphi-direction
76 Float_t fTimeBinSize; // Size of the time buckets
77
78 ClassDef(AliTRDgeometry,1) // TRD geometry base class
79
80};
81
82#endif