//-*- Mode: C++ -*- // ***************************************************************************** // * // @Autors: I.Kulakov; M.Zyzak; I.Kisel * // @e-mail: I.Kulakov@gsi.de; M.Zyzak@gsi.de; I.Kisel@compeng.uni-frankfurt.de * // * // ***************************************************************************** #ifndef ITSCATRIPLETSV_H #define ITSCATRIPLETSV_H #include "ITSCADoubletsV.h" #include "ITSCATriplets.h" #include using std::vector; class ITSCATripletV { public: ITSCATripletV():fParam(){} ITSCATripletV( const ITSCADoubletV& s1, const ITSCADoubletV& s2, int iV, const AliHLTTPCCATrackParamVector& param, const sfloat_m isValid ):fParam(param), fIsValid( isValid) { fIHit[0] = s1.IHit(0); fIHit[1] = s1.IHit(1); fIHit[2] = s2.IHit(1)[iV]; } // accessors TESV IHit( int IH ) const { return fIHit[IH]; } const AliHLTTPCCATrackParamVector& Param() const { return fParam; } sfloat_m IsValid() const { return fIsValid; } private: TESV fIHit[3]; // index of hit on station AliHLTTPCCATrackParamVector fParam; sfloat_m fIsValid; }; class ITSCATripletsV: public ITSCAStationArray { public: ITSCATripletsV( int nSta, const ITSCAHits* hits ):ITSCAStationArray( nSta,hits ){}; operator ITSCATriplets(){ ITSCATriplets r( NStations(), fElement[0].HitsRef() ); for( int i = 0; i < NStations(); ++i ) { ITSCAElementsOnStation tOnSta; const ITSCAElementsOnStation& ts = OnStation(i); for( unsigned int iT = 0; iT < ts.size(); iT++ ) { const ITSCATripletV& t = ts[iT]; foreach_bit( unsigned int iV, t.IsValid() ) { tOnSta.push_back( ITSCATriplet( t.IHit( 0 )[iV], t.IHit( 1 )[iV], t.IHit( 2 )[iV], AliHLTTPCCATrackParam( t.Param(), iV ) ) ); } } r.OnStation( i ) = tOnSta; } return r; } }; #endif