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