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 */
9 /// \class AliMUONTrackHitPattern
10 /// \brief Class for the MUON track hit pattern
12 // Author: Diego Stocco
19 class AliMUONVTrackStore;
20 class AliMUONVTriggerStore;
21 class AliMUONVTriggerTrackStore;
22 class AliMUONTrackParam;
23 class AliMUONDigitMaker;
24 class AliMUONGeometryTransformer;
25 class AliMUONVDigitStore;
26 class AliMUONTriggerTrack;
28 class AliMUONRecoParam;
30 class AliMUONTrackHitPattern : public TObject
34 AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
35 const AliMUONGeometryTransformer& transformer,
36 const AliMUONDigitMaker& digitMaker);
37 virtual ~AliMUONTrackHitPattern(); // Destructor
39 void ExecuteValidation(const AliMUONVTrackStore& trackStore,
40 const AliMUONVTriggerTrackStore& triggerTrackStore,
41 const AliMUONVTriggerStore& triggerStore) const;
43 AliMUONTriggerTrack* MatchTriggerTrack(AliMUONTrack* track,
44 AliMUONTrackParam& trackParam,
45 const AliMUONVTriggerTrackStore& triggerTrackStore,
46 const AliMUONVTriggerStore& triggerStore) const;
48 UShort_t GetHitPattern(AliMUONTriggerTrack* matchedTriggerTrack,
49 AliMUONVDigitStore& digitStore) const;
51 UShort_t GetHitPattern(AliMUONTrackParam* trackParam,
52 AliMUONVDigitStore& digitStore) const;
55 void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
59 // Methods for hit pattern from tracker track
60 void FindPadMatchingTrack(const AliMUONVDigitStore& digitStore,
61 const AliMUONTrackParam& trackParam,
62 Bool_t isMatch[2], Int_t iChamber) const;
64 Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
65 Float_t dpx, Float_t dpy,
66 const AliMUONTrackParam& trackParam) const;
68 // Methods for hit pattern from matched trigger track
69 Bool_t PerformTrigTrackMatch(UShort_t &pattern,
70 const AliMUONTriggerTrack* matchedTrigTrack,
71 AliMUONVDigitStore& digitStore) const;
73 Int_t FindPadMatchingTrig(const AliMUONVDigitStore& digitStore, Int_t &detElemId, Float_t coor[2],
74 Bool_t isMatch[2], TArrayI nboard[2],
75 TArrayF &zRealMatch, Float_t y11) const;
77 Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
78 Float_t xTrackAtPad, Float_t yTrackAtPad) const;
80 Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode) const;
82 void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId,
83 Int_t cathode, Int_t localBoard[4]) const;
85 /// Return reco parameters
86 const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
90 AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
92 AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
94 void CheckConstants() const;
96 const AliMUONRecoParam* fkRecoParam; //!< pointer to reco parameters
97 const AliMUONGeometryTransformer& fkTransformer; //!< geometry transformer
98 const AliMUONDigitMaker& fkDigitMaker; //!< pointer to digit maker
100 Double_t fDeltaZ; //!< distance between stations
102 TMatrixD* fTrigCovariance; //!< Covariance matrix 3x3 (X,Y,slopeY) for trigger tracks
104 const Float_t fkMaxDistance; //!< Maximum distance for reference
105 static const Int_t fgkNcathodes=2; //!<Number of cathodes
106 static const Int_t fgkNchambers=4; //!<Number of chambers
107 static const Int_t fgkNplanes=8; //!<Number of planes
108 static const Int_t fgkNlocations=4; //!<Number of locations
110 ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern