ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/PFTauIDMod.cc
Revision: 1.2
Committed: Thu Aug 19 14:37:17 2010 UTC (14 years, 8 months ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d
Changes since 1.1: +3 -2 lines
Log Message:
fixing flaws for weird data events

File Contents

# Content
1 // $Id: PFTauIDMod.cc,v 1.1 2010/07/18 21:15:19 ceballos Exp $
2
3 #include "MitPhysics/Mods/interface/PFTauIDMod.h"
4 #include "MitPhysics/Init/interface/ModNames.h"
5 #include "MitAna/DataTree/interface/PFTauCol.h"
6
7 using namespace mithep;
8
9 ClassImp(mithep::PFTauIDMod)
10
11 //------------------------------------------------------------------------------
12 PFTauIDMod::PFTauIDMod(const char *name, const char *title) :
13 BaseMod(name,title),
14 fPFTausName(Names::gkPFTauBrn),
15 fGoodPFTausName(ModNames::gkGoodPFTausName),
16 fPtMin(15.0),
17 fPtLeadChargedHadronPFCandMin(5.0),
18 fIsoChargedHadronPtSumMax(2.0),
19 fIsoGammaEtSumMax(3.0),
20 fSignalMassMin(0.13),
21 fSignalMassMax(2.00),
22 fPFTaus(0)
23 {
24 // Constructor.
25 }
26
27 //------------------------------------------------------------------------------
28 void PFTauIDMod::Process()
29 {
30 // Process entries of the tree.
31
32 LoadBranch(fPFTausName);
33
34 PFTauOArr *GoodTaus = new PFTauOArr;
35 GoodTaus->SetName(fGoodPFTausName);
36
37 for (UInt_t i=0; i<fPFTaus->GetEntries(); ++i) {
38 const PFTau *tau = fPFTaus->At(i);
39
40 if (tau->NSignalPFCands() == 0)
41 continue;
42
43 CompositeParticle tauSystem;
44 CompositeParticle tauChargedSystem;
45 UInt_t nTrk = 0;
46 for (UInt_t j=0; j<tau->NSignalPFCands(); ++j) {
47 tauSystem.AddDaughter(tau->SignalPFCand(j));
48 if(tau->SignalPFCand(j) != 0 &&
49 tau->SignalPFCand(j)->Charge() != 0){
50 nTrk++;
51 tauChargedSystem.AddDaughter(tau->SignalPFCand(j));
52 }
53 }
54
55 if (tauSystem.Pt() <= fPtMin)
56 continue;
57
58 if (nTrk != 1 && nTrk != 3)
59 continue;
60
61 if(!tau->LeadChargedHadronPFCand())
62 continue;
63
64 if(tau->LeadChargedHadronPFCand()->Pt() <= fPtLeadChargedHadronPFCandMin)
65 continue;
66
67 if (TMath::Abs(tau->Charge()) != 1)
68 continue;
69
70 if (tau->IsoChargedHadronPtSum() >= fIsoChargedHadronPtSumMax)
71 continue;
72
73 if (tau->IsoGammaEtSum() >= fIsoGammaEtSumMax)
74 continue;
75
76 if (tauChargedSystem.Mass() <= fSignalMassMin || tauChargedSystem.Mass() >= fSignalMassMax)
77 continue;
78
79 // add good tau to output collection
80 GoodTaus->Add(tau);
81 }
82
83 // sort according to pt
84 GoodTaus->Sort();
85
86 // add to event for other modules to use
87 AddObjThisEvt(GoodTaus);
88 }
89
90 //------------------------------------------------------------------------------
91 void PFTauIDMod::SlaveBegin()
92 {
93 // Run startup code on the computer (slave) doing the actual analysis. Here,
94 // we just request the Tau collection branch.
95
96 ReqBranch(fPFTausName, fPFTaus);
97 }