reco update
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSeed.cxx
1 #include <TString.h>
2 #include <TMath.h>
3 #include "AliITSUSeed.h"
4 using namespace TMath;
5
6 ClassImp(AliITSUSeed)
7
8 //_________________________________________________________________________
9 AliITSUSeed::AliITSUSeed() 
10 : fHitsPattern(0)
11   ,fClID(0)
12   ,fChi2Glo(0)
13   ,fChi2Cl(0)
14   ,fParent(0)
15 {
16   // def c-tor
17 }
18
19 //_________________________________________________________________________
20 AliITSUSeed::~AliITSUSeed()
21 {
22   // d-rot
23 }
24
25 //_________________________________________________________________________
26 AliITSUSeed::AliITSUSeed(const AliITSUSeed& src) 
27   :AliExternalTrackParam(src)
28   ,fHitsPattern(src.fHitsPattern)
29   ,fClID(src.fClID)
30   ,fChi2Glo(src.fChi2Glo)
31   ,fChi2Cl(src.fChi2Cl)
32   ,fParent(src.fParent) 
33 {
34   // def c-tor
35 }
36
37 //_________________________________________________________________________
38 AliITSUSeed &AliITSUSeed::operator=(const AliITSUSeed& src) 
39 {
40   // def c-tor
41   if (this == &src) return *this;
42   fClID        = src.fClID;
43   fHitsPattern = src.fHitsPattern;
44   fChi2Glo     = src.fChi2Glo;
45   fChi2Cl      = src.fChi2Cl;
46   fParent      = src.fParent;
47   AliExternalTrackParam::operator=(src);
48   return *this;
49 }
50
51 //_________________________________________________________________________
52 void AliITSUSeed::Print(Option_t* opt) const
53 {
54   // print seed info
55   int lr,cl = GetLrCluster(lr);
56   printf("%cLr%d Cl:%4d Chi2Glo:%7.2f(%7.2f) Chi2Cl:",IsKilled() ? '-':' ',
57          lr,cl,GetChi2Glo(),GetChi2GloNrm());
58   cl<0 ? printf("   NA  ") : printf("%7.2f",GetChi2Cl());
59   printf(" |"); 
60   for (int i=0;i<=12;i++) printf("%c",HasClusterOnLayer(i) ? '+':'-'); printf("|\n");
61   TString opts = opt; opts.ToLower();
62   if (opts.Contains("etp")) AliExternalTrackParam::Print();
63   if (opts.Contains("parent") && GetParent()) GetParent()->Print(opt);
64 }
65
66 //______________________________________________________________________________
67 Float_t AliITSUSeed::GetChi2GloNrm() const
68 {
69   int ndf = 2*GetNLayersHit() - 5;
70   return ndf>0 ? fChi2Glo/ndf : fChi2Glo;
71 }
72
73
74 //______________________________________________________________________________
75 Int_t AliITSUSeed::Compare(const TObject* obj)  const
76 {
77   // compare clusters accodring to specific mode
78   const AliITSUSeed* sd = dynamic_cast<const AliITSUSeed*>(obj);
79   const Float_t kTol = 1e-5;
80   if (!IsKilled() && sd->IsKilled()) return -1;
81   if ( IsKilled() &&!sd->IsKilled()) return  1;
82   //
83   if      (GetChi2Glo()+kTol<sd->GetChi2Glo()) return -1;
84   else if (GetChi2Glo()-kTol>sd->GetChi2Glo()) return  1;
85   return 0;
86 }
87
88 //______________________________________________________________________________
89 Bool_t AliITSUSeed::IsEqual(const TObject* obj)  const
90 {
91   // compare clusters accodring to specific mode
92   const AliITSUSeed* sd = dynamic_cast<const AliITSUSeed*>(obj);
93   const Float_t kTol = 1e-5;
94   if (IsKilled() != sd->IsKilled()) return kFALSE;
95   return Abs(GetChi2Glo() - sd->GetChi2Glo())<kTol;
96 }