1 |
// $Id: JetPlusIsoTrackSelMod.cc,v 1.2 2009/06/15 15:00:22 loizides Exp $
|
2 |
|
3 |
#include "MitPhysics/SelMods/interface/JetPlusIsoTrackSelMod.h"
|
4 |
#include "MitPhysics/Utils/interface/IsolationTools.h"
|
5 |
#include "MitCommon/MathTools/interface/MathUtils.h"
|
6 |
#include "MitAna/DataTree/interface/JetCol.h"
|
7 |
#include "MitAna/DataTree/interface/TrackCol.h"
|
8 |
#include <TH1D.h>
|
9 |
|
10 |
using namespace mithep;
|
11 |
|
12 |
ClassImp(mithep::JetPlusIsoTrackSelMod)
|
13 |
|
14 |
//--------------------------------------------------------------------------------------------------
|
15 |
mithep::JetPlusIsoTrackSelMod::JetPlusIsoTrackSelMod(const char *name, const char *title) :
|
16 |
BaseSelMod(name,title),
|
17 |
fJetColName("SetMe"),
|
18 |
fTrackerTrackColName("SetMe"),
|
19 |
fGsfTrackColName("SetMe"),
|
20 |
fJetPtMin(0),
|
21 |
fJetPtMax(5000),
|
22 |
fJetEtaMin(-10),
|
23 |
fJetEtaMax(10),
|
24 |
fTrackPtMin(0),
|
25 |
fTrackPtMax(5000),
|
26 |
fTrackEtaMin(-10),
|
27 |
fTrackEtaMax(10),
|
28 |
fJetCol(0),
|
29 |
fTrackerTrackCol(0),
|
30 |
fGsfTrackCol(0)
|
31 |
{
|
32 |
// Constructor.
|
33 |
}
|
34 |
|
35 |
//--------------------------------------------------------------------------------------------------
|
36 |
void mithep::JetPlusIsoTrackSelMod::Process()
|
37 |
{
|
38 |
// Process entries of the tree.
|
39 |
|
40 |
//load the track branches
|
41 |
LoadBranch(GetTrackerTrackColName());
|
42 |
LoadBranch(GetGsfTrackColName());
|
43 |
|
44 |
fNAccCounters->Fill(0);
|
45 |
|
46 |
fJetCol = GetObjThisEvt<Collection<Jet> >(GetJetColName());
|
47 |
if (!fJetCol ) {
|
48 |
this->SendError(kAbortModule, "Process",
|
49 |
"Could not obtain collection with name %s!", GetJetColName());
|
50 |
return;
|
51 |
}
|
52 |
|
53 |
if (!fJetCol && !fGsfTrackCol) {
|
54 |
this->SendError(kAbortModule, "Process",
|
55 |
"Could not obtain either collections with names %s , %s!",
|
56 |
GetTrackerTrackColName(), GetGsfTrackColName());
|
57 |
return;
|
58 |
}
|
59 |
|
60 |
fNAccCounters->Fill(1);
|
61 |
|
62 |
UInt_t JetCounter = 0;
|
63 |
for(UInt_t i=0;i<fJetCol->GetEntries();++i) {
|
64 |
if (fJetCol->At(i)->Pt() >= fJetPtMin &&
|
65 |
fJetCol->At(i)->Pt() <= fJetPtMax &&
|
66 |
fJetCol->At(i)->Eta() >= fJetEtaMin &&
|
67 |
fJetCol->At(i)->Eta() <= fJetEtaMax)
|
68 |
JetCounter++;
|
69 |
}
|
70 |
if (JetCounter == 0) {
|
71 |
this->SkipEvent();
|
72 |
return;
|
73 |
}
|
74 |
|
75 |
fNAccCounters->Fill(2);
|
76 |
|
77 |
UInt_t TrackCounter = 0;
|
78 |
for(UInt_t i=0;i<fTrackerTrackCol->GetEntries();++i) {
|
79 |
const Track *trk = fTrackerTrackCol->At(i);
|
80 |
if (trk->Pt() >= fTrackPtMin && trk->Pt() <= fTrackPtMax &&
|
81 |
trk->Eta() >= fTrackEtaMin && trk->Eta() <= fTrackEtaMax) {
|
82 |
Double_t iso = IsolationTools::TrackIsolation(trk,0.3, 0.015,1.0,1000.0,fTrackerTrackCol);
|
83 |
if (iso < 10.0) {
|
84 |
//require that the track is not the same object as one of the leptons
|
85 |
if (MathUtils::DeltaR(trk->Phi(), trk->Eta(),
|
86 |
fJetCol->At(0)->Phi(), fJetCol->At(0)->Eta()) >= 0.3)
|
87 |
TrackCounter++;
|
88 |
}
|
89 |
}
|
90 |
}
|
91 |
for(UInt_t i=0;i<fGsfTrackCol->GetEntries();++i) {
|
92 |
const Track *trk = fGsfTrackCol->At(i);
|
93 |
if (trk->Pt() >= fTrackPtMin &&
|
94 |
trk->Pt() <= fTrackPtMax &&
|
95 |
trk->Eta() >= fTrackEtaMin &&
|
96 |
trk->Eta() <= fTrackEtaMax) {
|
97 |
Double_t iso = IsolationTools::TrackIsolation(trk,0.3, 0.015,1.0,1000.0,fTrackerTrackCol);
|
98 |
if (iso < 10.0) {
|
99 |
if (MathUtils::DeltaR(trk->Phi(), trk->Eta(),
|
100 |
fJetCol->At(0)->Phi(), fJetCol->At(0)->Eta()) >= 0.3)
|
101 |
TrackCounter++;
|
102 |
}
|
103 |
}
|
104 |
}
|
105 |
|
106 |
if (TrackCounter == 0) {
|
107 |
this->SkipEvent();
|
108 |
return;
|
109 |
}
|
110 |
|
111 |
fNAccCounters->Fill(3);
|
112 |
}
|
113 |
|
114 |
//--------------------------------------------------------------------------------------------------
|
115 |
void mithep::JetPlusIsoTrackSelMod::SlaveBegin()
|
116 |
{
|
117 |
// Setup acceptence histogram.
|
118 |
ReqBranch(GetTrackerTrackColName(), fTrackerTrackCol);
|
119 |
ReqBranch(GetGsfTrackColName(), fGsfTrackCol);
|
120 |
|
121 |
AddTH1(fNAccCounters,"hNAccCounters",";cut;#",5,-0.5,4.5);
|
122 |
if (1) {
|
123 |
TAxis *xa = fNAccCounters->GetXaxis();
|
124 |
for(Int_t i=1;i<=fNAccCounters->GetNbinsX();++i)
|
125 |
xa->SetBinLabel(i,"unused");
|
126 |
xa->SetBinLabel(1,"Enter");
|
127 |
xa->SetBinLabel(2,"Objs");
|
128 |
xa->SetBinLabel(3,"AtLeastOneJet");
|
129 |
xa->SetBinLabel(4,"IsolatedTrack");
|
130 |
xa->SetRangeUser(0,3);
|
131 |
}
|
132 |
}
|