]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONClusterFinderVS.h
Modifications needed by the HBT analysis (P.Skowronski)
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterFinderVS.h
index f5182950e4ee901f3b6b01051713e8603ee1a891..6d432dfc867013bbdeed6bfbbeb3c0f71959226b 100644 (file)
@@ -8,43 +8,32 @@
 ////////////////////////////////////////////////
 //  MUON Cluster Finder Class                 //
 ////////////////////////////////////////////////
-#include "AliMUONHitMap.h"
-#include "TF1.h"
-#include "AliMUONClusterFinder.h"
-#include "AliMUONSegmentation.h"
 
-class AliMUONClusterFinderVS : 
- public AliMUONClusterFinder
+#include <TObject.h>
+
+class AliMUONClusterInput;
+class AliMUONHitMapA1;
+class AliMUONResponse;
+class AliSegmentation;
+class TClonesArray;
+class AliMUONRawCluster;
+class AliMUONDigit;
+
+
+class AliMUONClusterFinderVS : public TObject 
 {
  public:
-    AliMUONClusterFinderVS
-       (AliMUONSegmentation *segmentation1, AliMUONSegmentation *segmentation2,
-        AliMUONResponse *response,
-        TClonesArray *digits1, TClonesArray *digits2,
-        Int_t chamber);
     AliMUONClusterFinderVS();
     AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
     virtual ~AliMUONClusterFinderVS(){;}
-// Set segmentation model    
-    virtual void SetSegmentation(AliMUONSegmentation *seg1, AliMUONSegmentation *seg2)
-       {
-       fSegmentation[0]=seg1;
-       fSegmentation[1]=seg2;
-       }
-// Set pointer to digits
-    virtual void SetDigits(TClonesArray *MUONdigits1, TClonesArray *MUONdigits2);
-    
-// Get Segmentation
-    virtual AliMUONSegmentation*  Segmentation(Int_t i);
-// Get Number of Digits
-    virtual Int_t NDigits(Int_t i);
-// Get Digits
-    virtual TClonesArray* Digits(Int_t i);
-// Get HitMap
-    virtual AliMUONHitMap* HitMap(Int_t i);
-    
+// Decluster ?
+    virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;}
+// Set max. cluster size ; bigger clusters will deconvoluted
+    virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;}
+// Set max. number of pads per local cluster
+    virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;}
 // Search for raw clusters
-    virtual void FindRawClusters();
+    virtual void  FindRawClusters();
 // Find cluster    
     virtual void  FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c);
 // Decluster
@@ -53,50 +42,55 @@ class AliMUONClusterFinderVS :
     virtual void   SplitByLocalMaxima(AliMUONRawCluster *cluster);
     virtual void   FindLocalMaxima(AliMUONRawCluster *cluster);
     virtual void   Split(AliMUONRawCluster * cluster);
-    
 //  Perform Double Mathieson Fit
-    Bool_t DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
+    Bool_t  DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
     Float_t CombiDoubleMathiesonFit(AliMUONRawCluster *c);
     Float_t SingleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
     Float_t CombiSingleMathiesonFit(AliMUONRawCluster *c);    
 //  Build up full cluster information    
     virtual void   FillCluster(AliMUONRawCluster *cluster, Int_t flag, Int_t cath);
     virtual void   FillCluster(AliMUONRawCluster *cluster, Int_t cath);
-    virtual void   FillCluster(AliMUONRawCluster *cluster) {
-       FillCluster(cluster,1,0);}
-    // Add a new raw cluster    
+    virtual void   FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);}
+// Add a new raw cluster    
     virtual void AddRawCluster(const AliMUONRawCluster cluster);
-    
-    virtual void SetTracks(Int_t t1, Int_t t2) 
-       {
-           fTrack[0]=t1;
-           fTrack[1]=t2;
-       }
-    
-    virtual Bool_t TestTrack(Int_t t) {
-       if (fTrack[0]==-1 || fTrack[1]==-1) {
-           return kTRUE;
-       } else if (t==fTrack[0] || t==fTrack[1]) {
-           return kTRUE;
-       } else {
-           return kFALSE;
-       }
-    }
-    //  Assignment operator
+//  Set tracks for debugging    
+    virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;}
+    virtual Bool_t TestTrack(Int_t t);
+//  Assignment operator
     AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
-protected:
-    TClonesArray*           fDigits2;            // Digits
-    Int_t                   fNdigits2;           // Number of Digits    
-    AliMUONHitMapA1*        fHitMap2;            // Hit Map
+//  debug level
+    void SetDebugLevel(Int_t level) {fDebugLevel = level;}
+    void SetGhostChi2Cut(Float_t cut) {fGhostChi2Cut = cut;}
+
+ protected:
+    AliMUONClusterInput*    fInput;              // ! AliMUONClusterInput instance
+    AliMUONHitMapA1*        fHitMap[2];          // Hit Maps for cathode 1 and 2
+    AliSegmentation*        fSeg[2];             // Segmentations for cathode 1 and 2
+    
+// Configuration    
+    Int_t                   fDeclusterFlag;      // flag for declusterin
+    Int_t                   fClusterSize;        // cluster size 
+    Int_t                   fNperMax;            // Maximum number of pads per peak
+    Float_t                 fGhostChi2Cut;       // Cut in charge matching chi2
+                                                // (2 degrees of freedom)
+                                                 // Used by ghost removal
+// Current decluster result    
+    Int_t                   fMul[2];             // current multiplicity
+    Int_t                   fNPeaks;             // number of local maxima
+    Int_t                   fNRawClusters;       // Number of Raw Clusters
+// Local data store    
     AliMUONDigit*           fDig[100][2];        // current list of digits 
     Int_t                   fIx[100][2];         // current list of x-pad-coord.
     Int_t                   fIy[100][2];         // current list of y-pad-coord.
     Float_t                 fX[100][2];          // current list of x-coord.
     Float_t                 fY[100][2];          // current list of y-coord.
+    Float_t                 fZ[100][2];          // current list of z-coord.
     Int_t                   fIndLocal[100][2];   // indices of local maxima
     Int_t                   fNLocal[2];          // Number of local maxima
     Int_t                   fQ[100][2];          // current list of charges
-    Int_t                   fMul[2];             // current multiplicity
+    Float_t                 fZPlane;             // currenz z-plane position
+    Int_t                   fSector;             // current sector
+    
 // Current Fit
     Double_t                 fXFit[2];         // x-coordinate
     Double_t                 fYFit[2];         // y-coordinate
@@ -110,6 +104,8 @@ protected:
 // Selected track for debugging
     Int_t                    fTrack[2];        // Only digits with main contributions from these tracks are
                                                // considered 
+    Int_t                    fDebugLevel;      // prinout control
+
 //  Return pointer to raw clusters    
     ClassDef(AliMUONClusterFinderVS,1) //Class for clustering and reconstruction of space points
 };
@@ -124,3 +120,8 @@ protected:
 
 
 
+
+
+
+
+