]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONTrackHitPattern.h
Trigger related changes :
[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 AliMUONDigitMaker;
24 class AliMUONGeometryTransformer;
25 class AliMUONVDigitStore;
26 class AliMUONTriggerTrack;
27 class AliMUONTrack;
28 class AliMUONRecoParam;
29
30 class AliMUONTrackHitPattern : public TObject 
31 {
32 public:
33
34   AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
35                          const AliMUONGeometryTransformer& transformer,
36                          const AliMUONDigitMaker& digitMaker);
37   virtual ~AliMUONTrackHitPattern(); // Destructor
38
39   void ExecuteValidation(const AliMUONVTrackStore& trackStore,
40                          const AliMUONVTriggerTrackStore& triggerTrackStore,
41                          const AliMUONVTriggerStore& triggerStore) const;
42   
43   AliMUONTriggerTrack* MatchTriggerTrack(AliMUONTrack* track,
44                                          AliMUONTrackParam& trackParam,
45                                          const AliMUONVTriggerTrackStore& triggerTrackStore,
46                                          const AliMUONVTriggerStore& triggerStore) const;
47     
48   UShort_t GetHitPattern(AliMUONTriggerTrack* matchedTriggerTrack,
49                          AliMUONVDigitStore& digitStore,
50                          AliMUONTrackParam* trackParam=0x0) const;
51
52 protected:
53   void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
54   
55   void InitMembers();
56   
57   void SetBit(UShort_t& pattern, Int_t cathode, Int_t chamber) const;
58   
59   void AddEffInfo(UShort_t& pattern, Int_t slat, Int_t effType) const;
60   
61
62   // Methods for hit pattern from tracker track
63   void FindPadMatchingTrack(const AliMUONVDigitStore& digitStore,
64                             const AliMUONTrackParam& trackParam,
65                             Bool_t isMatch[2], Int_t iChamber) const;
66
67   Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
68                              Float_t dpx, Float_t dpy, 
69                              const AliMUONTrackParam& trackParam) const;
70
71   // Methods for hit pattern from matched trigger track
72   Bool_t PerformTrigTrackMatch(UShort_t &pattern,
73                                const AliMUONTriggerTrack* matchedTrigTrack,
74                                AliMUONVDigitStore& digitStore) const;
75   
76   Int_t FindPadMatchingTrig(const AliMUONVDigitStore& digitStore, Int_t &detElemId, Float_t coor[2],
77                             Bool_t isMatch[2], TArrayI nboard[2],
78                             TArrayF &zRealMatch, Float_t y11) const;
79   
80   Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
81                         Float_t xTrackAtPad, Float_t yTrackAtPad) const;
82   
83   Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode) const;
84   
85   void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId,
86                          Int_t cathode, Int_t localBoard[4]) const;
87
88   /// Return reco parameters
89   const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
90   
91 private:
92   /// Not implemented
93   AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
94   /// Not implemented
95   AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
96
97   void CheckConstants() const;
98
99   const AliMUONRecoParam* fkRecoParam; //!< pointer to reco parameters
100   const AliMUONGeometryTransformer& fkTransformer; //!< geometry transformer
101   const AliMUONDigitMaker& fkDigitMaker; //!< pointer to digit maker
102
103   Double_t fDeltaZ; //!< distance between stations
104
105   TMatrixD* fTrigCovariance; //!< Covariance matrix 3x3 (X,Y,slopeY) for trigger tracks
106
107   const Float_t fkMaxDistance; //!< Maximum distance for reference
108   static const Int_t fgkNcathodes=2; //!<Number of cathodes
109   static const Int_t fgkNchambers=4; //!<Number of chambers
110   static const Int_t fgkNplanes=8;   //!<Number of planes
111   static const Int_t fgkNlocations=4; //!<Number of locations
112
113   enum {
114     kNoEff,
115     kChEff,
116     kSlatEff,
117     kBoardEff
118   };
119   
120   ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
121 };
122
123 #endif