#ifndef _L1AlgoInputData_h #define _L1AlgoInputData_h #include "CbmL1Def.h" #include "L1Strip.h" #include "L1StsHit.h" #include #include #include #include using std::vector; using std::istream; class L1AlgoInputData{ public: L1AlgoInputData() { for(int i=0; i & GetStsHits() const { return vStsHits; } const vector< L1Strip > & GetStsStrips() const { return vStsStrips; } const vector< L1Strip > & GetStsStripsB() const { return vStsStripsB; } const vector< fscal > & GetStsZPos() const { return vStsZPos; } const vector< unsigned char > & GetSFlag() const { return vSFlag; } const vector< unsigned char > & GetSFlagB() const { return vSFlagB; } const THitI* GetStsHitsStartIndex() const { return StsHitsStartIndex; } const THitI* GetStsHitsStopIndex() const { return StsHitsStopIndex; } void SetData( const vector< L1StsHit > & StsHits_, const vector< L1Strip > & StsStrips_, const vector< L1Strip > & StsStripsB_, const vector< fscal > & StsZPos_, const vector< unsigned char > & SFlag_, const vector< unsigned char > & SFlagB_, const THitI* StsHitsStartIndex_, const THitI* StsHitsStopIndex_ ); bool ReadHitsFromFile(const std::string work_dir, const int maxNEvent, const int iVerbose); void PrintHits(); /// redefine new\delete for use alignment memmory void *operator new(size_t size, void *ptr) { return ::operator new(size, ptr);} void *operator new[](size_t size, void *ptr) { return ::operator new(size, ptr);} void *operator new(size_t size) { return _mm_malloc(size, 16); } void *operator new[](size_t size) { return _mm_malloc(size, 16); } void operator delete(void *ptr, size_t) { _mm_free(ptr); } void operator delete[](void *ptr, size_t) { _mm_free(ptr); } L1AlgoInputData( const L1AlgoInputData& a); const L1AlgoInputData& operator=( const L1AlgoInputData& a); private: // functionality static istream& eatwhite(istream& is); // skip spaces /// read data from data_algo.txt // data enum{ MaxNStations = 10 }; vector< L1StsHit > vStsHits; // hits as a combination of front-, backstrips and z-position vector< L1Strip > vStsStrips, // strips positions created from hits. Front strips vStsStripsB; // back strips vector< fscal > vStsZPos; // all possible z-positions of hits L1Vector< unsigned char > vSFlag, // information of hits station & using hits in tracks; vSFlagB; THitI StsHitsStartIndex[MaxNStations+1], StsHitsStopIndex[MaxNStations+1]; // station-bounders in vStsHits array } _fvecalignment; #endif // #ifndef _L1AlgoInputData_h