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
15 //#include <TObjArray.h>
17 class AliMUONVTrackStore;
18 class AliMUONVTriggerStore;
19 class AliMUONVTriggerTrackStore;
20 class AliMUONTrackParam;
21 class AliMUONGeometryTransformer;
22 class AliMUONVDigitStore;
23 class AliMUONTriggerTrack;
25 class AliMUONRecoParam;
26 class AliMUONTriggerUtilities;
30 class AliMUONTrackHitPattern : public TObject
34 AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
35 const AliMUONGeometryTransformer& transformer,
36 const AliMUONVDigitStore& digitStore,
37 const AliMUONTriggerUtilities* triggerUtilities);
38 virtual ~AliMUONTrackHitPattern(); // Destructor
40 void ExecuteValidation(const AliMUONVTrackStore& trackStore,
41 const AliMUONVTriggerTrackStore& triggerTrackStore,
42 const AliMUONVTriggerStore& triggerStore) const;
44 AliMUONTriggerTrack* MatchTriggerTrack(AliMUONTrack* track,
45 AliMUONTrackParam& trackParam,
46 const AliMUONVTriggerTrackStore& triggerTrackStore,
47 const AliMUONVTriggerStore& triggerStore) const;
49 UShort_t GetHitPattern(const AliMUONTriggerTrack* matchedTriggerTrack) const;
51 UShort_t GetHitPattern(AliMUONTrackParam* trackParam) const;
54 void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
56 // Methods for hit pattern from tracker track
57 void FindPadMatchingTrack(const AliMUONTrackParam& trackParam,
58 Bool_t isMatch[2], Int_t iChamber) const;
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;
64 // Methods for hit pattern from matched trigger track
65 Bool_t PerformTrigTrackMatch(UShort_t &pattern,
66 const AliMUONTriggerTrack* matchedTrigTrack) const;
68 Bool_t FindPadMatchingTrig(const TVector3& vec11, const TVector3& vec21,
69 Int_t matchedDetElemId[2], TObjArray& matchedPads) const;
72 Float_t PadMatchTrack(const AliMpPad& pad, const TVector3& trackPosAtPad) const;
74 Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t foundDetElemId[2]) const;
76 Bool_t PadsFromPos(const TVector3& vec11, const TVector3& vec21,
77 Int_t detElemId, TObjArray& pads) const;
79 Bool_t PosInDetElemIdLocal(TVector3& localCoor, const TVector3& globalPoint1, const TVector3& globalPoint2, Int_t detElemId) const;
82 /// Return reco parameters
83 const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
85 Bool_t IsCloseToAccEdge(TObjArray& pads, Int_t detElemId, Float_t coor[2]) const;
87 Bool_t IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode, const TVector3& vec11, const TVector3& vec21) const;
91 AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
93 AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
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
100 const Float_t fkMaxDistance; //!< Maximum distance for reference
102 ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern