1 |
|
#include "ZeeTreeWriterMod.h" |
2 |
|
#include "SelectionFuncs.h" |
3 |
+ |
#include "TDataMember.h" |
4 |
+ |
|
5 |
|
|
6 |
|
const Float_t g_electron_mass = 0.51099892e-3; |
7 |
|
const Float_t g_muon_mass = 105.658369e-3; |
35 |
|
if(use_gen) |
36 |
|
fOutputTree->Branch("Z_gen_mass",&Z_gen_mass,"Z_gen_mass/F"); |
37 |
|
|
36 |
– |
fOutputTree->Branch("electron1_pt",&electron1_pt,"electron1_pt/F"); |
37 |
– |
fOutputTree->Branch("electron1_eta",&electron1_eta,"electron1_eta/F"); |
38 |
– |
fOutputTree->Branch("electron1_phi",&electron1_phi,"electron1_phi/F"); |
39 |
– |
fOutputTree->Branch("electron1_isEB",&electron1_isEB,"electron1_isEB/i"); |
40 |
– |
fOutputTree->Branch("electron1_isEE",&electron1_isEE,"electron1_isEE/i"); |
41 |
– |
|
42 |
– |
fOutputTree->Branch("electron1_scrawe",&electron1_scrawe,"electron1_scrawe/F"); |
43 |
– |
fOutputTree->Branch("electron1_sceta",&electron1_sceta,"electron1_sceta/F"); |
44 |
– |
fOutputTree->Branch("electron1_scphi",&electron1_scphi,"electron1_scphi/F"); |
45 |
– |
fOutputTree->Branch("electron1_r9",&electron1_r9,"electron1_r9/F"); |
46 |
– |
fOutputTree->Branch("electron1_e5x5",&electron1_e5x5,"electron1_e5x5/F"); |
47 |
– |
fOutputTree->Branch("electron1_scetawidth",&electron1_scetawidth,"electron1_scetawidth/F"); |
48 |
– |
fOutputTree->Branch("electron1_scphiwidth",&electron1_scphiwidth,"electron1_scphiwidth/F"); |
49 |
– |
fOutputTree->Branch("electron1_scnclusters",&electron1_scnclusters,"electron1_scnclusters/F"); |
50 |
– |
fOutputTree->Branch("electron1_hoveretower",&electron1_hoveretower,"electron1_hoveretower/F"); |
51 |
– |
fOutputTree->Branch("electron1_etaseed",&electron1_etaseed,"electron1_etaseed/F"); |
52 |
– |
fOutputTree->Branch("electron1_phiseed",&electron1_phiseed,"electron1_phiseed/F"); |
53 |
– |
fOutputTree->Branch("electron1_eseed",&electron1_eseed,"electron1_eseed/F"); |
54 |
– |
fOutputTree->Branch("electron1_e3x3seed",&electron1_e3x3seed,"electron1_e3x3seed/F"); |
55 |
– |
fOutputTree->Branch("electron1_e5x5seed",&electron1_e5x5seed,"electron1_e5x5seed/F"); |
56 |
– |
fOutputTree->Branch("electron1_sigietaietaseed",&electron1_sigietaietaseed,"electron1_sigietaietaseed/F"); |
57 |
– |
fOutputTree->Branch("electron1_sigiphiiphiseed",&electron1_sigiphiiphiseed,"electron1_sigiphiiphiseed/F"); |
58 |
– |
fOutputTree->Branch("electron1_covietaiphiseed",&electron1_covietaiphiseed,"electron1_covietaiphiseed/F"); |
59 |
– |
fOutputTree->Branch("electron1_emaxseed",&electron1_emaxseed,"electron1_emaxseed/F"); |
60 |
– |
fOutputTree->Branch("electron1_e2ndseed",&electron1_e2ndseed,"electron1_e2ndseed/F"); |
61 |
– |
fOutputTree->Branch("electron1_etopseed",&electron1_etopseed,"electron1_etopseed/F"); |
62 |
– |
fOutputTree->Branch("electron1_ebottomseed",&electron1_ebottomseed,"electron1_ebottomseed/F"); |
63 |
– |
fOutputTree->Branch("electron1_eleftseed",&electron1_eleftseed,"electron1_eleftseed/F"); |
64 |
– |
fOutputTree->Branch("electron1_erightseed",&electron1_erightseed,"electron1_erightseed/F"); |
65 |
– |
fOutputTree->Branch("electron1_e2x5maxseed",&electron1_e2x5maxseed,"electron1_e2x5maxseed/F"); |
66 |
– |
fOutputTree->Branch("electron1_e2x5topseed",&electron1_e2x5topseed,"electron1_e2x5topseed/F"); |
67 |
– |
fOutputTree->Branch("electron1_e2x5bottomseed",&electron1_e2x5bottomseed,"electron1_e2x5bottomseed/F"); |
68 |
– |
fOutputTree->Branch("electron1_e2x5leftseed",&electron1_e2x5leftseed,"electron1_e2x5leftseed/F"); |
69 |
– |
fOutputTree->Branch("electron1_e2x5rightseed",&electron1_e2x5rightseed,"electron1_e2x5rightseed/F"); |
70 |
– |
fOutputTree->Branch("electron1_scpse",&electron1_scpse,"electron1_scpse/F"); |
71 |
– |
|
72 |
– |
fOutputTree->Branch("electron1_ietaseed",&electron1_ietaseed,"electron1_ietaseed/F"); |
73 |
– |
fOutputTree->Branch("electron1_iphiseed",&electron1_iphiseed,"electron1_iphiseed/F"); |
74 |
– |
fOutputTree->Branch("electron1_etacryseed",&electron1_etacryseed,"electron1_etacryseed/F"); |
75 |
– |
fOutputTree->Branch("electron1_phicryseed",&electron1_phicryseed,"electron1_phicryseed/F"); |
76 |
– |
|
77 |
– |
|
78 |
– |
fOutputTree->Branch("electron1_fbrem",&electron1_fbrem,"electron1_fbrem/F"); |
79 |
– |
fOutputTree->Branch("electron1_charge",&electron1_charge,"electron1_charge/F"); |
80 |
– |
fOutputTree->Branch("electron1_eoverp",&electron1_eoverp,"electron1_eoverp/F"); |
38 |
|
|
39 |
|
//fOutputTree->Branch("electron1_gene",&electron1_gene,"electron1_gene/F"); |
40 |
|
|
41 |
< |
fOutputTree->Branch("electron2_pt",&electron2_pt,"electron2_pt/F"); |
42 |
< |
fOutputTree->Branch("electron2_eta",&electron2_eta,"electron2_eta/F"); |
43 |
< |
fOutputTree->Branch("electron2_phi",&electron2_phi,"electron2_phi/F"); |
44 |
< |
fOutputTree->Branch("electron2_isEB",&electron2_isEB,"electron2_isEB/i"); |
45 |
< |
fOutputTree->Branch("electron2_isEE",&electron2_isEE,"electron2_isEE/i"); |
46 |
< |
|
47 |
< |
fOutputTree->Branch("electron2_scrawe",&electron2_scrawe,"electron2_scrawe/F"); |
48 |
< |
fOutputTree->Branch("electron2_sceta",&electron2_sceta,"electron2_sceta/F"); |
49 |
< |
|
50 |
< |
fOutputTree->Branch("electron2_scphi",&electron2_scphi,"electron2_scphi/F"); |
51 |
< |
fOutputTree->Branch("electron2_r9",&electron2_r9,"electron2_r9/F"); |
52 |
< |
fOutputTree->Branch("electron2_e5x5",&electron2_e5x5,"electron2_e5x5/F"); |
53 |
< |
fOutputTree->Branch("electron2_scetawidth",&electron2_scetawidth,"electron2_scetawidth/F"); |
54 |
< |
fOutputTree->Branch("electron2_scphiwidth",&electron2_scphiwidth,"electron2_scphiwidth/F"); |
55 |
< |
fOutputTree->Branch("electron2_scnclusters",&electron2_scnclusters,"electron2_scnclusters/F"); |
56 |
< |
fOutputTree->Branch("electron2_hoveretower",&electron2_hoveretower,"electron2_hoveretower/F"); |
57 |
< |
fOutputTree->Branch("electron2_etaseed",&electron2_etaseed,"electron2_etaseed/F"); |
58 |
< |
fOutputTree->Branch("electron2_phiseed",&electron2_phiseed,"electron2_phiseed/F"); |
59 |
< |
fOutputTree->Branch("electron2_eseed",&electron2_eseed,"electron2_eseed/F"); |
60 |
< |
fOutputTree->Branch("electron2_e3x3seed",&electron2_e3x3seed,"electron2_e3x3seed/F"); |
61 |
< |
fOutputTree->Branch("electron2_e5x5seed",&electron2_e5x5seed,"electron2_e5x5seed/F"); |
62 |
< |
fOutputTree->Branch("electron2_sigietaietaseed",&electron2_sigietaietaseed,"electron2_sigietaietaseed/F"); |
63 |
< |
fOutputTree->Branch("electron2_sigiphiiphiseed",&electron2_sigiphiiphiseed,"electron2_sigiphiiphiseed/F"); |
64 |
< |
fOutputTree->Branch("electron2_covietaiphiseed",&electron2_covietaiphiseed,"electron2_covietaiphiseed/F"); |
65 |
< |
fOutputTree->Branch("electron2_emaxseed",&electron2_emaxseed,"electron2_emaxseed/F"); |
66 |
< |
fOutputTree->Branch("electron2_e2ndseed",&electron2_e2ndseed,"electron2_e2ndseed/F"); |
67 |
< |
fOutputTree->Branch("electron2_etopseed",&electron2_etopseed,"electron2_etopseed/F"); |
68 |
< |
fOutputTree->Branch("electron2_ebottomseed",&electron2_ebottomseed,"electron2_ebottomseed/F"); |
69 |
< |
fOutputTree->Branch("electron2_eleftseed",&electron2_eleftseed,"electron2_eleftseed/F"); |
70 |
< |
fOutputTree->Branch("electron2_erightseed",&electron2_erightseed,"electron2_erightseed/F"); |
71 |
< |
fOutputTree->Branch("electron2_e2x5maxseed",&electron2_e2x5maxseed,"electron2_e2x5maxseed/F"); |
72 |
< |
fOutputTree->Branch("electron2_e2x5topseed",&electron2_e2x5topseed,"electron2_e2x5topseed/F"); |
73 |
< |
fOutputTree->Branch("electron2_e2x5bottomseed",&electron2_e2x5bottomseed,"electron2_e2x5bottomseed/F"); |
74 |
< |
fOutputTree->Branch("electron2_e2x5leftseed",&electron2_e2x5leftseed,"electron2_e2x5leftseed/F"); |
75 |
< |
fOutputTree->Branch("electron2_e2x5rightseed",&electron2_e2x5rightseed,"electron2_e2x5rightseed/F"); |
76 |
< |
fOutputTree->Branch("electron2_scpse",&electron2_scpse,"electron2_scpse/F"); |
77 |
< |
|
78 |
< |
fOutputTree->Branch("electron2_ietaseed",&electron2_ietaseed,"electron2_ietaseed/F"); |
79 |
< |
fOutputTree->Branch("electron2_iphiseed",&electron2_iphiseed,"electron2_iphiseed/F"); |
80 |
< |
fOutputTree->Branch("electron2_etacryseed",&electron2_etacryseed,"electron2_etacryseed/F"); |
81 |
< |
fOutputTree->Branch("electron2_phicryseed",&electron2_phicryseed,"electron2_phicryseed/F"); |
82 |
< |
|
83 |
< |
|
84 |
< |
fOutputTree->Branch("electron2_fbrem",&electron2_fbrem,"electron2_fbrem/F"); |
85 |
< |
fOutputTree->Branch("electron2_charge",&electron2_charge,"electron2_charge/F"); |
86 |
< |
fOutputTree->Branch("electron2_eoverp",&electron2_eoverp,"electron2_eoverp/F"); |
41 |
> |
//make flattish tree from classes so we don't have to rely on dictionaries for reading later |
42 |
> |
TClass *eclass = TClass::GetClass("mithep::ElectronEnergyRegressionData"); |
43 |
> |
TList *elist = eclass->GetListOfDataMembers(); |
44 |
> |
|
45 |
> |
//create branches for electron1 |
46 |
> |
for (int i=0; i<elist->GetEntries(); ++i) { |
47 |
> |
const TDataMember *tdm = static_cast<const TDataMember*>(elist->At(i)); |
48 |
> |
if (!(tdm->IsBasic() && tdm->IsPersistent())) continue; |
49 |
> |
TString typestring; |
50 |
> |
if (TString(tdm->GetTypeName()).BeginsWith("Char_t")) typestring = "B"; |
51 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("UChar_t")) typestring = "b"; |
52 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Short_t")) typestring = "S"; |
53 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("UShort_t")) typestring = "s"; |
54 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Int_t")) typestring = "I"; |
55 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("UInt_t")) typestring = "i"; |
56 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Float_t")) typestring = "F"; |
57 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Double_t")) typestring = "D"; |
58 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Long64_t")) typestring = "L"; |
59 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("ULong64_t")) typestring = "l"; |
60 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Bool_t")) typestring = "O"; |
61 |
> |
else continue; |
62 |
> |
Char_t *addr = (Char_t*)&electron1; |
63 |
> |
assert(sizeof(Char_t)==1); |
64 |
> |
fOutputTree->Branch(string("electron1." + string(tdm->GetName())).c_str(),addr + tdm->GetOffset(),TString::Format("electron1.%s/%s",tdm->GetName(),typestring.Data())); |
65 |
> |
} |
66 |
> |
|
67 |
> |
//create branches for electron 2 |
68 |
> |
for (int i=0; i<elist->GetEntries(); ++i) { |
69 |
> |
const TDataMember *tdm = static_cast<const TDataMember*>(elist->At(i)); |
70 |
> |
if (!(tdm->IsBasic() && tdm->IsPersistent())) continue; |
71 |
> |
TString typestring; |
72 |
> |
if (TString(tdm->GetTypeName()).BeginsWith("Char_t")) typestring = "B"; |
73 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("UChar_t")) typestring = "b"; |
74 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Short_t")) typestring = "S"; |
75 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("UShort_t")) typestring = "s"; |
76 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Int_t")) typestring = "I"; |
77 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("UInt_t")) typestring = "i"; |
78 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Float_t")) typestring = "F"; |
79 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Double_t")) typestring = "D"; |
80 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Long64_t")) typestring = "L"; |
81 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("ULong64_t")) typestring = "l"; |
82 |
> |
else if (TString(tdm->GetTypeName()).BeginsWith("Bool_t")) typestring = "O"; |
83 |
> |
else continue; |
84 |
> |
Char_t *addr = (Char_t*)&electron2; |
85 |
> |
assert(sizeof(Char_t)==1); |
86 |
> |
fOutputTree->Branch(string("electron2." + string(tdm->GetName())).c_str(),addr + tdm->GetOffset(),TString::Format("electron2.%s/%s",tdm->GetName(),typestring.Data())); |
87 |
> |
} |
88 |
> |
|
89 |
|
|
90 |
|
//fOutputTree->Branch("electron2_gene",&electron_gene,"electron2_gene/F");\ |
91 |
|
|
147 |
|
const Electron * ele2 = NULL; |
148 |
|
|
149 |
|
for(UInt_t i=0; i<fElectrons->GetEntries(); ++i) { |
150 |
+ |
for(UInt_t j=i+1; j<fElectrons->GetEntries(); ++j) { |
151 |
+ |
|
152 |
|
const Electron *ele1 = fElectrons->At(i); |
153 |
+ |
const Electron *ele2 = fElectrons->At(j); |
154 |
|
|
155 |
|
if(ele1->Pt() < 7) continue; |
156 |
|
if(fabs(ele1->Eta()) > 2.5) continue; |
157 |
+ |
if(ele2->Pt() < 7) continue; |
158 |
+ |
if(fabs(ele2->Eta()) > 2.5) continue; |
159 |
+ |
|
160 |
+ |
if(ele1->Charge() == ele2->Charge()) continue; |
161 |
|
|
162 |
|
if(use_gen && MathUtils::DeltaR(Z_electron1->Phi(),Z_electron1->Eta(),ele1->Phi(),ele1->Eta()) > 0.1 |
163 |
|
&& MathUtils::DeltaR(Z_electron2->Phi(),Z_electron2->Eta(),ele1->Phi(),ele1->Eta()) > 0.1) continue; |
164 |
< |
|
165 |
< |
ControlFlags ctrl; |
166 |
< |
|
164 |
> |
if(use_gen && MathUtils::DeltaR(Z_electron1->Phi(),Z_electron1->Eta(),ele2->Phi(),ele2->Eta()) > 0.1 |
165 |
> |
&& MathUtils::DeltaR(Z_electron2->Phi(),Z_electron2->Eta(),ele2->Phi(),ele2->Eta()) > 0.1) continue; |
166 |
> |
|
167 |
|
//a tight cut on the tag based on the egamma pog |
168 |
< |
if(!electronPOG2012CutBasedIDMedium(ele1, fPrimVerts->At(0), fPFCandidates,fConversions,fPileupEnergyDensity)) continue; |
169 |
< |
TLorentzVector vele1; |
204 |
< |
vele1.SetPtEtaPhiM(ele1->Pt(), ele1->Eta(), ele1->Phi(), g_electron_mass); |
168 |
> |
if(!electronPOG2012CutBasedIDMedium(ele1, fPrimVerts->At(0), fPFCandidates,fConversions,fPileupEnergyDensity)) continue; |
169 |
> |
if(!electronPOG2012CutBasedIDMedium(ele2, fPrimVerts->At(0), fPFCandidates,fConversions,fPileupEnergyDensity)) continue; |
170 |
|
|
171 |
< |
for(UInt_t j=0; j<fElectrons->GetEntries(); ++j) { |
172 |
< |
if(i==j) continue; |
173 |
< |
|
174 |
< |
const Electron *ele2 = fElectrons->At(j); |
210 |
< |
if(ele1->Charge() == ele2->Charge()) continue; |
211 |
< |
if(use_gen && MathUtils::DeltaR(Z_electron1->Phi(),Z_electron1->Eta(),ele2->Phi(),ele2->Eta()) > 0.1 |
212 |
< |
&& MathUtils::DeltaR(Z_electron2->Phi(),Z_electron2->Eta(),ele2->Phi(),ele2->Eta()) > 0.1) continue; |
213 |
< |
|
214 |
< |
if(!electronPOG2012CutBasedIDMedium(ele2, fPrimVerts->At(0), fPFCandidates,fConversions,fPileupEnergyDensity)) continue; |
215 |
< |
|
216 |
< |
TLorentzVector vele2; |
217 |
< |
vele2.SetPtEtaPhiM(ele2->Pt(), ele2->Eta(), ele2->Phi(), g_electron_mass); |
218 |
< |
|
219 |
< |
TLorentzVector vdielectron = vele1 + vele2; |
220 |
< |
|
221 |
< |
if((vdielectron.M()<massLo) || (vdielectron.M()>massHi)) continue; |
222 |
< |
|
223 |
< |
electron1_pt = ele1->Pt(); |
224 |
< |
electron1_eta = ele1->Eta(); |
225 |
< |
electron1_phi = ele1->Phi(); |
226 |
< |
electron1_isEB = ele1->IsEB(); |
227 |
< |
electron1_isEE = ele1->IsEE(); |
228 |
< |
|
229 |
< |
electron1_scrawe = ele1->SCluster()->RawEnergy(); |
230 |
< |
electron1_sceta = ele1->SCluster()->Eta(); |
231 |
< |
electron1_scphi = ele1->SCluster()->Phi(); |
232 |
< |
|
233 |
< |
electron1_r9 = ele1->SCluster()->R9(); |
234 |
< |
electron1_e5x5 = ele1->E55(); |
235 |
< |
electron1_scetawidth = ele1->SCluster()->EtaWidth(); |
236 |
< |
electron1_scphiwidth = ele1->SCluster()->PhiWidth(); |
237 |
< |
electron1_scnclusters= ele1->SCluster()->NClusters(); |
238 |
< |
electron1_hoveretower = 0; |
239 |
< |
electron1_eseed = ele1->SCluster()->Seed()->Energy(); |
240 |
< |
electron1_etaseed = ele1->SCluster()->Seed()->Eta(); |
241 |
< |
electron1_phiseed = ele1->SCluster()->Seed()->Phi(); |
242 |
< |
electron1_e3x3seed = ele1->SCluster()->Seed()->E3x3(); |
243 |
< |
electron1_e5x5seed = ele1->SCluster()->Seed()->E5x5(); |
244 |
< |
electron1_sigietaietaseed = ele1->SCluster()->Seed()->CoviEtaiEta(); |
245 |
< |
electron1_sigiphiiphiseed = ele1->SCluster()->Seed()->CoviEtaiPhi(); |
246 |
< |
electron1_covietaiphiseed = ele1->SCluster()->Seed()->CoviPhiiPhi(); |
247 |
< |
electron1_emaxseed = ele1->SCluster()->Seed()->EMax(); |
248 |
< |
electron1_e2ndseed = ele1->SCluster()->Seed()->E2nd(); |
249 |
< |
electron1_etopseed = ele1->SCluster()->Seed()->ETop(); |
250 |
< |
electron1_ebottomseed = ele1->SCluster()->Seed()->EBottom(); |
251 |
< |
electron1_eleftseed = ele1->SCluster()->Seed()->ELeft(); |
252 |
< |
electron1_erightseed = ele1->SCluster()->Seed()->ERight(); |
253 |
< |
electron1_e2x5maxseed = ele1->SCluster()->Seed()->E2x5Max(); |
254 |
< |
electron1_e2x5topseed = ele1->SCluster()->Seed()->E2x5Top(); |
255 |
< |
electron1_e2x5bottomseed = ele1->SCluster()->Seed()->E2x5Bottom(); |
256 |
< |
electron1_e2x5leftseed = ele1->SCluster()->Seed()->E2x5Left(); |
257 |
< |
electron1_e2x5rightseed = ele1->SCluster()->Seed()->E2x5Right(); |
258 |
< |
electron1_scpse = ele1->SCluster()->PreshowerEnergy(); |
259 |
< |
electron1_ietaseed = ele1->SCluster()->Seed()->IEta(); |
260 |
< |
electron1_iphiseed = ele1->SCluster()->Seed()->IPhi(); |
261 |
< |
electron1_etacryseed = ele1->SCluster()->Seed()->EtaCry(); |
262 |
< |
electron1_phicryseed = ele1->SCluster()->Seed()->PhiCry(); |
263 |
< |
|
264 |
< |
electron1_fbrem = ele1->FBrem(); |
265 |
< |
electron1_charge = ele1->Charge(); |
266 |
< |
electron1_eoverp = ele1->ESuperClusterOverP(); |
267 |
< |
|
268 |
< |
electron2_pt = ele2->Pt(); |
269 |
< |
electron2_eta = ele2->Eta(); |
270 |
< |
electron2_phi = ele2->Phi(); |
271 |
< |
electron2_isEB = ele2->IsEB(); |
272 |
< |
electron2_isEE = ele2->IsEE(); |
273 |
< |
|
274 |
< |
electron2_scrawe = ele2->SCluster()->RawEnergy(); |
275 |
< |
electron2_sceta = ele2->SCluster()->Eta(); |
276 |
< |
electron2_scphi = ele2->SCluster()->Phi(); |
277 |
< |
|
278 |
< |
electron2_r9 = ele2->SCluster()->R9(); |
279 |
< |
electron2_e5x5 = ele2->E55(); |
280 |
< |
electron2_scetawidth = ele2->SCluster()->EtaWidth(); |
281 |
< |
electron2_scphiwidth = ele2->SCluster()->PhiWidth(); |
282 |
< |
electron2_scnclusters= ele2->SCluster()->NClusters(); |
283 |
< |
electron2_hoveretower = 0; |
284 |
< |
electron2_eseed = ele2->SCluster()->Seed()->Energy(); |
285 |
< |
electron2_etaseed = ele2->SCluster()->Seed()->Eta(); |
286 |
< |
electron2_phiseed = ele2->SCluster()->Seed()->Phi(); |
287 |
< |
electron2_e3x3seed = ele2->SCluster()->Seed()->E3x3(); |
288 |
< |
electron2_e5x5seed = ele2->SCluster()->Seed()->E5x5(); |
289 |
< |
electron2_sigietaietaseed = ele2->SCluster()->Seed()->CoviEtaiEta(); |
290 |
< |
electron2_sigiphiiphiseed = ele2->SCluster()->Seed()->CoviEtaiPhi(); |
291 |
< |
electron2_covietaiphiseed = ele2->SCluster()->Seed()->CoviPhiiPhi(); |
292 |
< |
electron2_emaxseed = ele2->SCluster()->Seed()->EMax(); |
293 |
< |
electron2_e2ndseed = ele2->SCluster()->Seed()->E2nd(); |
294 |
< |
electron2_etopseed = ele2->SCluster()->Seed()->ETop(); |
295 |
< |
electron2_ebottomseed = ele2->SCluster()->Seed()->EBottom(); |
296 |
< |
electron2_eleftseed = ele2->SCluster()->Seed()->ELeft(); |
297 |
< |
electron2_erightseed = ele2->SCluster()->Seed()->ERight(); |
298 |
< |
electron2_e2x5maxseed = ele2->SCluster()->Seed()->E2x5Max(); |
299 |
< |
electron2_e2x5topseed = ele2->SCluster()->Seed()->E2x5Top(); |
300 |
< |
electron2_e2x5bottomseed = ele2->SCluster()->Seed()->E2x5Bottom(); |
301 |
< |
electron2_e2x5leftseed = ele2->SCluster()->Seed()->E2x5Left(); |
302 |
< |
electron2_e2x5rightseed = ele2->SCluster()->Seed()->E2x5Right(); |
303 |
< |
electron2_scpse = ele2->SCluster()->PreshowerEnergy(); |
304 |
< |
|
305 |
< |
electron2_ietaseed = ele2->SCluster()->Seed()->IEta(); |
306 |
< |
electron2_iphiseed = ele2->SCluster()->Seed()->IPhi(); |
307 |
< |
electron2_etacryseed = ele2->SCluster()->Seed()->EtaCry(); |
308 |
< |
electron2_phicryseed = ele2->SCluster()->Seed()->PhiCry(); |
309 |
< |
|
310 |
< |
electron2_fbrem = ele2->FBrem(); |
311 |
< |
electron2_charge = ele2->Charge(); |
312 |
< |
electron2_eoverp = ele2->ESuperClusterOverP(); |
313 |
< |
|
314 |
< |
Z_reco_mass = (ele1->Mom() + ele2->Mom()).M(); |
315 |
< |
if(use_gen) |
316 |
< |
Z_gen_mass = (Z_electron1->Mom() + Z_electron2->Mom()).M(); |
171 |
> |
TLorentzVector vele1,vele2; |
172 |
> |
|
173 |
> |
vele1.SetPtEtaPhiM(ele1->Pt(), ele1->Eta(), ele1->Phi(), g_electron_mass); |
174 |
> |
vele2.SetPtEtaPhiM(ele2->Pt(), ele2->Eta(), ele2->Phi(), g_electron_mass); |
175 |
|
|
176 |
< |
fOutputTree->Fill(); |
177 |
< |
|
176 |
> |
TLorentzVector vdielectron = vele1 + vele2; |
177 |
> |
|
178 |
> |
if((vdielectron.M()<massLo) || (vdielectron.M()>massHi)) continue; |
179 |
> |
|
180 |
> |
electron1.SetVars(ele1); |
181 |
> |
electron2.SetVars(ele2); |
182 |
> |
|
183 |
> |
Z_reco_mass = (ele1->Mom() + ele2->Mom()).M(); |
184 |
> |
if(use_gen) |
185 |
> |
Z_gen_mass = (Z_electron1->Mom() + Z_electron2->Mom()).M(); |
186 |
> |
|
187 |
> |
fOutputTree->Fill(); |
188 |
> |
|
189 |
|
} |
190 |
|
} |
191 |
|
} |