I made some class with a rootfile, i was able to plot histograms from the rootfile (ran the script with CINT), now i like to learn how to compile the script but i got the error:
[tomiwa@localhost mot cal]$ g++ analysis1.C -o main.exe -l. root-config --libs --cflags -lRooFitCore -lm -std=gnu++0x
analysis1.C:10: error: expected primary-expression before ‘*’ token
analysis1.C:10: error: ‘chain’ was not declared in this scope
analysis1.C:10: error: expected ‘}’ before ‘;’ token
analysis1.C:11: error: expected constructor, destructor, or type conversion before ‘->’ token
analysis1.C:12: error: ‘chain’ was not declared in this scope
analysis1.C:13: error: expected constructor, destructor, or type conversion before ‘.’ token
analysis1.C:14: error: expected unqualified-id before ‘return’
analysis1.C:15: error: expected declaration before ‘}’ token
If you post your macro .C file, we will be able to tell you what is missing. Most often the following things are needed to convert a CINT macro to a compileable program:
you need to #include <foo.h> for most ROOT classes foo that you use, so if your macro uses TH1D objects, you need to #include <TH1.h>, if you use gStyle, you need to #include <TStyle.h>, etc.
CINT is lazy about enforcing semi-colons at the end of statements, you need to put these everywhere to compile.
CINT is lazy about the difference between the “.” operator and “->”, so you have to go back and check if your histograms are actual objects or pointers-to-objects.
When run through CINT or ACLiC, you cannot have a “main” function because ROOT is the main function of your program. When you compile separately using g++, you need to write an int main() function that is actually executed when the program runs.