> except that it has a problem at the final when I try to load MyClass.so.
That's a red flag ... For more help, please send me how to reproduce your problem.
Cheers,
Philippe.
-----Original Message-----
From: Eduard De La Cruz Burelo [mailto:eduard@fnal.gov]
Sent: Monday, March 17, 2003 1:29 PM
To: Philippe Canal
Cc: roottalk@pcroot.cern.ch
Subject: Re: [ROOT] segmentation violation , Any idea?
Hi Philippe
Yes, I did. I require to have at least one track for event, in fact,
before to try to use my functions I wrote out the parameters of my test
events. Also, if I disable the CINT optimization, everything run fine,
but when I try to use another function (for example a vertexing
function) I get tha same problem, so I am trying to understand the
problem with the first function that I am using. About compile my code,
yes I did it just before to send the first email and it compiled, except
that it has a problem at the final when I try to load MyClass.so.
Eduard
Philippe Canal wrote:
>Hi Eduard,
>
>I do not have quite enough information to give a definitive answer.
>However, did you check that there are some tracks for the event where it
>fails? If you are sure that the Trks pointer is available valid, is there
>always enough value in the array returned by Trks->trpars() and
>Trks->trerrs()?
>
>Also you can try to either compiler your code (ACLiC) or disable the CINT
>optimization (.O 0) which has sometimes some troubles with some loops.
>
>Cheers,
>Philippe.
>
>-----Original Message-----
>From: owner-roottalk@pcroot.cern.ch
>[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Eduard De La Cruz
>Burelo
>Sent: Monday, March 17, 2003 5:54 AM
>To: roottalk@pcroot.cern.ch
>Subject: [ROOT] segmentation violation , Any idea?
>
>
>Hello
>
>I have trying to figure out the problem but I have a few days working on
>it without find the problem. I have a macro ( Loop() )similar which is
>created by MakeClass(), but I have included a few structures, like these
>ones:
>
>struct track_C {
>
> Double_t Par[5]; //Parameters
> Double_t EMatrix[5][5]; //Error's Matrix
> Double_t Chisq = 0; //X^2
> //int Nhits;
>};
>struct track_C_list {
> track_C trklist[300];
> int ntracks; // number of tracks
>};
>
>I also included in MyClass.C a script to fill this information:
>
>track_C MyClass::FillTrack(TMBTrks* Trks)
>{
>
> track_C trck;
>
> Double_t *trpars = 0;
> Double_t *trerrs = 0;
>
> trpars = Trks->trpars();
> trerrs = Trks->trerrs();
>
> trck.Par[0] = trpars[0];
> trck.Par[1] = trpars[1];
> trck.Par[2] = trpars[2];
> trck.Par[3] = trpars[3];
> trck.Par[4] = trpars[4];
>
> trck.EMatrix[0][0] = trerrs[0];
> trck.EMatrix[0][1] = trerrs[1];
> trck.EMatrix[0][2] = trerrs[2];
> trck.EMatrix[0][3] = trerrs[3];
> trck.EMatrix[0][4] = trerrs[4];
> trck.EMatrix[1][1] = trerrs[5];
> trck.EMatrix[1][2] = trerrs[6];
> trck.EMatrix[1][3] = trerrs[7];
> trck.EMatrix[1][4] = trerrs[8];
> trck.EMatrix[2][2] = trerrs[9];
> trck.EMatrix[2][3] = trerrs[10];
> trck.EMatrix[2][4] = trerrs[11];
> trck.EMatrix[3][3] = trerrs[12];
> trck.EMatrix[3][4] = trerrs[13];
> trck.EMatrix[4][4] = trerrs[14];
>
>
> trck.EMatrix[1][0] = trerrs[1];
> trck.EMatrix[2][0] = trerrs[2];
> trck.EMatrix[2][1] = trerrs[6];
> trck.EMatrix[3][0] = trerrs[3];
> trck.EMatrix[3][1] = trerrs[7];
> trck.EMatrix[3][2] = trerrs[10];
> trck.EMatrix[4][0] = trerrs[4];
> trck.EMatrix[4][1] = trerrs[8];
> trck.EMatrix[4][2] = trerrs[11];
> trck.EMatrix[4][3] = trerrs[13];
>
> trck.Chisq = Trks->getChi2Ndf();
>
> return trck;
>}
>
>if I do not use the function FillTrack, everything run fine, I can make
>histograms, fill root tuples, etc., but if I use this function, I get:
>
>root [2] t.MyLoopMC();
> Number of events : 11000
>Event: 1
> <------- New event --------->
> We have 4 muons
>Starting loop 1 ...
>Starting loop 2 ...
>Starting loop 2 ...
>Starting loop 2 ...
> Matching ...
> done
>0 --- 5
>Starting loop 1 ...
>Starting loop 1 ...
>Starting loop 2 ...
> Matching ...
> done
>4 --- 5
> <------- Finishing New event --------->
>Event 2
> <------- New event --------->
> We have 4 muons
>Starting loop 1 ...
>Starting loop 1 ...
>Starting loop 1 ...
> <------- Finishing New event --------->
>
> *** Break *** segmentation violation
>Root > Function MyLoopMC() busy flag cleared
>
>As you can see I look for two muons and then I make a matching with MC,
>that work fine, but after the second event I get a segmentation
>violation and I can not find where is the problem because the event get
>the end, but the next one does not start, and there is nothing between them.
>
>If anybody have an idea about what could be the problem please let me
>know. Any help is welcome.
>
>Thanks a lot
>
>Eduard
>
>P.S.I am using Version 3.03/07
>
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET