51 |
|
//************************************************************************************************* |
52 |
|
// Selection Histograms |
53 |
|
//************************************************************************************************* |
54 |
< |
AddTH1(fWBFSelection,"fWBFSelection", ";Cut Number;Number of Events", 6, -1.5, 4.5); |
54 |
> |
AddTH1(fWBFSelection,"fWBFSelection", ";Cut Number;Number of Events", 7, -1.5, 5.5); |
55 |
|
|
56 |
|
//*********************************************************************************************** |
57 |
|
// N-1 Histograms |
58 |
|
//*********************************************************************************************** |
59 |
|
//All events |
60 |
< |
AddTH1(fWBFPtJetMax_NMinusOne, "fWBFPtJetMax_NMinusOne", ";Pt Jet Max;Number of Events",400,0.,400.); |
61 |
< |
AddTH1(fWBFPtJetMin_NMinusOne, "fWBFPtJetMin_NMinusOne", ";Pt Jet Min;Number of Events",400,0.,400.); |
62 |
< |
AddTH1(fWBFdeltaEta_NMinusOne, "fWBFdeltaEta_NMinusOne", ";Delta Eta;Number of Events",100,0.,10.); |
63 |
< |
AddTH1(fWBFdijetMass_NMinusOne,"fWBFdijetMass_NMinusOne",";DiJet Mass;Number of Events",400,0.,4000.); |
60 |
> |
AddTH1(fWBFPtJetMax_NMinusOne, "fWBFPtJetMax_NMinusOne", ";Pt Jet Max;Number of Events",300,0.,300. ); |
61 |
> |
AddTH1(fWBFPtJetMin_NMinusOne, "fWBFPtJetMin_NMinusOne", ";Pt Jet Min;Number of Events",300,0.,300. ); |
62 |
> |
AddTH1(fWBFEta12_NMinusOne, "fWBFEta12_NMinusOne", ";eta1*eta2;Number of Events", 2,-1.5,1.5 ); |
63 |
> |
AddTH1(fWBFdeltaEta_NMinusOne, "fWBFdeltaEta_NMinusOne", ";Delta Eta;Number of Events", 100,0.,10. ); |
64 |
> |
AddTH1(fWBFdijetMass_NMinusOne,"fWBFdijetMass_NMinusOne",";DiJet Mass;Number of Events",300,0.,3000.); |
65 |
> |
AddTH1(fWBFZVar_NMinusOne, "fWBFZVar_NMinusOne", ";Z variable;Number of Events",50,0.,5. ); |
66 |
|
|
67 |
|
//*********************************************************************************************** |
68 |
|
// After all cuts Histograms |
69 |
|
//*********************************************************************************************** |
70 |
|
AddTH1(fWBFSSMass_afterCuts,"fWBFSSMass_afterCuts",";SS dilepton Mass;Number of Events",200,0.,400); |
71 |
< |
AddTH1(fWBFSSDeltaPhi_afterCuts,"fWBFOSDeltaPhi_afterCuts",";SS DeltaPhi 2l;Number of Events",90,0.,180); |
72 |
< |
AddTH1(fWBFOSMass_afterCuts,"fWBFSSMass_afterCuts",";OS dilepton Mass;Number of Events",200,0.,400); |
73 |
< |
AddTH1(fWBFSSDeltaPhi_afterCuts,"fWBFOSDeltaPhi_afterCuts",";OS DeltaPhi 2l;Number of Events",90,0.,180); |
72 |
< |
AddTH1(fWBFDiPhotonMass_afterCuts,"fWBFDiPhotonMass_afterCuts",";DiPhoton Mass;Number of Events",400,0.,400); |
71 |
> |
AddTH1(fWBFSSDeltaPhi_afterCuts,"fWBFSSDeltaPhi_afterCuts",";SS DeltaPhi 2l;Number of Events",90,0.,180); |
72 |
> |
AddTH1(fWBFOSMass_afterCuts,"fWBFOSMass_afterCuts",";OS dilepton Mass;Number of Events",200,0.,400); |
73 |
> |
AddTH1(fWBFOSDeltaPhi_afterCuts,"fWBFOSDeltaPhi_afterCuts",";OS DeltaPhi 2l;Number of Events",90,0.,180); |
74 |
|
|
75 |
|
} |
76 |
|
|
81 |
|
fVertices = GetObjThisEvt<VertexOArr>(fVertexName); |
82 |
|
ParticleOArr *CleanLeptons = dynamic_cast<mithep::ParticleOArr*> |
83 |
|
(FindObjThisEvt(ModNames::gkMergedLeptonsName)); |
83 |
– |
PhotonOArr *CleanPhotons = GetObjThisEvt<PhotonOArr>(ModNames::gkMCPhotonsName); |
84 |
|
ObjArray<Jet> *CleanJets = dynamic_cast<ObjArray<Jet>* > |
85 |
|
(FindObjThisEvt(fCleanJetsName.Data())); |
86 |
|
TParameter<Double_t> *NNLOWeight = GetObjThisEvt<TParameter<Double_t> >("NNLOWeight"); |
99 |
|
//********************************************************************************************* |
100 |
|
//Define Cuts |
101 |
|
//********************************************************************************************* |
102 |
< |
const int nCuts = 7; |
103 |
< |
bool passCut[nCuts] = {false, false, false, false, false}; |
102 |
> |
const int nCuts = 6; |
103 |
> |
bool passCut[nCuts] = {false, false, false, false, false, false}; |
104 |
|
|
105 |
|
// ptjet max cut |
106 |
|
if(CleanJets->At(0)->Pt() > fJetPtMax) passCut[0] = true; |
120 |
|
dijet.AddDaughter(CleanJets->At(0)); |
121 |
|
dijet.AddDaughter(CleanJets->At(1)); |
122 |
|
if(dijet.Mass() > fDiJetMassMin) passCut[4] = true; |
123 |
< |
|
123 |
> |
|
124 |
> |
// jet veto cut, use of zeffendeld variable |
125 |
> |
passCut[5] = true; |
126 |
> |
double zVarMin = 30.; |
127 |
> |
if(CleanJets->GetEntries() >=2 ){ |
128 |
> |
for(UInt_t i=2; i<CleanJets->GetEntries(); i++){ |
129 |
> |
if(CleanJets->At(i)->Pt() <= 30.0) return; |
130 |
> |
double zVar = TMath::Abs(CleanJets->At(i)->Eta()-(CleanJets->At(0)->Eta()+CleanJets->At(1)->Eta())/2)/ |
131 |
> |
TMath::Abs(CleanJets->At(0)->Eta()-CleanJets->At(1)->Eta()); |
132 |
> |
if(zVar < zVarMin) zVarMin = zVar; |
133 |
> |
} |
134 |
> |
if(zVarMin < 1) passCut[5] = false; |
135 |
> |
} |
136 |
|
//********************************************************************************************* |
137 |
|
//Make Selection Histograms. Number of events passing each level of cut |
138 |
|
//********************************************************************************************* |
166 |
|
} |
167 |
|
} |
168 |
|
if (pass) { |
169 |
< |
fWBFPtJetMax_NMinusOne->Fill(TMath::Min(CleanJets->At(0)->Pt(),399.999),NNLOWeight->GetVal()); |
169 |
> |
fWBFPtJetMax_NMinusOne->Fill(TMath::Min(CleanJets->At(0)->Pt(),299.999),NNLOWeight->GetVal()); |
170 |
|
} |
171 |
|
|
172 |
|
// N-1 ptjet min |
177 |
|
} |
178 |
|
} |
179 |
|
if (pass) { |
180 |
< |
fWBFPtJetMin_NMinusOne->Fill(TMath::Min(CleanJets->At(1)->Pt(),399.999),NNLOWeight->GetVal()); |
180 |
> |
fWBFPtJetMin_NMinusOne->Fill(TMath::Min(CleanJets->At(1)->Pt(),299.999),NNLOWeight->GetVal()); |
181 |
> |
} |
182 |
> |
|
183 |
> |
// N-1 eta1*eta2 |
184 |
> |
pass = true; |
185 |
> |
for (int k=0;k<nCuts;k++) { |
186 |
> |
if (k != 2) { |
187 |
> |
pass = (pass && passCut[k]); |
188 |
> |
} |
189 |
> |
} |
190 |
> |
if (pass) { |
191 |
> |
fWBFEta12_NMinusOne->Fill(CleanJets->At(0)->Eta()*CleanJets->At(1)->Eta()/ |
192 |
> |
TMath::Abs(CleanJets->At(0)->Eta()*CleanJets->At(1)->Eta()),NNLOWeight->GetVal()); |
193 |
|
} |
194 |
|
|
195 |
|
// N-1 deltaEta |
211 |
|
} |
212 |
|
} |
213 |
|
if (pass) { |
214 |
< |
fWBFdijetMass_NMinusOne->Fill(TMath::Min(dijet.Mass(),3999.999),NNLOWeight->GetVal()); |
214 |
> |
fWBFdijetMass_NMinusOne->Fill(TMath::Min(dijet.Mass(),2999.999),NNLOWeight->GetVal()); |
215 |
> |
} |
216 |
> |
|
217 |
> |
// N-1 dijet mass |
218 |
> |
pass = true; |
219 |
> |
for (int k=0;k<nCuts;k++) { |
220 |
> |
if (k != 5) { |
221 |
> |
pass = (pass && passCut[k]); |
222 |
> |
} |
223 |
> |
} |
224 |
> |
if (pass) { |
225 |
> |
fWBFZVar_NMinusOne->Fill(TMath::Min(zVarMin,4.999),NNLOWeight->GetVal()); |
226 |
|
} |
227 |
|
|
228 |
|
//********************************************************************************************* |
239 |
|
double deltaPhiLeptons = MathUtils::DeltaPhi(CleanLeptons->At(0)->Phi(), |
240 |
|
CleanLeptons->At(1)->Phi())* 180.0 / TMath::Pi(); |
241 |
|
|
242 |
< |
if(CleanLeptons->At(0)->Charge() * CleanLeptons->At(1)->Charge() > 0){ |
242 |
> |
if(CleanLeptons->At(0)->Charge() * CleanLeptons->At(1)->Charge() > 0){ // same-sign |
243 |
|
fWBFSSMass_afterCuts->Fill(TMath::Min(dilepton.Mass(),399.999),NNLOWeight->GetVal()); |
244 |
|
fWBFSSDeltaPhi_afterCuts->Fill(deltaPhiLeptons,NNLOWeight->GetVal()); |
245 |
|
} |
246 |
< |
else { |
246 |
> |
else { // opposite-sign |
247 |
|
fWBFOSMass_afterCuts->Fill(TMath::Min(dilepton.Mass(),399.999),NNLOWeight->GetVal()); |
248 |
|
fWBFOSDeltaPhi_afterCuts->Fill(deltaPhiLeptons,NNLOWeight->GetVal()); |
249 |
|
} |
250 |
|
} |
216 |
– |
|
217 |
– |
// Distributions for diphotons events |
218 |
– |
if(CleanPhotons->GetEntries() >= 2 && |
219 |
– |
CleanPhotons->At(0)->Pt() > 30 && CleanPhotons->At(1)->Pt() > 30){ |
220 |
– |
CompositeParticle diphoton; |
221 |
– |
diphoton.AddDaughter(CleanPhotons->At(0)); |
222 |
– |
diphoton.AddDaughter(CleanPhotons->At(1)); |
223 |
– |
fWBFDiPhotonMass_afterCuts->Fill(TMath::Min(diphoton.Mass(),399.999),NNLOWeight->GetVal()); |
224 |
– |
} |
251 |
|
} |
252 |
|
|
253 |
|
return; |