ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/JetCleaningMod.cc
(Generate patch)

Comparing UserCode/MitPhysics/Mods/src/JetCleaningMod.cc (file contents):
Revision 1.4 by loizides, Fri Nov 28 09:13:50 2008 UTC vs.
Revision 1.9 by bendavid, Thu Mar 12 16:00:46 2009 UTC

# Line 12 | Line 12 | ClassImp(mithep::JetCleaningMod)
12   JetCleaningMod::JetCleaningMod(const char *name, const char *title) :
13    BaseMod(name,title),
14    fCleanElectronsName(ModNames::gkCleanElectronsName),        
15 +  fCleanPhotonsName(ModNames::gkCleanPhotonsName),        
16    fGoodJetsName(ModNames::gkGoodJetsName),        
17 <  fCleanJetsName(ModNames::gkCleanJetsName)
17 >  fCleanJetsName(ModNames::gkCleanJetsName),
18 >  fMinDeltaRToElectron(0.3),
19 >  fMinDeltaRToPhoton(0.3)
20   {
21    // Constructor.
22   }
# Line 24 | Line 27 | void JetCleaningMod::Process()
27    // Process entries of the tree.
28  
29    // get input collections
30 <  ElectronOArr *CleanElectrons = GetObjThisEvt<ElectronOArr>(fCleanElectronsName);
31 <  JetOArr *GoodJets = GetObjThisEvt<JetOArr>(fGoodJetsName);
30 >  const JetCol  *GoodJets       = GetObjThisEvt<JetCol>(fGoodJetsName);
31 >  const ElectronCol *CleanElectrons = 0;
32 >  if (!fCleanElectronsName.IsNull())
33 >    CleanElectrons = GetObjThisEvt<ElectronCol>(fCleanElectronsName);
34 >  const PhotonCol   *CleanPhotons   = 0;
35 >  if (!fCleanPhotonsName.IsNull())
36 >  CleanPhotons    = GetObjThisEvt<PhotonCol>(fCleanPhotonsName);
37  
38    // create output collection
39    JetOArr *CleanJets = new JetOArr;
40    CleanJets->SetName(fCleanJetsName);
41  
42 <  // Remove any jet that overlaps in eta, phi with an isolated electron.
42 >  // remove any jet that overlaps in eta, phi with an isolated electron.    
43    for (UInt_t i=0; i<GoodJets->GetEntries(); ++i) {
44      const Jet *jet = GoodJets->At(i);        
45  
46 <    Bool_t isElectronOverlap =  false;
47 <    
48 <    //Check for overlap with an electron
49 <    for (UInt_t j=0; j<CleanElectrons->Entries(); j++) {
50 <      Double_t deltaR = MathUtils::DeltaR(CleanElectrons->At(j)->Mom(),jet->Mom());  
51 <      if (deltaR < 0.3) {
52 <        isElectronOverlap = kTRUE;
53 <        break;          
54 <      }      
46 >    // check for overlap with an electron
47 >    Bool_t isElectronOverlap = kFALSE;
48 >    if (CleanElectrons) {
49 >      UInt_t n = CleanElectrons->GetEntries();
50 >      for (UInt_t j=0; j<n; ++j) {
51 >        Double_t deltaR = MathUtils::DeltaR(CleanElectrons->At(j)->Mom(),jet->Mom());  
52 >        if (deltaR < fMinDeltaRToElectron) {
53 >          isElectronOverlap = kTRUE;
54 >          break;                
55 >        }      
56 >      }
57      }
58  
59 <    if (isElectronOverlap)
60 <      continue;
59 >    if (isElectronOverlap) continue;
60 >
61 >    // check for overlap with a photon
62 >    Bool_t isPhotonOverlap = kFALSE;
63 >    if (CleanPhotons) {
64 >      UInt_t n = CleanPhotons->GetEntries();
65 >      for (UInt_t j=0; j<n; ++j) {
66 >        Double_t deltaR = MathUtils::DeltaR(CleanPhotons->At(j)->Mom(),jet->Mom());  
67 >        if (deltaR < fMinDeltaRToPhoton) {
68 >          isPhotonOverlap = kTRUE;
69 >          break;                
70 >        }      
71 >      }
72 >    }
73 >
74 >    if (isPhotonOverlap) continue;
75  
76      CleanJets->Add(jet);    
77    }
78  
79 +  // sort according to pt
80 +  CleanJets->Sort();
81 +
82    // add to event for other modules to use
83    AddObjThisEvt(CleanJets);
84   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines