ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPATMuons.cc
Revision: 1.4
Committed: Thu Feb 26 17:04:03 2009 UTC (16 years, 2 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_008pre1
Changes since 1.3: +2 -2 lines
Log Message:
Switch from Reset to Delete calls on arrays, since we now use some heap

File Contents

# User Rev Content
1 bendavid 1.4 // $Id: FillerPATMuons.cc,v 1.3 2008/11/03 18:11:10 bendavid Exp $
2 sixie 1.1
3     #include "MitProd/TreeFiller/interface/FillerPATMuons.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "DataFormats/MuonReco/interface/Muon.h"
7     #include "DataFormats/MuonReco/interface/MuonFwd.h"
8 bendavid 1.3 #include "DataFormats/Common/interface/RefToPtr.h"
9 sixie 1.1 #include "MitAna/DataTree/interface/Muon.h"
10     #include "MitAna/DataTree/interface/Track.h"
11     #include "MitAna/DataTree/interface/Names.h"
12     #include "DataFormats/PatCandidates/interface/Muon.h"
13     #include "DataFormats/PatCandidates/interface/Jet.h"
14     #include "DataFormats/PatCandidates/interface/Electron.h"
15     #include "DataFormats/PatCandidates/interface/Tau.h"
16     #include "DataFormats/PatCandidates/interface/Photon.h"
17     #include "DataFormats/PatCandidates/interface/MET.h"
18     #include "DataFormats/Common/interface/View.h"
19    
20     using namespace std;
21     using namespace edm;
22     using namespace mithep;
23    
24     //--------------------------------------------------------------------------------------------------
25     FillerPATMuons::FillerPATMuons(const edm::ParameterSet &cfg, bool active,
26 loizides 1.2 const TrackMap *globalMap, const TrackMap *stdMap,
27     const TrackMap *stdVtxMap, const TrackMap *trackerMap) :
28 sixie 1.1 BaseFiller(cfg,"PATMuons",active),
29     edmName_(Conf().getUntrackedParameter<string>("edmName","selectedLayer1Muons")),
30     mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkMuonBrn)),
31     globalTrackMapName_(Conf().getUntrackedParameter<string>("globalTrackMapName","")),
32     staTrackMapName_(Conf().getUntrackedParameter<string>("staTrackMapName","")),
33     staVtxTrackMapName_(Conf().getUntrackedParameter<string>("staVtxTrackMapName","")),
34     trackerTrackMapName_(Conf().getUntrackedParameter<string>("trackerTrackMapName","")),
35     globalTrackMap_(0),
36     standaloneTrackMap_(0),
37     standaloneVtxTrackMap_(0),
38     trackerTrackMap_(0),
39     muons_(new mithep::MuonArr(16))
40     {
41     // Constructor.
42     }
43    
44     //--------------------------------------------------------------------------------------------------
45     FillerPATMuons::~FillerPATMuons()
46     {
47     // Destructor.
48    
49     delete muons_;
50     }
51    
52     //--------------------------------------------------------------------------------------------------
53     void FillerPATMuons::BookDataBlock(TreeWriter &tws)
54     {
55     // Add muons branch to tree and get pointers to maps.
56    
57     tws.AddBranch(mitName_.c_str(),&muons_);
58    
59     if (!globalTrackMapName_.empty())
60     globalTrackMap_ = OS()->get<TrackMap>(globalTrackMapName_.c_str());
61     if (!staTrackMapName_.empty())
62     standaloneTrackMap_ = OS()->get<TrackMap>(staTrackMapName_.c_str());
63     if (!staVtxTrackMapName_.empty())
64     standaloneVtxTrackMap_ = OS()->get<TrackMap>(staVtxTrackMapName_.c_str());
65     if (!trackerTrackMapName_.empty())
66     trackerTrackMap_ = OS()->get<TrackMap>(trackerTrackMapName_.c_str());
67    
68     }
69    
70     //--------------------------------------------------------------------------------------------------
71     void FillerPATMuons::FillDataBlock(const edm::Event &event,
72     const edm::EventSetup &setup)
73     {
74     // Fill muon information.
75    
76 bendavid 1.4 muons_->Delete();
77 sixie 1.1
78     edm::Handle<edm::View<pat::Muon> > muonHandle;
79     event.getByLabel(edm::InputTag(edmName_),muonHandle);
80     edm::View<pat::Muon> muons = *muonHandle;
81    
82     for(edm::View<pat::Muon>::const_iterator iM = muons.begin(); iM!=muons.end(); ++iM){
83    
84     if(iM->pt()>0) {
85     mithep::Muon* outMuon = muons_->AddNew();
86    
87     if (globalTrackMap_ && iM->combinedMuon().isNonnull())
88 bendavid 1.3 outMuon->SetGlobalTrk(globalTrackMap_->GetMit(refToPtr(iM->combinedMuon())));
89 sixie 1.1
90     if (standaloneTrackMap_ && standaloneVtxTrackMap_ && iM->standAloneMuon().isNonnull()) {
91     Int_t refProductId = iM->standAloneMuon().id().id();
92     if ( refProductId == standaloneVtxTrackMap_->GetEdmProductId())
93 bendavid 1.3 outMuon->SetStandaloneTrk(standaloneVtxTrackMap_->GetMit(refToPtr(iM->standAloneMuon())));
94 sixie 1.1 else if ( refProductId == standaloneTrackMap_->GetEdmProductId())
95 bendavid 1.3 outMuon->SetStandaloneTrk(standaloneTrackMap_->GetMit(refToPtr(iM->standAloneMuon())));
96 sixie 1.1 else throw edm::Exception(edm::errors::Configuration, "FillerPATMuons:FillDataBlock()\n")
97     << "Error! Track reference in unmapped collection " << edmName_ << endl;
98     }
99    
100     if (trackerTrackMap_ && iM->track().isNonnull())
101 bendavid 1.3 outMuon->SetTrackerTrk(trackerTrackMap_->GetMit(refToPtr(iM->track())));
102 sixie 1.1
103     outMuon->SetIsoR03SumPt(iM->isolationR03().sumPt);
104     outMuon->SetIsoR03EmEt(iM->isolationR03().emEt);
105     outMuon->SetIsoR03HadEt(iM->isolationR03().hadEt);
106     outMuon->SetIsoR03HoEt(iM->isolationR03().hoEt);
107     outMuon->SetIsoR03NTracks(iM->isolationR03().nTracks);
108     outMuon->SetIsoR03NJets(iM->isolationR03().nJets);
109     outMuon->SetIsoR05SumPt(iM->isolationR05().sumPt);
110     outMuon->SetIsoR05EmEt(iM->isolationR05().emEt);
111     outMuon->SetIsoR05HadEt(iM->isolationR05().hadEt);
112     outMuon->SetIsoR05HoEt(iM->isolationR05().hoEt);
113     outMuon->SetIsoR05NTracks(iM->isolationR05().nTracks);
114     outMuon->SetIsoR05NJets(iM->isolationR05().nJets);
115     outMuon->SetEmEnergy(iM->calEnergy().em);
116     outMuon->SetHadEnergy(iM->calEnergy().had);
117     outMuon->SetHoEnergy(iM->calEnergy().ho);
118     outMuon->SetEmS9Energy(iM->calEnergy().emS9);
119     outMuon->SetHadS9Energy(iM->calEnergy().hadS9);
120     outMuon->SetHoS9Energy(iM->calEnergy().hoS9);
121     }
122     }
123     muons_->Trim();
124     }