In reconstruction:
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackHitPattern.h
1 #ifndef ALIMUONTRACKHITPATTERN_H
2 #define ALIMUONTRACKHITPATTERN_H
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 /// \ingroup rec
9 /// \class AliMUONTrackHitPattern
10 /// \brief Class for the MUON track hit pattern
11 ///
12 //  Author: Diego Stocco
13
14 #include <TObject.h>
15 #include <TMatrixD.h>
16 #include <TArrayI.h>
17 #include <TArrayF.h>
18
19 class AliMUONVTrackStore;
20 class AliMUONVTriggerStore;
21 class AliMUONVTriggerTrackStore;
22 class AliMUONTrackParam;
23 class AliMUONGeometryTransformer;
24 class AliMUONVDigitStore;
25 class AliMUONTriggerTrack;
26 class AliMUONTrack;
27 class AliMUONRecoParam;
28
29 class AliMUONTrackHitPattern : public TObject 
30 {
31 public:
32
33   AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
34                          const AliMUONGeometryTransformer& transformer,
35                          const AliMUONVDigitStore& digitStore);
36   virtual ~AliMUONTrackHitPattern(); // Destructor
37
38   void ExecuteValidation(const AliMUONVTrackStore& trackStore,
39                          const AliMUONVTriggerTrackStore& triggerTrackStore,
40                          const AliMUONVTriggerStore& triggerStore) const;
41   
42   AliMUONTriggerTrack* MatchTriggerTrack(AliMUONTrack* track,
43                                          AliMUONTrackParam& trackParam,
44                                          const AliMUONVTriggerTrackStore& triggerTrackStore,
45                                          const AliMUONVTriggerStore& triggerStore) const;
46
47   UShort_t GetHitPattern(AliMUONTriggerTrack* matchedTriggerTrack) const;
48   
49   UShort_t GetHitPattern(AliMUONTrackParam* trackParam) const;
50
51 protected:
52   void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
53   
54   // Methods for hit pattern from tracker track
55   void FindPadMatchingTrack(const AliMUONTrackParam& trackParam,
56                             Bool_t isMatch[2], Int_t iChamber) const;
57
58   Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
59                              Float_t dpx, Float_t dpy, 
60                              const AliMUONTrackParam& trackParam) const;
61
62   // Methods for hit pattern from matched trigger track
63   Bool_t PerformTrigTrackMatch(UShort_t &pattern,
64                                const AliMUONTriggerTrack* matchedTrigTrack) const;
65   
66   Int_t FindPadMatchingTrig(Int_t &detElemId, Float_t coor[2],
67                             Bool_t isMatch[2], TArrayI nboard[2],
68                             TArrayF &zRealMatch, Float_t y11) const;
69   
70   Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
71                         Float_t xTrackAtPad, Float_t yTrackAtPad) const;
72   
73   Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode) const;
74   
75   void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId,
76                          Int_t cathode, Int_t localBoard[4]) const;
77
78   /// Return reco parameters
79   const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
80   
81 private:
82   /// Not implemented
83   AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
84   /// Not implemented
85   AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
86
87   void CheckConstants() const;
88
89   const AliMUONRecoParam* fkRecoParam; //!< pointer to reco parameters
90   const AliMUONGeometryTransformer& fkTransformer; //!< geometry transformer
91   const AliMUONVDigitStore& fkDigitStore; //!< digitStore
92
93   const Float_t fkMaxDistance; //!< Maximum distance for reference
94   static const Int_t fgkNcathodes=2; //!<Number of cathodes
95   static const Int_t fgkNchambers=4; //!<Number of chambers
96   static const Int_t fgkNplanes=8;   //!<Number of planes
97   static const Int_t fgkNlocations=4; //!<Number of locations
98   
99   ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
100 };
101
102 #endif