Dear Developers,
I am running a script but it crashes and gives a segmentation error.
Please help me to resolve this issue.
Cheers,
Nab
jet1.cc (12.1 KB)
Dear Developers,
I am running a script but it crashes and gives a segmentation error.
Please help me to resolve this issue.
Cheers,
Nab
jet1.cc (12.1 KB)
We cannot try your macro, the data file is missing :
Processing jet1.cc...
Error in <TFile::TFile>: file /eos/cms/store/user/aahmad/Jul12/MCs/1fab0e5/MC13TeV_DY50toInf_nlo/MergedMiniEvents_28.root does not exist
```
Dear Wile,
These files exit at that path. They are at eos.
Dear Wile,
I have downloaded the related file from eos. You may use it.
/afs/cern.ch/user/n/nmajeed/public/MergedMiniEvents_6.root
Try to run your code using valgrind (and carefully study messages that appear in the beginning of the output):
valgrind --tool=memcheck --leak-check=full --suppressions=`root-config --etcdir`/valgrind-root.supp `root-config --bindir`/root.exe -l -q 'jet1.cc++g'
Hi,
What is the command for valgrind.
Simply copy / paste (into a terminal window) the full line that I gave you in my previous post.
This file is not in you public folder:
$ ls /afs/cern.ch/user/n/nmajeed/public/
fake_ratio.cc lat_0MergedMiniEvents_0.root May26_2.root new_macro.cc
ReadTree.cc TOP-16-006.cc.txt try1_data.cc
is it lat_0MergedMiniEvents_0.root
?
I have copied the same command but it gives me
[nmajeed@lxplus035 new_sirra]$ valgrind --tool=memcheck --leak-check=full --suppressions=root-config --etcdir
/valgrind-root.supp root-config --bindir
/root.exe -l -q âjet1.cc++gâ
==13058== Memcheck, a memory error detector
==13058== Copyright © 2002-2012, and GNU GPLâd, by Julian Seward et al.
==13058== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==13058== Command: /usr/bin/root.exe -l -q jet1.cc++g
==13058==
==13058== FATAL: canât open suppressions file â/usr/share/root/valgrind-root.suppâ
sorry couet, I have moved it.
Please check it now.
I start looking at your code. I tried to make it more readable by indenting it properly and removing useless lines. I found out it is very very hard to read because of that lack of indention. I think there is even some logical mistakes because of that. It would be good if you can spend a bit of time cleaning it ⊠Doing this exercise you may even find the mistake yourselfâŠ
Yes couet I am already trying to make it in a reasonable condition. Could you please specify some lines which are causing this error if possible.
No, not before you have properly indented it ⊠the code you sent is completely wrong with that respect. I think you did some logical mistake because of that ⊠I do not know where. My editor (which is able to match bracket) is lost ⊠thatâs a very bad sign. Once youâll have cleaned and indented properly your code I am willing to look again at it if it still crash ⊠but please do this clean up before !
Here is a properly indented version of your macro. It still crashes but it is more readable.
jet1.cc (9.8 KB)
After This clean up I see that that you do the following code at the end for the LOOP OVER EVENTS
TFile *ff = new TFile("dg6.root","RECREATE");
Z_Inv_mass->Write();
z_pt->Write();
W_Tran_mass->Write();
ff->Close();
which means you will recreate the file dg6.root
1877399 times (nentries). is it what you really want to do ?
In your macro, If I comment the loop selected muons
then it does not crash. So you should try to find the mistake in this code I think:
// selected muons
for (int m=0; m<nMu;m++) {
TLorentzVector tmp(0,0,0,0);
bool passTightKin(Mu_pt[m]>=10 && fabs(Mu_eta[m])<2.5); // I made selected muons as a loose to make it equal to veto muons by changing cuts
float relIso(Mu_relIso[m]);
bool passIso(relIso<0.5);
tmp.SetPtEtaPhiM(Mu_pt[m], Mu_eta[m], Mu_phi[m], Mu_mass[m]);
if (passTightKin ) { //&& passSIP3d)
if (passIso) {
selectedMuons.push_back(tmp);
mu_charge.push_back(Mu_charge[m]);
}
}
}
No I donot want to create it nentries time. If I take it out of the loop, the problem still persists.
Try:
locate valgrind-root.supp
and if you get nothing (in principle, this file should be in the subdirectory returned by âroot-config --etcdirâ), you should talk to the one who installed your ROOT version.
Basically, I think your problem is that, in lines 289 to 293 of your original jet1.cc macro (from the first post here), you access mu_isTight, mu_ismuon, mu_iso and selectedMuons vectors, but you do not check that the indices m_i and m_ii are valid for these vectors. So you should prepend these lines with something like:
if ( (m_i < 0) || (m_ii < 0) ||
(mu_isTight.size() <= (unsigned)m_i) || (mu_isTight.size() <= (unsigned)m_ii) ||
(mu_ismuon.size() <= (unsigned)m_i) || (mu_ismuon.size() <= (unsigned)m_ii) ||
(mu_iso.size() <= (unsigned)m_i) || (mu_iso.size() <= (unsigned)m_ii) ||
(selectedMuons.size() <= (unsigned)m_i) || (selectedMuons.size() <= (unsigned)m_ii) )
continue;
Thank you Wile_E_Coyote. I was doing a mistake in cuts, indicated by you.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.