- Disentangle masks effect from trigger chamber efficiency estimation.
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackHitPattern.h
index 04db940..167d164 100644 (file)
@@ -12,9 +12,7 @@
 //  Author: Diego Stocco
 
 #include <TObject.h>
-#include <TMatrixD.h>
-#include <TArrayI.h>
-#include <TArrayF.h>
+//#include <TObjArray.h>
 
 class AliMUONVTrackStore;
 class AliMUONVTriggerStore;
@@ -25,6 +23,9 @@ class AliMUONVDigitStore;
 class AliMUONTriggerTrack;
 class AliMUONTrack;
 class AliMUONRecoParam;
+class AliMUONTriggerUtilities;
+class AliMpPad;
+class TVector3;
 
 class AliMUONTrackHitPattern : public TObject 
 {
@@ -32,7 +33,8 @@ public:
 
   AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
                          const AliMUONGeometryTransformer& transformer,
-                         const AliMUONVDigitStore& digitStore);
+                         const AliMUONVDigitStore& digitStore,
+                         const AliMUONTriggerUtilities* triggerUtilities);
   virtual ~AliMUONTrackHitPattern(); // Destructor
 
   void ExecuteValidation(const AliMUONVTrackStore& trackStore,
@@ -44,7 +46,7 @@ public:
                                         const AliMUONVTriggerTrackStore& triggerTrackStore,
                                         const AliMUONVTriggerStore& triggerStore) const;
 
-  UShort_t GetHitPattern(AliMUONTriggerTrack* matchedTriggerTrack) const;
+  UShort_t GetHitPattern(const AliMUONTriggerTrack* matchedTriggerTrack) const;
   
   UShort_t GetHitPattern(AliMUONTrackParam* trackParam) const;
 
@@ -56,45 +58,46 @@ protected:
                            Bool_t isMatch[2], Int_t iChamber) const;
 
   Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
-                            Float_t dpx, Float_t dpy, 
-                            const AliMUONTrackParam& trackParam) const;
+                             Float_t dpx, Float_t dpy, 
+                             const AliMUONTrackParam& trackParam) const;
 
   // Methods for hit pattern from matched trigger track
   Bool_t PerformTrigTrackMatch(UShort_t &pattern,
                               const AliMUONTriggerTrack* matchedTrigTrack) const;
   
-  Int_t FindPadMatchingTrig(Int_t &detElemId, Float_t coor[2],
-                           Bool_t isMatch[2], TArrayI nboard[2],
-                           TArrayF &zRealMatch, Float_t y11) const;
+  Bool_t FindPadMatchingTrig(const TVector3& vec11, const TVector3& vec21,
+                             Int_t matchedDetElemId[2], TObjArray& matchedPads) const;
   
-  Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
-                       Float_t xTrackAtPad, Float_t yTrackAtPad) const;
   
-  Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode) const;
+  Float_t PadMatchTrack(const AliMpPad& pad, const TVector3& trackPosAtPad) const;
+  
+  Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t foundDetElemId[2]) const;
+  
+  Bool_t PadsFromPos(const TVector3& vec11, const TVector3& vec21,
+                     Int_t detElemId, TObjArray& pads) const;
+  
+  Bool_t PosInDetElemIdLocal(TVector3& localCoor, const TVector3& globalPoint1, const TVector3& globalPoint2, Int_t detElemId) const;
   
-  void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId,
-                        Int_t cathode, Int_t localBoard[4]) const;
 
   /// Return reco parameters
   const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
   
+  Bool_t IsCloseToAccEdge(TObjArray& pads, Int_t detElemId, Float_t coor[2]) const;
+  
+  Bool_t IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode, const TVector3& vec11, const TVector3& vec21) const;
+  
 private:
   /// Not implemented
   AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
   /// Not implemented
   AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
 
-  void CheckConstants() const;
-
   const AliMUONRecoParam* fkRecoParam; //!< pointer to reco parameters
   const AliMUONGeometryTransformer& fkTransformer; //!< geometry transformer
   const AliMUONVDigitStore& fkDigitStore; //!< digitStore
+  const AliMUONTriggerUtilities* fkTriggerUtilities; //!< trigger utilities for mapping
 
   const Float_t fkMaxDistance; //!< Maximum distance for reference
-  static const Int_t fgkNcathodes=2; //!<Number of cathodes
-  static const Int_t fgkNchambers=4; //!<Number of chambers
-  static const Int_t fgkNplanes=8;   //!<Number of planes
-  static const Int_t fgkNlocations=4; //!<Number of locations
   
   ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
 };