LCOV - code coverage report
Current view: top level - MUON/MUONrec - AliMUONClusterFinderPeakCOG.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 2 50.0 %
Date: 2016-06-14 17:26:59 Functions: 1 6 16.7 %

          Line data    Source code
       1             : #ifndef ALIMUONCLUSTERFINDERPEAKCOG_H
       2             : #define ALIMUONCLUSTERFINDERPEAKCOG_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 AliMUONClusterFinderPeakCOG
      10             : /// \brief Cluster finder in MUON arm of ALICE
      11             : ///
      12             : //  Author Alexander Zinchenko, JINR Dubna; Laurent Aphecetche, SUBATECH
      13             : //
      14             : 
      15             : #include "AliMUONVClusterFinder.h"
      16             : 
      17             : #ifndef ROOT_TObjArray
      18             : #  include "TObjArray.h"
      19             : #endif
      20             : #ifndef ROOT_TVector2
      21             : #  include "TVector2.h"
      22             : #endif
      23             : 
      24             : class AliMUONPad;
      25             : 
      26             : class TH2D;
      27             : 
      28             : class AliMUONClusterFinderPeakCOG : public AliMUONVClusterFinder
      29             : {
      30             : public:
      31             :   AliMUONClusterFinderPeakCOG(Bool_t plot, AliMUONVClusterFinder* clusterFinder); // Constructor
      32             :   virtual ~AliMUONClusterFinderPeakCOG(); // Destructor
      33             : 
      34             :   /// It needs segmentation
      35           0 :   virtual Bool_t NeedSegmentation() const { return kTRUE; }
      36             : 
      37             :   using AliMUONVClusterFinder::Prepare;
      38             : 
      39             :   virtual Bool_t Prepare(Int_t detElemId, TObjArray* pads[2],
      40             :                          const AliMpArea& area, const AliMpVSegmentation* seg[2]);
      41             :   
      42             :   virtual AliMUONCluster* NextCluster();
      43             :   
      44             :   virtual void Print(Option_t* opt="") const;
      45             : 
      46             : private:
      47             :   /// Not implemented
      48             :   AliMUONClusterFinderPeakCOG(const AliMUONClusterFinderPeakCOG& rhs);
      49             :   /// Not implemented
      50             :   AliMUONClusterFinderPeakCOG& operator=(const AliMUONClusterFinderPeakCOG& rhs);
      51             : 
      52             :   Bool_t WorkOnPreCluster();
      53             : 
      54             :   /// Check precluster to simplify it (if possible), and return the simplified cluster
      55             :   AliMUONCluster* CheckPrecluster(const AliMUONCluster& cluster); 
      56             :   AliMUONCluster* CheckPreclusterTwoCathodes(AliMUONCluster* cluster); 
      57             :   
      58             :   /// Checks whether a pad and a pixel have an overlapping area.
      59             :   Bool_t Overlap(const AliMUONPad& pad, const AliMUONPad& pixel); 
      60             :   
      61             :   /// build array of pixels
      62             :   void BuildPixArray(AliMUONCluster& cluster); 
      63             :   void BuildPixArrayOneCathode(AliMUONCluster& cluster); 
      64             :   void PadOverHist(Int_t idir, Int_t ix0, Int_t iy0, AliMUONPad *pad, TH2D *h1, TH2D *h2);
      65             : 
      66             :   void RemovePixel(Int_t i);
      67             :   
      68             :   AliMUONPad* Pixel(Int_t i) const;
      69             :   
      70             :   Int_t FindLocalMaxima(TObjArray *pixArray, Int_t *localMax, Double_t *maxVal); // find local maxima 
      71             :   void  FlagLocalMax(TH2D *hist, Int_t i, Int_t j, Int_t *isLocalMax); // flag local max
      72             :   void  FindCluster(AliMUONCluster& cluster, const Int_t *localMax, Int_t iMax); // find cluster around local max
      73             :   void  PadsInXandY(AliMUONCluster& cluster, Int_t &nInX, Int_t &nInY) const; // get number of pads in X and Y
      74             : 
      75             :   void CheckOverlaps();
      76             : 
      77             : private:
      78             :   // Status flags for pads
      79             :   static const Int_t fgkZero; ///< pad "basic" state
      80             :   static const Int_t fgkMustKeep; ///< do not kill (for pixels)
      81             :   static const Int_t fgkUseForFit; ///< should be used for fit
      82             :   static const Int_t fgkOver; ///< processing is over
      83             :   static const Int_t fgkModified; ///< modified pad charge 
      84             :   static const Int_t fgkCoupled; ///< coupled pad  
      85             :   
      86             :     
      87             :   // Some constants
      88             :   static const Double_t fgkZeroSuppression; ///< average zero suppression value
      89             :   static const Double_t fgkDistancePrecision; ///< used to check overlaps and so on
      90             :   static const TVector2 fgkIncreaseSize; ///< idem
      91             :   static const TVector2 fgkDecreaseSize; ///< idem
      92             :   
      93             :   AliMUONVClusterFinder* fPreClusterFinder; //!<! the pre-clustering worker
      94             :   AliMUONCluster* fPreCluster; //!<! current pre-cluster
      95             :   TObjArray fClusterList; //!<! clusters corresponding to the current pre-cluster
      96             :   
      97             :   Int_t fEventNumber; //!<! current event being processed
      98             :   Int_t fDetElemId; //!<! current DE being processed
      99             :   Int_t fClusterNumber; //!<! current cluster number
     100             :   
     101             :   const AliMpVSegmentation *fkSegmentation[2]; //!<! new segmentation
     102             :   
     103             :   TH2D *fHistAnode; //!<! histo for peak search
     104             :   TObjArray* fPixArray; //!<! collection of pixels
     105             :   Int_t fDebug; //!<! debug level
     106             :   Bool_t fPlot; //!<! whether we should plot thing (for debug only, quite slow!)
     107             :   
     108             :   Int_t fNClusters; //!<! total number of clusters
     109             :   Int_t fNAddVirtualPads; //!<! number of clusters for which we added virtual pads
     110             :   
     111          18 :   ClassDef(AliMUONClusterFinderPeakCOG,0) // cluster finder in MUON arm of ALICE
     112             : };
     113             : 
     114             : #endif

Generated by: LCOV version 1.11