]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSt345SlatSegmentationV2.h
New class AliMUONTrackExtrap containing static method for tack extrapolation (Philipp...
[u/mrichter/AliRoot.git] / MUON / AliMUONSt345SlatSegmentationV2.h
CommitLineData
90e8f97c 1#ifndef ALIMUONST345SLATSEGMENTATIONV2_H
2#define ALIMUONST345SLATSEGMENTATIONV2_H
3
692de412 4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/* $Id$ */
8
9/// \ingroup base
10/// \class AliMUONSt345SlatSegmentationV2
11/// \brief Segmentation for slat modules
12
90e8f97c 13#ifndef ALIMUONVGEOMETRYDESEGMENTATION_H
14#include "AliMUONVGeometryDESegmentation.h"
15#endif
16
17#ifndef ALI_MP_PLANE_TYPE_H
18#include "AliMpPlaneType.h"
19#endif
20
21#ifndef ALI_MP_PAD_H
22#include "AliMpPad.h"
23#endif
24
25class AliMpSlat;
26class AliMpSlatSegmentation;
27class AliMpVPadIterator;
28
29class AliMUONSt345SlatSegmentationV2 : public AliMUONVGeometryDESegmentation
30{
31 public:
32
33 AliMUONSt345SlatSegmentationV2();
8fbf5237 34 AliMUONSt345SlatSegmentationV2(AliMpVSegmentation* segmentation,
35 Int_t detElemId,
90e8f97c 36 AliMpPlaneType bendingOrNonBending);
37 virtual ~AliMUONSt345SlatSegmentationV2();
38
39 void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit,
40 Float_t dx, Float_t dy);
41
42 void NextPad();
43
44 Int_t MorePads();
45
46 Int_t Ix();
47 Int_t Iy();
48 Int_t ISector();
49
50 Float_t Distance2AndOffset(Int_t ix, Int_t iy,
51 Float_t X, Float_t Y,
52 Int_t* dummy);
53
54 void GetNParallelAndOffset(Int_t iX, Int_t iY,
55 Int_t* Nparallel, Int_t* Offset);
56
57 void Neighbours(Int_t iX, Int_t iY, Int_t* Nlist,
58 Int_t Xlist[10], Int_t Ylist[10]);
59
60 Int_t Sector(Int_t ix, Int_t iy);
61 Int_t Sector(Float_t x, Float_t y);
62
63 void IntegrationLimits(Float_t& x1, Float_t& x2,
64 Float_t& y1, Float_t& y2);
65
66 void GiveTestPoints(Int_t& n, Float_t* x, Float_t* y) const;
67
68 Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
69 void SigGenInit(Float_t x, Float_t y, Float_t z);
70
c895a991 71 void SetCorrFunc(Int_t isec, TF1* func);
90e8f97c 72
c895a991 73 TF1* CorrFunc(Int_t isec) const;
90e8f97c 74
c895a991 75 void SetPadSize(float x,float y);
90e8f97c 76
c895a991 77 void SetDAnod(float d);
90e8f97c 78
5398f946 79 void Init(int /*chamber*/) {} ///< Not implemented
c895a991 80 void Draw(Option_t* opt = "");
90e8f97c 81
82 Float_t Dpx() const;
83 Float_t Dpy() const;
84
c895a991 85 Float_t Dpx(int ipcb) const;
86 Float_t Dpy(int ipcb) const;
90e8f97c 87
88 Float_t GetAnod(Float_t xhit) const;
89
90 Int_t Npx() const;
91 Int_t Npy() const;
92
93 /// Sets the current pad.
94 void SetPad(Int_t ix,Int_t iy);
95
96 /// Sets the current hit.
c895a991 97 void SetHit(Float_t x, Float_t y, Float_t zIsNotUsed);
90e8f97c 98
99 AliMUONGeometryDirection GetDirection();// { return kDirUndefined; }
100
b7ef3c96 101 const AliMpVSegmentation* GetMpSegmentation() const;
102
5398f946 103 /// \deprecated. Use the one below w/o z instead.
90e8f97c 104 void GetPadC(Int_t ix, Int_t iy, Float_t& x, Float_t& y, Float_t& z);
105
106 /// From pad indices to coordinates (cm).
107 void GetPadC(Int_t ix, Int_t iy, Float_t& x, Float_t& y);
108
109 // Transform from pad to real coordinates
110 void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
111
112 // to be deprecated. Use the one above w/o z instead.
113 void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
114
90e8f97c 115
116 /// Whether a pad exists at a given position.
117 Bool_t HasPad(Float_t x, Float_t y, Float_t z);
118
119 /// Whether a pad exists, given its indices.
120 Bool_t HasPad(Int_t ix, Int_t iy);
121
122 /// Print.
123 void Print(Option_t* opt = "") const;
124
884a73f1 125 protected:
126 AliMUONSt345SlatSegmentationV2(const AliMUONSt345SlatSegmentationV2& right);
127 AliMUONSt345SlatSegmentationV2& operator = (const AliMUONSt345SlatSegmentationV2& right);
128
90e8f97c 129 private:
130
18b6b8c7 131 Int_t fDetElemId; ///< det element Id
132 AliMpPlaneType fPlaneType; ///< plane type
133 const AliMpSlat* fSlat; ///< slat
134 AliMpSlatSegmentation* fSlatSegmentation; ///< slat segmentation
135 AliMpVPadIterator* fPadIterator; //!< pad iterator
136 AliMpPad fCurrentPad; //!< FIXME: should not be needed, if we externalise the SetPad, SetHit, IntegrationLimits methods which have nothing to do here anyway, together with the iteration methods FirstPad, NextPad, MorePads, which have nothing to do here either.
137 Float_t fXhit; //!< x-position of hit
138 Float_t fYhit; //!< y-position of hit
139 ClassDef(AliMUONSt345SlatSegmentationV2,1) // St345 segmentation V2
90e8f97c 140};
141
142#endif