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