FairRoot/PandaRoot
PndFTSCAGBHit.cxx
Go to the documentation of this file.
1 // $Id: PndFTSCAGBHit.cxx,v 1.8 2016/12/11 11:54:24 mpugach Exp $
2 //***************************************************************************
3 // This file is property of and copyright by the ALICE HLT Project *
4 // ALICE Experiment at CERN, All rights reserved. *
5 // *
6 // Primary Authors: Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de> *
7 // Ivan Kisel <kisel@kip.uni-heidelberg.de> *
8 // for The ALICE HLT Project. *
9 // *
10 // Developed by: Igor Kulakov <I.Kulakov@gsi.de> *
11 // Mykhailo Pugach <M.Pugach@gsi.de> *
12 // Maksym Zyzak <M.Zyzak@gsi.de> *
13 // *
14 // Permission to use, copy, modify and distribute this software and its *
15 // documentation strictly for non-commercial purposes is hereby granted *
16 // without fee, provided that the above copyright notice appears in all *
17 // copies and that both the copyright notice and this permission notice *
18 // appear in the supporting documentation. The authors make no claims *
19 // about the suitability of this software for any purpose. It is *
20 // provided "as is" without express or implied warranty. *
21 //***************************************************************************
22 
23 #include "PndFTSCAGBHit.h"
24 #include "PndFTSCAMath.h"
25 #include "PndFTSCAParameters.h"
26 #include "PndFTSCADef.h"
27 
28 void PndFTSCAGBHit::GetLocalX0X1X2( float& x0, float& x1, float &x2 ) const {
29  double x0_, x1_, x2_;
30  PndFTSCAParameters::GlobalToCALocal( fX, fY, fZ, fPhi, x0_, x1_, x2_ );
31  x0 = x0_;
32  x1 = x1_;
33  x2 = x2_;
34 }
35 
37 {
38 #ifdef STAR_HFT
39  out << a.fX << " " << a.fY << " " << a.fZ << std::endl
40  << a.fErr2X1 << " " << 0 << " " << a.fErr2X2 << std::endl
41 #elif defined(PANDA_STT) || defined(PANDA_FTS)
42  out << a.fX << " " << a.fY << " " << a.fZ << " " << a.fR << std::endl;
43  out << a.fC[0][0] << " " << a.fC[0][1] << " " << a.fC[0][2] << std::endl;// in global c.s.!
44  out << a.fC[1][0] << " " << a.fC[1][1] << " " << a.fC[1][2] << std::endl;
45  out << a.fC[2][0] << " " << a.fC[2][1] << " " << a.fC[2][2] << std::endl;
46  out << a.fErr2R << std::endl;
47  out << a.fTubeR << " " << a.fHalfLength << std::endl;
48  out << a.fEX << " "<< a.fEY <<" " << a.fEZ <<std::endl
49 #else
50  out << a.fX << " " << a.fY << " " << a.fZ << std::endl
51  << a.fErr2X1 << " " << a.fErrX12 << " " << a.fErr2X2 << std::endl
52 #endif
53  << a.fIRow << " " << a.fID << " " << -a.fPhi << std::endl;
54  return out;
55 }
56 
58 {
59  double tmp;
60  UNUSED_PARAM1(tmp);
61 #ifdef STAR_HFT
62  in >> a.fX >> a.fY >> a.fZ
63  >> a.fErr2X1 >> tmp >> a.fErr2X2
64  >> a.fIRow >> a.fID >> a.fPhi;
65 #elif defined(PANDA_STT) || defined(PANDA_FTS)
66  in >> a.fX >> a.fY >> a.fZ >> a.fR
67  >> a.fC[0][0] >> a.fC[0][1] >> a.fC[0][2] // in global c.s.!
68  >> a.fC[1][0] >> a.fC[1][1] >> a.fC[1][2]
69  >> a.fC[2][0] >> a.fC[2][1] >> a.fC[2][2]
70  >> a.fErr2R
71  >> a.fTubeR >> a.fHalfLength
72  >> a.fEX >> a.fEY >> a.fEZ
73  >> a.fIRow >> a.fID >> a.fPhi;
74  a.fPhi = - a.fPhi; // TODO: fix input files
75  a.fXW = a.fX;
76  a.fYW = a.fY;
77  a.fZW = a.fZ;
78 
79  // cout << " T0 " << endl;
80  // cout << a.fC[0][0] << " " << a.fC[0][1] << " " << a.fC[0][2] << endl;
81  // cout << a.fC[1][0] << " " << a.fC[1][1] << " " << a.fC[1][2] << endl;
82  // cout << a.fC[2][0] << " " << a.fC[2][1] << " " << a.fC[2][2] << endl;
83 
84 #if defined(PANDA_STT)
85 
86  const double s = sin(a.fPhi);
87  const double c = cos(a.fPhi);
88  // double T[3][3];
89  // T[0][0] = -s; T[0][1] = c; T[0][2] = 0;
90  // T[1][0] = c; T[1][1] = s; T[1][2] = 0;
91  // T[2][0] = 0; T[2][1] = 0; T[2][2] = -1;
92 
93  // double TC[3][3];
94  // TC[0][0] = T[0][0]*a.fC[0][0] + T[0][1]*a.fC[1][0] + T[0][2]*a.fC[2][0];
95  // TC[0][1] = T[0][0]*a.fC[0][1] + T[0][1]*a.fC[1][1] + T[0][2]*a.fC[2][1];
96  // TC[0][2] = T[0][0]*a.fC[0][2] + T[0][1]*a.fC[1][2] + T[0][2]*a.fC[2][2];
97  // TC[1][0] = T[1][0]*a.fC[0][0] + T[1][1]*a.fC[1][0] + T[1][2]*a.fC[2][0];
98  // TC[1][1] = T[1][0]*a.fC[0][1] + T[1][1]*a.fC[1][1] + T[1][2]*a.fC[2][1];
99  // TC[1][2] = T[1][0]*a.fC[0][2] + T[1][1]*a.fC[1][2] + T[1][2]*a.fC[2][2];
100  // TC[2][0] = T[2][0]*a.fC[0][0] + T[2][1]*a.fC[1][0] + T[2][2]*a.fC[2][0];
101  // TC[2][1] = T[2][0]*a.fC[0][1] + T[2][1]*a.fC[1][1] + T[2][2]*a.fC[2][1];
102  // TC[2][2] = T[2][0]*a.fC[0][2] + T[2][1]*a.fC[1][2] + T[2][2]*a.fC[2][2];
103 
104  // double TCT[3][3]; // local C
105  // // TCT'
106  // TCT[0][0] = TC[0][0]*T[0][0] + TC[0][1]*T[0][1] + TC[0][2]*T[0][2];
107  // TCT[0][1] = TC[0][0]*T[1][0] + TC[0][1]*T[1][1] + TC[0][2]*T[1][2];
108  // TCT[0][2] = TC[0][0]*T[2][0] + TC[0][1]*T[2][1] + TC[0][2]*T[2][2];
109  // TCT[1][0] = TC[1][0]*T[0][0] + TC[1][1]*T[0][1] + TC[1][2]*T[0][2];
110  // TCT[1][1] = TC[1][0]*T[1][0] + TC[1][1]*T[1][1] + TC[1][2]*T[1][2];
111  // TCT[1][2] = TC[1][0]*T[2][0] + TC[1][1]*T[2][1] + TC[1][2]*T[2][2];
112  // TCT[2][0] = TC[2][0]*T[0][0] + TC[2][1]*T[0][1] + TC[2][2]*T[0][2];
113  // TCT[2][1] = TC[2][0]*T[1][0] + TC[2][1]*T[1][1] + TC[2][2]*T[1][2];
114  // TCT[2][2] = TC[2][0]*T[2][0] + TC[2][1]*T[2][1] + TC[2][2]*T[2][2];
115 
116  // // cout << " T1 " << endl;
117  // // cout << TCT[0][0] << " " << TCT[0][1] << " " << TCT[0][2] << endl;
118  // // cout << TCT[1][0] << " " << TCT[1][1] << " " << TCT[1][2] << endl;
119  // // cout << TCT[2][0] << " " << TCT[2][1] << " " << TCT[2][2] << endl;
120 
121  // double x,y,z;
122  // PndFTSCAParameters::GlobalToCALocal( a.fEX, a.fEY, a.fEZ, a.fPhi, x, y, z );
123  // // cout << " A " << x << " " << y << " " << z << endl;
124  // double T2[3][3];
125  // T2[0][0] = 1; T2[0][1] = 0; T2[0][2] = 0;
126  // T2[1][0] = 0; T2[1][1] = z; T2[1][2] = -y;
127  // T2[2][0] = 0; T2[2][1] = y; T2[2][2] = z;
128 
129  // TC[0][0] = T2[0][0]*TCT[0][0] + T2[0][1]*TCT[1][0] + T2[0][2]*TCT[2][0];
130  // TC[0][1] = T2[0][0]*TCT[0][1] + T2[0][1]*TCT[1][1] + T2[0][2]*TCT[2][1];
131  // TC[0][2] = T2[0][0]*TCT[0][2] + T2[0][1]*TCT[1][2] + T2[0][2]*TCT[2][2];
132  // TC[1][0] = T2[1][0]*TCT[0][0] + T2[1][1]*TCT[1][0] + T2[1][2]*TCT[2][0];
133  // TC[1][1] = T2[1][0]*TCT[0][1] + T2[1][1]*TCT[1][1] + T2[1][2]*TCT[2][1];
134  // TC[1][2] = T2[1][0]*TCT[0][2] + T2[1][1]*TCT[1][2] + T2[1][2]*TCT[2][2];
135  // TC[2][0] = T2[2][0]*TCT[0][0] + T2[2][1]*TCT[1][0] + T2[2][2]*TCT[2][0];
136  // TC[2][1] = T2[2][0]*TCT[0][1] + T2[2][1]*TCT[1][1] + T2[2][2]*TCT[2][1];
137  // TC[2][2] = T2[2][0]*TCT[0][2] + T2[2][1]*TCT[1][2] + T2[2][2]*TCT[2][2];
138 
139  // TCT[0][0] = TC[0][0]*T2[0][0] + TC[0][1]*T2[0][1] + TC[0][2]*T2[0][2];
140  // TCT[0][1] = TC[0][0]*T2[1][0] + TC[0][1]*T2[1][1] + TC[0][2]*T2[1][2];
141  // TCT[0][2] = TC[0][0]*T2[2][0] + TC[0][1]*T2[2][1] + TC[0][2]*T2[2][2];
142  // TCT[1][0] = TC[1][0]*T2[0][0] + TC[1][1]*T2[0][1] + TC[1][2]*T2[0][2];
143  // TCT[1][1] = TC[1][0]*T2[1][0] + TC[1][1]*T2[1][1] + TC[1][2]*T2[1][2];
144  // TCT[1][2] = TC[1][0]*T2[2][0] + TC[1][1]*T2[2][1] + TC[1][2]*T2[2][2];
145  // TCT[2][0] = TC[2][0]*T2[0][0] + TC[2][1]*T2[0][1] + TC[2][2]*T2[0][2];
146  // TCT[2][1] = TC[2][0]*T2[1][0] + TC[2][1]*T2[1][1] + TC[2][2]*T2[1][2];
147  // TCT[2][2] = TC[2][0]*T2[2][0] + TC[2][1]*T2[2][1] + TC[2][2]*T2[2][2];
148 
149  // cout << " T2 " << endl;
150  // cout << TCT[0][0] << " " << TCT[0][1] << " " << TCT[0][2] << endl;
151  // cout << TCT[1][0] << " " << TCT[1][1] << " " << TCT[1][2] << endl;
152  // cout << TCT[2][0] << " " << TCT[2][1] << " " << TCT[2][2] << endl;
153 
154  // const float s = y;
155  // const float c = z;
156 
157  // const float s = sin( a.fPhi );
158  // const float c = cos( a.fPhi );
159  // T = sA cA
160  // cA -sA
161  a.fErr2X0 = s*s*a.fC[0][0] + 2*s*c*a.fC[0][1] + c*c*a.fC[1][1];
162  //a.fErrX01 = c*s*(a.fC[1][1] - a.fC[0][0]) + (c*c - s*s)*a.fC[0][1];
163  a.fErr2X1 = c*c*a.fC[0][0] - 2*s*c*a.fC[0][1] + s*s*a.fC[1][1];
164  a.fErrX12 = -(c*a.fC[0][2] - s*a.fC[1][2]);
165 
166  a.fErr2X2 = a.fC[2][2];
167 #else // FTS
168  a.fErr2X0 = a.fC[2][2];
169  a.fErr2X1 = a.fC[0][0];
170  a.fErrX12 = a.fC[0][1];
171 
172  a.fErr2X2 = a.fC[1][1];
173 #endif
174 #elif defined(ALICE_ITS)
175  in >> a.fX >> a.fY >> a.fZ
176  >> a.fErr2X1 >> a.fErrX12 >> a.fErr2X2
177  >> a.fIRow >> a.fID >> a.fPhi;
178 
179 #else
180  in >> a.fX >> a.fY >> a.fZ
181  >> a.fErr2X1 >> a.fErrX12 >> a.fErr2X2
182  >> a.fIRow >> a.fID >> a.fPhi;
183 #endif
184  return in;
185 }
186 
187 
188 //ClassImp(PndFTSCAGBHit)
Double_t x0
Definition: checkhelixhit.C:70
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
double fC[3][3]
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
TLorentzVector s
Definition: Pnd2DStar.C:50
Int_t a
Definition: anaLmdDigi.C:126
static void GlobalToCALocal(T x, T y, T angle, T &x0, T &x1)
basic_ostream< char, char_traits< char > > ostream
basic_istream< char, char_traits< char > > istream
TFile * out
Definition: reco_muo.C:20
void GetLocalX0X1X2(float &x0, float &x1, float &x2) const
ostream & operator<<(ostream &out, const PndFTSCAGBHit &a)
istream & operator>>(istream &in, PndFTSCAGBHit &a)