//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Processing unit for one pad // // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- #ifndef PADPROCESSOR_HH #define PADPROCESSOR_HH // Base Class Headers ---------------- // Collaborating Class Headers ------- #include // remove if you do not need streaming op #include #include #include #include "PndTpcDigi.h" // Collaborating Class Declarations -- class ppstate; class padprocessor { public: // Constructors/Destructors --------- padprocessor(unsigned int Id); ~padprocessor(); // Operators // Accessors ----------------------- unsigned int id() const {return fmyid;} bool isCenter() const {return fiscenter;} bool isMasked() const {return fmasked;} double amp() const ; double t() const {if(fmydata==NULL) return 0; else return fmydata->t();} PndTpcDigi* mydata() const {return fmydata;} unsigned int ndata() const {return fdata.size();} unsigned int domNeighbour() const {if(fdominant_neighb!=-1)return fneighbours[fdominant_neighb]->id(); else return 0;} // Modifiers ----------------------- void setData(PndTpcDigi* mydata); // resets data buffer! void addNeighbour(padprocessor* pp); void setMasked(bool m=true){fmasked=m;} void addState(ppstate* state, std::string name); ppstate* getState(std::string name){return fstates[name];} void put(PndTpcDigi* data); // transport data into this pad PndTpcDigi* get(unsigned int i) {return fdata[i];} // Operations ---------------------- std::string heartbeat(); // heartbeat of finite state machine // returns state at end of heartbeat void setState(std::string name); std::string getCurrentState() const {return fastate;} void reset(); void setClusterBuffer(std::vector*>* clb) {fcluster_buffer=clb;} friend class ppstate_initial; friend class ppstate_compare; friend class ppstate_send; friend class ppstate_wait; friend class ppstate_output; private: // Private Data Members ------------ unsigned int fmyid; PndTpcDigi* fmydata; std::vector fdata; // fdata[0]=mydata std::vector fneighbours; bool fiscenter; bool fmasked; int fdominant_neighb; std::map fstates; ppstate* factive_state; std::string fastate; std::vector*>* fcluster_buffer; // Private Methods ----------------- }; #endif //-------------------------------------------------------------- // $Log$ //--------------------------------------------------------------