]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSMultReconstructor.h
Correct formula for phi, in case of current local X <0, in GetLocalXat and GetPhiZat
[u/mrichter/AliRoot.git] / ITS / AliITSMultReconstructor.h
index ea2b1f313e24e9460e531366fb9b967783538190..943e241197b3cda2b116e033fc8881633d760a69 100644 (file)
 
 class TTree;
 class TH1F;
-class TH2F;
+class TH2F; 
+
 class AliITSgeom;
 
 class AliITSMultReconstructor : public TObject 
 {
 public:
   AliITSMultReconstructor();
-
-  void SetGeometry(AliITSgeom* geo) {fGeometry = geo;}
+  virtual ~AliITSMultReconstructor();
 
   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 SetOnlyOneTrackletPerC2(Bool_t b = kTRUE) {fOnlyOneTrackletPerC2 = b;}
   void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
-  void SetZetaWindow(Float_t w=0.1) {fZetaWindow=w;}
-  void SetOnlyOneTrackletPerC2(Float_t b = kFALSE) {fOnlyOneTrackletPerC2 = b;}
-  
+  void SetZetaWindow(Float_t w=1.) {fZetaWindow=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;}
+  Int_t GetNSingleClusters() const {return fNSingleCluster;}
+  Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];}
 
   Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];}
   Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];}
   Float_t* GetTracklet(Int_t n) {return fTracklets[n];}
+  Float_t* GetCluster(Int_t n) {return fSClusters[n];}
 
   void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;}
   void SaveHists();
+
 protected:
+  AliITSMultReconstructor(const AliITSMultReconstructor& mr);
+  AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
 
-  AliITSgeom*   fGeometry;            // ITS geometry
   
-  Float_t**     fClustersLay1;        // clusters in the 1st layer of ITS 
-  Float_t**     fClustersLay2;        // clusters in the 2nd layer of ITS 
-  Float_t**     fTracklets;           // tracklets 
-  Bool_t*       fAssociationFlag;     // flag for the associations 
-  
-  Int_t         fNClustersLay1; // Number of clusters (Layer1)
-  Int_t         fNClustersLay2; // Number of clusters (Layer2)
-  Int_t         fNTracklets;    // Number of tracklets
+  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       fPhiWindow;     // Search window in phi
-  Float_t       fZetaWindow;    // SEarch window in eta
 
-  Bool_t        fOnlyOneTrackletPerC2; // only one tracklet per cluster in layer 2?
+  Float_t**     fTracklets;            // tracklets 
+  Float_t**     fSClusters;            // single clusters (unassociated)
+  Bool_t*       fAssociationFlag;      // flag for the associations 
   
-  Bool_t        fHistOn;
-
-  TH1F*         fhClustersDPhi;
-  TH1F*         fhClustersDTheta;
-  TH1F*         fhClustersDZeta;
+  Int_t         fNClustersLay1;        // Number of clusters (Layer1)
+  Int_t         fNClustersLay2;        // Number of clusters (Layer2)
+  Int_t         fNTracklets;           // Number of tracklets
+  Int_t         fNSingleCluster;       // Number of unassociated clusters
+  Short_t       fNFiredChips[2];       // Number of fired chips in the two SPD layers
+  // Following members are set via AliITSRecoParam
+  Bool_t        fOnlyOneTrackletPerC2;         // Allow only one tracklet per cluster in the outer layer
+  Float_t       fPhiWindow;                    // Search window in phi
+  Float_t       fZetaWindow;                   // Search window in eta
+  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        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;
-  TH2F*         fhDPhiVsDThetaAcc;
+  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  
+  TH1F*         fhetaClustersLay1;     // Pseudorapidity distr. for Clusters L. 1
+  TH1F*         fhphiClustersLay1;     // Azimuthal (Phi) distr. for Clusters L. 1 
+
 
   void LoadClusterArrays(TTree* tree);
 
-  ClassDef(AliITSMultReconstructor,0)
+  ClassDef(AliITSMultReconstructor,4)
 };
 
 #endif