PandaRoot
FTSCANPletsV.h
Go to the documentation of this file.
1 //-*- Mode: C++ -*-
2 // *****************************************************************************
3 // *
4 // @Autors: I.Kulakov; M.Pugach; M.Zyzak; I.Kisel *
5 // @e-mail: I.Kulakov@gsi.de; M.Pugach@gsi.de; M.Zyzak@gsi.de; I.Kisel@compeng.uni-frankfurt.de *
6 // *
7 // *****************************************************************************
8 
9 #ifndef FTSCANPletsV_H
10 #define FTSCANPletsV_H
11 
12 #include <vector>
13 using std::vector;
14 #include "FTSCAStationArray.h"
16 
17 class FTSCANPletV {
18 
19  //* Parameters of N-plet in vectors
20 
21  public:
22  FTSCANPletV(int n = 0) : fParam(), fIsValid(false) { fIHit.resize(n); }
23 
24  FTSCANPletV(const FTSCANPletV &s1, const PndFTSCATrackParamVector &param, const float_m isValid) : fParam(param), fIsValid(isValid) { fNHits = s1.N() + 1; }
25 
26  FTSCANPletV(const FTSCANPletV &s1, int ista, unsigned int ihit, const PndFTSCATrackParamVector &param, const float_m isValid) : fParam(param), fIsValid(isValid)
27  {
28  fNHits = s1.N() + 1;
29  fIHit.resize(s1.N() + 1);
30  for (int i = 0; i < N() - 1; i++)
31  fIHit[i] = s1.IHit(i);
32  fIHit[N() - 1] = TESV(ista, ihit);
33  }
34 
35  FTSCANPletV(const uint_v &ihit, const int_v &ista, const PndFTSCATrackParamVector &param, const float_m &isValid) : fParam(param), fIsValid(isValid)
36  {
37  fIHit.resize(1, TESV(ista, ihit));
38  }
39  FTSCANPletV(const FTSCANPletV &s1, const FTSCANPletV &s2, const int iV, const PndFTSCATrackParamVector &param, const float_m isValid) : fParam(param), fIsValid(isValid)
40  {
41  fIHit.resize(s1.N() + 1);
42  assert(s1.N() == s2.N());
43 
44  for (int i = 0; i < N() - 1; i++)
45  fIHit[i] = s1.IHit(i);
46  fIHit[N() - 1] = s2.IHit(N() - 2)[iV];
47  }
48 
49  int N() const { return fNHits; /*fIHit.size();*/ }
50 
51  const TESV &IHit(int IH) const { return fIHit[IH]; }
52  const vector<TESV> &IHit() const { return fIHit; }
53  const PndFTSCATrackParamVector &Param() const { return fParam; }
56 
57  float_m IsValid() const { return fIsValid; }
58 
59  // check wether a is neighbour from the right to this
60  float_m IsRightNeighbour(const FTSCANPletV &a, unsigned int iV) const
61  {
62  float_m active = fIsValid;
63  assert(a.N() >= N() - 1);
64  for (int i = 0; i < N() - 1; i++) {
65  active &= IHit(i + 1) == a.IHit(i)[iV];
66  }
67  return active;
68  }
69 
70  void CopyOne(int iV, FTSCANPletV a, int iVa)
71  {
72  for (int i = 0; i < N(); i++) {
73  fIHit[i].s[iV] = a.fIHit[i].s[iVa];
74  fIHit[i].e[iV] = a.fIHit[i].e[iVa];
75  }
76  fParam.SetTrackParamOne(iV, a.fParam, iVa);
77  fIsValid = (float_m(uint_v(Vc::IndexesFromZero) == uint_v(iV)) && float_m(a.fIsValid[iVa])) || (!float_m(uint_v(Vc::IndexesFromZero) == uint_v(iV)) && fIsValid);
78  }
79 
80  int_v fLastHit;
81  int fNHits;
82  // private:
83  vector<TESV> fIHit; // index of hit on station
85 
86  float_m fIsValid;
87 };
88 
89 class FTSCANPletsV : public FTSCAStationArray<FTSCANPletV> {
90  public:
92  FTSCANPletsV(int nSta, const FTSCAHits *hits) : FTSCAStationArray<FTSCANPletV>(nSta, hits){};
93 };
94 
95 #endif
vector< TESV > fIHit
Definition: FTSCANPletsV.h:83
int N() const
Definition: FTSCANPletsV.h:49
const PndFTSCATrackParamVector & Param() const
Definition: FTSCANPletsV.h:53
PndFTSCATrackParamVector & Param()
Definition: FTSCANPletsV.h:54
Definition: FTSCATES.h:25
FTSCANPletsV(int nSta, const FTSCAHits *hits)
Definition: FTSCANPletsV.h:92
void SetTrackParamOne(int iV, const PndFTSCATrackParamVector &param, int iVa)
FTSCANPletV(const FTSCANPletV &s1, const FTSCANPletV &s2, const int iV, const PndFTSCATrackParamVector &param, const float_m isValid)
Definition: FTSCANPletsV.h:39
unsigned int i
Definition: P4_F32vec4.h:21
FTSCANPletV(const FTSCANPletV &s1, const PndFTSCATrackParamVector &param, const float_m isValid)
Definition: FTSCANPletsV.h:24
const vector< TESV > & IHit() const
Definition: FTSCANPletsV.h:52
float_m fIsValid
Definition: FTSCANPletsV.h:86
int_v fLastHit
Definition: FTSCANPletsV.h:80
const TESV & IHit(int IH) const
Definition: FTSCANPletsV.h:51
float_m IsValid() const
Definition: FTSCANPletsV.h:57
void CopyOne(int iV, FTSCANPletV a, int iVa)
Definition: FTSCANPletsV.h:70
FTSCANPletV(const FTSCANPletV &s1, int ista, unsigned int ihit, const PndFTSCATrackParamVector &param, const float_m isValid)
Definition: FTSCANPletsV.h:26
FTSCANPletV(int n=0)
Definition: FTSCANPletsV.h:22
FTSCANPletV(const uint_v &ihit, const int_v &ista, const PndFTSCATrackParamVector &param, const float_m &isValid)
Definition: FTSCANPletsV.h:35
float_m IsRightNeighbour(const FTSCANPletV &a, unsigned int iV) const
Definition: FTSCANPletsV.h:60
PndFTSCATrackParamVector & ParamRef()
Definition: FTSCANPletsV.h:55
PndFTSCATrackParamVector fParam
Definition: FTSCANPletsV.h:84