ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/ElectronStudies/src/ZeeTreeWriterMod.cc
(Generate patch)

Comparing UserCode/MitHzz4l/ElectronStudies/src/ZeeTreeWriterMod.cc (file contents):
Revision 1.3 by anlevin, Wed Jul 18 12:35:13 2012 UTC vs.
Revision 1.4 by anlevin, Thu Jul 19 12:32:24 2012 UTC

# Line 1 | Line 1
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;
# Line 33 | Line 35 | void mithep::ZeeTreeWriterMod::SlaveBegi
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  
# Line 188 | Line 147 | void mithep::ZeeTreeWriterMod::Process()
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   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines