PMD module
[u/mrichter/AliRoot.git] / MUON / MUONrec / 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 <TObjArray.h>
16
17 class AliMUONVTrackStore;
18 class AliMUONVTriggerStore;
19 class AliMUONVTriggerTrackStore;
20 class AliMUONTrackParam;
21 class AliMUONGeometryTransformer;
22 class AliMUONVDigitStore;
23 class AliMUONTriggerTrack;
24 class AliMUONTrack;
25 class AliMUONRecoParam;
26 class AliMUONTriggerUtilities;
27 class AliMpPad;
28 class TVector3;
29 class TArrayI;
30
31 class AliMUONTrackHitPattern : public TObject 
32 {
33 public:
34
35   AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
36                          const AliMUONGeometryTransformer& transformer,
37                          const AliMUONVDigitStore& digitStore,
38                          const AliMUONTriggerUtilities* triggerUtilities);
39   virtual ~AliMUONTrackHitPattern(); // Destructor
40
41   void ExecuteValidation(const AliMUONVTrackStore& trackStore,
42                          const AliMUONVTriggerTrackStore& triggerTrackStore,
43                          const AliMUONVTriggerStore& triggerStore) const;
44   
45   AliMUONTriggerTrack* MatchTriggerTrack(AliMUONTrack* track,
46                                          AliMUONTrackParam& trackParam,
47                                          const AliMUONVTriggerTrackStore& triggerTrackStore,
48                                          const AliMUONVTriggerStore& triggerStore) const;
49   
50   UInt_t GetHitPattern(const AliMUONTrackParam& trackParam, Bool_t isTriggerTrack) const;
51   
52   UInt_t GetHitPattern(const AliMUONTriggerTrack* matchedTriggerTrack) const; // obsolete
53   UInt_t GetHitPattern(AliMUONTrackParam* trackParam) const; // obsolete
54
55 protected:
56   void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
57   
58   Int_t GetTrackParamAtChamber(const AliMUONTrackParam& inputTrackParam, Int_t chamber,
59                                TObjArray& trackParamList, TArrayI& foundDetElemId, TObjArray& padsFromPos) const;
60   
61   Bool_t FindMatchingPads(const AliMUONTrackParam* trackParam,
62                           TArrayI& matchedDetElemId, TObjArray& pads,
63                           const AliMUONVDigitStore& digitStore, Bool_t isTriggerTrack) const;
64   
65   Bool_t PosInDetElemIdLocal(TVector3& localCoor, const TVector3& globalPoint1, const TVector3& globalPoint2, Int_t detElemId) const;
66   
67   /// Return reco parameters
68   const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
69   
70   // THE FOLLOWING METHODS ARE OBSOLETE
71   
72   // Methods for hit pattern from tracker track
73   void FindPadMatchingTrack(const AliMUONTrackParam& trackParam,
74                             Bool_t isMatch[2], Int_t iChamber) const;
75
76   Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
77                              Float_t dpx, Float_t dpy, 
78                              const AliMUONTrackParam& trackParam) const;
79
80   // Methods for hit pattern from matched trigger track
81   Bool_t PerformTrigTrackMatch(UInt_t &pattern, const AliMUONTriggerTrack* matchedTrigTrack) const; // obsolete
82   
83   Bool_t FindPadMatchingTrig(const TVector3& vec11, const TVector3& vec21, Int_t matchedDetElemId[2], TObjArray& matchedPads) const; // obsolete
84   
85   Float_t PadMatchTrack(const AliMpPad& pad, const TVector3& trackPosAtPad) const; // obsolete
86   
87   Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t foundDetElemId[2]) const; // obsolete
88   
89   Bool_t PadsFromPos(const TVector3& vec11, const TVector3& vec21, Int_t detElemId, TObjArray& pads) const; // obsolete
90   
91   
92   Bool_t IsCloseToAccEdge(TObjArray& pads, Int_t detElemId, Float_t coor[2]) const; // obsolete
93   
94   Bool_t IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode, const TVector3& vec11, const TVector3& vec21) const; // obsolete
95   
96 private:
97   /// Not implemented
98   AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
99   /// Not implemented
100   AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
101
102   const AliMUONRecoParam* fkRecoParam; //!< pointer to reco parameters
103   const AliMUONGeometryTransformer& fkTransformer; //!< geometry transformer
104   const AliMUONVDigitStore& fkDigitStore; //!< digitStore
105   const AliMUONTriggerUtilities* fkTriggerUtilities; //!< trigger utilities for mapping
106
107   const Float_t fkMaxDistance; //!< Maximum distance for reference // obsolete
108   
109   ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
110 };
111
112 #endif