On Fri, 20 Sep 2002, Rene Brun wrote: Hi Rene', Thanks for your reply, you are always very kind; I send you a copy of my code how you request me (naturally this is only a skeleton of my code) Double_t lambda(Double_t x,Double_t y,Double_t z) {...} Double_t xlow(Double_t y) {...} Double_t xup(Double_t y) {...} #define ana_dali_mc_cxx #include "ana_dali_mc.h" Double_t delta_egamma() { Double_t psigma,sigmap,E1,E2,costheta,prod_scal,pxtot,pytot,pztot,pluto; const Double_t Mpich = 139.56995; ... for(Int_t i=0;i<ntv;i++) // ntv is a variable of chain that I have do // with MakeClass(). {... } return sigmap - (1019.4-E1-E2); } void ana_dali_mc::Loop(Int_t howMany) { if (!TClassTable::GetDict("Physics")) { gSystem.Load("$ROOTSYS/lib/libPhysics.so"); } if (fChain == 0) return; Int_t nentries; if (howMany == 0) nentries = Int_t(fChain->GetEntries()); else { Int_t n0 = fChain->GetEntries() ; nentries = howMany < n0 ? howMany : n0 ; } Int_t nbytes = 0, nb = 0; Int_t initDone = 0; TH1D* tmp = ( TH1D *) gROOT->FindObject("histo1"); if (tmp != 0) { cout << "Found and Destroyed" << endl; delete tmp; } TFile *f1 = gROOT->FindObject("analisi_mc_prova.root"); if (f1) f1->Close(); f1 = new TFile("analisi_mc_prova.root","RECREATE"," ROOT file with tree"); Bool_t isrec; Double_t Tp_mc,Tm_mc,T0_mc,Q_mc; Double_t Tprec,Tmrec,T0rec,Qrec,E0,T0chrec,Qchrec,daliy_ch_rec; Double_t dalix_mc,daliy_mc,dalix_mc_rec,daliy_mc_rec,dalix_rec,daliy_rec; Double_t dalixmin,dalixmax,pluto; const Double_t Mpich = 139.56995; const Double_t Mpi0 = 134.9764; TLorentzVector p4rad_mc,p4eta_mc,p4pip_mc,p4pim_mc,p4piz_mc, p4pipetasys_mc,p4pimetasys_mc,p4pizetasys_mc; TLorentzVector p4datrad,p4dateta; TLorentzVector p4datetasys_pim,p4datetasys_pip,p4datetasys_piz; TTree *tmc = new TTree("tmc","Tree for montecarlo"); tmc->Branch("dalix_mc" ,&dalix_mc ,"dalix_mc/D" ); tmc->Branch("dalix_mc_rec",&dalix_mc_rec,"dalix_mc_rec/D"); tmc->Branch("dalix_rec" ,&dalix_rec ,"dalix_rec/D" ); tmc->Branch("daliy_mc" ,&daliy_mc ,"daliy_mc/D" ); tmc->Branch("daliy_ch_rec",&daliy_ch_rec,"daliy_ch_rec/D"); tmc->Branch("daliy_mc_rec",&daliy_mc_rec,"daliy_mc_rec/D"); tmc->Branch("daliy_rec" ,&daliy_rec ,"daliy_rec/D" ); tmc->Branch("isrec" ,&isrec ,"isrec/B" ); tmc->Branch("dalixmin" ,&dalixmin ,"dalixmin/D" ); tmc->Branch("dalixmax" ,&dalixmax ,"dalixmax/D" ); tmc->Branch("pluto" ,&pluto ,"pluto/D" ); for (Int_t jentry=0; jentry<nentries;jentry++) { Int_t ientry = LoadTree(jentry); //in case of a TChain, ientry is the entry number in the current file nb = fChain->GetEntry(jentry); nbytes += nb; for(Int_t j=0; j<ntmc; j++) { if(kine[j]==4) {...} } TVector3 beta_eta; beta_eta = p4eta_mc.BoostVector(); ... dalixmin = xlow(daliy_rec); dalixmax = xup(daliy_rec); pluto = delta_egamma(); tmc ->Fill(); } tmc->Write(); f1->Write(); f1->Close(); } Regards, Francesco. > Hi Francesco, > > It is difficult to come with a diagnostic without a full copy of your > code. One thing wrong for sure, You should remove the line# > gROOT->Reset(); > > This statement should be used only in unnamed macros executing in the > global scope. In your case, this has the effect to remove all the > definitions in #include "ana_dali_mc.h" > > Rene Brun > > On Fri, 20 Sep 2002, Perfetto Francesco wrote: > > > Hi Rooters, > > I have a problem with a MakeClass(). > > I have do a chain of root files and to this chain I have applicate > > MakeClass() method that crete me the two files analisi.C and analisi.h. > > In the file analisi.C I have put my analisys program; this program recall > > a function (that I have put out the function analisi::Loop() and is > > important that it stay out) that use variables included in the chain, > > the problem is that after load the program (.L analisi.C, analisi > > mio),when use the loop function (mio.Loop() ) it say me : > > root [0] .L ana_dali_mc.C > > root [1] ana_dali_mc mio > > root [2] mio.Loop(110) > > Error: < Error: Symbol ntv is not defined in current scope > > FILE:ana_dali_mc.C LINE:13 > > Error: Binary operator oprand missing FILE:ana_dali_mc.C LINE:13 > > *** Interpreter error recovered *** > > root [3] > > > > Someone can tell me where i mistake ? > > > > Double_t delta_egamma() > > { > > const Double_t Mpich = 139.56995; > > .. > > > > for(Int_t i=0;i<ntv;i++) // ntv = numero tracce da un vertice. > > { > > num_v = iv[i]; // iv[ntv] = indice di vertice. > > ... > > } > > > > #define ana_dali_mc_cxx > > #include "ana_dali_mc.h" > > > > gROOT->Reset(); > > > > void ana_dali_mc::Loop(Int_t howMany) > > { > > ... > > taglio = delta_egamma(); > > tmc ->Fill(); > > ... > > tmc->Write(); > > f1->Write(); > > f1->Close(); > > } > > > > Regards, > > Francesco. > > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:10 MET