]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/AliESDresolParams.cxx
Adding TRD track from friend constainer (Alexander)
[u/mrichter/AliRoot.git] / PWG1 / AliESDresolParams.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //************************************************************************
17 //
18 //   ESD track and V0 resolution parameterization
19 //   
20 //             
21 //    Origin: Marian Ivanov marian.ivanov@cern.ch
22 //-------------------------------------------------------------------------
23
24 /*
25     Example usage:
26     
27
28 */
29
30
31 #include "TVectorD.h"
32 #include "TMath.h"
33 #include "TObjArray.h"
34 #include "AliESDresolParams.h"
35
36
37 ClassImp(AliESDresolParams)
38
39
40  AliESDresolParams*    AliESDresolParams::fgInstance = 0; //! Instance of this class (singleton implementation)
41
42
43 AliESDresolParams::AliESDresolParams() :
44   TObject(),  
45   fResolDCAyy(0),            // resolution Y parameterization
46   fResolDCAzz(0),            // resolution Z parameterization   
47   fResolDCAphi(0),           // resolution phi parameterization - pt-theta
48   fResolDCAth(0),            // resolution theta parameterization -pt-theta
49   fResolDCA1pt(0),           // resolution 1/pt parameterization - pt-theta
50   //
51   fResolCyy(0),              // DCA resolution Y parameterization - r-pt
52   fResolCzz(0),              // DCA resolution Z parameterization - r-pt
53   fResolCphi(0),             // DCA resolution phi parameterization - r-pt
54   fResolCth(0),              // DCA resolution theta parameterization - r-pt
55   fResolC1pt(0)             // DCA resolution 1/pt parameterization - r-pt
56 {
57   //
58   // Default constructor
59   //
60 }
61
62 Double_t AliESDresolParams::GetResolPrim(Int_t param, Float_t onept, Float_t tanth) const {
63   //
64   // Resolution at primary vertex
65   // simple Resolution parameterization 
66   // polynom of second order in 2D 
67   // 
68   if (!fResolDCAyy) return 0;
69   TVectorD * pvec     = fResolDCAyy;
70   if (param==1)  pvec = fResolDCAzz;
71   if (param==2)  pvec = fResolDCAphi;
72   if (param==3)  pvec = fResolDCAth;
73   if (param==4)  pvec = fResolDCA1pt;
74   TVectorD &vec = *pvec;
75   //
76   Float_t val = vec[0];
77   val+= vec[1]*TMath::Abs(onept);
78   val+= vec[2]*TMath::Abs(onept*onept);
79   val+= vec[3]*TMath::Abs(tanth);
80   val+= vec[4]*TMath::Abs(tanth*tanth);
81   val+= vec[5]*TMath::Abs(onept*tanth);
82   val*=val;
83   return val;
84 }
85
86 Double_t AliESDresolParams::GetResolR(Int_t param, Float_t onept, Float_t radius) const {
87   //
88   // simple DCA resolution parameterization
89   // polynom of second order in 2D 
90   // 
91   if (!fResolCyy) return 0;
92   TVectorD * pvec     = fResolCyy;
93   if (param==1)  pvec = fResolCzz;
94   if (param==2)  pvec = fResolCphi;
95   if (param==3)  pvec = fResolCth;
96   if (param==4)  pvec = fResolC1pt;
97   TVectorD &vec = *pvec;
98   //
99   Float_t val = vec[0];
100   val+= vec[1]*TMath::Abs(onept);
101   val+= vec[2]*TMath::Abs(radius);
102   val+= vec[3]*TMath::Abs(onept*onept);
103   val+= vec[4]*TMath::Abs(radius*radius);
104   val+= vec[5]*TMath::Abs(radius*onept);
105   val+= vec[6]*TMath::Abs(radius*radius*onept);
106   val*=val;
107   return val;
108 }
109
110 void AliESDresolParams::SetResolPrim(TObjArray* array){
111   //
112   // Set parameters - resolution at prim vertex
113   //
114   if (!array) return;  
115   if (array->At(0)) 
116     fResolDCAyy = new TVectorD(*((TVectorD*)array->At(0))); 
117   if (array->At(1)) 
118     fResolDCAzz = new TVectorD(*((TVectorD*)array->At(1))); 
119   if (array->At(2)) 
120     fResolDCAphi = new TVectorD(*((TVectorD*)array->At(2))); 
121   if (array->At(3)) 
122     fResolDCAth = new TVectorD(*((TVectorD*)array->At(3))); 
123   if (array->At(4)) 
124     fResolDCA1pt = new TVectorD(*((TVectorD*)array->At(4))); 
125 }
126
127 void AliESDresolParams::SetResolR(TObjArray* array){
128   //
129   // Set parameters - resolution at prim vertex
130   //
131   if (!array) return;  
132   if (array->At(0)) 
133     fResolCyy = new TVectorD(*((TVectorD*)array->At(0))); 
134   if (array->At(1)) 
135     fResolCzz = new TVectorD(*((TVectorD*)array->At(1))); 
136   if (array->At(2)) 
137     fResolCphi = new TVectorD(*((TVectorD*)array->At(2))); 
138   if (array->At(3)) 
139     fResolCth = new TVectorD(*((TVectorD*)array->At(3))); 
140   if (array->At(4)) 
141     fResolC1pt = new TVectorD(*((TVectorD*)array->At(4)));   
142 }
143
144
145
146