ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPATElectrons.cc
Revision: 1.9
Committed: Fri Sep 25 08:42:51 2009 UTC (15 years, 7 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_013pre1, Mit_012i, Mit_012h, Mit_012g, Mit_012f, Mit_012e, Mit_012d, Mit_012c, Mit_012b, Mit_012a, Mit_012, Mit_011a
Changes since 1.8: +2 -2 lines
Log Message:
Extended interface of BookDataBlock to contain event setup.

File Contents

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