[ROOT] Run macro inside a main macro!

From: Annalisa De Caro (decaro@mail6.cern.ch)
Date: Mon Apr 02 2001 - 12:19:38 MEST


   Hi rooters,
i am trying to run a macro (run.C) that calls an other macro (writing.C), 
with command:
             gROOT->ProcessLine(.x writing.C);
At command: .x run.C, ROOT executes all command line but does not execute
the line gROOT->ProcessLine(.x writing.C);
ROOT ends the main macro execution (run.C) without execute the macro
writing.C .
Only when you do the command to exit from ROOT (.q), ROOT executes the
macro writing.C .
I do not understand why.
I send you two macro, if you want try to run them.
Thank you in advance
                                        Annalisa


*************************************************************************
*    University of Bologna    |                   |  decaro@bo.infn.it  *
*     Physics Department      | +39 051  20 91103 |                     *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*    University of Salerno    |                   |                     *
* Physics Sciences Department | +39 089  96 5359  |                     *
*       (INFN of Napoli)      |                   |                     *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*     CERN - EP division      |                   | decaro@mail.cern.ch *
*        (Bld.29 R019)        | +41  22  76 77767 |                     *
*************************************************************************


void writing() {
//cout<<" The strip number is "<<istrip<<endl;
//cout<<" The run number is "<<irun<<endl;
cout<<" The HV is "<<hv<<'\n';
cout<<" The rate is "<<rate<<'\n';
    if (iscan==0) then {
    cout<<" The scanning is in X direction (iscan = "<<iscan<<")"<<'\n';
    }elseif (iscan==1) then {
    cout<<" The scanning is in Z direction (iscan = "<<iscan<<")"<<'\n';
    }
cout<<" The channel number is "<<nch<<'\n';
 }

/* **************************************************** *
 * This is the main program for test beam data analysis *
 * **************************************************** */
#include <iostream.h>;

Float_t hv = 13;
Float_t rate = 450;
Int_t iscan = 2;
Int_t nch = 0;

void run() {

  do {
     cout<<"The scanning is in x (0) or in z (1) direction? ";
     cin >> iscan;
     } while (iscan>=2);	

   if (iscan==0) {
      do {
          cout<<"Give me the channel number (1,2,3,4,5), please ";
          cin >> nch;
         } while (nch==0||nch>5);
     } elseif (iscan==1) {
      do {
          cout<<"Give me the channel number (1,2), please ";
          cin >> nch;
         } while (nch==0||nch>2);
     }

//Open data file
TFile* file = new TFile("strip4_z2.root");

file->Print();

gROOT->ProcessLine(".x writing.C");

file->ls();


file->Close();

}



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:40 MET