Changing once more (hopefully we get it correct this time...) the logic to trig 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
fa9ed8e9 8//_________________________________________________________________________
ac903f1b 9//
fa9ed8e9 10// Implementation of the ITS-SPD trackleter class
ac903f1b 11//
fa9ed8e9 12// It retrieves clusters in the pixels (theta and phi) and finds tracklets.
13// These can be used to extract charged particle multiplicity from the ITS.
ac903f1b 14//
fa9ed8e9 15// A tracklet consists of two ITS clusters, one in the first pixel layer and
16// one in the second. The clusters are associated if the differences in
17// Phi (azimuth) and Theta (polar angle) are within fiducial windows.
18// In case of multiple candidates the candidate with minimum
19// distance is selected.
20//_________________________________________________________________________
ac903f1b 21
22#include "TObject.h"
23
24class TTree;
25class TH1F;
3ef75756 26class TH2F;
27
ac903f1b 28class AliITSgeom;
29
30class AliITSMultReconstructor : public TObject
31{
32public:
33 AliITSMultReconstructor();
ddced3c8 34 virtual ~AliITSMultReconstructor();
ac903f1b 35
ac903f1b 36 void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes);
9b373e9a 37 void LoadClusterFiredChips(TTree* tree);
7b116aa1 38 void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2);
ac903f1b 39
7b116aa1 40 // Following members are set via AliITSRecoParam
ac903f1b 41 void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
7284b2b2 42 void SetThetaWindow(Float_t w=0.025) {fThetaWindow=w;}
fa9ed8e9 43 void SetPhiShift(Float_t w=0.0045) {fPhiShift=w;}
7b116aa1 44 void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
45 void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
46 void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
47
ac903f1b 48 Int_t GetNClustersLayer1() const {return fNClustersLay1;}
49 Int_t GetNClustersLayer2() const {return fNClustersLay2;}
50 Int_t GetNTracklets() const {return fNTracklets;}
968e8539 51 Int_t GetNSingleClusters() const {return fNSingleCluster;}
9b373e9a 52 Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];}
ac903f1b 53
54 Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];}
55 Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];}
56 Float_t* GetTracklet(Int_t n) {return fTracklets[n];}
968e8539 57 Float_t* GetCluster(Int_t n) {return fSClusters[n];}
ac903f1b 58
59 void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;}
60 void SaveHists();
3ef75756 61
ac903f1b 62protected:
3ef75756 63 AliITSMultReconstructor(const AliITSMultReconstructor& mr);
7537d03c 64 AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
ac903f1b 65
ac903f1b 66
7b116aa1 67 Float_t** fClustersLay1; // clusters in the 1st layer of ITS
68 Float_t** fClustersLay2; // clusters in the 2nd layer of ITS
69 Int_t* fDetectorIndexClustersLay1; // module index for clusters 1st ITS layer
70 Int_t* fDetectorIndexClustersLay2; // module index for clusters 2nd ITS layer
71 Bool_t* fOverlapFlagClustersLay1; // flag for clusters in the overlap regions 1st ITS layer
72 Bool_t* fOverlapFlagClustersLay2; // flag for clusters in the overlap regions 2nd ITS layer
73
74
9b373e9a 75 Float_t** fTracklets; // tracklets
76 Float_t** fSClusters; // single clusters (unassociated)
ac903f1b 77
9b373e9a 78 Int_t fNClustersLay1; // Number of clusters (Layer1)
79 Int_t fNClustersLay2; // Number of clusters (Layer2)
80 Int_t fNTracklets; // Number of tracklets
81 Int_t fNSingleCluster; // Number of unassociated clusters
82 Short_t fNFiredChips[2]; // Number of fired chips in the two SPD layers
83
7b116aa1 84 // Following members are set via AliITSRecoParam
7b116aa1 85 Float_t fPhiWindow; // Search window in phi
fa9ed8e9 86 Float_t fThetaWindow; // Search window in theta
87 Float_t fPhiShift; // Phi shift reference value (at 0.5 T)
7b116aa1 88 Bool_t fRemoveClustersFromOverlaps; // Option to skip clusters in the overlaps
89 Float_t fPhiOverlapCut; // Fiducial window in phi for overlap cut
90 Float_t fZetaOverlapCut; // Fiducial window in eta for overlap cut
ac903f1b 91
9b373e9a 92 Bool_t fHistOn; // Option to define and fill the histograms
ddced3c8 93
9b373e9a 94 TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets
95 TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets
9b373e9a 96 TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations
97 TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations
3ef75756 98
9b373e9a 99 TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations
100 TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets
9b373e9a 101
102 TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets
103 TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets
104 TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1
105 TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1
106
ac903f1b 107
108 void LoadClusterArrays(TTree* tree);
109
fa9ed8e9 110 ClassDef(AliITSMultReconstructor,6)
ac903f1b 111};
112
113#endif