ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/JetCleaningMod.cc
Revision: 1.10
Committed: Thu Apr 2 12:40:16 2009 UTC (16 years, 1 month ago) by ceballos
Content type: text/plain
Branch: MAIN
Changes since 1.9: +22 -2 lines
Log Message:
including muons in the cleaning

File Contents

# User Rev Content
1 ceballos 1.10 // $Id: JetCleaningMod.cc,v 1.9 2009/03/12 16:00:46 bendavid Exp $
2 loizides 1.1
3     #include "MitPhysics/Mods/interface/JetCleaningMod.h"
4     #include "MitCommon/MathTools/interface/MathUtils.h"
5 loizides 1.3 #include "MitPhysics/Init/interface/ModNames.h"
6 loizides 1.1
7     using namespace mithep;
8    
9     ClassImp(mithep::JetCleaningMod)
10    
11     //--------------------------------------------------------------------------------------------------
12 loizides 1.4 JetCleaningMod::JetCleaningMod(const char *name, const char *title) :
13 loizides 1.1 BaseMod(name,title),
14 loizides 1.3 fCleanElectronsName(ModNames::gkCleanElectronsName),
15 ceballos 1.10 fCleanMuonsName(ModNames::gkCleanMuonsName),
16 sixie 1.5 fCleanPhotonsName(ModNames::gkCleanPhotonsName),
17 loizides 1.3 fGoodJetsName(ModNames::gkGoodJetsName),
18 sixie 1.5 fCleanJetsName(ModNames::gkCleanJetsName),
19     fMinDeltaRToElectron(0.3),
20 ceballos 1.10 fMinDeltaRToMuon(0.3),
21 sixie 1.5 fMinDeltaRToPhoton(0.3)
22 loizides 1.1 {
23     // Constructor.
24     }
25    
26     //--------------------------------------------------------------------------------------------------
27 loizides 1.4 void JetCleaningMod::Process()
28 loizides 1.1 {
29 loizides 1.4 // Process entries of the tree.
30 loizides 1.1
31 loizides 1.4 // get input collections
32 bendavid 1.9 const JetCol *GoodJets = GetObjThisEvt<JetCol>(fGoodJetsName);
33 loizides 1.8 const ElectronCol *CleanElectrons = 0;
34     if (!fCleanElectronsName.IsNull())
35     CleanElectrons = GetObjThisEvt<ElectronCol>(fCleanElectronsName);
36 ceballos 1.10 const MuonCol *CleanMuons = 0;
37     if (!fCleanMuonsName.IsNull())
38     CleanMuons = GetObjThisEvt<MuonCol>(fCleanMuonsName);
39 loizides 1.8 const PhotonCol *CleanPhotons = 0;
40     if (!fCleanPhotonsName.IsNull())
41     CleanPhotons = GetObjThisEvt<PhotonCol>(fCleanPhotonsName);
42 loizides 1.1
43 loizides 1.4 // create output collection
44     JetOArr *CleanJets = new JetOArr;
45     CleanJets->SetName(fCleanJetsName);
46 loizides 1.1
47 loizides 1.8 // remove any jet that overlaps in eta, phi with an isolated electron.
48 loizides 1.1 for (UInt_t i=0; i<GoodJets->GetEntries(); ++i) {
49 loizides 1.4 const Jet *jet = GoodJets->At(i);
50    
51 ceballos 1.10 // check for overlap with an Electron
52 ceballos 1.6 Bool_t isElectronOverlap = kFALSE;
53 sixie 1.5 if (CleanElectrons) {
54 loizides 1.8 UInt_t n = CleanElectrons->GetEntries();
55     for (UInt_t j=0; j<n; ++j) {
56 sixie 1.5 Double_t deltaR = MathUtils::DeltaR(CleanElectrons->At(j)->Mom(),jet->Mom());
57     if (deltaR < fMinDeltaRToElectron) {
58     isElectronOverlap = kTRUE;
59     break;
60     }
61     }
62     }
63    
64 ceballos 1.6 if (isElectronOverlap) continue;
65    
66 ceballos 1.10 // check for overlap with an Muon
67     Bool_t isMuonOverlap = kFALSE;
68     if (CleanMuons) {
69     UInt_t n = CleanMuons->GetEntries();
70     for (UInt_t j=0; j<n; ++j) {
71     Double_t deltaR = MathUtils::DeltaR(CleanMuons->At(j)->Mom(),jet->Mom());
72     if (deltaR < fMinDeltaRToMuon) {
73     isMuonOverlap = kTRUE;
74     break;
75     }
76     }
77     }
78    
79     if (isMuonOverlap) continue;
80    
81 loizides 1.8 // check for overlap with a photon
82     Bool_t isPhotonOverlap = kFALSE;
83 sixie 1.5 if (CleanPhotons) {
84 loizides 1.8 UInt_t n = CleanPhotons->GetEntries();
85     for (UInt_t j=0; j<n; ++j) {
86 sixie 1.5 Double_t deltaR = MathUtils::DeltaR(CleanPhotons->At(j)->Mom(),jet->Mom());
87     if (deltaR < fMinDeltaRToPhoton) {
88     isPhotonOverlap = kTRUE;
89     break;
90     }
91     }
92 loizides 1.1 }
93    
94 ceballos 1.6 if (isPhotonOverlap) continue;
95 loizides 1.1
96 loizides 1.4 CleanJets->Add(jet);
97     }
98 loizides 1.1
99 loizides 1.7 // sort according to pt
100     CleanJets->Sort();
101    
102 loizides 1.4 // add to event for other modules to use
103     AddObjThisEvt(CleanJets);
104 loizides 1.1 }