Flexible pt range for the efficiency histogramming
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackHitPattern.h
index 280d7c8..596fc46 100644 (file)
 //  Author: Diego Stocco
 
 #include <TObject.h>
-#include <TMatrixD.h>
-#include <TArrayI.h>
-#include <TArrayF.h>
-#include <TH3.h>
+//#include <TObjArray.h>
 
 class AliMUONVTrackStore;
 class AliMUONVTriggerStore;
 class AliMUONVTriggerTrackStore;
 class AliMUONTrackParam;
-class AliMUONDigitMaker;
 class AliMUONGeometryTransformer;
 class AliMUONVDigitStore;
 class AliMUONTriggerTrack;
 class AliMUONTrack;
+class AliMUONRecoParam;
+class AliMUONTriggerUtilities;
+class AliMpPad;
+class TVector3;
+class TArrayI;
 
 class AliMUONTrackHitPattern : public TObject 
 {
 public:
 
-  AliMUONTrackHitPattern(const AliMUONGeometryTransformer& transformer,
-                         const AliMUONDigitMaker& digitMaker);
+  AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
+                         const AliMUONGeometryTransformer& transformer,
+                         const AliMUONVDigitStore& digitStore,
+                         const AliMUONTriggerUtilities* triggerUtilities);
   virtual ~AliMUONTrackHitPattern(); // Destructor
 
-  void ExecuteValidation(AliMUONVTrackStore& trackStore,
+  void ExecuteValidation(const AliMUONVTrackStore& trackStore,
                         const AliMUONVTriggerTrackStore& triggerTrackStore,
                         const AliMUONVTriggerStore& triggerStore) const;
   
@@ -43,86 +46,66 @@ public:
                                         AliMUONTrackParam& trackParam,
                                         const AliMUONVTriggerTrackStore& triggerTrackStore,
                                         const AliMUONVTriggerStore& triggerStore) const;
-    
-  UShort_t GetHitPattern(AliMUONTrackParam& trackParam,
-                        AliMUONTriggerTrack* matchedTriggerTrack,
-                        AliMUONVDigitStore& digitStore) const;
-
-  void UpdateQA() const;
+  
+  UInt_t GetHitPattern(const AliMUONTrackParam& trackParam, Bool_t isTriggerTrack) const;
+  
+  UInt_t GetHitPattern(const AliMUONTriggerTrack* matchedTriggerTrack) const; // obsolete
+  UInt_t GetHitPattern(AliMUONTrackParam* trackParam) const; // obsolete
 
 protected:
   void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
   
-  Bool_t TriggerDigits(const AliMUONVTriggerStore& triggerStore, 
-                      AliMUONVDigitStore& digitStore) const;
-
-  void InitMembers();
+  Int_t GetTrackParamAtChamber(const AliMUONTrackParam& inputTrackParam, Int_t chamber,
+                               TObjArray& trackParamList, TArrayI& foundDetElemId, TObjArray& padsFromPos) const;
   
-  void SetBit(UShort_t& pattern, Int_t cathode, Int_t chamber) const;
+  Bool_t FindMatchingPads(const AliMUONTrackParam* trackParam,
+                          TArrayI& matchedDetElemId, TObjArray& pads,
+                          const AliMUONVDigitStore& digitStore, Bool_t isTriggerTrack) const;
   
-  void AddEffInfo(UShort_t& pattern, Int_t slat, Int_t effType) const;
+  Bool_t PosInDetElemIdLocal(TVector3& localCoor, const TVector3& globalPoint1, const TVector3& globalPoint2, Int_t detElemId) const;
+  
+  /// Return reco parameters
+  const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
+  
+  // THE FOLLOWING METHODS ARE OBSOLETE
   
-
   // Methods for hit pattern from tracker track
-  void FindPadMatchingTrack(AliMUONVDigitStore& digitStore,
-                           const AliMUONTrackParam& trackParam,
-                           Bool_t isMatch[2], Int_t iChamber) const;
+  void FindPadMatchingTrack(const AliMUONTrackParam& trackParam,
+                            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,
-                              AliMUONTriggerTrack *matchedTrigTrack,
-                              AliMUONVDigitStore& digitStore) const;
+  Bool_t PerformTrigTrackMatch(UInt_t &pattern, const AliMUONTriggerTrack* matchedTrigTrack) const; // obsolete
   
-  Int_t FindPadMatchingTrig(AliMUONVDigitStore& digitStore, 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; // obsolete
   
-  Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
-                       Float_t xTrackAtPad, Float_t yTrackAtPad) const;
+  Float_t PadMatchTrack(const AliMpPad& pad, const TVector3& trackPosAtPad) const; // obsolete
   
-  Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode) const;
+  Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t foundDetElemId[2]) const; // obsolete
+  
+  Bool_t PadsFromPos(const TVector3& vec11, const TVector3& vec21, Int_t detElemId, TObjArray& pads) const; // obsolete
+  
+  
+  Bool_t IsCloseToAccEdge(TObjArray& pads, Int_t detElemId, Float_t coor[2]) const; // obsolete
+  
+  Bool_t IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode, const TVector3& vec11, const TVector3& vec21) const; // obsolete
   
-  void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId,
-                        Int_t cathode, Int_t localBoard[4]) const;
-
 private:
   /// Not implemented
   AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
   /// Not implemented
   AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
 
-  void CheckConstants() const;
-  /// Get max number of strips along x
-  Int_t GetMaxX(Int_t cath) const {return (cath==0) ? 7 : 112;}
-  /// Get max number of strips along x
-  Int_t GetMaxY(Int_t cath) const {return (cath==0) ? 64 : 1;}
-
-  const AliMUONGeometryTransformer& fTransformer; //!< geometry transformer
-  const AliMUONDigitMaker& fDigitMaker; //!< pointer to digit maker
-
-  Double_t fDeltaZ; //!< distance between stations
-
-  TMatrixD* fTrigCovariance; //!< Covariance matrix 3x3 (X,Y,slopeY) for trigger tracks
-
-  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
-
-  enum {
-    kNoEff,
-    kChEff,
-    kSlatEff,
-    kBoardEff
-  };
-
-  TH3F *fPadFired[fgkNcathodes]; ///< Histo counting the fired pads
+  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 // obsolete
+  
   ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
 };