ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMuons.cc
Revision: 1.19
Committed: Wed Mar 11 18:15:27 2009 UTC (16 years, 1 month ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.18: +16 -4 lines
Log Message:
Add muon export map, needed for PF

File Contents

# User Rev Content
1 bendavid 1.19 // $Id: FillerMuons.cc,v 1.18 2009/03/10 15:56:01 loizides Exp $
2 loizides 1.1
3     #include "MitProd/TreeFiller/interface/FillerMuons.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.15 #include "DataFormats/Common/interface/RefToPtr.h"
9 loizides 1.1 #include "MitAna/DataTree/interface/Muon.h"
10     #include "MitAna/DataTree/interface/Track.h"
11     #include "MitAna/DataTree/interface/Names.h"
12    
13     using namespace std;
14     using namespace edm;
15     using namespace mithep;
16    
17 loizides 1.4 //--------------------------------------------------------------------------------------------------
18 loizides 1.18 FillerMuons::FillerMuons(const edm::ParameterSet &cfg, const char *name, bool active) :
19     BaseFiller(cfg,name,active),
20 loizides 1.1 edmName_(Conf().getUntrackedParameter<string>("edmName","muons")),
21     mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkMuonBrn)),
22 loizides 1.9 globalTrackMapName_(Conf().getUntrackedParameter<string>("globalTrackMapName","")),
23     staTrackMapName_(Conf().getUntrackedParameter<string>("staTrackMapName","")),
24     staVtxTrackMapName_(Conf().getUntrackedParameter<string>("staVtxTrackMapName","")),
25     trackerTrackMapName_(Conf().getUntrackedParameter<string>("trackerTrackMapName","")),
26 bendavid 1.19 muonMapName_(Conf().getUntrackedParameter<string>("muonMapName","")),
27     globalTrackMap_(0),
28     standaloneTrackMap_(0),
29     standaloneVtxTrackMap_(0),
30 loizides 1.9 trackerTrackMap_(0),
31 bendavid 1.19 muonMap_(new mithep::MuonMap),
32 pharris 1.12 muons_(new mithep::MuonArr(16))
33 loizides 1.1 {
34     // Constructor.
35     }
36    
37 loizides 1.4 //--------------------------------------------------------------------------------------------------
38 pharris 1.12 FillerMuons::~FillerMuons() {
39 loizides 1.5 delete muons_;
40 bendavid 1.19 delete muonMap_;
41 loizides 1.1 }
42    
43 loizides 1.4 //--------------------------------------------------------------------------------------------------
44 pharris 1.13 void FillerMuons::BookDataBlock(TreeWriter &tws) {
45 loizides 1.9 // Add muons branch to tree and get pointers to maps.
46 loizides 1.1
47     tws.AddBranch(mitName_.c_str(),&muons_);
48 loizides 1.9
49     if (!globalTrackMapName_.empty())
50     globalTrackMap_ = OS()->get<TrackMap>(globalTrackMapName_.c_str());
51     if (!staTrackMapName_.empty())
52     standaloneTrackMap_ = OS()->get<TrackMap>(staTrackMapName_.c_str());
53     if (!staVtxTrackMapName_.empty())
54     standaloneVtxTrackMap_ = OS()->get<TrackMap>(staVtxTrackMapName_.c_str());
55     if (!trackerTrackMapName_.empty())
56     trackerTrackMap_ = OS()->get<TrackMap>(trackerTrackMapName_.c_str());
57 bendavid 1.19
58     OS()->add<MuonMap>(muonMap_,muonMapName_.c_str());
59    
60 loizides 1.1 }
61    
62 loizides 1.9
63    
64 loizides 1.4 //--------------------------------------------------------------------------------------------------
65 loizides 1.1 void FillerMuons::FillDataBlock(const edm::Event &event,
66 loizides 1.4 const edm::EventSetup &setup)
67 loizides 1.1 {
68     // Fill muon information.
69    
70 bendavid 1.16 muons_->Delete();
71 bendavid 1.19 muonMap_->Reset();
72 loizides 1.1
73 loizides 1.6 Handle<reco::MuonCollection> hMuonProduct;
74 sixie 1.10 GetProduct(edmName_, hMuonProduct, event);
75 loizides 1.6 const reco::MuonCollection inMuons = *(hMuonProduct.product());
76 loizides 1.1
77 sixie 1.10 for (reco::MuonCollection::const_iterator iM = inMuons.begin(); iM != inMuons.end(); ++iM) {
78     mithep::Muon* outMuon = muons_->AddNew();
79     outMuon->SetIsoR03SumPt(iM->isolationR03().sumPt);
80     outMuon->SetIsoR03EmEt(iM->isolationR03().emEt);
81     outMuon->SetIsoR03HadEt(iM->isolationR03().hadEt);
82     outMuon->SetIsoR03HoEt(iM->isolationR03().hoEt);
83     outMuon->SetIsoR03NTracks(iM->isolationR03().nTracks);
84     outMuon->SetIsoR03NJets(iM->isolationR03().nJets);
85     outMuon->SetIsoR05SumPt(iM->isolationR05().sumPt);
86     outMuon->SetIsoR05EmEt(iM->isolationR05().emEt);
87     outMuon->SetIsoR05HadEt(iM->isolationR05().hadEt);
88     outMuon->SetIsoR05HoEt(iM->isolationR05().hoEt);
89     outMuon->SetIsoR05NTracks(iM->isolationR05().nTracks);
90     outMuon->SetIsoR05NJets(iM->isolationR05().nJets);
91     outMuon->SetEmEnergy(iM->calEnergy().em);
92     outMuon->SetHadEnergy(iM->calEnergy().had);
93     outMuon->SetHoEnergy(iM->calEnergy().ho);
94     outMuon->SetEmS9Energy(iM->calEnergy().emS9);
95     outMuon->SetHadS9Energy(iM->calEnergy().hadS9);
96     outMuon->SetHoS9Energy(iM->calEnergy().hoS9);
97 bendavid 1.17 outMuon->SetIsGlobalMuon(iM->isGlobalMuon());
98     outMuon->SetIsTrackerMuon(iM->isTrackerMuon());
99     outMuon->SetIsStandaloneMuon(iM->isStandAloneMuon());
100     outMuon->SetIsCaloMuon(iM->isCaloMuon());
101 pharris 1.11
102 loizides 1.1 if (globalTrackMap_ && iM->combinedMuon().isNonnull())
103 bendavid 1.15 outMuon->SetGlobalTrk(globalTrackMap_->GetMit(refToPtr(iM->combinedMuon())));
104 loizides 1.1 if (standaloneTrackMap_ && standaloneVtxTrackMap_ && iM->standAloneMuon().isNonnull()) {
105     Int_t refProductId = iM->standAloneMuon().id().id();
106     if ( refProductId == standaloneVtxTrackMap_->GetEdmProductId())
107 bendavid 1.15 outMuon->SetStandaloneTrk(standaloneVtxTrackMap_->GetMit(refToPtr(iM->standAloneMuon())));
108 loizides 1.1 else if ( refProductId == standaloneTrackMap_->GetEdmProductId())
109 bendavid 1.15 outMuon->SetStandaloneTrk(standaloneTrackMap_->GetMit(refToPtr(iM->standAloneMuon())));
110 loizides 1.1 else throw edm::Exception(edm::errors::Configuration, "FillerMuons:FillDataBlock()\n")
111 loizides 1.14 << "Error! Track reference in unmapped collection " << edmName_ << endl;
112 loizides 1.1 }
113     if (trackerTrackMap_ && iM->track().isNonnull())
114 bendavid 1.15 outMuon->SetTrackerTrk(trackerTrackMap_->GetMit(refToPtr(iM->track())));
115 loizides 1.14
116     outMuon->SetNChambers (iM->numberOfChambers());
117 pharris 1.11 outMuon->SetStationMask(iM->stationMask(reco::Muon::SegmentAndTrackArbitration));
118 loizides 1.14 for(int i0 = 0; i0 < 4; i0++) {
119 pharris 1.11 //DTs
120     outMuon->SetDX(i0, iM->dX(i0+1,1));
121     outMuon->SetDY(i0, iM->dY(i0+1,1));
122     outMuon->SetPullX(i0, iM->pullX(i0+1,1));
123     outMuon->SetPullY(i0, iM->pullY(i0+1,1));
124     outMuon->SetTrackDist(i0, iM->trackDist(i0+1,1));
125     outMuon->SetTrackDistErr(i0, iM->trackDistErr(i0+1,1));
126 loizides 1.14 outMuon->SetNSegments(i0, iM->numberOfSegments(i0+1,1));
127 pharris 1.11 //CSCs
128     outMuon->SetDX(4+i0, iM->dX (i0+1,2));
129     outMuon->SetDY(4+i0, iM->dY (i0+1,2));
130     outMuon->SetPullX(4+i0, iM->pullX (i0+1,2));
131     outMuon->SetPullY(4+i0, iM->pullY (i0+1,2));
132     outMuon->SetTrackDist(4+i0, iM->trackDist(i0+1,2));
133     outMuon->SetTrackDistErr(4+i0,iM->trackDistErr(i0+1,2));
134     outMuon->SetNSegments(4+i0, iM->numberOfSegments(i0+1,2));
135     }
136 bendavid 1.19
137     //add muon to map
138     edm::Ptr<reco::Muon> thePtr(hMuonProduct, iM - inMuons.begin());
139     muonMap_->Add(thePtr, outMuon);
140    
141 pharris 1.11 }
142 loizides 1.1 muons_->Trim();
143     }