]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSMultReconstructor.h
Bug fix for HMPID bits in readout list.
[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
fa9ed8e9 6//_________________________________________________________________________
ac903f1b 7//
fa9ed8e9 8// Implementation of the ITS-SPD trackleter class
ac903f1b 9//
fa9ed8e9 10// It retrieves clusters in the pixels (theta and phi) and finds tracklets.
11// These can be used to extract charged particle multiplicity from the ITS.
ac903f1b 12//
fa9ed8e9 13// A tracklet consists of two ITS clusters, one in the first pixel layer and
14// one in the second. The clusters are associated if the differences in
15// Phi (azimuth) and Theta (polar angle) are within fiducial windows.
16// In case of multiple candidates the candidate with minimum
17// distance is selected.
18//_________________________________________________________________________
1f9831ab 19#include "AliTrackleter.h"
ac903f1b 20
1f9831ab 21class TBits;
ac903f1b 22class TTree;
23class TH1F;
3ef75756 24class TH2F;
1f9831ab 25class AliITSDetTypeRec;
ac903f1b 26class AliITSgeom;
1f9831ab 27class AliESDEvent;
28class AliESDtrack;
29class AliVertex;
30class AliMultiplicity;
ac903f1b 31
1f9831ab 32class AliITSMultReconstructor : public AliTrackleter
ac903f1b 33{
34public:
1f9831ab 35 //
36 enum {kClTh,kClPh,kClZ,kClMC0,kClMC1,kClMC2,kClNPar};
37 enum {kTrTheta,kTrPhi,kTrDPhi,kTrDTheta,kTrLab1,kTrLab2,kClID1,kClID2,kTrNPar};
38 enum {kSCTh,kSCPh,kSCID,kSCNPar};
39 enum {kITSTPC,kITSSAP,kITSTPCBit=BIT(kITSTPC),kITSSAPBit=BIT(kITSSAP)}; // RS
ac903f1b 40 AliITSMultReconstructor();
ddced3c8 41 virtual ~AliITSMultReconstructor();
ac903f1b 42
1f9831ab 43 void Reconstruct(AliESDEvent* esd, TTree* treeRP);
44 void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes); // old reconstructor invocation
45 void FindTracklets(const Float_t* vtx);
9b373e9a 46 void LoadClusterFiredChips(TTree* tree);
7b116aa1 47 void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2);
1f9831ab 48 void FlagTrackClusters(const AliESDtrack* track);
49 void FlagIfPrimary(AliESDtrack* track, const AliVertex* vtx);
50 void ProcessESDTracks();
51
52 void CreateMultiplicityObject();
53 //
7b116aa1 54 // Following members are set via AliITSRecoParam
ac903f1b 55 void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
7284b2b2 56 void SetThetaWindow(Float_t w=0.025) {fThetaWindow=w;}
fa9ed8e9 57 void SetPhiShift(Float_t w=0.0045) {fPhiShift=w;}
7b116aa1 58 void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
59 void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
60 void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
61
ac903f1b 62 Int_t GetNClustersLayer1() const {return fNClustersLay1;}
63 Int_t GetNClustersLayer2() const {return fNClustersLay2;}
64 Int_t GetNTracklets() const {return fNTracklets;}
968e8539 65 Int_t GetNSingleClusters() const {return fNSingleCluster;}
9b373e9a 66 Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];}
ac903f1b 67
1f9831ab 68 Float_t* GetClusterLayer1(Int_t n) {return &fClustersLay1[n*kClNPar];}
69 Float_t* GetClusterLayer2(Int_t n) {return &fClustersLay2[n*kClNPar];}
70
ac903f1b 71 Float_t* GetTracklet(Int_t n) {return fTracklets[n];}
968e8539 72 Float_t* GetCluster(Int_t n) {return fSClusters[n];}
ac903f1b 73
74 void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;}
75 void SaveHists();
3ef75756 76
1f9831ab 77 AliITSDetTypeRec *GetDetTypeRec() const {return fDetTypeRec;}
78 void SetDetTypeRec(AliITSDetTypeRec *ptr){fDetTypeRec = ptr;}
79
ac903f1b 80protected:
3ef75756 81 AliITSMultReconstructor(const AliITSMultReconstructor& mr);
7537d03c 82 AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
1f9831ab 83 AliITSDetTypeRec* fDetTypeRec; //! pointer to DetTypeRec
84 AliESDEvent* fESDEvent; //! pointer to ESD event
85 TTree* fTreeRP; //! ITS recpoints
ac903f1b 86
1f9831ab 87 Char_t* fUsedClusLay1; // RS: flag of clusters usage in ESD tracks: 0=unused, bit0=TPC/ITS+ITSSA, bit1=ITSSA_Pure
88 Char_t* fUsedClusLay2; // RS: flag of clusters usage in ESD tracks: 0=unused, bit0=TPC/ITS+ITSSA, bit1=ITSSA_Pure
89
90 Float_t* fClustersLay1; // clusters in the 1st layer of ITS
91 Float_t* fClustersLay2; // clusters in the 2nd layer of ITS
7b116aa1 92 Int_t* fDetectorIndexClustersLay1; // module index for clusters 1st ITS layer
93 Int_t* fDetectorIndexClustersLay2; // module index for clusters 2nd ITS layer
94 Bool_t* fOverlapFlagClustersLay1; // flag for clusters in the overlap regions 1st ITS layer
95 Bool_t* fOverlapFlagClustersLay2; // flag for clusters in the overlap regions 2nd ITS layer
96
9b373e9a 97 Float_t** fTracklets; // tracklets
98 Float_t** fSClusters; // single clusters (unassociated)
ac903f1b 99
9b373e9a 100 Int_t fNClustersLay1; // Number of clusters (Layer1)
101 Int_t fNClustersLay2; // Number of clusters (Layer2)
102 Int_t fNTracklets; // Number of tracklets
103 Int_t fNSingleCluster; // Number of unassociated clusters
104 Short_t fNFiredChips[2]; // Number of fired chips in the two SPD layers
105
7b116aa1 106 // Following members are set via AliITSRecoParam
7b116aa1 107 Float_t fPhiWindow; // Search window in phi
fa9ed8e9 108 Float_t fThetaWindow; // Search window in theta
109 Float_t fPhiShift; // Phi shift reference value (at 0.5 T)
7b116aa1 110 Bool_t fRemoveClustersFromOverlaps; // Option to skip clusters in the overlaps
111 Float_t fPhiOverlapCut; // Fiducial window in phi for overlap cut
112 Float_t fZetaOverlapCut; // Fiducial window in eta for overlap cut
ac903f1b 113
9b373e9a 114 Bool_t fHistOn; // Option to define and fill the histograms
ddced3c8 115
9b373e9a 116 TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets
117 TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets
9b373e9a 118 TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations
119 TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations
3ef75756 120
9b373e9a 121 TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations
122 TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets
9b373e9a 123
124 TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets
125 TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets
126 TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1
127 TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1
128
ac903f1b 129
130 void LoadClusterArrays(TTree* tree);
131
1f9831ab 132 ClassDef(AliITSMultReconstructor,7)
ac903f1b 133};
134
135#endif