#ifndef _L1AlgoInputMCData_h #define _L1AlgoInputMCData_h #include "CbmL1Def.h" #include #include #include using std::vector; using std::istream; class CbmL1StsHit; class CbmL1MCPoint; class CbmL1MCTrack; class L1StsHit; class CbmL1HitStore{ public: int ExtIndex; int iStation; double x, y; }; class L1AlgoInputMCData{ public: L1AlgoInputMCData() { }; ~L1AlgoInputMCData() { }; const vector< CbmL1HitStore > & GetHitStore() const { return vHitStore; } const vector< CbmL1StsHit > & GetStsHits() const { return vStsHits; } const vector< L1StsHit > & GetL1StsHits() const { return vL1StsHits; } const vector< unsigned char > & GetvSFlag() const { return vSFlag; } const vector< CbmL1MCPoint > & GetMCPoints() const { return vMCPoints; } const vector< CbmL1MCTrack > & GetMCTracks() const { return vMCTracks; } const vector< int > & GetHitMCRef() const { return vHitMCRef; } void SetData( const vector< CbmL1HitStore > & HitStore_, const vector< CbmL1StsHit > & StsHits_, const vector< CbmL1MCPoint > & MCPoints_, const vector< CbmL1MCTrack > & MCTracks_, const vector< int > & HitMCRef_, const vector< unsigned char > & vSFlag_, const vector< L1StsHit > & vL1StsHits_ ); bool ReadMCDataFromFile(const char work_dir[100], const int maxNEvent, const int iVerbose, vector &McDataHit, vector &McDataHit2); //bool ReadMCDataFromFile(const char work_dir[100], const int maxNEvent, const int iVerbose, vector &McDataHit, vector &McDataHit2); /// 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); } L1AlgoInputMCData( const L1AlgoInputMCData& a); const L1AlgoInputMCData& operator=( const L1AlgoInputMCData& a); private: // functionality static istream& eatwhite(istream& is); // skip spaces /// read data from data_perfo.txt // data vector vHitStore; // array of all hits. all hits must have corespondend point, which marked in vHitMCRef vector vStsHits; // hits with hit-mcpoint match information vector vL1StsHits; // hits with hit-mcpoint match information vector vMCPoints; // list of MonteCarlo(=simulated) point vector vMCTracks; // list of MonteCarlo(=simulated) track vector vHitMCRef; // index the registred(effective(reference)) MonteCarlo points(=hits) in vMCPoints vector vSFlag; } _fvecalignment; struct InputMCDataArray{ InputMCDataArray():fMCInput(0){}; ~InputMCDataArray() { if(fMCInput) delete [] fMCInput; } L1AlgoInputMCData *fMCInput; } _fvecalignment; #endif // #ifndef _L1AlgoInputMCData_h