Line data Source code
1 :
2 : #include "AliMFTCACell.h"
3 :
4 12 : ClassImp(AliMFTCACell)
5 :
6 : //___________________________________________________________________________
7 : AliMFTCACell::AliMFTCACell() :
8 0 : TObject(),
9 0 : fGID(-1),
10 0 : fTrackGID(),
11 0 : fLayer(),
12 0 : fHit(),
13 0 : fHitp(),
14 0 : fSeg(),
15 0 : fStatus(0),
16 0 : fUpStat(kFALSE),
17 0 : fIsUsed(kFALSE),
18 0 : fNNbL(0),
19 0 : fNNbR(0),
20 0 : fIsMerged(kFALSE),
21 0 : fDetElemID()
22 0 : {
23 :
24 0 : for (Int_t i = 0; i < 100; i++) { fNbLgid[i] = fNbRgid[i] = -1; }
25 0 : for (Int_t i = 0; i < 2; i++) {
26 0 : fTrackGID[i] = -1;
27 0 : fLayer[i] = -1;
28 0 : fDetElemID[i] = -1;
29 0 : for (Int_t j = 0; j < 3; j++) {
30 0 : fHit[i][j] = 0.;
31 0 : fHitp[i][j] = 0.;
32 : }
33 : }
34 0 : fMFTClsId[0] = fMFTClsId[1] = -1;
35 :
36 0 : }
37 :
38 : //___________________________________________________________________________
39 : AliMFTCACell::AliMFTCACell(const AliMFTCACell &cell) :
40 0 : TObject(cell),
41 0 : fGID(cell.fGID),
42 0 : fTrackGID(),
43 0 : fLayer(),
44 0 : fHit(),
45 0 : fHitp(),
46 0 : fSeg(),
47 0 : fStatus(cell.fStatus),
48 0 : fUpStat(cell.fUpStat),
49 0 : fIsUsed(cell.fIsUsed),
50 0 : fNNbL(cell.fNNbL),
51 0 : fNNbR(cell.fNNbR),
52 0 : fIsMerged(cell.fIsMerged),
53 0 : fDetElemID()
54 0 : {
55 :
56 : // copy constructor
57 :
58 0 : for (Int_t i = 0; i < cell.fNNbL; i++) fNbLgid[i] = cell.fNbLgid[i];
59 0 : for (Int_t i = 0; i < cell.fNNbR; i++) fNbRgid[i] = cell.fNbRgid[i];
60 0 : for (Int_t i = 0; i < 2; i++) {
61 0 : fTrackGID[i] = cell.fTrackGID[i];
62 0 : fLayer[i] = cell.fLayer[i];
63 0 : fDetElemID[i] = cell.fDetElemID[i];
64 0 : for (Int_t j = 0; j < 3; j++) {
65 0 : fHit[i][j] = cell.fHit[i][j];
66 0 : fHitp[i][j] = cell.fHitp[i][j];
67 : }
68 : }
69 0 : fSeg = new TVector3(fHit[1][0]-fHit[0][0],
70 0 : fHit[1][1]-fHit[0][1],
71 0 : fHit[1][2]-fHit[0][2]);
72 0 : fMFTClsId[0] = cell.fMFTClsId[0];
73 0 : fMFTClsId[1] = cell.fMFTClsId[1];
74 :
75 0 : }
76 :
77 : //___________________________________________________________________________
78 : AliMFTCACell& AliMFTCACell::operator=(const AliMFTCACell& cell)
79 : {
80 :
81 : // assignment operator
82 :
83 : // check assignement to self
84 0 : if (this == &cell) return *this;
85 :
86 0 : TObject::operator=(cell);
87 :
88 0 : fGID = cell.fGID;
89 0 : for (Int_t i = 0; i < cell.fNNbL; i++) fNbLgid[i] = cell.fNbLgid[i];
90 0 : for (Int_t i = 0; i < cell.fNNbR; i++) fNbRgid[i] = cell.fNbRgid[i];
91 0 : for (Int_t i = 0; i < 2; i++) {
92 0 : fTrackGID[i] = cell.fTrackGID[i];
93 0 : fLayer[i] = cell.fLayer[i];
94 0 : fDetElemID[i] = cell.fDetElemID[i];
95 0 : for (Int_t j = 0; j < 3; j++) {
96 0 : fHit[i][j] = cell.fHit[i][j];
97 0 : fHitp[i][j] = cell.fHitp[i][j];
98 : }
99 : }
100 0 : fSeg = new TVector3(fHit[1][0]-fHit[0][0],
101 0 : fHit[1][1]-fHit[0][1],
102 0 : fHit[1][2]-fHit[0][2]);
103 0 : fStatus = cell.fStatus;
104 0 : fUpStat = cell.fUpStat;
105 0 : fIsUsed = cell.fIsUsed;
106 0 : fNNbL = cell.fNNbL;
107 0 : fNNbR = cell.fNNbR;
108 0 : fIsMerged = cell.fIsMerged;
109 0 : fMFTClsId[0] = cell.fMFTClsId[0];
110 0 : fMFTClsId[1] = cell.fMFTClsId[1];
111 :
112 0 : }
113 :
114 : //___________________________________________________________________________
115 : void AliMFTCACell::Clear(const Option_t *) {
116 :
117 0 : delete fSeg;
118 :
119 0 : fGID = -1;
120 0 : fTrackGID[0] = fTrackGID[1] = -1;
121 0 : fLayer[0] = fLayer[1] = -1;
122 0 : fDetElemID[0] = fDetElemID[1] = -1;
123 0 : fHit[0][0] = fHit[0][1] = fHit[0][2] = 0.;
124 0 : fHit[1][0] = fHit[1][1] = fHit[1][2] = 0.;
125 0 : fHitp[0][0] = fHitp[0][1] = fHitp[0][2] = 0.;
126 0 : fHitp[1][0] = fHitp[1][1] = fHitp[1][2] = 0.;
127 0 : fStatus = 0;
128 0 : fUpStat = fIsUsed = kFALSE;
129 0 : fNNbL = fNNbR = 0;
130 0 : for (Int_t i = 0; i < 100; i++) { fNbLgid[i] = fNbRgid[i] = -1; }
131 0 : fIsMerged = kFALSE;
132 :
133 0 : }
134 :
135 : //___________________________________________________________________________
136 : void AliMFTCACell::SetHits(Double_t *h1, Double_t *h2, Double_t z1, Double_t z2) {
137 :
138 0 : for (Int_t i = 0; i < 3; i++) {
139 0 : fHitp[0][i] = h1[i];
140 0 : fHitp[1][i] = h2[i];
141 0 : fHit[0][i] = h1[i];
142 0 : fHit[1][i] = h2[i];
143 : }
144 : /*
145 : // re-calculate hit projection in the median plane of a station
146 : fHit[0][0] = fHitp[0][0]+(fHitp[1][0]-fHitp[0][0])/(fHitp[1][2]-fHitp[0][2])*(z1-fHitp[0][2]);
147 : fHit[0][1] = fHitp[0][1]+(fHitp[1][1]-fHitp[0][1])/(fHitp[1][2]-fHitp[0][2])*(z1-fHitp[0][2]);
148 : fHit[0][2] = z1;
149 : fHit[1][0] = fHitp[0][0]+(fHitp[1][0]-fHitp[0][0])/(fHitp[1][2]-fHitp[0][2])*(z2-fHitp[0][2]);
150 : fHit[1][1] = fHitp[0][1]+(fHitp[1][1]-fHitp[0][1])/(fHitp[1][2]-fHitp[0][2])*(z2-fHitp[0][2]);
151 : fHit[1][2] = z2;
152 : */
153 : //fSeg = new TVector3(h2[0]-h1[0],h2[1]-h1[1],h2[2]-h1[2]);
154 0 : fSeg = new TVector3(fHit[1][0]-fHit[0][0],
155 0 : fHit[1][1]-fHit[0][1],
156 0 : fHit[1][2]-fHit[0][2]);
157 :
158 0 : }
159 :
160 : //___________________________________________________________________________
161 : void AliMFTCACell::DrawOGL(Char_t *name) {
162 :
163 : // TEveLine *track = new TEveLine(2);
164 : // track->SetName(Form("%s_ID%d",name,GetGID()));
165 : // track->SetLineColor(1);
166 : // track->SetPoint(0,fHit[0][0],fHit[0][1],fHit[0][2]);
167 : // track->SetPoint(1,fHit[1][0],fHit[1][1],fHit[1][2]);
168 : // gEve->AddElement(track);
169 :
170 0 : }
|