ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPATMuons.cc
Revision: 1.1
Committed: Tue Aug 12 10:13:46 2008 UTC (16 years, 9 months ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: MITHEP_2_0_x
Log Message:
add Fillers for PAT electrons and muons.

File Contents

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