Go to the documentation of this file.00001 #include "SimG4CMS/Muon/interface/MuonSlaveSD.h"
00002 #include "Geometry/MuonNumbering/interface/MuonSubDetector.h"
00003
00004 #include "SimG4Core/Application/interface/SimTrackManager.h"
00005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00006
00007 #include <iostream>
00008
00009
00010 MuonSlaveSD::MuonSlaveSD(MuonSubDetector* d,
00011 const SimTrackManager* manager):
00012 TrackingSlaveSD(d->name() ), m_trackManager(manager)
00013 {
00014 detector=d;
00015
00016 }
00017
00018 MuonSlaveSD::~MuonSlaveSD() {
00019 }
00020
00021 void MuonSlaveSD::clearHits()
00022 {
00023 LogDebug("MuonSimDebug") << " MuonSlaveSD::clearHits "<< detector->name() << std::endl;
00024 hits_.clear();
00025 }
00026
00027 bool MuonSlaveSD::format()
00028 {
00029 LogDebug("MuonSimDebug") << " MuonSlaveSD "<<detector->name()<<" formatting " << hits_.size() <<" hits."<< std::endl;
00030 if (detector->isBarrel()) {
00031 sort(hits_.begin(),hits_.end(), FormatBarrelHits());
00032 } else if (detector->isEndcap()) {
00033 sort(hits_.begin(),hits_.end(), FormatEndcapHits());
00034 } else if (detector->isRpc()) {
00035 sort(hits_.begin(),hits_.end(), FormatRpcHits());
00036 }
00037
00038 return true;
00039 }
00040
00041
00042 bool FormatBarrelHits::operator() (const PSimHit & a, const PSimHit & b)
00043 {
00044 return (sortId(a)<sortId(b));
00045 }
00046
00047 int FormatBarrelHits::sortId(const PSimHit & a) const
00048 {
00049 return a.detUnitId();
00050 }
00051
00052 bool FormatEndcapHits::operator() (const PSimHit & a, const PSimHit & b)
00053 {
00054 return (sortId(a)<sortId(b));
00055 }
00056
00057 int FormatEndcapHits::sortId(const PSimHit & a) const
00058 {
00059 return a.detUnitId();
00060 }
00061
00062 bool FormatRpcHits::operator() (const PSimHit & a, const PSimHit & b)
00063 {
00064 return (sortId(a)<sortId(b));
00065 }
00066
00067 int FormatRpcHits::sortId(const PSimHit & a) const
00068 {
00069 return a.detUnitId();
00070 }
00071