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