HARPO  5.1.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HarpoRecoEvent.cxx
Go to the documentation of this file.
1 //
2 // File HarpoRecoEvent.cxx
3 //
11 #include "HarpoRecoEvent.h"
12 #include "HarpoDebug.h"
13 
14 #include "TMath.h"
15 
16 #include <iostream>
17 
18 using namespace std;
19 
20 
27 ClassImp( HarpoRecoEvent)
28 
30 //TObject(), fType(-1), fQ(-1),fMean(-1),fIndex(-1),fSig(-1),fWidth(-1), fPlane(-1), fRun(-1), fIdClusterTrack(-1)
31 TObject(), fType(-1), fQ(-1),fQmax(-1),fMean(-1),fIndex(-1),fSig(-1),fWidth(-1),fIfirst(-1),fQuality(0),fNtr(0),fPlane(-1)//, fIdClusterTrack(-1)
32 {
33  fX = -1000;
34  fZ = -1000;
35  for(Int_t i = 0; i<MAXTRPERCL; i++){
36  fIdClusterTrack[i] = -1;
37  fXfit[i] = -1000;
38  fZfit[i] = -1000;
39  }
40 }
41 
42 //HarpoRecoClusters::HarpoRecoClusters(Int_t Type, Int_t Q, Double_t Mean, Int_t Index, Double_t Sig,Int_t Width,Int_t IdClusterTrack,Int_t plane, Int_t run):
43 HarpoRecoClusters::HarpoRecoClusters(Int_t Type, Double_t Q, Double_t Qmax, Double_t Mean, Int_t Index, Double_t Sig, Int_t iFirst, Int_t Width, Int_t IdClusterTrack, Int_t plane, Int_t quality):
44  // TObject(), fType(Type), fQ(Q), fMean(Mean), fIndex(Index), fSig(Sig), fWidth(Width), fPlane(plane), fRun(run), fIdClusterTrack(IdClusterTrack)
45  TObject(), fType(Type), fQ(Q), fQmax(Qmax), fMean(Mean), fIndex(Index), fSig(Sig),fWidth(Width),fIfirst(iFirst),fQuality(quality),fPlane(plane)//,fIdClusterTrack(IdClusterTrack)
46 {
47  fX = -1000;
48  fZ = -1000;
49  for(Int_t i = 0; i<MAXTRPERCL; i++){
50  fIdClusterTrack[i] = -1;//clu.fIdClusterTrack[i];
51  fXfit[i] = -1000;
52  fZfit[i] = -1000;
53  }
54  fNtr = 0;
55  if(IdClusterTrack>=0){
56  fNtr = 1;
57  fIdClusterTrack[0] = IdClusterTrack;//clu.fIdClusterTrack[i];
58  }
59 }
60 
62  // TObject(), fType(clu.fType), fQ(clu.fQ), fMean(clu.fMean), fIndex(clu.fIndex), fSig(clu.fSig), fWidth(clu.fWidth), fPlane(clu.fPlane), fRun(clu.fRun), fIdClusterTrack(clu.fIdClusterTrack)
63  TObject(clu), fType(clu.fType), fQ(clu.fQ), fQmax(clu.fQmax), fMean(clu.fMean), fIndex(clu.fIndex), fSig(clu.fSig), fWidth(clu.fWidth), fIfirst(clu.fIfirst), fQuality(clu.fQuality), fNtr(clu.fNtr), fPlane(clu.fPlane)//, fIdClusterTrack(clu.fIdClusterTrack)
64 {
65  fX = clu.fX;
66  fZ = clu.fZ;
67  for(Int_t i = 0; i<MAXTRPERCL; i++){
68  fIdClusterTrack[i] = clu.fIdClusterTrack[i];
69  fXfit[i] = clu.fXfit[i];
70  fZfit[i] = clu.fZfit[i];
71  }
72 }
73 
74 
76  if(gHarpoDebug>2)
77  Info("AddIdClusterTrack","%d (%d)",val,fNtr);
78  for(Int_t i = 0; i<fNtr; i++)
79  if(fIdClusterTrack[i] == val) return;
80  fNtr++;
81  if(fNtr>=MAXTRPERCL){
82  Info("AddIdClusterTrack","Cannot add track %d on cluster",val);
83  return;
84  }
85  fIdClusterTrack[fNtr-1] = val;
86 }
87 
89 {
90  Int_t i = 0;
91  while(i<fNtr){
92  if(fIdClusterTrack[i] == val) break;
93  i++;
94  }
95  if(i == fNtr) return;
96  for(Int_t j = i; j<9; i++){
98  }
99  fIdClusterTrack[9] = -1;
100 }
101 
102 
104 {
105 }
106 
107 
108 
109 
110 
112 
119  TObject(), fNtrack(-1),fQtTrack(-1),fAngleTrack(-1),fX0(-1),fTypeTrack(-1) ,fPlane(-1),fIdTrackMatching(-1),fNclusterTrack(-1),fXstart(-1),fZstart(-1),fXend(-1),fZend(-1)
120 {
121 }
122 
123 HarpoRecoTracks::HarpoRecoTracks(Int_t Ntrack, Int_t QtTrack,Double_t AngleTrack, Double_t x0, Int_t TypeTrack, Int_t IdTrackMatching,Int_t NclusterTrack,Int_t plane, Double_t xStart, Double_t zStart, Double_t xEnd, Double_t zEnd):
124  TObject(), fNtrack(Ntrack), fQtTrack(QtTrack),fAngleTrack(AngleTrack),fX0(x0),fTypeTrack(TypeTrack) ,fPlane(plane),fIdTrackMatching(IdTrackMatching),fNclusterTrack(NclusterTrack),fXstart(xStart),fZstart(zStart),fXend(xEnd),fZend(zEnd)
125 {
126 }
127 
129  TObject(), fNtrack(tra.fNtrack), fQtTrack(tra.fQtTrack), fAngleTrack(tra.fAngleTrack),fX0(tra.fX0),fTypeTrack(tra.fTypeTrack),fPlane(tra.fPlane),fIdTrackMatching(tra.fIdTrackMatching),fNclusterTrack(tra.fNclusterTrack),fXstart(tra.fXstart),fZstart(tra.fZstart),fXend(tra.fXend),fZend(tra.fZend)
130 {
131 }
132 
134 {
135 }
136 
137 
139 
146  HarpoRecoTracks(), fMtheta(-1),fMrho(-1),fSigtheta(-1),fSigrho(-1)
147 {
148 }
149 
150 HarpoRecoHoughTracks::HarpoRecoHoughTracks(Int_t Ntrack, Double_t Mtheta, Double_t Mrho, Double_t Sigtheta, Double_t Sigrho,Int_t QtTrack,Double_t AngleTrack, Double_t x0, Int_t TypeTrack, Int_t IdTrackMatching,Int_t NclusterTrack,Int_t plane, Double_t xStart, Double_t zStart, Double_t xEnd, Double_t zEnd):
151  HarpoRecoTracks(Ntrack, QtTrack,AngleTrack,x0, TypeTrack, IdTrackMatching,NclusterTrack,plane, xStart, zStart, xEnd, zEnd), fMtheta(Mtheta),fMrho(Mrho),fSigtheta(Sigtheta),fSigrho(Sigrho)
152 {
153 }
154 
156  HarpoRecoTracks(tra), fMtheta(tra.fMtheta), fMrho(tra.fMrho), fSigtheta(tra.fSigtheta), fSigrho(tra.fSigrho)
157 {
158 }
159 
161 {
162 }
163 
164 
166 
173  HarpoRecoTracks(), fPxStart(-1), fPzStart(-1),fPxEnd(-1),fPzEnd(-1)
174 {
175  // fGraph = 0;
176 }
177 
178 HarpoRecoKalmanTracks::HarpoRecoKalmanTracks(Int_t Ntrack, Int_t QtTrack,Double_t AngleTrack, Double_t x0, Double_t chi2,Int_t TypeTrack, Int_t IdTrackMatching,Int_t NclusterTrack,Int_t plane, Double_t xStart, Double_t zStart, Double_t pxStart, Double_t pzStart, Double_t xEnd, Double_t zEnd, Double_t pxEnd, Double_t pzEnd):
179  HarpoRecoTracks(Ntrack, QtTrack,AngleTrack,x0, TypeTrack, IdTrackMatching,NclusterTrack,plane, xStart, zStart, xEnd, zEnd), fPxStart(pxStart),fPzStart(pzStart),fPxEnd(pxEnd),fPzEnd(pzEnd),fChi2(chi2)
180 {
181  // fGraph = 0;
182 }
183 
185  HarpoRecoTracks(tra), fPxStart(tra.fPxStart),fPzStart(tra.fPzStart),fPxEnd(tra.fPxEnd),fPzEnd(tra.fPzEnd),fChi2(tra.fChi2)
186 {
187  // fGraph = 0;
188 }
189 
191 {
192  // fGraph->Delete();
193 }
194 
196 
203  TObject(), fNvertex(-1), fPlane(-1), fTr1Vertex(-1), fTr2Vertex(-1), fXvertex(-1), fZvertex(-1), fPxVertex(-1), fPzVertex(-1), fThetaVertex(-1), fChi2Vertex(-1)
204 {
205 }
206 
207 HarpoRecoVertex::HarpoRecoVertex(Int_t plane, Double_t z, Double_t x, Double_t pz, Double_t px, Double_t theta, Double_t chi2, Int_t tr1, Int_t tr2):
208  TObject(), fNvertex(-1), fPlane(plane), fTr1Vertex(tr1), fTr2Vertex(tr2), fXvertex(x), fZvertex(z), fPxVertex(px), fPzVertex(pz), fThetaVertex(theta), fChi2Vertex(chi2)
209 {
210 }
211 
213  TObject(vec), fNvertex(vec.fNvertex), fPlane(vec.fPlane), fTr1Vertex(vec.fTr1Vertex), fTr2Vertex(vec.fTr2Vertex), fXvertex(vec.fXvertex), fZvertex(vec.fZvertex), fPxVertex(vec.fPxVertex), fPzVertex(vec.fPzVertex), fThetaVertex(vec.fThetaVertex), fChi2Vertex(vec.fChi2Vertex)
214 {
215 }
216 
218 {
219 }
221 
228  TObject(), fIdVertex3D(-1), fVertexX(-1), fVertexY(-1), fXvertex3D(-1), fYvertex3D(-1), fZvertex3D(-1), fPx1Vertex3D(-1), fPy1Vertex3D(-1), fPz1Vertex3D(-1), fPx2Vertex3D(-1), fPy2Vertex3D(-1), fPz2Vertex3D(-1), fChi2Vertex3D(-1)
229 {
230 }
231 
232 HarpoRecoVertex3D::HarpoRecoVertex3D(Double_t x, Double_t y, Double_t z, Double_t px1, Double_t py1, Double_t pz1, Double_t px2, Double_t py2, Double_t pz2, Int_t vX, Int_t vY, Double_t chi2):
233  TObject(), fIdVertex3D(-1), fVertexX(vX), fVertexY(vY), fXvertex3D(x), fYvertex3D(y), fZvertex3D(z), fPx1Vertex3D(px1), fPy1Vertex3D(py1), fPz1Vertex3D(pz1), fPx2Vertex3D(px2), fPy2Vertex3D(py2), fPz2Vertex3D(pz2), fChi2Vertex3D(chi2)
234 {
235 }
236 
238  TObject(vec), fIdVertex3D(vec.fIdVertex3D), fVertexX(vec.fVertexX), fVertexY(vec.fVertexY), fXvertex3D(vec.fXvertex3D), fYvertex3D(vec.fYvertex3D), fZvertex3D(vec.fZvertex3D), fPx1Vertex3D(vec.fPx1Vertex3D), fPy1Vertex3D(vec.fPy1Vertex3D), fPz1Vertex3D(vec.fPz1Vertex3D), fPx2Vertex3D(vec.fPx2Vertex3D), fPy2Vertex3D(vec.fPy2Vertex3D), fPz2Vertex3D(vec.fPz2Vertex3D), fChi2Vertex3D(vec.fChi2Vertex3D)
239 {
240 }
241 
243 {
244 }
245 
246 
248 {
249 
250  Double_t omega = TMath::ATan2(fPz2Vertex3D*fPx1Vertex3D-fPz1Vertex3D*fPx2Vertex3D,
252  return omega;
253 
254 }
255 
257 {
258 
259  Double_t cos = fPx1Vertex3D*fPx2Vertex3D +
262 
263  return TMath::ACos(cos);
264 }
265 
267 {
268  Double_t norm = 1 +
272  norm *= 2;
273  return (fPx1Vertex3D+fPx2Vertex3D)/TMath::Sqrt(norm);
274 
275 }
276 
278 {
279  Double_t norm = 1 +
283  norm *= 2;
284  return (fPy1Vertex3D+fPy2Vertex3D)/TMath::Sqrt(norm);
285 
286 }
287 
289 {
290  Double_t norm = 1 +
294  norm *= 2;
295  return (fPz1Vertex3D+fPz2Vertex3D)/TMath::Sqrt(norm);
296 
297 }
298 
299 
301 
308  //TObject(), fngoodmatch(-1), fiMatchTrX(-1),fiMatchTrY(-1)
309  TObject(), fngoodmatch(-1), fiMatchTrX(-1),fiMatchTrX2(-1), fiMatchTrY(-1),fiMatchTrY2(-1),fChi2Matching(-1)
310 {
311 }
312 
313 HarpoRecoMatching::HarpoRecoMatching(Int_t ngoodmatch, Int_t iMatchTrX,Int_t iMatchTrX2, Int_t iMatchTrY,Int_t iMatchTrY2,Double_t chi2):
314  TObject(), fngoodmatch(ngoodmatch), fiMatchTrX(iMatchTrX),fiMatchTrX2(iMatchTrX2), fiMatchTrY(iMatchTrY),fiMatchTrY2(iMatchTrY2),fChi2Matching(chi2)
315 {
316 }
317 
319  // TObject(), fngoodmatch(mat.fngoodmatch), fiMatchTrX(mat.fiMatchTrX), fiMatchTrY(mat.fiMatchTrY),fRun(mat.fRun)
320  TObject(), fngoodmatch(mat.fngoodmatch), fiMatchTrX(mat.fiMatchTrX), fiMatchTrX2(mat.fiMatchTrX2), fiMatchTrY(mat.fiMatchTrY), fiMatchTrY2(mat.fiMatchTrY2),fChi2Matching(mat.fChi2Matching)
321 {
322 }
323 
325 {
326 }
327 
328 
330 
332  TObject(), fntrack_3d(-1),fDoca(-1),fPoca_x(1000),fPoca_y(1000),fPoca_z(1000),fPx(-10),fPy(-10),fPz(-10),fAopen(-10),fAazimutal(-10)
333 {
334  for(Int_t i=0;i<7;i++) ftypetrack3d[i] = -1;
335 }
336 
337 // HarpoRecoReco3D::HarpoRecoReco3D(Int_t ntrack_3d,Double_t doca, Double_t poca_x, Double_t poca_y, Double_t poca_z, Double_t px,Double_t py, Double_t pz,Double_t aopen,Double_t aazimutal, Int_t run):
338 // TObject(), fntrack_3d(ntrack_3d),fRun(run),fDoca(doca),fPoca_x(poca_x),fPoca_y(poca_y),fPoca_z(poca_z),fPx(px),fPy(py),fPz(pz),fAopen(aopen),fAazimutal(aazimutal)
339 HarpoRecoReco3D::HarpoRecoReco3D(Int_t ntrack_3d,Double_t doca, Double_t poca_x, Double_t poca_y, Double_t poca_z, Double_t px,Double_t py, Double_t pz,Double_t aopen,Double_t aazimutal):
340  TObject(), fntrack_3d(ntrack_3d),fDoca(doca),fPoca_x(poca_x),fPoca_y(poca_y),fPoca_z(poca_z),fPx(px),fPy(py),fPz(pz),fAopen(aopen),fAazimutal(aazimutal)
341 {
342  for(Int_t i=0;i<7;i++) ftypetrack3d[i] = -1;
343 }
344 
346  // TObject(), fntrack_3d(rec.fntrack_3d),fRun(rec.fRun),fDoca(rec.fDoca),fPoca_x(rec.fPoca_x),fPoca_y(rec.fPoca_y),fPoca_z(rec.fPoca_z),fPx(rec.fPx),fPy(rec.fPy),fPz(rec.fPz),fAopen(rec.fAopen),fAazimutal(rec.fAazimutal)
347  TObject(), fntrack_3d(rec.fntrack_3d),fDoca(rec.fDoca),fPoca_x(rec.fPoca_x),fPoca_y(rec.fPoca_y),fPoca_z(rec.fPoca_z),fPx(rec.fPx),fPy(rec.fPy),fPz(rec.fPz),fAopen(rec.fAopen),fAazimutal(rec.fAazimutal)
348 {
349 for(Int_t i=0;i<7;i++) ftypetrack3d[i] = rec.ftypetrack3d[i];
350 }
351 
353 {
354 }
355 
356 
358 {
359  if(gHarpoDebug>1) Info("HarpoRecoEvent()","0x%p",this);
360  fClustersArray = new TClonesArray("HarpoRecoClusters",kMaxNclusters);
361  fHoughTracksArray = new TClonesArray("HarpoRecoHoughTracks",2*kMaxNtracks);
362  fKalmanTracksArray = new TClonesArray("HarpoRecoKalmanTracks",2*kMaxNtracks);
363  fVertex3DArray = new TClonesArray("HarpoRecoVertex3D",kMaxNvertex3D);
364  fVertexArray = new TClonesArray("HarpoRecoVertex",kMaxNvertex);
365  fMatchingArray = new TClonesArray("HarpoRecoMatching",kMaxNtracks);
366  fReco3DArray = new TClonesArray("HarpoRecoReco3D",kMaxNtracks);
367 
368  fNtracksXEvt = -1;
369  fNtracksYEvt = -1;
370  fNvertexXEvt = 0;
371  fNvertexYEvt = 0;
372  // fNtracksXEvt_tvs = -1;
373  // fNtracksYEvt_tvs = -1;
374  // fNtracksXEvt_ntvs = -1;
375  // fNtracksYEvt_ntvs = -1;
376  // fNtracksXEvt_depot = -1;
377  // fNtracksYEvt_depot = -1;
378  // fNtracksXEvt_gerbe = -1;
379  // fNtracksYEvt_gerbe = -1;
380 
381  fNtracks3DEvt = -1;
382  fNclXEvt = -1;
383  fNclYEvt = -1;
384  fNCclXEvt = -1;
385  fNCclYEvt = -1;
386  fNTclXEvt = -1;
387  fNTclYEvt = -1;
388  fQtotXEvt = -1;
389  fQtotYEvt = -1;
390  fNclTrackEvt = -1;
391 
392  fTrackType = 1;
393 
394  fEventType = -1;
395  // fEventTTZ = -1;
396  // fNEventEmpty = -1;
397  // fNEventDeposit = -1;
398  // fNEventTTZ = -1;
399  // fNEventTT = -1;
400  // fNEventTCR = -1;
401  // fNEventTCN = -1;
402  // fNEventGamma = -1;
403  // fNEventDelta = -1;
404  // fNEvent2TOther = -1;
405  // fNEventShower = -1;
406  // fNEventOther = -1;
407  fQmaxX = -1;
408  fQrestX = -1;
409  fQmaxY = -1;
410  fQrestY = -1;
411  fAngleOmega =-10;
412 
413 
414  fXmin = -1000;
415  fYmin = -1000;
416  fTmin = -1000;
417  fXmax = -1000;
418  fYmax = -1000;
419  fTmax = -1000;
420  fXstart = -1000;
421  fYstart = -1000;
422  fTstart = -1000;
423 }
424 
426 {
427  if(gHarpoDebug>1) Info("~HarpoRecoEvent()","0x%p",this);
428 
429  fClustersArray->Delete();
430  fHoughTracksArray->Delete();
431  fKalmanTracksArray->Delete();
432  fVertexArray->Delete();
433  fVertex3DArray->Delete();
434  fMatchingArray->Delete();
435  fReco3DArray->Delete();
436 }
437 
438 
440 {
441  Info("Summary","Ncl = %d, NtrHough = %d, NtrKalman = %d, Nmatch = %d, N3D = %d",
442  fClustersArray->GetEntries(),
443  fHoughTracksArray->GetEntries(),
444  fKalmanTracksArray->GetEntries(),
445  fMatchingArray->GetEntries(),
446  fReco3DArray->GetEntries());
447 
448 }
Int_t fNvertexXEvt
Number of vertexes in X.
virtual ~HarpoRecoTracks()
TClonesArray * fVertex3DArray
list of 3D vertexes HarpoRecoVertex3D in the event
Int_t fXmax
maximum value of X in the event
virtual ~HarpoRecoClusters()
Int_t fTmax
maximum value of T in the event
Int_t fQtotXEvt
total charge on X
TClonesArray * fReco3DArray
Int_t fEventType
Event Type (TO BE DEFINED)
TClonesArray * fClustersArray
List of HarpoRecoClusters in the event.
void AddIdClusterTrack(Int_t val)
TClonesArray * fMatchingArray
List of matched tracks HarpoRecoMatching in the event.
static const Int_t kMaxNtracks
Double_t fZ
Poisition in time direction.
Int_t fIdClusterTrack[MAXTRPERCL]
List of tracks associated to the cluster.
Int_t fQrestY
Charge not associated to a track.
Int_t fNclTrackEvt
number of clusters associated to a track in the event
Double_t ftypetrack3d[7]
Track object, containing position, angle, charge and quality information.
Object containing the reconstruction information for one event (with array of HarpoRecoClusters Harpo...
Matching object, containing matched track number, and quality info.
2D vertex object, containing position, angle and associated track numbers, and quality info ...
Int_t fNTclYEvt
total number of Tclusters in Y
static const Int_t kMaxNvertex3D
Int_t fNtracksXEvt
Number of tracks in X.
Double_t fXstart
Time and Position of first signal.
Int_t fQtotYEvt
total charge on Y
Double_t fX
Position in channel direction.
Int_t fQmaxX
???
Int_t fTrackType
???
Int_t fNCclXEvt
total number of Cclusters in X
HarpoRecoTracks object, Obtained with Kalman filter.
static const Int_t kMaxNclusters
Cluster object, containing position, charge and quality information.
Double_t GetPyVertex3D()
Double_t fZfit[MAXTRPERCL]
Fitted Z position for the associated track (TO BE IMPLEMENTED)
TClonesArray * fKalmanTracksArray
List of Kalman tracks HarpoRecoKalmanTracks in the event.
Double_t fXfit[MAXTRPERCL]
Fitted X position for the associated track (TO BE IMPLEMENTED)
virtual ~HarpoRecoReco3D()
#define MAXTRPERCL
Int_t fQmaxY
???
Int_t fNvertexYEvt
Number of vertexes in Y.
Int_t fNclYEvt
total number of clusters in Y
Int_t fNCclYEvt
total number of Cclusters in Y
Int_t fTmin
minimum value of T in the event
virtual ~HarpoRecoMatching()
Long64_t gHarpoDebug
Definition: HarpoDebug.cxx:9
Int_t fNtr
Number of associated tracks.
TClonesArray * fVertexArray
list of 2D vertexes HarpoRecoVertex in the event
Int_t fNTclXEvt
total number of Tclusters in X
static const Int_t kMaxNvertex
Int_t fYmax
maximum value of Y in the event
Double_t fAngleOmega
Azimuthal angle.
Int_t fXmin
minimum value of X in the event
TClonesArray * fHoughTracksArray
List of Hough tracks HarpoRecoHoughTracks in the event.
void RemoveIdClusterTrack(Int_t val)
Int_t fYmin
minimum value of Y in the event
Int_t fNtracks3DEvt
number of 3D tracks (matched)
Int_t fQrestX
Charge not associated to a track.
Int_t fNclXEvt
total number of clusters in X
HarpoRecoTracks object, obtained with Hough tracking method.
Double_t GetPxVertex3D()
Int_t fNtracksYEvt
Number of tracks in Y.
virtual ~HarpoRecoVertex()
virtual ~HarpoRecoVertex3D()
Double_t GetPzVertex3D()
3D vertex object, containing position, angle and associated 2D vertexes, and quality info ...