]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSMultReconstructor.h
- include option to avoid multiple reconstruction of tracklets in the
[u/mrichter/AliRoot.git] / ITS / AliITSMultReconstructor.h
CommitLineData
ac903f1b 1#ifndef ALIITSMULTRECONSTRUCTOR_H
2#define ALIITSMULTRECONSTRUCTOR_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/////////////////////////////////////////////////////////////////////////
9//
10// AliITSMultReconstructor - find clusters in the pixels (theta and
11// phi) and tracklets.
12//
13// These can be used to extract charged particles multiplcicity from the ITS.
14//
15// A tracklet consist of two ITS clusters, one in the first pixel
16// layer and one in the second. The clusters are associates if the
17// differencies in Phi (azimuth) and Zeta (longitudinal) are inside
18// a fiducial volume. In case of multiple candidates it is selected the
19// candidate with minimum distance in Phi.
20// The boolean fOnlyOneTrackletPerC2 allows to control if two clusters
21// in layer 2 can be associated to the same cluster in layer 1 or not.
22//
23/////////////////////////////////////////////////////////////////////////
24
25#include "TObject.h"
26
27class TTree;
28class TH1F;
3ef75756 29class TH2F;
30
ac903f1b 31class AliITSgeom;
32
33class AliITSMultReconstructor : public TObject
34{
35public:
36 AliITSMultReconstructor();
ddced3c8 37 virtual ~AliITSMultReconstructor();
ac903f1b 38
ac903f1b 39 void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes);
9b373e9a 40 void LoadClusterFiredChips(TTree* tree);
7b116aa1 41 void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2);
ac903f1b 42
7b116aa1 43 // Following members are set via AliITSRecoParam
44 void SetOnlyOneTrackletPerC2(Bool_t b = kTRUE) {fOnlyOneTrackletPerC2 = b;}
ac903f1b 45 void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
3ef75756 46 void SetZetaWindow(Float_t w=1.) {fZetaWindow=w;}
7b116aa1 47 void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
48 void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
49 void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
50
ac903f1b 51 Int_t GetNClustersLayer1() const {return fNClustersLay1;}
52 Int_t GetNClustersLayer2() const {return fNClustersLay2;}
53 Int_t GetNTracklets() const {return fNTracklets;}
968e8539 54 Int_t GetNSingleClusters() const {return fNSingleCluster;}
9b373e9a 55 Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];}
ac903f1b 56
57 Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];}
58 Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];}
59 Float_t* GetTracklet(Int_t n) {return fTracklets[n];}
968e8539 60 Float_t* GetCluster(Int_t n) {return fSClusters[n];}
ac903f1b 61
62 void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;}
63 void SaveHists();
3ef75756 64
ac903f1b 65protected:
3ef75756 66 AliITSMultReconstructor(const AliITSMultReconstructor& mr);
7537d03c 67 AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
ac903f1b 68
ac903f1b 69
7b116aa1 70 Float_t** fClustersLay1; // clusters in the 1st layer of ITS
71 Float_t** fClustersLay2; // clusters in the 2nd layer of ITS
72 Int_t* fDetectorIndexClustersLay1; // module index for clusters 1st ITS layer
73 Int_t* fDetectorIndexClustersLay2; // module index for clusters 2nd ITS layer
74 Bool_t* fOverlapFlagClustersLay1; // flag for clusters in the overlap regions 1st ITS layer
75 Bool_t* fOverlapFlagClustersLay2; // flag for clusters in the overlap regions 2nd ITS layer
76
77
9b373e9a 78 Float_t** fTracklets; // tracklets
79 Float_t** fSClusters; // single clusters (unassociated)
80 Bool_t* fAssociationFlag; // flag for the associations
ac903f1b 81
9b373e9a 82 Int_t fNClustersLay1; // Number of clusters (Layer1)
83 Int_t fNClustersLay2; // Number of clusters (Layer2)
84 Int_t fNTracklets; // Number of tracklets
85 Int_t fNSingleCluster; // Number of unassociated clusters
86 Short_t fNFiredChips[2]; // Number of fired chips in the two SPD layers
87
7b116aa1 88 // Following members are set via AliITSRecoParam
89 Bool_t fOnlyOneTrackletPerC2; // Allow only one tracklet per cluster in the outer layer
90 Float_t fPhiWindow; // Search window in phi
91 Float_t fZetaWindow; // Search window in eta
92 Bool_t fRemoveClustersFromOverlaps; // Option to skip clusters in the overlaps
93 Float_t fPhiOverlapCut; // Fiducial window in phi for overlap cut
94 Float_t fZetaOverlapCut; // Fiducial window in eta for overlap cut
ac903f1b 95
9b373e9a 96 Bool_t fHistOn; // Option to define and fill the histograms
ddced3c8 97
9b373e9a 98 TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets
99 TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets
100 TH1F* fhClustersDZetaAcc; // z2 - z1projected for tracklets
101 TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations
102 TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations
103 TH1F* fhClustersDZetaAll; // z2 - z1projected all the combinations
3ef75756 104
9b373e9a 105 TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations
106 TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets
107 TH2F* fhDPhiVsDZetaAll; // 2d plot for all the combination
108 TH2F* fhDPhiVsDZetaAcc; // same plot for tracklets
109
110 TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets
111 TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets
112 TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1
113 TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1
114
ac903f1b 115
116 void LoadClusterArrays(TTree* tree);
117
f606f16a 118 ClassDef(AliITSMultReconstructor,3)
ac903f1b 119};
120
121#endif