ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/JetCleaningMod.cc
Revision: 1.5
Committed: Sat Nov 29 18:45:43 2008 UTC (16 years, 5 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.4: +29 -11 lines
Log Message:
make proper modification to jet cleaning to take into account photons. have to remove jets that overlap with photons

File Contents

# User Rev Content
1 sixie 1.5 // $Id: JetCleaningMod.cc,v 1.4 2008/11/28 09:13:50 loizides 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 sixie 1.5 fCleanPhotonsName(ModNames::gkCleanPhotonsName),
16 loizides 1.3 fGoodJetsName(ModNames::gkGoodJetsName),
17 sixie 1.5 fCleanJetsName(ModNames::gkCleanJetsName),
18     fMinDeltaRToElectron(0.3),
19     fMinDeltaRToPhoton(0.3)
20 loizides 1.1 {
21     // Constructor.
22     }
23    
24     //--------------------------------------------------------------------------------------------------
25 loizides 1.4 void JetCleaningMod::Process()
26 loizides 1.1 {
27 loizides 1.4 // Process entries of the tree.
28 loizides 1.1
29 loizides 1.4 // get input collections
30     ElectronOArr *CleanElectrons = GetObjThisEvt<ElectronOArr>(fCleanElectronsName);
31 sixie 1.5 PhotonOArr *CleanPhotons = GetObjThisEvt<PhotonOArr>(fCleanPhotonsName);
32 loizides 1.4 JetOArr *GoodJets = GetObjThisEvt<JetOArr>(fGoodJetsName);
33 loizides 1.1
34 loizides 1.4 // create output collection
35     JetOArr *CleanJets = new JetOArr;
36     CleanJets->SetName(fCleanJetsName);
37 loizides 1.1
38 sixie 1.5 // Remove any jet that overlaps in eta, phi with an isolated electron.
39 loizides 1.1 for (UInt_t i=0; i<GoodJets->GetEntries(); ++i) {
40 loizides 1.4 const Jet *jet = GoodJets->At(i);
41    
42     Bool_t isElectronOverlap = false;
43 sixie 1.5 Bool_t isPhotonOverlap = false;
44    
45 loizides 1.1 //Check for overlap with an electron
46 sixie 1.5 if (CleanElectrons) {
47     for (UInt_t j=0; j<CleanElectrons->Entries(); j++) {
48     Double_t deltaR = MathUtils::DeltaR(CleanElectrons->At(j)->Mom(),jet->Mom());
49     if (deltaR < fMinDeltaRToElectron) {
50     isElectronOverlap = kTRUE;
51     break;
52     }
53     }
54     }
55    
56     //Check for overlap with a photon
57     if (CleanPhotons) {
58     for (UInt_t j=0; j<CleanPhotons->Entries(); j++) {
59     Double_t deltaR = MathUtils::DeltaR(CleanPhotons->At(j)->Mom(),jet->Mom());
60     if (deltaR < fMinDeltaRToPhoton) {
61     isPhotonOverlap = kTRUE;
62     break;
63     }
64     }
65 loizides 1.1 }
66    
67 sixie 1.5 if (isElectronOverlap || isPhotonOverlap)
68 loizides 1.4 continue;
69 loizides 1.1
70 loizides 1.4 CleanJets->Add(jet);
71     }
72 loizides 1.1
73 loizides 1.4 // add to event for other modules to use
74     AddObjThisEvt(CleanJets);
75 loizides 1.1 }