CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/SimG4CMS/Muon/src/MuonSlaveSD.cc

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