Changing once more (hopefully we get it correct this time...) the logic to trig the...
[u/mrichter/AliRoot.git] / ITS / AliITSMultReconstructor.h
index 7699c0a..da7d201 100644 (file)
@@ -5,22 +5,19 @@
 
 /* $Id$ */
 
-/////////////////////////////////////////////////////////////////////////
+//_________________________________________________________________________
 // 
-// AliITSMultReconstructor - find clusters in the pixels (theta and
-// phi) and tracklets.
-// 
-// These can be used to extract charged particles multiplcicity from the ITS.
+//        Implementation of the ITS-SPD trackleter class
 //
-// A tracklet consist of two ITS clusters, one in the first pixel
-// layer and one in the second. The clusters are associates if the 
-// differencies in Phi (azimuth) and Zeta (longitudinal) are inside 
-// a fiducial volume. In case of multiple candidates it is selected the
-// candidate with minimum distance in Phi. 
-// The boolean fOnlyOneTrackletPerC2 allows to control if two clusters 
-// in layer 2 can be associated to the same cluster in layer 1 or not.
+// It retrieves clusters in the pixels (theta and phi) and finds tracklets.
+// These can be used to extract charged particle multiplicity from the ITS.
 //
-/////////////////////////////////////////////////////////////////////////
+// A tracklet consists of two ITS clusters, one in the first pixel layer and 
+// one in the second. The clusters are associated if the differences in 
+// Phi (azimuth) and Theta (polar angle) are within fiducial windows.
+// In case of multiple candidates the candidate with minimum
+// distance is selected. 
+//_________________________________________________________________________
 
 #include "TObject.h"
 
@@ -38,11 +35,16 @@ public:
 
   void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes);
   void LoadClusterFiredChips(TTree* tree);
+  void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2);
 
+  // Following members are set via AliITSRecoParam
   void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
-  void SetZetaWindow(Float_t w=1.) {fZetaWindow=w;}
-  void SetOnlyOneTrackletPerC2(Bool_t b = kTRUE) {fOnlyOneTrackletPerC2 = b;}
-  
+  void SetThetaWindow(Float_t w=0.025) {fThetaWindow=w;}
+  void SetPhiShift(Float_t w=0.0045) {fPhiShift=w;}
+  void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
+  void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
+  void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
+
   Int_t GetNClustersLayer1() const {return fNClustersLay1;}
   Int_t GetNClustersLayer2() const {return fNClustersLay2;}
   Int_t GetNTracklets() const {return fNTracklets;}
@@ -62,11 +64,16 @@ protected:
   AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
 
   
-  Float_t**     fClustersLay1;         // clusters in the 1st layer of ITS 
-  Float_t**     fClustersLay2;         // clusters in the 2nd layer of ITS 
+  Float_t**     fClustersLay1;               // clusters in the 1st layer of ITS 
+  Float_t**     fClustersLay2;               // clusters in the 2nd layer of ITS 
+  Int_t*        fDetectorIndexClustersLay1;  // module index for clusters 1st ITS layer
+  Int_t*        fDetectorIndexClustersLay2;  // module index for clusters 2nd ITS layer
+  Bool_t*       fOverlapFlagClustersLay1;    // flag for clusters in the overlap regions 1st ITS layer
+  Bool_t*       fOverlapFlagClustersLay2;    // flag for clusters in the overlap regions 2nd ITS layer 
+
+
   Float_t**     fTracklets;            // tracklets 
   Float_t**     fSClusters;            // single clusters (unassociated)
-  Bool_t*       fAssociationFlag;      // flag for the associations 
   
   Int_t         fNClustersLay1;        // Number of clusters (Layer1)
   Int_t         fNClustersLay2;        // Number of clusters (Layer2)
@@ -74,25 +81,23 @@ protected:
   Int_t         fNSingleCluster;       // Number of unassociated clusters
   Short_t       fNFiredChips[2];       // Number of fired chips in the two SPD layers
  
-  Float_t       fPhiWindow;            // Search window in phi
-  Float_t       fZetaWindow;           // SEarch window in eta
+  // Following members are set via AliITSRecoParam
+  Float_t       fPhiWindow;                    // Search window in phi
+  Float_t       fThetaWindow;                  // Search window in theta
+  Float_t       fPhiShift;                     // Phi shift reference value (at 0.5 T) 
+  Bool_t        fRemoveClustersFromOverlaps;   // Option to skip clusters in the overlaps
+  Float_t       fPhiOverlapCut;                // Fiducial window in phi for overlap cut
+  Float_t       fZetaOverlapCut;               // Fiducial window in eta for overlap cut
 
-  Bool_t        fOnlyOneTrackletPerC2; // only one tracklet per cluster in L. 2
-  
   Bool_t        fHistOn;               // Option to define and fill the histograms 
 
-
   TH1F*         fhClustersDPhiAcc;     // Phi2 - Phi1 for tracklets 
   TH1F*         fhClustersDThetaAcc;   // Theta2 - Theta1 for tracklets 
-  TH1F*         fhClustersDZetaAcc;    // z2 - z1projected for tracklets 
   TH1F*         fhClustersDPhiAll;     // Phi2 - Phi1 all the combinations 
   TH1F*         fhClustersDThetaAll;   // Theta2 - Theta1 all the combinations
-  TH1F*         fhClustersDZetaAll;    // z2 - z1projected all the combinations
  
   TH2F*         fhDPhiVsDThetaAll;     // 2D plot for all the combinations  
   TH2F*         fhDPhiVsDThetaAcc;     // same plot for tracklets 
-  TH2F*         fhDPhiVsDZetaAll;      // 2d plot for all the combination 
-  TH2F*         fhDPhiVsDZetaAcc;      // same plot for tracklets 
 
   TH1F*         fhetaTracklets;        // Pseudorapidity distr. for tracklets 
   TH1F*         fhphiTracklets;        // Azimuthal (Phi) distr. for tracklets  
@@ -102,7 +107,7 @@ protected:
 
   void LoadClusterArrays(TTree* tree);
 
-  ClassDef(AliITSMultReconstructor,3)
+  ClassDef(AliITSMultReconstructor,6)
 };
 
 #endif