ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerPFTaus.cc
Revision: 1.13
Committed: Sun Mar 11 23:11:56 2012 UTC (13 years, 1 month ago) by pharris
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_025d
Changes since 1.12: +15 -4 lines
Log Message:
Adding DCA Significance + PF No Pileup Flag + Charge Hadron Subtracted Jets

File Contents

# User Rev Content
1 pharris 1.13 // $Id: FillerPFTaus.cc,v 1.12 2011/10/10 20:57:40 bendavid 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 mhchan 1.11 discriminationByTightIsolationName_(Conf().getUntrackedParameter<string>("discriminationByTightIsolationName", "hpsPFTauDiscriminationByTightIsolation")),
32     discriminationByVLooseCombinedIsolationDBSumPtCorrName_(Conf().getUntrackedParameter<string>("discriminationByVLooseCombinedIsolationDBSumPtCorrName", "hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr")),
33     discriminationByLooseCombinedIsolationDBSumPtCorrName_(Conf().getUntrackedParameter<string>("discriminationByLooseCombinedIsolationDBSumPtCorrName", "hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr")),
34     discriminationByMediumCombinedIsolationDBSumPtCorrName_(Conf().getUntrackedParameter<string>("discriminationByMediumCombinedIsolationDBSumPtCorrName", "hpsPFTauDiscriminationByMediumCombinedIsolationDBSumPtCorr")),
35     discriminationByTightCombinedIsolationDBSumPtCorrName_(Conf().getUntrackedParameter<string>("discriminationByTightCombinedIsolationDBSumPtCorrName", "hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr")),
36 bendavid 1.12 trackMapNames_(Conf().exists("trackMapNames") ?
37     Conf().getUntrackedParameter<vector<string> >("trackMapNames") :
38     vector<string>()),
39 bendavid 1.1 jetMapName_(Conf().getUntrackedParameter<string>("jetMapName","JetMapName")),
40     pfCandMapName_(Conf().getUntrackedParameter<string>("pfCandMapName","")),
41 pharris 1.13 tauMapName_(Conf().getUntrackedParameter<string>("tauMapName","")),
42 bendavid 1.10 allowMissingTrackRef_(Conf().getUntrackedParameter<bool>("allowMissingTrackRef",false)),
43 bendavid 1.1 jetMap_(0),
44     pfCandMap_(0),
45 pharris 1.13 tauMap_(new mithep::PFTauMap),
46 bendavid 1.1 taus_(new mithep::PFTauArr(16))
47     {
48     // Constructor.
49     }
50    
51     //--------------------------------------------------------------------------------------------------
52     FillerPFTaus::~FillerPFTaus()
53     {
54     // Destructor.
55     delete taus_;
56 pharris 1.13 delete tauMap_;
57 bendavid 1.1 }
58    
59     //--------------------------------------------------------------------------------------------------
60 bendavid 1.5 void FillerPFTaus::BookDataBlock(TreeWriter &tws)
61 bendavid 1.1 {
62     // Add taus branch to tree.
63    
64     tws.AddBranch(mitName_,&taus_);
65     OS()->add<mithep::PFTauArr>(taus_,mitName_);
66    
67 bendavid 1.12 for (std::vector<std::string>::const_iterator bmapName = trackMapNames_.begin();
68     bmapName!=trackMapNames_.end(); ++bmapName) {
69     if (!bmapName->empty()) {
70     const TrackMap *map = OS()->get<TrackMap>(*bmapName);
71     if (map) {
72     trackMaps_.push_back(map);
73     AddBranchDep(mitName_,map->GetBrName());
74     }
75     }
76 bendavid 1.1 }
77    
78     if (!jetMapName_.empty()) {
79     jetMap_ = OS()->get<PFJetMap>(jetMapName_);
80     if (jetMap_)
81     AddBranchDep(mitName_, jetMap_->GetBrName());
82     }
83    
84     if (!pfCandMapName_.empty()) {
85     pfCandMap_ = OS()->get<PFCandidateMap>(pfCandMapName_);
86     if (pfCandMap_)
87     AddBranchDep(mitName_, pfCandMap_->GetBrName());
88     }
89 pharris 1.13 if (!tauMapName_.empty()) {
90     tauMap_->SetBrName(mitName_);
91     OS()->add<PFTauMap>(tauMap_,tauMapName_);
92     }
93 bendavid 1.1 }
94    
95     //--------------------------------------------------------------------------------------------------
96     void FillerPFTaus::FillDataBlock(const edm::Event &event,
97 loizides 1.2 const edm::EventSetup &setup)
98 bendavid 1.1 {
99     // Fill taus from edm collection into our collection.
100    
101 pharris 1.13 taus_ ->Delete();
102     tauMap_->Reset();
103 bendavid 1.1
104     // handle for the tau collection
105     Handle<reco::PFTauCollection> hTauProduct;
106     GetProduct(edmName_, hTauProduct, event);
107    
108 mhchan 1.6 // Handles for HPS discriminants
109 mhchan 1.8 Handle<reco::PFTauDiscriminator> hDiscriminationByLooseElectronRejection;
110     Handle<reco::PFTauDiscriminator> hDiscriminationByMediumElectronRejection;
111     Handle<reco::PFTauDiscriminator> hDiscriminationByTightElectronRejection;
112     Handle<reco::PFTauDiscriminator> hDiscriminationByLooseMuonRejection;
113     Handle<reco::PFTauDiscriminator> hDiscriminationByTightMuonRejection;
114 mhchan 1.6 Handle<reco::PFTauDiscriminator> hDiscriminationByDecayModeFinding;
115 mhchan 1.8 Handle<reco::PFTauDiscriminator> hDiscriminationByVLooseIsolation;
116 mhchan 1.6 Handle<reco::PFTauDiscriminator> hDiscriminationByLooseIsolation;
117     Handle<reco::PFTauDiscriminator> hDiscriminationByMediumIsolation;
118     Handle<reco::PFTauDiscriminator> hDiscriminationByTightIsolation;
119 mhchan 1.11 Handle<reco::PFTauDiscriminator> hDiscriminationByVLooseCombinedIsolationDBSumPtCorr;
120     Handle<reco::PFTauDiscriminator> hDiscriminationByLooseCombinedIsolationDBSumPtCorr;
121     Handle<reco::PFTauDiscriminator> hDiscriminationByMediumCombinedIsolationDBSumPtCorr;
122     Handle<reco::PFTauDiscriminator> hDiscriminationByTightCombinedIsolationDBSumPtCorr;
123 mhchan 1.6
124     if(hpsActive_)
125     {
126 mhchan 1.8 GetProduct(discriminationByLooseElectronRejectionName_, hDiscriminationByLooseElectronRejection, event);
127     GetProduct(discriminationByMediumElectronRejectionName_, hDiscriminationByMediumElectronRejection, event);
128     GetProduct(discriminationByTightElectronRejectionName_, hDiscriminationByTightElectronRejection, event);
129     GetProduct(discriminationByLooseMuonRejectionName_, hDiscriminationByLooseMuonRejection, event);
130     GetProduct(discriminationByTightMuonRejectionName_, hDiscriminationByTightMuonRejection, event);
131 mhchan 1.6 GetProduct(discriminationByDecayModeFindingName_, hDiscriminationByDecayModeFinding, event);
132 mhchan 1.8 GetProduct(discriminationByVLooseIsolationName_, hDiscriminationByVLooseIsolation, event);
133 mhchan 1.6 GetProduct(discriminationByLooseIsolationName_, hDiscriminationByLooseIsolation, event);
134     GetProduct(discriminationByMediumIsolationName_, hDiscriminationByMediumIsolation, event);
135     GetProduct(discriminationByTightIsolationName_, hDiscriminationByTightIsolation, event);
136 mhchan 1.11 GetProduct(discriminationByVLooseCombinedIsolationDBSumPtCorrName_, hDiscriminationByVLooseCombinedIsolationDBSumPtCorr, event);
137     GetProduct(discriminationByLooseCombinedIsolationDBSumPtCorrName_, hDiscriminationByLooseCombinedIsolationDBSumPtCorr, event);
138     GetProduct(discriminationByMediumCombinedIsolationDBSumPtCorrName_, hDiscriminationByMediumCombinedIsolationDBSumPtCorr, event);
139     GetProduct(discriminationByTightCombinedIsolationDBSumPtCorrName_, hDiscriminationByTightCombinedIsolationDBSumPtCorr, event);
140 mhchan 1.6 }
141    
142 bendavid 1.1 const reco::PFTauCollection inTaus = *(hTauProduct.product());
143     // loop through all taus
144     for (reco::PFTauCollection::const_iterator inTau = inTaus.begin();
145     inTau != inTaus.end(); ++inTau) {
146    
147     reco::PFTauRef tauRef(hTauProduct, inTau - inTaus.begin());
148    
149     mithep::PFTau *tau = taus_->Allocate();
150     new (tau) mithep::PFTau(inTau->px(),
151     inTau->py(),
152     inTau->pz(),
153     inTau->energy());
154    
155     tau->SetMomAlt(inTau->alternatLorentzVect().x(),
156     inTau->alternatLorentzVect().y(),
157     inTau->alternatLorentzVect().z(),
158     inTau->alternatLorentzVect().e());
159    
160     // fill pftau-specific quantities
161 mhchan 1.11 tau->SetCharge(inTau->charge());
162 bendavid 1.1 tau->SetBremRecoveryEOverP(inTau->bremsRecoveryEOverPLead());
163     tau->SetCaloCompatibility(inTau->caloComp());
164     tau->SetECalStripSumEOverP(inTau->ecalStripSumEOverPLead());
165     tau->SetEMFraction(inTau->emFraction());
166     tau->SetElectronPreIDDecision(inTau->electronPreIDDecision());
167     tau->SetElectronPreIDOutput(inTau->electronPreIDOutput());
168     tau->SetHCal3x3EOverP(inTau->hcal3x3OverPLead());
169     tau->SetHCalMaxEOverP(inTau->hcalMaxOverPLead());
170     tau->SetHCalTotalEOverP(inTau->hcalTotOverPLead());
171     tau->SetIsoChargedHadronPtSum(inTau->isolationPFChargedHadrCandsPtSum());
172     tau->SetIsoGammaEtSum(inTau->isolationPFGammaCandsEtSum());
173     tau->SetLeadPFCandSignD0Sig(inTau->leadPFChargedHadrCandsignedSipt());
174     tau->SetMaxHCalPFClusterEt(inTau->maximumHCALPFClusterEt());
175     tau->SetMuonDecision(inTau->muonDecision());
176     tau->SetSegmentCompatibility(inTau->segComp());
177    
178 mhchan 1.6 // fill HPS discriminants
179     if(hpsActive_)
180     {
181 mhchan 1.8 tau->SetDiscriminationByLooseElectronRejection((*(hDiscriminationByLooseElectronRejection.product()))[tauRef]);
182     tau->SetDiscriminationByMediumElectronRejection((*(hDiscriminationByMediumElectronRejection.product()))[tauRef]);
183     tau->SetDiscriminationByTightElectronRejection((*(hDiscriminationByTightElectronRejection.product()))[tauRef]);
184     tau->SetDiscriminationByLooseMuonRejection((*(hDiscriminationByLooseMuonRejection.product()))[tauRef]);
185     tau->SetDiscriminationByTightMuonRejection((*(hDiscriminationByTightMuonRejection.product()))[tauRef]);
186 mhchan 1.6 tau->SetDiscriminationByDecayModeFinding((*(hDiscriminationByDecayModeFinding.product()))[tauRef]);
187 mhchan 1.8 tau->SetDiscriminationByVLooseIsolation((*(hDiscriminationByVLooseIsolation.product()))[tauRef]);
188 mhchan 1.6 tau->SetDiscriminationByLooseIsolation((*(hDiscriminationByLooseIsolation.product()))[tauRef]);
189     tau->SetDiscriminationByMediumIsolation((*(hDiscriminationByMediumIsolation.product()))[tauRef]);
190     tau->SetDiscriminationByTightIsolation((*(hDiscriminationByTightIsolation.product()))[tauRef]);
191 mhchan 1.11 tau->SetDiscriminationByVLooseCombinedIsolationDBSumPtCorr((*(hDiscriminationByVLooseCombinedIsolationDBSumPtCorr.product()))[tauRef]);
192     tau->SetDiscriminationByLooseCombinedIsolationDBSumPtCorr((*(hDiscriminationByLooseCombinedIsolationDBSumPtCorr.product()))[tauRef]);
193     tau->SetDiscriminationByMediumCombinedIsolationDBSumPtCorr((*(hDiscriminationByMediumCombinedIsolationDBSumPtCorr.product()))[tauRef]);
194     tau->SetDiscriminationByTightCombinedIsolationDBSumPtCorr((*(hDiscriminationByTightCombinedIsolationDBSumPtCorr.product()))[tauRef]);
195 mhchan 1.6 }
196    
197 bendavid 1.1 // add track references
198 bendavid 1.12 // if (trackMap_) {
199     // // electron preid track reference
200     // if (inTau->electronPreIDTrack().isNonnull()) {
201     // if (!allowMissingTrackRef_ || trackMap_->HasMit(refToPtrHack(inTau->electronPreIDTrack()))) {
202     // tau->SetElectronTrack(trackMap_->GetMit(refToPtrHack(inTau->electronPreIDTrack())));
203     // }
204     // }
205     // }
206    
207     if (inTau->electronPreIDTrack().isNonnull()) {
208     const mithep::Track *theTrack = getMitTrack(refToPtrHack(inTau->electronPreIDTrack()),allowMissingTrackRef_);
209     tau->SetElectronTrack(theTrack);
210     }
211 bendavid 1.1
212 bendavid 1.7 // add source pfjet reference ( only filled since cmssw 311x )
213     if (jetMap_) {
214 bendavid 1.9 tau->SetPFJet(jetMap_->GetMit(refToPtrHack(inTau->jetRef())));
215 bendavid 1.7 }
216 bendavid 1.1
217 loizides 1.2 // add pf candidate references
218 bendavid 1.1 if (pfCandMap_) {
219     if (inTau->leadPFCand().isNonnull())
220 bendavid 1.9 tau->SetLeadPFCand(pfCandMap_->GetMit(refToPtrHack(inTau->leadPFCand())));
221 bendavid 1.1
222 loizides 1.2 if (inTau->leadPFChargedHadrCand().isNonnull()) {
223     const mithep::PFCandidate *pfc =
224 bendavid 1.9 pfCandMap_->GetMit(refToPtrHack(inTau->leadPFChargedHadrCand()));
225 loizides 1.2 tau->SetLeadChargedHadronPFCand(pfc);
226     }
227 bendavid 1.1
228     if (inTau->leadPFNeutralCand().isNonnull())
229 bendavid 1.9 tau->SetLeadNeutralPFCand(pfCandMap_->GetMit(refToPtrHack(inTau->leadPFNeutralCand())));
230 bendavid 1.1
231     for (uint i=0; i<inTau->signalPFCands().size(); ++i) {
232 bendavid 1.9 const PFCandidate *signalCand = pfCandMap_->GetMit(refToPtrHack(inTau->signalPFCands().at(i)));
233 bendavid 1.1 tau->AddSignalPFCand(signalCand);
234     }
235 mhchan 1.11
236     for (uint i=0; i<inTau->signalPFChargedHadrCands().size(); ++i) {
237     const PFCandidate *signalCand = pfCandMap_->GetMit(refToPtrHack(inTau->signalPFChargedHadrCands().at(i)));
238     tau->AddSignalPFChargedHadrCand(signalCand);
239     }
240    
241     for (uint i=0; i<inTau->signalPFNeutrHadrCands().size(); ++i) {
242     const PFCandidate *signalCand = pfCandMap_->GetMit(refToPtrHack(inTau->signalPFNeutrHadrCands().at(i)));
243     tau->AddSignalPFNeutrHadrCand(signalCand);
244     }
245    
246     for (uint i=0; i<inTau->signalPFGammaCands().size(); ++i) {
247     const PFCandidate *signalCand = pfCandMap_->GetMit(refToPtrHack(inTau->signalPFGammaCands().at(i)));
248     tau->AddSignalPFGammaCand(signalCand);
249     }
250 bendavid 1.1
251     for (uint i=0; i<inTau->isolationPFCands().size(); ++i) {
252 bendavid 1.9 const PFCandidate *isoCand = pfCandMap_->GetMit(refToPtrHack(inTau->isolationPFCands().at(i)));
253 bendavid 1.1 tau->AddIsoPFCand(isoCand);
254     }
255     }
256 pharris 1.13 // add Tau to map
257     edm::Ptr<reco::PFTau> thePtr(hTauProduct, inTau - inTaus.begin());
258     tauMap_->Add(thePtr, tau);
259 bendavid 1.1 }
260 pharris 1.13
261 bendavid 1.1 taus_->Trim();
262     }
263 bendavid 1.12
264     //--------------------------------------------------------------------------------------------------
265     const mithep::Track *FillerPFTaus::getMitTrack(mitedm::TrackPtr ptr, bool allowmissing) const
266     {
267     // Return our particle referenced by the edm pointer.
268    
269     mithep::Track *mitPart = 0;
270     for (std::vector<const mithep::TrackMap*>::const_iterator bmap = trackMaps_.begin();
271     bmap!=trackMaps_.end(); ++bmap) {
272     const mithep::TrackMap *theMap = *bmap;
273     if (theMap->HasMit(ptr)) {
274     mitPart = theMap->GetMit(ptr);
275     return mitPart;
276     }
277     }
278    
279     if (!mitPart && !allowmissing)
280     throw edm::Exception(edm::errors::Configuration, "FillerPFCandidates::FillDataBlock()\n")
281     << "Error! MITHEP Object "
282     << "not found in AssociationMaps (" << typeid(*this).name() << ")." << std::endl;
283    
284     return mitPart;
285 pharris 1.13 }