ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/PFTauIDMod.cc
Revision: 1.3
Committed: Thu Feb 17 14:08:49 2011 UTC (14 years, 2 months ago) by ceballos
Content type: text/plain
Branch: MAIN
Changes since 1.2: +30 -14 lines
Log Message:
new

File Contents

# User Rev Content
1 ceballos 1.3 // $Id: PFTauIDMod.cc,v 1.2 2010/08/19 14:37:17 ceballos Exp $
2 ceballos 1.1
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 ceballos 1.3 fIsHPSSel(kFALSE),
23 ceballos 1.1 fPFTaus(0)
24     {
25     // Constructor.
26     }
27    
28     //------------------------------------------------------------------------------
29     void PFTauIDMod::Process()
30     {
31     // Process entries of the tree.
32    
33     LoadBranch(fPFTausName);
34    
35     PFTauOArr *GoodTaus = new PFTauOArr;
36     GoodTaus->SetName(fGoodPFTausName);
37    
38     for (UInt_t i=0; i<fPFTaus->GetEntries(); ++i) {
39     const PFTau *tau = fPFTaus->At(i);
40    
41     if (tau->NSignalPFCands() == 0)
42     continue;
43    
44     CompositeParticle tauSystem;
45     CompositeParticle tauChargedSystem;
46     UInt_t nTrk = 0;
47     for (UInt_t j=0; j<tau->NSignalPFCands(); ++j) {
48     tauSystem.AddDaughter(tau->SignalPFCand(j));
49 ceballos 1.2 if(tau->SignalPFCand(j) != 0 &&
50     tau->SignalPFCand(j)->Charge() != 0){
51 ceballos 1.1 nTrk++;
52     tauChargedSystem.AddDaughter(tau->SignalPFCand(j));
53     }
54     }
55    
56     if (nTrk != 1 && nTrk != 3)
57     continue;
58    
59 ceballos 1.3 if (TMath::Abs(tau->Charge()) != 1)
60 ceballos 1.1 continue;
61    
62 ceballos 1.3 if (tauSystem.Pt() <= fPtMin)
63 ceballos 1.1 continue;
64    
65 ceballos 1.3 if (fIsHPSSel == kFALSE){
66     if(!tau->LeadChargedHadronPFCand())
67     continue;
68    
69     if(tau->LeadChargedHadronPFCand()->Pt() <= fPtLeadChargedHadronPFCandMin)
70     continue;
71    
72     if (tau->IsoChargedHadronPtSum() >= fIsoChargedHadronPtSumMax)
73     continue;
74    
75     if (tau->IsoGammaEtSum() >= fIsoGammaEtSumMax)
76     continue;
77    
78     if (tauChargedSystem.Mass() <= fSignalMassMin || tauChargedSystem.Mass() >= fSignalMassMax)
79     continue;
80     }
81     else {
82     if(tau->DiscriminationAgainstElectron() == 0)
83     continue;
84 ceballos 1.1
85 ceballos 1.3 if(tau->DiscriminationAgainstMuon() == 0)
86     continue;
87 ceballos 1.1
88 ceballos 1.3 if(tau->DiscriminationByDecayModeFinding() == 0)
89     continue;
90 ceballos 1.1
91 ceballos 1.3 if(tau->DiscriminationByMediumIsolation() == 0)
92     continue;
93     }
94 ceballos 1.1
95     // add good tau to output collection
96     GoodTaus->Add(tau);
97     }
98    
99     // sort according to pt
100     GoodTaus->Sort();
101    
102     // add to event for other modules to use
103     AddObjThisEvt(GoodTaus);
104     }
105    
106     //------------------------------------------------------------------------------
107     void PFTauIDMod::SlaveBegin()
108     {
109     // Run startup code on the computer (slave) doing the actual analysis. Here,
110     // we just request the Tau collection branch.
111    
112     ReqBranch(fPFTausName, fPFTaus);
113     }