FairRoot/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)
25  {
26  fNHits = s1.N() + 1;
27  }
28 
29  FTSCANPletV( const FTSCANPletV& s1, int ista, unsigned int ihit, const PndFTSCATrackParamVector& param, const float_m isValid ):fParam(param), fIsValid(isValid)
30  {
31  fNHits = s1.N() + 1;
32  fIHit.resize( s1.N() + 1 );
33  for( int i=0; i < N()-1; i++)
34  fIHit[i] = s1.IHit(i);
35  fIHit[N()-1] = TESV(ista,ihit);
36  }
37 
38  FTSCANPletV( const uint_v& ihit, const int_v& ista, const PndFTSCATrackParamVector& param, const float_m& isValid ):
39  fParam(param), fIsValid(isValid) {
40  fIHit.resize( 1, TESV(ista,ihit) );
41  }
42  FTSCANPletV( const FTSCANPletV& s1, const FTSCANPletV& s2, const int iV, const PndFTSCATrackParamVector& param, const float_m isValid ):fParam(param), fIsValid(isValid) {
43  fIHit.resize( s1.N() + 1 );
44  assert( s1.N() == s2.N() );
45 
46  for( int i=0; i < N()-1; i++)
47  fIHit[i] = s1.IHit(i);
48  fIHit[N()-1] = s2.IHit(N()-2)[iV];
49  }
50 
51  int N() const { return fNHits; /*fIHit.size();*/ }
52 
53  const TESV& IHit( int IH ) const { return fIHit[IH]; }
54  const vector<TESV>& IHit() const { return fIHit; }
55  const PndFTSCATrackParamVector& Param() const { return fParam; }
58 
59  float_m IsValid() const { return fIsValid; }
60 
61  // check wether a is neighbour from the right to this
62  float_m IsRightNeighbour( const FTSCANPletV& a, unsigned int iV ) const {
63  float_m active = fIsValid;
64  assert( a.N() >= N() - 1 );
65  for( int i = 0; i < N() - 1; i++ ) {
66  active &= IHit(i+1) == a.IHit(i)[iV];
67  }
68  return active;
69  }
70 
71  void CopyOne( int iV, FTSCANPletV a, int iVa ) {
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 
96 #endif
vector< TESV > fIHit
Definition: FTSCANPletsV.h:83
const TESV & IHit(int IH) const
Definition: FTSCANPletsV.h:53
Int_t i
Definition: run_full.C:25
PndFTSCATrackParamVector & Param()
Definition: FTSCANPletsV.h:56
float_m IsValid() const
Definition: FTSCANPletsV.h:59
float_m IsRightNeighbour(const FTSCANPletV &a, unsigned int iV) const
Definition: FTSCANPletsV.h:62
Definition: FTSCATES.h:28
int n
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:42
FTSCANPletV(const FTSCANPletV &s1, const PndFTSCATrackParamVector &param, const float_m isValid)
Definition: FTSCANPletsV.h:24
int N() const
Definition: FTSCANPletsV.h:51
Int_t a
Definition: anaLmdDigi.C:126
float_m fIsValid
Definition: FTSCANPletsV.h:86
int_v fLastHit
Definition: FTSCANPletsV.h:80
void CopyOne(int iV, FTSCANPletV a, int iVa)
Definition: FTSCANPletsV.h:71
FTSCANPletV(const FTSCANPletV &s1, int ista, unsigned int ihit, const PndFTSCATrackParamVector &param, const float_m isValid)
Definition: FTSCANPletsV.h:29
const vector< TESV > & IHit() const
Definition: FTSCANPletsV.h:54
CbmHit * hits[nHits]
Definition: RiemannTest.C:19
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:38
PndFTSCATrackParamVector & ParamRef()
Definition: FTSCANPletsV.h:57
const PndFTSCATrackParamVector & Param() const
Definition: FTSCANPletsV.h:55
PndFTSCATrackParamVector fParam
Definition: FTSCANPletsV.h:84