ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPATElectrons.cc
Revision: 1.5
Committed: Sun Mar 15 11:20:41 2009 UTC (16 years, 1 month ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_009a, Mit_009, Mit_008, Mit_008pre2
Changes since 1.4: +29 -28 lines
Log Message:
Introduced BranchTable plus general cleanup.

File Contents

# User Rev Content
1 loizides 1.5 // $Id: FillerPATElectrons.cc,v 1.4 2009/02/26 17:04:03 bendavid Exp $
2 sixie 1.1
3     #include "MitProd/TreeFiller/interface/FillerPATElectrons.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "DataFormats/TrackReco/interface/Track.h"
7     #include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
8     #include "DataFormats/TrackReco/interface/TrackFwd.h"
9 bendavid 1.3 #include "DataFormats/Common/interface/RefToPtr.h"
10 loizides 1.2 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
11     #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
12 sixie 1.1 #include "MitAna/DataTree/interface/Track.h"
13     #include "MitAna/DataTree/interface/Names.h"
14     #include "DataFormats/PatCandidates/interface/Muon.h"
15     #include "DataFormats/PatCandidates/interface/Jet.h"
16     #include "DataFormats/PatCandidates/interface/Electron.h"
17     #include "DataFormats/PatCandidates/interface/Tau.h"
18     #include "DataFormats/PatCandidates/interface/Photon.h"
19     #include "DataFormats/PatCandidates/interface/MET.h"
20     #include "DataFormats/Common/interface/View.h"
21    
22     using namespace std;
23     using namespace edm;
24     using namespace mithep;
25    
26     //--------------------------------------------------------------------------------------------------
27 loizides 1.5 FillerPATElectrons::FillerPATElectrons(const edm::ParameterSet &cfg,
28     const char *name, bool active) :
29 sixie 1.1 BaseFiller(cfg,"PATElectrons",active),
30     edmName_(Conf().getUntrackedParameter<string>("edmName","selectedLayer1Electrons")),
31     mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkElectronBrn)),
32     gsfTrackMapName_(Conf().getUntrackedParameter<string>("gsfTrackMapName","")),
33     trackerTrackMapName_(Conf().getUntrackedParameter<string>("trackerTrackMapName","")),
34     electrons_(new mithep::ElectronArr(16)),
35     gsfTrackMap_(0),
36     trackerTrackMap_(0)
37     {
38     // Constructor.
39     }
40    
41     //--------------------------------------------------------------------------------------------------
42     FillerPATElectrons::~FillerPATElectrons()
43     {
44     // Destructor.
45    
46     delete electrons_;
47     }
48    
49     //--------------------------------------------------------------------------------------------------
50     void FillerPATElectrons::BookDataBlock(TreeWriter &tws)
51     {
52     // Add electron branch to our tree and get our maps.
53    
54 loizides 1.5 tws.AddBranch(mitName_,&electrons_);
55     OS()->add<mithep::ElectronArr>(electrons_,mitName_);
56 sixie 1.1
57 loizides 1.5 if (!gsfTrackMapName_.empty()) {
58     gsfTrackMap_ = OS()->get<TrackMap>(gsfTrackMapName_);
59     if (gsfTrackMap_)
60     AddBranchDep(mitName_,gsfTrackMap_->GetBrName());
61     }
62     if (!trackerTrackMapName_.empty()) {
63     trackerTrackMap_ = OS()->get<TrackMap>(trackerTrackMapName_);
64     if (trackerTrackMap_)
65     AddBranchDep(mitName_,trackerTrackMap_->GetBrName());
66     }
67 sixie 1.1 }
68    
69     //--------------------------------------------------------------------------------------------------
70     void FillerPATElectrons::FillDataBlock(const edm::Event &event,
71 loizides 1.5 const edm::EventSetup &setup)
72 sixie 1.1 {
73     // Fill electrons from edm collection into our collection.
74    
75 bendavid 1.4 electrons_->Delete();
76 sixie 1.1
77     edm::Handle<edm::View<pat::Electron> > electronHandle;
78     event.getByLabel(edm::InputTag(edmName_),electronHandle);
79    
80     edm::View<pat::Electron> electrons = *electronHandle;
81    
82     for(edm::View<pat::Electron>::const_iterator iM = electrons.begin();
83     iM!=electrons.end(); ++iM){
84    
85     if(iM->pt()>0) {
86    
87     mithep::Electron *outElectron = electrons_->AddNew();
88    
89     if (gsfTrackMap_ && iM->gsfTrack().isNonnull())
90 bendavid 1.3 outElectron->SetGsfTrk(gsfTrackMap_->GetMit(refToPtr(iM->gsfTrack())));
91 sixie 1.1 if (trackerTrackMap_ && iM->track().isNonnull())
92 bendavid 1.3 outElectron->SetTrackerTrk(trackerTrackMap_->GetMit(refToPtr(iM->track())));
93 sixie 1.1
94 loizides 1.5 outElectron->SetESuperClusterOverP(iM->eSuperClusterOverP());
95     outElectron->SetESeedClusterOverPout(iM->eSeedClusterOverPout());
96     outElectron->SetDeltaEtaSuperClusterTrackAtVtx(iM->deltaEtaSuperClusterTrackAtVtx());
97     outElectron->SetDeltaEtaSeedClusterTrackAtCalo(iM->deltaEtaSeedClusterTrackAtCalo());
98     outElectron->SetDeltaPhiSuperClusterTrackAtVtx(iM->deltaPhiSuperClusterTrackAtVtx());
99     outElectron->SetDeltaPhiSeedClusterTrackAtCalo(iM->deltaPhiSeedClusterTrackAtCalo());
100     outElectron->SetHadronicOverEm(iM->hadronicOverEm());
101     outElectron->SetIsEnergyScaleCorrected(iM->isEnergyScaleCorrected());
102     outElectron->SetIsMomentumCorrected(iM->isMomentumCorrected());
103     outElectron->SetNumberOfClusters(iM->numberOfClusters());
104     outElectron->SetClassification(iM->classification());
105     outElectron->SetCaloIsolation(iM->caloIso());
106     outElectron->SetTrackIsolation(iM->trackIso());
107 sixie 1.1 }
108     }
109     electrons_->Trim();
110     }