Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:40

0001 #ifndef SimDataFormats_MtdCaloParticle_h
0002 #define SimDataFormats_MtdCaloParticle_h
0003 
0004 #include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h"
0005 #include "SimDataFormats/CaloAnalysis/interface/MtdSimClusterFwd.h"
0006 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0007 
0008 #include <vector>
0009 
0010 class SimTrack;
0011 class EncodedEventId;
0012 
0013 class MtdCaloParticle : public CaloParticle {
0014   friend std::ostream &operator<<(std::ostream &s, MtdCaloParticle const &tp);
0015 
0016 public:
0017   typedef MtdSimClusterRefVector::iterator mtdsc_iterator;
0018 
0019   MtdCaloParticle();
0020 
0021   MtdCaloParticle(const SimTrack &simtrk);
0022   MtdCaloParticle(EncodedEventId eventID, uint32_t particleID);  // for PU
0023 
0024   // destructor
0025   ~MtdCaloParticle();
0026 
0027   void addSimCluster(const MtdSimClusterRef &ref) { mtdsimClusters_.push_back(ref); }
0028 
0029   /// iterators
0030   mtdsc_iterator simCluster_begin() const { return mtdsimClusters_.begin(); }
0031   mtdsc_iterator simCluster_end() const { return mtdsimClusters_.end(); }
0032 
0033   const MtdSimClusterRefVector &simClusters() const { return mtdsimClusters_; }
0034   void clearSimClusters() { mtdsimClusters_.clear(); }
0035 
0036   /** @brief returns the time of the caloparticle */
0037   float simTime() const { return simhit_time_; }
0038 
0039   void addSimTime(const float time) { simhit_time_ = time; }
0040 
0041   /** @brief add simhit's energy to cluster */
0042   void addSimHit(PSimHit &hit) {
0043     simhit_energy_ += hit.energyLoss();
0044     ++nsimhits_;
0045   }
0046 
0047 private:
0048   float simhit_time_{-99.f};
0049   MtdSimClusterRefVector mtdsimClusters_;
0050 };
0051 
0052 #endif  // SimDataFormats_MtdCaloParticle_H