// ------------------------------------------------------------------------- // ----- CbmEcalCellMC header file ----- // ----- Created 18/01/12 by M.Prokudin ----- // ------------------------------------------------------------------------- /** CbmEcalCellMC.h *@author Mikhail Prokudin ** ** ECAL cell structure, a part of ECAL module. This implementation carries an MC information **/ #ifndef CBMECALCELLMC_H #define CBMECALCELLMC_H /* $Id: CbmEcalCellMC.h,v 1.9 2012/01/18 18:15:23 prokudin Exp $ */ #include "CbmEcalCell.h" #include #include #include class CbmEcalCellMC : public CbmEcalCell { public: CbmEcalCellMC(Int_t cellnumber, Float_t x1=0, Float_t y1=0, Float_t x2=0, Float_t y2=0, Char_t type=0, Float_t energy=0); Float_t GetTrackEnergy(Int_t num) const; Float_t GetTrackTime(Int_t num) const; inline Float_t GetTrackTotalEnergy(Int_t num) const //Dummy: better use GetEnergy { return GetTrackEnergy(num); } /** Reset all energies in cell **/ void ResetEnergy(); inline void SetTrackEnergy(Int_t num, Float_t energy, Float_t time=-1111) {fTrackEnergy[num]=energy; fTrackTime[num]=time; } inline void AddTrackEnergy(Int_t num, Float_t energy, Float_t time=-1111) { fTrackEnergy[num]+=energy; if (time==-1111) return; std::map::const_iterator p=fTrackTime.find(num); if (p==fTrackTime.end()) fTrackTime[num]=time; else if (fTrackTime[num]>time) fTrackTime[num]=time; } // same for tracks Float_t GetTrackClusterEnergy(Int_t num, Int_t code); void TrackIvansProcedure(Int_t num, Float_t &clusterE, Float_t &ivansE, Float_t &shape); inline std::map::const_iterator GetTrackEnergyBegin() const {return fTrackEnergy.begin();} inline std::map::const_iterator GetTrackEnergyEnd() const {return fTrackEnergy.end();} inline std::map::const_iterator GetTrackTimeBegin() const {return fTrackTime.begin();} inline std::map::const_iterator GetTrackTimeEnd() const {return fTrackTime.end();} private: /** map **/ std::map fTrackEnergy; /** map**/ std::map fTrackTime; ClassDef(CbmEcalCellMC,1); }; #endif