]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSUTrackCond.h
Coverity fixes
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUTrackCond.h
CommitLineData
3c18eefd 1#ifndef ALIITSUTRACKCOND_H
2#define ALIITSUTRACKCOND_H
3
4#include <TObject.h>
5#include <TArrayS.h>
6
7//------------------------------------------------------------------------------
8//
9// This class defines a set of hit patterns (conditions) to consider the track reconstructable
10// Each condidition (few consequitive elements from fConditions array) is set of bit patterns,
11// with each element of condition defining a group of layers which must be present in the tracks.
12// For instance, if we require the track to have contributions from
13// {lr0 or lr1 or lr2} AND {lr2 or lr 3 or lr 4} AND {lr5 or lr6} then the condition should
14// be {BIT(0)|BIT(1)|BIT(2), BIT(2)|BIT(3)|BIT(4), BIT(5)|BIT(6)}.
15// Additionally, each condition may request min number of hits to be present
16//
17// Each AliITSUTrackCond should correspond to single track finding pass and may contain multiple
18// conditions. To consider the track reconstructable it is enough to satisfy 1 condition
19//
20//------------------------------------------------------------------------------
21
22
23class AliITSUTrackCond : public TObject
24{
25 public:
26 enum {kCondStart,kNGroups,kMinClus,kNAuxSz};
6cd80116 27 //
3c18eefd 28 AliITSUTrackCond(Int_t nLayers=0);
29 AliITSUTrackCond(const AliITSUTrackCond& src);
30 AliITSUTrackCond &operator=(const AliITSUTrackCond& src);
31
32 ~AliITSUTrackCond() {}
33
38997c3c 34 void SetNLayers(Int_t nl);
c03e4f8a 35 void SetClSharing(Int_t lr, Char_t v=0) {fClSharing[lr] = v;}
38997c3c 36 void SetMaxBranches(Int_t lr, Int_t mb) {fMaxBranches[lr] = mb;}
37 void SetMaxCandidates(Int_t lr, Int_t nc) {fMaxCandidates[lr] = nc;}
3c18eefd 38 void SetID(Int_t id) {SetUniqueID(id);}
39 void AddNewCondition(Int_t minClusters);
40 void AddGroupPattern(UShort_t patt);
41
42 Int_t GetID() const {return GetUniqueID();}
38997c3c 43 Int_t GetMaxBranches(Int_t lr) const {return fMaxBranches[lr];}
44 Int_t GetMaxCandidates(Int_t lr) const {return fMaxCandidates[lr];}
3c18eefd 45 Int_t GetNConditions() const {return fNConditions;}
46 UShort_t GetGroup(Int_t condID,Int_t grID) const {return fConditions[fAuxData[condID*kNAuxSz+kCondStart]+grID];}
c8d1f258 47 Bool_t CheckPattern(UShort_t patt) const;
3c18eefd 48 //
49 virtual void Print(Option_t* option = "") const;
50
9cdcba2c 51 void SetMaxITSTPCMatchChi2(Float_t v) {fMaxITSTPCMatchChi2 = v;}
52 void SetMaxITSSAChi2(Float_t v) {fMaxITSSAChi2 = v;}
ee54014a 53 void SetMaxTr2ClChi2(Int_t lr, Float_t v) {fMaxTr2ClChi2[lr] = v;}
54 void SetMissPenalty(Int_t lr, Float_t v) {fMissPenalty[lr] = v;}
55 void SetNSigmaRoadY(Int_t lr, Float_t v) {fNSigmaRoadY[lr] = v;}
56 void SetNSigmaRoadZ(Int_t lr, Float_t v) {fNSigmaRoadZ[lr] = v;}
3c18eefd 57 //
9cdcba2c 58 Float_t GetMaxITSTPCMatchChi2() const {return fMaxITSTPCMatchChi2;}
59 Float_t GetMaxITSSAChi2() const {return fMaxITSSAChi2;}
c03e4f8a 60 Char_t GetClSharing(Int_t lr) const {return fClSharing[lr];}
ee54014a 61 Float_t GetMissPenalty(Int_t lr) const {return fMissPenalty[lr];}
62 Float_t GetMaxTr2ClChi2(Int_t lr) const {return fMaxTr2ClChi2[lr];}
63 Float_t GetNSigmaRoadY(Int_t lr) const {return fNSigmaRoadY[lr];}
64 Float_t GetNSigmaRoadZ(Int_t lr) const {return fNSigmaRoadZ[lr];}
65 Bool_t IsLayerExcluded(Int_t lr) const {return GetMaxTr2ClChi2(lr)<=0;}
66 //
67 void Init();
68 Bool_t IsInitDone() const {return fInitDone;}
69 //
70 protected:
71 //
72 Bool_t fInitDone; // initialization flag
38997c3c 73 Int_t fNLayers; // total number of layers
9cdcba2c 74 Float_t fMaxITSTPCMatchChi2; // max chi2 for ITS/TPC matching
75 Float_t fMaxITSSAChi2; // max chi2 for ITS standalone fit (backward)
c03e4f8a 76 Char_t* fClSharing; // [fNLayers] is cluster sharing allowed
38997c3c 77 Short_t* fMaxBranches; // [fNLayers] max allowed branches per seed on each layer
78 Short_t* fMaxCandidates; // [fNLayers] max allowed candidates per TPC seed on each layer
ee54014a 79 Float_t* fMaxTr2ClChi2; // [fNLayers] max track-to-cluster chi2
80 Float_t* fMissPenalty; // [fNLayers] chi2 penalty for missing hit on the layer
81 Float_t* fNSigmaRoadY; // [fNLayers] number of sigmas in Y
82 Float_t* fNSigmaRoadZ; // [fNLayers] number of sigmas in Z
83 //
3c18eefd 84 Short_t fNConditions; // number of conditions defined
38997c3c 85 TArrayS fConditions; // fNConditions set of conditions
3c18eefd 86 TArrayS fAuxData; // condition beginning (1st group), n groups, min clus
87 //
c03e4f8a 88 static Char_t fgkClSharing; // def cl.sharing allowed level
ee54014a 89 static Int_t fgkMaxBranches; // def max number of branches per seed on current layer
90 static Int_t fgkMaxCandidates; // def max number of total candidates on current layer
91 static Float_t fgkMaxTr2ClChi2; // def track-to-cluster chi2 cut
92 static Float_t fgkMissPenalty; // penalty for missing cluster
9cdcba2c 93 static Float_t fgkMaxMatchChi2; // max acceptable matching chi2
94 static Float_t fgkMaxITSSAChi2; // max acceptable standalone ITS backward fit chi2
ee54014a 95 //
9cdcba2c 96 ClassDef(AliITSUTrackCond,4) // set of requirements on track hits pattern
3c18eefd 97};
98
99
100
101#endif