ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPFTaus.cc
Revision: 1.9
Committed: Sun May 15 14:12:42 2011 UTC (13 years, 11 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_021, Mit_021pre2
Changes since 1.8: +8 -8 lines
Log Message:
workaround for tau id madness in 42

File Contents

# User Rev Content
1 bendavid 1.9 // $Id: FillerPFTaus.cc,v 1.8 2011/04/26 12:14:24 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 mhchan 1.8 discriminationByLooseElectronRejectionName_(Conf().getUntrackedParameter<string>("discriminationByLooseElectronRejectionName", "hpsPFTauDiscriminationByLooseElecronRejection")),
23     discriminationByMediumElectronRejectionName_(Conf().getUntrackedParameter<string>("discriminationByMediumElectronRejectionName", "hpsPFTauDiscriminationByMediumElecronRejection")),
24     discriminationByTightElectronRejectionName_(Conf().getUntrackedParameter<string>("discriminationByTightElectronRejectionName", "hpsPFTauDiscriminationByTightElecronRejection")),
25     discriminationByLooseMuonRejectionName_(Conf().getUntrackedParameter<string>("discriminationByLooseMuonRejectionName", "hpsPFTauDiscriminationByLooseMuonRejection")),
26     discriminationByTightMuonRejectionName_(Conf().getUntrackedParameter<string>("discriminationByTightMuonRejectionName", "hpsPFTauDiscriminationByTightMuonRejection")),
27 mhchan 1.6 discriminationByDecayModeFindingName_(Conf().getUntrackedParameter<string>("discriminationByDecayModeFindingName", "hpsPFTauDiscriminationByDecayModeFinding")),
28 mhchan 1.8 discriminationByVLooseIsolationName_(Conf().getUntrackedParameter<string>("discriminationByVLooseIsolationName", "hpsPFTauDiscriminationByVLooseIsolation")),
29 mhchan 1.6 discriminationByLooseIsolationName_(Conf().getUntrackedParameter<string>("discriminationByLooseIsolationName", "hpsPFTauDiscriminationByLooseIsolation")),
30     discriminationByMediumIsolationName_(Conf().getUntrackedParameter<string>("discriminationByMediumIsolationName", "hpsPFTauDiscriminationByMediumIsolation")),
31     discriminationByTightIsolationName_(Conf().getUntrackedParameter<string>("discriminationByTightIsolationName", "hpsPFTauDiscriminationByTightIsolation")),
32 bendavid 1.1 trackMapName_(Conf().getUntrackedParameter<string>("trackMapName","TracksMapName")),
33     jetMapName_(Conf().getUntrackedParameter<string>("jetMapName","JetMapName")),
34     pfCandMapName_(Conf().getUntrackedParameter<string>("pfCandMapName","")),
35     trackMap_(0),
36     jetMap_(0),
37     pfCandMap_(0),
38     taus_(new mithep::PFTauArr(16))
39     {
40     // Constructor.
41     }
42    
43     //--------------------------------------------------------------------------------------------------
44     FillerPFTaus::~FillerPFTaus()
45     {
46     // Destructor.
47    
48     delete taus_;
49     }
50    
51     //--------------------------------------------------------------------------------------------------
52 bendavid 1.5 void FillerPFTaus::BookDataBlock(TreeWriter &tws)
53 bendavid 1.1 {
54     // Add taus branch to tree.
55    
56     tws.AddBranch(mitName_,&taus_);
57     OS()->add<mithep::PFTauArr>(taus_,mitName_);
58    
59     if (!trackMapName_.empty()) {
60     trackMap_ = OS()->get<TrackMap>(trackMapName_);
61     if (trackMap_)
62     AddBranchDep(mitName_, trackMap_->GetBrName());
63     }
64    
65     if (!jetMapName_.empty()) {
66     jetMap_ = OS()->get<PFJetMap>(jetMapName_);
67     if (jetMap_)
68     AddBranchDep(mitName_, jetMap_->GetBrName());
69     }
70    
71     if (!pfCandMapName_.empty()) {
72     pfCandMap_ = OS()->get<PFCandidateMap>(pfCandMapName_);
73     if (pfCandMap_)
74     AddBranchDep(mitName_, pfCandMap_->GetBrName());
75     }
76     }
77    
78     //--------------------------------------------------------------------------------------------------
79     void FillerPFTaus::FillDataBlock(const edm::Event &event,
80 loizides 1.2 const edm::EventSetup &setup)
81 bendavid 1.1 {
82     // Fill taus from edm collection into our collection.
83    
84     taus_->Delete();
85    
86     // handle for the tau collection
87     Handle<reco::PFTauCollection> hTauProduct;
88     GetProduct(edmName_, hTauProduct, event);
89    
90 mhchan 1.6 // Handles for HPS discriminants
91 mhchan 1.8 Handle<reco::PFTauDiscriminator> hDiscriminationByLooseElectronRejection;
92     Handle<reco::PFTauDiscriminator> hDiscriminationByMediumElectronRejection;
93     Handle<reco::PFTauDiscriminator> hDiscriminationByTightElectronRejection;
94     Handle<reco::PFTauDiscriminator> hDiscriminationByLooseMuonRejection;
95     Handle<reco::PFTauDiscriminator> hDiscriminationByTightMuonRejection;
96 mhchan 1.6 Handle<reco::PFTauDiscriminator> hDiscriminationByDecayModeFinding;
97 mhchan 1.8 Handle<reco::PFTauDiscriminator> hDiscriminationByVLooseIsolation;
98 mhchan 1.6 Handle<reco::PFTauDiscriminator> hDiscriminationByLooseIsolation;
99     Handle<reco::PFTauDiscriminator> hDiscriminationByMediumIsolation;
100     Handle<reco::PFTauDiscriminator> hDiscriminationByTightIsolation;
101    
102     if(hpsActive_)
103     {
104 mhchan 1.8 GetProduct(discriminationByLooseElectronRejectionName_, hDiscriminationByLooseElectronRejection, event);
105     GetProduct(discriminationByMediumElectronRejectionName_, hDiscriminationByMediumElectronRejection, event);
106     GetProduct(discriminationByTightElectronRejectionName_, hDiscriminationByTightElectronRejection, event);
107     GetProduct(discriminationByLooseMuonRejectionName_, hDiscriminationByLooseMuonRejection, event);
108     GetProduct(discriminationByTightMuonRejectionName_, hDiscriminationByTightMuonRejection, event);
109 mhchan 1.6 GetProduct(discriminationByDecayModeFindingName_, hDiscriminationByDecayModeFinding, event);
110 mhchan 1.8 GetProduct(discriminationByVLooseIsolationName_, hDiscriminationByVLooseIsolation, event);
111 mhchan 1.6 GetProduct(discriminationByLooseIsolationName_, hDiscriminationByLooseIsolation, event);
112     GetProduct(discriminationByMediumIsolationName_, hDiscriminationByMediumIsolation, event);
113     GetProduct(discriminationByTightIsolationName_, hDiscriminationByTightIsolation, event);
114     }
115    
116 bendavid 1.1 const reco::PFTauCollection inTaus = *(hTauProduct.product());
117     // loop through all taus
118     for (reco::PFTauCollection::const_iterator inTau = inTaus.begin();
119     inTau != inTaus.end(); ++inTau) {
120    
121     reco::PFTauRef tauRef(hTauProduct, inTau - inTaus.begin());
122    
123     mithep::PFTau *tau = taus_->Allocate();
124     new (tau) mithep::PFTau(inTau->px(),
125     inTau->py(),
126     inTau->pz(),
127     inTau->energy());
128    
129     tau->SetMomAlt(inTau->alternatLorentzVect().x(),
130     inTau->alternatLorentzVect().y(),
131     inTau->alternatLorentzVect().z(),
132     inTau->alternatLorentzVect().e());
133    
134     // fill pftau-specific quantities
135     tau->SetBremRecoveryEOverP(inTau->bremsRecoveryEOverPLead());
136     tau->SetCaloCompatibility(inTau->caloComp());
137     tau->SetECalStripSumEOverP(inTau->ecalStripSumEOverPLead());
138     tau->SetEMFraction(inTau->emFraction());
139     tau->SetElectronPreIDDecision(inTau->electronPreIDDecision());
140     tau->SetElectronPreIDOutput(inTau->electronPreIDOutput());
141     tau->SetHCal3x3EOverP(inTau->hcal3x3OverPLead());
142     tau->SetHCalMaxEOverP(inTau->hcalMaxOverPLead());
143     tau->SetHCalTotalEOverP(inTau->hcalTotOverPLead());
144     tau->SetIsoChargedHadronPtSum(inTau->isolationPFChargedHadrCandsPtSum());
145     tau->SetIsoGammaEtSum(inTau->isolationPFGammaCandsEtSum());
146     tau->SetLeadPFCandSignD0Sig(inTau->leadPFChargedHadrCandsignedSipt());
147     tau->SetMaxHCalPFClusterEt(inTau->maximumHCALPFClusterEt());
148     tau->SetMuonDecision(inTau->muonDecision());
149     tau->SetSegmentCompatibility(inTau->segComp());
150    
151 mhchan 1.6 // fill HPS discriminants
152     if(hpsActive_)
153     {
154 mhchan 1.8 tau->SetDiscriminationByLooseElectronRejection((*(hDiscriminationByLooseElectronRejection.product()))[tauRef]);
155     tau->SetDiscriminationByMediumElectronRejection((*(hDiscriminationByMediumElectronRejection.product()))[tauRef]);
156     tau->SetDiscriminationByTightElectronRejection((*(hDiscriminationByTightElectronRejection.product()))[tauRef]);
157     tau->SetDiscriminationByLooseMuonRejection((*(hDiscriminationByLooseMuonRejection.product()))[tauRef]);
158     tau->SetDiscriminationByTightMuonRejection((*(hDiscriminationByTightMuonRejection.product()))[tauRef]);
159 mhchan 1.6 tau->SetDiscriminationByDecayModeFinding((*(hDiscriminationByDecayModeFinding.product()))[tauRef]);
160 mhchan 1.8 tau->SetDiscriminationByVLooseIsolation((*(hDiscriminationByVLooseIsolation.product()))[tauRef]);
161 mhchan 1.6 tau->SetDiscriminationByLooseIsolation((*(hDiscriminationByLooseIsolation.product()))[tauRef]);
162     tau->SetDiscriminationByMediumIsolation((*(hDiscriminationByMediumIsolation.product()))[tauRef]);
163     tau->SetDiscriminationByTightIsolation((*(hDiscriminationByTightIsolation.product()))[tauRef]);
164     }
165    
166 bendavid 1.1 // add track references
167     if (trackMap_) {
168 loizides 1.2 // electron preid track reference
169 bendavid 1.1 if (inTau->electronPreIDTrack().isNonnull())
170 bendavid 1.9 tau->SetElectronTrack(trackMap_->GetMit(refToPtrHack(inTau->electronPreIDTrack())));
171 bendavid 1.1 }
172    
173 bendavid 1.7 // add source pfjet reference ( only filled since cmssw 311x )
174     if (jetMap_) {
175 bendavid 1.9 tau->SetPFJet(jetMap_->GetMit(refToPtrHack(inTau->jetRef())));
176 bendavid 1.7 }
177 bendavid 1.1
178 loizides 1.2 // add pf candidate references
179 bendavid 1.1 if (pfCandMap_) {
180     if (inTau->leadPFCand().isNonnull())
181 bendavid 1.9 tau->SetLeadPFCand(pfCandMap_->GetMit(refToPtrHack(inTau->leadPFCand())));
182 bendavid 1.1
183 loizides 1.2 if (inTau->leadPFChargedHadrCand().isNonnull()) {
184     const mithep::PFCandidate *pfc =
185 bendavid 1.9 pfCandMap_->GetMit(refToPtrHack(inTau->leadPFChargedHadrCand()));
186 loizides 1.2 tau->SetLeadChargedHadronPFCand(pfc);
187     }
188 bendavid 1.1
189     if (inTau->leadPFNeutralCand().isNonnull())
190 bendavid 1.9 tau->SetLeadNeutralPFCand(pfCandMap_->GetMit(refToPtrHack(inTau->leadPFNeutralCand())));
191 bendavid 1.1
192     for (uint i=0; i<inTau->signalPFCands().size(); ++i) {
193 bendavid 1.9 const PFCandidate *signalCand = pfCandMap_->GetMit(refToPtrHack(inTau->signalPFCands().at(i)));
194 bendavid 1.1 tau->AddSignalPFCand(signalCand);
195     }
196    
197     for (uint i=0; i<inTau->isolationPFCands().size(); ++i) {
198 bendavid 1.9 const PFCandidate *isoCand = pfCandMap_->GetMit(refToPtrHack(inTau->isolationPFCands().at(i)));
199 bendavid 1.1 tau->AddIsoPFCand(isoCand);
200     }
201     }
202     }
203     taus_->Trim();
204     }