Hello, I am beginner in ROOT. Please help me with this problem: I have small "MYClass" (see bellow). How create shared library exam.so ? how write make file and LinkDef.h file ? on my PC is root4.00.01 and gcc 3.2 exam.h #ifndef exam_h #define exam_h class exam { private: TTree *fTree; static const Text_t *fgPath; static const Int_t fgMaxWires=48; UInt_t fNwires; UShort_t fWidth[fgMaxWires]; UShort_t fWire[fgMaxWires]; public: exam(TTree *tree=0); virtual ~exam(); void SetPath(const Text_t *path) { fgPath = path; } const Text_t *GetPath() const { return fgPath; } void SetRun(const UShort_t run); void Init(TTree *tree); Int_t GetEntries() const { return fTree->GetEntries(); } void AnalyzeEntry(const Int_t entry); }; #endif exam.cxx #include "exam.h" //------------------------------ exam::exam(TTree *tree) { if (tree == 0) return; Init(tree); } //------------------------------ exam::~exam() { cout << "DESTRUCTOR" << endl; if (!fTree) return; if (fTree==0) return; delete fTree->GetCurrentFile(); } //------------------------------ void exam::SetRun(const UShort_t run) { Text_t fname[200]; sprintf(fname,"%s/run%0.3u.root",GetPath(),run); TFile *f = new TFile(fname); TTree *mytree = (TTree*)f->Get("mytree"); Init(mytree); } //------------------------------ void exam::Init(TTree *tree) { if (tree == 0) return; fTree = tree; fTree->SetBranchAddress("fNwires",&fNwires); fTree->SetBranchAddress("fWires.fWidth",fWidth); fTree->SetBranchAddress("fWires.fWire",fWire); fTree->SetBranchStatus("*",0); fTree->SetBranchStatus("fNwires",1); fTree->SetBranchStatus("fWires.fWidth",1); fTree->SetBranchStatus("fWires.fWire",1); cout << "Processing file: "; cout << fTree->GetCurrentFile()->GetName() << endl; } //------------------------------ void exam::AnalyzeEntry(const Int_t entry) { if (fTree==0) return; fTree->GetEntry(entry); for (UShort_t i=0; i<fNwires; i++) { cout << "width = " << fWidth[i] << endl; cout << "wire = " << fWire[i] << endl; } } in root all working (for example): root [0] .L exam.cxx root [1] exam *ex1 = new exam root [2] ex1->SetPath("/mypath") root [3] ex1->SetRun(999) root [4] ex1->AnalyzeEntry(99) width = 1 wire = 10 width = 1 wire = 111 .... I test method .L exam.cxx+ but not working ...(errors, MyClass is wrong) Regards Robert _________________________________________________________________ The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET