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.3 by loizides, Thu Nov 27 16:30:27 2008 UTC vs.
Revision 1.6 by ceballos, Mon Dec 1 08:15:53 2008 UTC

# Line 1 | Line 1
1   // $Id$
2  
3   #include "MitPhysics/Mods/interface/JetCleaningMod.h"
4 #include "MitPhysics/Utils/interface/IsolationTools.h"
4   #include "MitCommon/MathTools/interface/MathUtils.h"
5   #include "MitPhysics/Init/interface/ModNames.h"
6  
# Line 10 | Line 9 | using namespace mithep;
9   ClassImp(mithep::JetCleaningMod)
10  
11   //--------------------------------------------------------------------------------------------------
12 <  JetCleaningMod::JetCleaningMod(const char *name, const char *title) :
12 > JetCleaningMod::JetCleaningMod(const char *name, const char *title) :
13    BaseMod(name,title),
15  fPrintDebug(false),
14    fCleanElectronsName(ModNames::gkCleanElectronsName),        
15 +  fCleanPhotonsName(ModNames::gkCleanPhotonsName),        
16    fGoodJetsName(ModNames::gkGoodJetsName),        
17 <  fCleanJetsName(ModNames::gkCleanJetsName),        
18 <  fElectrons(0),
19 <  fJets(0),
21 <  fNEventsProcessed(0)
17 >  fCleanJetsName(ModNames::gkCleanJetsName),
18 >  fMinDeltaRToElectron(0.3),
19 >  fMinDeltaRToPhoton(0.3)
20   {
21    // Constructor.
22   }
23  
24   //--------------------------------------------------------------------------------------------------
27 void JetCleaningMod::Begin()
28 {
29  // Run startup code on the client machine. For this module, we dont do
30  // anything here.
31 }
32
33 //--------------------------------------------------------------------------------------------------
25   void JetCleaningMod::Process()
26   {
27 <  // Process entries of the tree. For this module, we just load the branches and
37 <  //output debug info or not  
27 >  // Process entries of the tree.
28  
29 <  fNEventsProcessed++;
30 <
31 <  if (fNEventsProcessed % 1000000 == 0 || fPrintDebug) {
32 <    time_t systime;
33 <    systime = time(NULL);
34 <
35 <    cerr << endl << "JetCleaningMod : Process Event " << fNEventsProcessed << "  Time: " << ctime(&systime) << endl;  
36 <  }  
47 <
48 <  //Get Clean Electrons
49 <  ObjArray<Electron> *CleanElectrons = dynamic_cast<ObjArray<Electron>* >
50 <    (FindObjThisEvt(fCleanElectronsName.Data()));
51 <  //Get Good Jets
52 <  ObjArray<Jet> *GoodJets = dynamic_cast<ObjArray<Jet>* >
53 <    (FindObjThisEvt(fGoodJetsName.Data()));  
54 <  ObjArray<Jet> *CleanJets = new ObjArray<Jet>;
29 >  // get input collections
30 >  ElectronOArr *CleanElectrons = GetObjThisEvt<ElectronOArr>(fCleanElectronsName);
31 >  PhotonOArr *CleanPhotons = GetObjThisEvt<PhotonOArr>(fCleanPhotonsName);
32 >  JetOArr *GoodJets = GetObjThisEvt<JetOArr>(fGoodJetsName);
33 >
34 >  // create output collection
35 >  JetOArr *CleanJets = new JetOArr;
36 >  CleanJets->SetName(fCleanJetsName);
37  
38 <  //remove any jet that overlaps in eta phi with an isolated electron
38 >  // Remove any jet that overlaps in eta, phi with an isolated electron.    
39    for (UInt_t i=0; i<GoodJets->GetEntries(); ++i) {
40 <    Jet *jet = GoodJets->At(i);        
59 <    bool isElectronOverlap =  false;
60 <    
61 <    //Check for overlap with an electron
62 <    for (UInt_t j=0; j<CleanElectrons->GetEntries(); j++) {
63 <      double deltaR = MathUtils::DeltaR(CleanElectrons->At(j)->Mom(),jet->Mom());  
64 <      if (deltaR < 0.3) {
65 <        isElectronOverlap = true;                      
66 <        break;          
67 <      }      
68 <    }
69 <    //Save Clean Jets
70 <    if (!isElectronOverlap) {
71 <      CleanJets->Add(jet);    
72 <    }
73 <  }
40 >    const Jet *jet = GoodJets->At(i);        
41  
42 <  //Final Summary Debug Output  
43 <  if ( fPrintDebug ) {
77 <    cerr << "Event Dump: " << fNEventsProcessed << endl;
78 <    cerr << "GoodJets : " <<
79 <    cerr << "Clean  Jets" << endl;
80 <    for (UInt_t i = 0; i < CleanJets->GetEntries(); i++) {
81 <      cerr << i << " " << CleanJets->At(i)->Pt() << " "
82 <           << CleanJets->At(i)->Eta() << " " << CleanJets->At(i)->Phi() << endl;    
83 <    }
84 <  }  
85 <  
86 <  //Save Objects for Other Modules to use
87 <  AddObjThisEvt(CleanJets, fCleanJetsName.Data());
88 < }
42 >    Bool_t isElectronOverlap = kFALSE;
43 >    Bool_t isPhotonOverlap = kFALSE;
44  
45 +    //Check for overlap with an electron
46 +    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 < //--------------------------------------------------------------------------------------------------
92 < void JetCleaningMod::SlaveBegin()
93 < {
94 <  // Run startup code on the computer (slave) doing the actual analysis. Here,
95 <  // we typically initialize histograms and other analysis objects and request
96 <  // branches. For this module, we request a branch of the MitTree.
56 >    if (isElectronOverlap) continue;
57  
58 < }
58 >    //Check for overlap with a photon
59 >    if (CleanPhotons) {
60 >      for (UInt_t j=0; j<CleanPhotons->Entries(); j++) {
61 >        Double_t deltaR = MathUtils::DeltaR(CleanPhotons->At(j)->Mom(),jet->Mom());  
62 >        if (deltaR < fMinDeltaRToPhoton) {
63 >          isPhotonOverlap = kTRUE;
64 >          break;                
65 >        }      
66 >      }
67 >    }
68  
69 < //--------------------------------------------------------------------------------------------------
101 < void JetCleaningMod::SlaveTerminate()
102 < {
103 <  // Run finishing code on the computer (slave) that did the analysis. For this
104 <  // module, we dont do anything here.
69 >    if (isPhotonOverlap) continue;
70  
71 < }
71 >    CleanJets->Add(jet);    
72 >  }
73  
74 < //--------------------------------------------------------------------------------------------------
75 < void JetCleaningMod::Terminate()
110 < {
111 <  // Run finishing code on the client computer. For this module, we dont do
112 <  // anything here.
74 >  // add to event for other modules to use
75 >  AddObjThisEvt(CleanJets);
76   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines