Problem with class: Symbol lookup error


Please read tips for efficient and successful posting and posting code

_ROOT Version:_6.0802
Platform: Ubuntu 16
Compiler: 5.4


Hi. Sorry for annoying you again.
I created a class vertex.h “copying and pasting” the structure of old working classes and I got a Symbol lookup error. We verified this is a “machine independent” problem (different laptops reproduce the same error). I even tried (old forum posts about the same error)
‘’‘gSystem->Load(“vertex”) ‘’’
after compiling the class but I don’t have a vertex.so file (I don’t know why and I never did something like this so maybe this is nonsense :see_no_evil:). My class inherits from TObject and uses only iostream, TRandom3, TMath and TString.
The other “custom classes” are automatically treated in the right way from ROOT without my assistance…

best regards

The error says that a class constructor is missing:

[...]$ c++filt _ZN6vertexC1Ed7TStringddd
vertex::vertex(double, TString, double, double, double)

Maybe the nicest thing (or the worst) is that THERE IS a constructor. I even tried to modify it a bit to make it less “ambiguous”.

vertex::vertex(double sigmaz,  TString mult="No", double zv=0,double xv=0., double yv=0.):TObject()    
  {  x=xv;     
  y=yv;   
  z=zv;
  sigma=sigmaz;
  multi=0;
  theta=NULL;
  phi=NULL;    //Sety
  this->Setz();
  if (mult=="No") this->multconst();
  else this->multfunc() ;}
  

If the whole “vertex” class is implemented in the “vertex.h” file then you can try:
root [0] .L vertex.h++


:question: :question: :question: What does that mean?
At least now I have a vertex_h.so file (thanks @Wile_E_Coyote :relaxed:), but the macro still crashes

You work in a directory that has a space in its name ("Asus pc").
@Axel This (still) seems to break ROOT.

BTW. In the first post, the name of the first macro suggests that you maybe want “.x” instead of “.L”:
root [0] .x compilevertex.C

We managed to make it work on a laptop. Yes there should be a .x instead of a .L :see_no_evil: but we also had a problem with TRandom. ROOT didn’t liked things like
“u=Rndm();” in the class implementation. With u=gRandom->Rndm() now it works.
Thanks