ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPFTaus.cc
Revision: 1.7
Committed: Wed Mar 9 14:28:52 2011 UTC (14 years, 2 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_020d, TMit_020d, Mit_020c, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1
Changes since 1.6: +5 -7 lines
Log Message:
fix filling of pfjet reference

File Contents

# User Rev Content
1 bendavid 1.7 // $Id: FillerPFTaus.cc,v 1.6 2011/01/27 12:37:17 mhchan Exp $
2 bendavid 1.1
3     #include "MitProd/TreeFiller/interface/FillerPFTaus.h"
4     #include "DataFormats/Common/interface/RefToPtr.h"
5     #include "DataFormats/TauReco/interface/PFTau.h"
6     #include "DataFormats/TauReco/interface/PFTauFwd.h"
7 mhchan 1.6 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
8 loizides 1.3 #include "MitAna/DataTree/interface/Names.h"
9     #include "MitAna/DataTree/interface/PFTauCol.h"
10     #include "MitProd/ObjectService/interface/ObjectService.h"
11 bendavid 1.1
12     using namespace std;
13     using namespace edm;
14     using namespace mithep;
15    
16     //--------------------------------------------------------------------------------------------------
17     FillerPFTaus::FillerPFTaus(const ParameterSet &cfg, const char *name, bool active) :
18     BaseFiller(cfg,name,active),
19 mhchan 1.6 hpsActive_(Conf().getUntrackedParameter<bool>("hpsActive", false)),
20 bendavid 1.1 edmName_(Conf().getUntrackedParameter<string>("edmName","")),
21 mhchan 1.6 mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkPFTauBrn)),
22     discriminationAgainstElectronName_(Conf().getUntrackedParameter<string>("discriminationAgainstElectronName", "hpsPFTauDiscriminationAgainstElectron")),
23     discriminationAgainstMuonName_(Conf().getUntrackedParameter<string>("discriminationAgainstMuonName", "hpsPFTauDiscriminationAgainstMuon")),
24     discriminationByDecayModeFindingName_(Conf().getUntrackedParameter<string>("discriminationByDecayModeFindingName", "hpsPFTauDiscriminationByDecayModeFinding")),
25     discriminationByLooseIsolationName_(Conf().getUntrackedParameter<string>("discriminationByLooseIsolationName", "hpsPFTauDiscriminationByLooseIsolation")),
26     discriminationByMediumIsolationName_(Conf().getUntrackedParameter<string>("discriminationByMediumIsolationName", "hpsPFTauDiscriminationByMediumIsolation")),
27     discriminationByTightIsolationName_(Conf().getUntrackedParameter<string>("discriminationByTightIsolationName", "hpsPFTauDiscriminationByTightIsolation")),
28 bendavid 1.1 trackMapName_(Conf().getUntrackedParameter<string>("trackMapName","TracksMapName")),
29     jetMapName_(Conf().getUntrackedParameter<string>("jetMapName","JetMapName")),
30     pfCandMapName_(Conf().getUntrackedParameter<string>("pfCandMapName","")),
31     trackMap_(0),
32     jetMap_(0),
33     pfCandMap_(0),
34     taus_(new mithep::PFTauArr(16))
35     {
36     // Constructor.
37     }
38    
39     //--------------------------------------------------------------------------------------------------
40     FillerPFTaus::~FillerPFTaus()
41     {
42     // Destructor.
43    
44     delete taus_;
45     }
46    
47     //--------------------------------------------------------------------------------------------------
48 bendavid 1.5 void FillerPFTaus::BookDataBlock(TreeWriter &tws)
49 bendavid 1.1 {
50     // Add taus branch to tree.
51    
52     tws.AddBranch(mitName_,&taus_);
53     OS()->add<mithep::PFTauArr>(taus_,mitName_);
54    
55     if (!trackMapName_.empty()) {
56     trackMap_ = OS()->get<TrackMap>(trackMapName_);
57     if (trackMap_)
58     AddBranchDep(mitName_, trackMap_->GetBrName());
59     }
60    
61     if (!jetMapName_.empty()) {
62     jetMap_ = OS()->get<PFJetMap>(jetMapName_);
63     if (jetMap_)
64     AddBranchDep(mitName_, jetMap_->GetBrName());
65     }
66    
67     if (!pfCandMapName_.empty()) {
68     pfCandMap_ = OS()->get<PFCandidateMap>(pfCandMapName_);
69     if (pfCandMap_)
70     AddBranchDep(mitName_, pfCandMap_->GetBrName());
71     }
72     }
73    
74     //--------------------------------------------------------------------------------------------------
75     void FillerPFTaus::FillDataBlock(const edm::Event &event,
76 loizides 1.2 const edm::EventSetup &setup)
77 bendavid 1.1 {
78     // Fill taus from edm collection into our collection.
79    
80     taus_->Delete();
81    
82     // handle for the tau collection
83     Handle<reco::PFTauCollection> hTauProduct;
84     GetProduct(edmName_, hTauProduct, event);
85    
86 mhchan 1.6 // Handles for HPS discriminants
87     Handle<reco::PFTauDiscriminator> hDiscriminationAgainstElectron;
88     Handle<reco::PFTauDiscriminator> hDiscriminationAgainstMuon;
89     Handle<reco::PFTauDiscriminator> hDiscriminationByDecayModeFinding;
90     Handle<reco::PFTauDiscriminator> hDiscriminationByLooseIsolation;
91     Handle<reco::PFTauDiscriminator> hDiscriminationByMediumIsolation;
92     Handle<reco::PFTauDiscriminator> hDiscriminationByTightIsolation;
93    
94     if(hpsActive_)
95     {
96     GetProduct(discriminationAgainstElectronName_, hDiscriminationAgainstElectron, event);
97     GetProduct(discriminationAgainstMuonName_, hDiscriminationAgainstMuon, event);
98     GetProduct(discriminationByDecayModeFindingName_, hDiscriminationByDecayModeFinding, event);
99     GetProduct(discriminationByLooseIsolationName_, hDiscriminationByLooseIsolation, event);
100     GetProduct(discriminationByMediumIsolationName_, hDiscriminationByMediumIsolation, event);
101     GetProduct(discriminationByTightIsolationName_, hDiscriminationByTightIsolation, event);
102     }
103    
104 bendavid 1.1 const reco::PFTauCollection inTaus = *(hTauProduct.product());
105     // loop through all taus
106     for (reco::PFTauCollection::const_iterator inTau = inTaus.begin();
107     inTau != inTaus.end(); ++inTau) {
108    
109     reco::PFTauRef tauRef(hTauProduct, inTau - inTaus.begin());
110    
111     mithep::PFTau *tau = taus_->Allocate();
112     new (tau) mithep::PFTau(inTau->px(),
113     inTau->py(),
114     inTau->pz(),
115     inTau->energy());
116    
117     tau->SetMomAlt(inTau->alternatLorentzVect().x(),
118     inTau->alternatLorentzVect().y(),
119     inTau->alternatLorentzVect().z(),
120     inTau->alternatLorentzVect().e());
121    
122     // fill pftau-specific quantities
123     tau->SetBremRecoveryEOverP(inTau->bremsRecoveryEOverPLead());
124     tau->SetCaloCompatibility(inTau->caloComp());
125     tau->SetECalStripSumEOverP(inTau->ecalStripSumEOverPLead());
126     tau->SetEMFraction(inTau->emFraction());
127     tau->SetElectronPreIDDecision(inTau->electronPreIDDecision());
128     tau->SetElectronPreIDOutput(inTau->electronPreIDOutput());
129     tau->SetHCal3x3EOverP(inTau->hcal3x3OverPLead());
130     tau->SetHCalMaxEOverP(inTau->hcalMaxOverPLead());
131     tau->SetHCalTotalEOverP(inTau->hcalTotOverPLead());
132     tau->SetIsoChargedHadronPtSum(inTau->isolationPFChargedHadrCandsPtSum());
133     tau->SetIsoGammaEtSum(inTau->isolationPFGammaCandsEtSum());
134     tau->SetLeadPFCandSignD0Sig(inTau->leadPFChargedHadrCandsignedSipt());
135     tau->SetMaxHCalPFClusterEt(inTau->maximumHCALPFClusterEt());
136     tau->SetMuonDecision(inTau->muonDecision());
137     tau->SetSegmentCompatibility(inTau->segComp());
138    
139 mhchan 1.6 // fill HPS discriminants
140     if(hpsActive_)
141     {
142     tau->SetDiscriminationAgainstElectron((*(hDiscriminationAgainstElectron.product()))[tauRef]);
143     tau->SetDiscriminationAgainstMuon((*(hDiscriminationAgainstMuon.product()))[tauRef]);
144     tau->SetDiscriminationByDecayModeFinding((*(hDiscriminationByDecayModeFinding.product()))[tauRef]);
145     tau->SetDiscriminationByLooseIsolation((*(hDiscriminationByLooseIsolation.product()))[tauRef]);
146     tau->SetDiscriminationByMediumIsolation((*(hDiscriminationByMediumIsolation.product()))[tauRef]);
147     tau->SetDiscriminationByTightIsolation((*(hDiscriminationByTightIsolation.product()))[tauRef]);
148     }
149    
150 bendavid 1.1 // add track references
151     if (trackMap_) {
152 loizides 1.2 // electron preid track reference
153 bendavid 1.1 if (inTau->electronPreIDTrack().isNonnull())
154     tau->SetElectronTrack(trackMap_->GetMit(refToPtr(inTau->electronPreIDTrack())));
155     }
156    
157 bendavid 1.7 // add source pfjet reference ( only filled since cmssw 311x )
158     if (jetMap_) {
159     tau->SetPFJet(jetMap_->GetMit(refToPtr(inTau->jetRef())));
160     }
161 bendavid 1.1
162 loizides 1.2 // add pf candidate references
163 bendavid 1.1 if (pfCandMap_) {
164     if (inTau->leadPFCand().isNonnull())
165     tau->SetLeadPFCand(pfCandMap_->GetMit(refToPtr(inTau->leadPFCand())));
166    
167 loizides 1.2 if (inTau->leadPFChargedHadrCand().isNonnull()) {
168     const mithep::PFCandidate *pfc =
169     pfCandMap_->GetMit(refToPtr(inTau->leadPFChargedHadrCand()));
170     tau->SetLeadChargedHadronPFCand(pfc);
171     }
172 bendavid 1.1
173     if (inTau->leadPFNeutralCand().isNonnull())
174     tau->SetLeadNeutralPFCand(pfCandMap_->GetMit(refToPtr(inTau->leadPFNeutralCand())));
175    
176     for (uint i=0; i<inTau->signalPFCands().size(); ++i) {
177     const PFCandidate *signalCand = pfCandMap_->GetMit(refToPtr(inTau->signalPFCands().at(i)));
178     tau->AddSignalPFCand(signalCand);
179     }
180    
181     for (uint i=0; i<inTau->isolationPFCands().size(); ++i) {
182     const PFCandidate *isoCand = pfCandMap_->GetMit(refToPtr(inTau->isolationPFCands().at(i)));
183     tau->AddIsoPFCand(isoCand);
184     }
185     }
186     }
187     taus_->Trim();
188     }