[ROOT] Bug in TChain::MakeClass() ??

From: Martin ALEKSA (Martin.Aleksa@cern.ch)
Date: Fri Jan 11 2002 - 16:02:32 MET


Dear root team,

When creating the class TreeH0.C and the header file TreeH0.h in the
following way:
root[] TChain hits("TreeH0")
root[] hits.Add("galice.root/TreeH0")
.
.
root[] hits.MakeClass()

... TreeH0.C and TreeH0.h are created.

When compiling TreeH0.C the following error occured:
TreeH0.h:302: `b_TTRAC' undeclared (first use this function)

In line 83 (see attachment) there is a definition:
TBranch *b_TTRAC_;

When I delete the last underline the thing compiles. So could it be that
there is an error in naming the branches of the tree?

Unfortunately I still did not manage to run the thing, because the main()
that I added in TreeH0.C produces a segmentation fault when declaring 

TreeH0 hit;

(see attachment)

Can you please help me??

Best greetings,
			Martin
 



//////////////////////////////////////////////////////////
//   This class has been automatically generated 
//     (Fri Jan 11 10:35:08 2002 by ROOT version3.02/06)
//   from TChain TreeH0/
//////////////////////////////////////////////////////////


#ifndef TreeH0_h
#define TreeH0_h

#include <TBranch.h>
#include <TROOT.h>
#include <TChain.h>
#include <TFile.h>
   const Int_t kMaxTTRAC = 28351;
   const Int_t kMaxBRICK = 10122;
   const Int_t kMaxDRIFT = 48;

class TreeH0 {
   public :
   TTree          *fChain;   //!pointer to the analyzed TTree or TChain
   Int_t           fCurrent; //!current Tree number in a TChain
//Declaration of leaves types
   Int_t           TTRAC_;
   UInt_t          TTRAC_fUniqueID[kMaxTTRAC];   //[TTRAC_]
   UInt_t          TTRAC_fBits[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fTrack[kMaxTTRAC];   //[TTRAC_]
   Float_t         TTRAC_fX[kMaxTTRAC];   //[TTRAC_]
   Float_t         TTRAC_fY[kMaxTTRAC];   //[TTRAC_]
   Float_t         TTRAC_fZ[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol0[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol1[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol2[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol3[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol4[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol5[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol6[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol7[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol8[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fVol9[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fId[kMaxTTRAC];   //[TTRAC_]
   Int_t           TTRAC_fEvNumber[kMaxTTRAC];   //[TTRAC_]
   Int_t           BRICK_;
   UInt_t          BRICK_fUniqueID[kMaxBRICK];   //[BRICK_]
   UInt_t          BRICK_fBits[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fTrack[kMaxBRICK];   //[BRICK_]
   Float_t         BRICK_fX[kMaxBRICK];   //[BRICK_]
   Float_t         BRICK_fY[kMaxBRICK];   //[BRICK_]
   Float_t         BRICK_fZ[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol0[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol1[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol2[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol3[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol4[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol5[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol6[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol7[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol8[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fVol9[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fId[kMaxBRICK];   //[BRICK_]
   Int_t           BRICK_fEvNumber[kMaxBRICK];   //[BRICK_]
   Int_t           DRIFT_;
   UInt_t          DRIFT_fUniqueID[kMaxDRIFT];   //[DRIFT_]
   UInt_t          DRIFT_fBits[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fTrack[kMaxDRIFT];   //[DRIFT_]
   Float_t         DRIFT_fX[kMaxDRIFT];   //[DRIFT_]
   Float_t         DRIFT_fY[kMaxDRIFT];   //[DRIFT_]
   Float_t         DRIFT_fZ[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol0[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol1[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol2[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol3[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol4[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol5[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol6[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol7[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol8[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fVol9[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fId[kMaxDRIFT];   //[DRIFT_]
   Int_t           DRIFT_fEvNumber[kMaxDRIFT];   //[DRIFT_]

//List of branches
   TBranch        *b_TTRAC;   //!
   TBranch        *b_TTRAC_fUniqueID;   //!
   TBranch        *b_TTRAC_fBits;   //!
   TBranch        *b_TTRAC_fTrack;   //!
   TBranch        *b_TTRAC_fX;   //!
   TBranch        *b_TTRAC_fY;   //!
   TBranch        *b_TTRAC_fZ;   //!
   TBranch        *b_TTRAC_fVol0;   //!
   TBranch        *b_TTRAC_fVol1;   //!
   TBranch        *b_TTRAC_fVol2;   //!
   TBranch        *b_TTRAC_fVol3;   //!
   TBranch        *b_TTRAC_fVol4;   //!
   TBranch        *b_TTRAC_fVol5;   //!
   TBranch        *b_TTRAC_fVol6;   //!
   TBranch        *b_TTRAC_fVol7;   //!
   TBranch        *b_TTRAC_fVol8;   //!
   TBranch        *b_TTRAC_fVol9;   //!
   TBranch        *b_TTRAC_fId;   //!
   TBranch        *b_TTRAC_fEvNumber;   //!
   TBranch        *b_BRICK;   //!
   TBranch        *b_BRICK_fUniqueID;   //!
   TBranch        *b_BRICK_fBits;   //!
   TBranch        *b_BRICK_fTrack;   //!
   TBranch        *b_BRICK_fX;   //!
   TBranch        *b_BRICK_fY;   //!
   TBranch        *b_BRICK_fZ;   //!
   TBranch        *b_BRICK_fVol0;   //!
   TBranch        *b_BRICK_fVol1;   //!
   TBranch        *b_BRICK_fVol2;   //!
   TBranch        *b_BRICK_fVol3;   //!
   TBranch        *b_BRICK_fVol4;   //!
   TBranch        *b_BRICK_fVol5;   //!
   TBranch        *b_BRICK_fVol6;   //!
   TBranch        *b_BRICK_fVol7;   //!
   TBranch        *b_BRICK_fVol8;   //!
   TBranch        *b_BRICK_fVol9;   //!
   TBranch        *b_BRICK_fId;   //!
   TBranch        *b_BRICK_fEvNumber;   //!
   TBranch        *b_DRIFT;   //!
   TBranch        *b_DRIFT_fUniqueID;   //!
   TBranch        *b_DRIFT_fBits;   //!
   TBranch        *b_DRIFT_fTrack;   //!
   TBranch        *b_DRIFT_fX;   //!
   TBranch        *b_DRIFT_fY;   //!
   TBranch        *b_DRIFT_fZ;   //!
   TBranch        *b_DRIFT_fVol0;   //!
   TBranch        *b_DRIFT_fVol1;   //!
   TBranch        *b_DRIFT_fVol2;   //!
   TBranch        *b_DRIFT_fVol3;   //!
   TBranch        *b_DRIFT_fVol4;   //!
   TBranch        *b_DRIFT_fVol5;   //!
   TBranch        *b_DRIFT_fVol6;   //!
   TBranch        *b_DRIFT_fVol7;   //!
   TBranch        *b_DRIFT_fVol8;   //!
   TBranch        *b_DRIFT_fVol9;   //!
   TBranch        *b_DRIFT_fId;   //!
   TBranch        *b_DRIFT_fEvNumber;   //!

   TreeH0(TTree *tree=0);
   ~TreeH0();
   Int_t  Cut(Int_t entry);
   Int_t  GetEntry(Int_t entry);
   Int_t  LoadTree(Int_t entry);
   void   Init(TTree *tree);
   void   Loop(Int_t nn = 0);
   Bool_t Notify();
   void   Show(Int_t entry = -1);
};

#endif

#ifdef TreeH0_cxx
TreeH0::TreeH0(TTree *tree)
{
// if parameter tree is not specified (or zero), connect the file
// used to generate this class and read the Tree.
   if (tree == 0) {

#ifdef SINGLE_TREE
      // The following code should be used if you want this class to access
      // a single tree instead of a chain
      TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("Memory Directory");
      if (!f) {
         f = new TFile("Memory Directory");
         f->cd("Rint:/");
      }
      tree = (TTree*)gDirectory->Get("TreeH0");

#else // SINGLE_TREE

      // The following code should be used if you want this class to access a chain
      // of trees.
      TChain * chain = new TChain("TreeH0","");
      chain->Add("galice.root/TreeH0");
      chain->Add("galice.root/TreeH1");
      chain->Add("galice.root/TreeH2");
      chain->Add("galice.root/TreeH3");
      chain->Add("galice.root/TreeH4");
      chain->Add("galice.root/TreeH5");
      chain->Add("galice.root/TreeH6");
      chain->Add("galice.root/TreeH7");
      chain->Add("galice.root/TreeH8");
      chain->Add("galice.root/TreeH9");
      chain->Add("galice.root/TreeH10");
      chain->Add("galice.root/TreeH11");
      chain->Add("galice.root/TreeH12");
      chain->Add("galice.root/TreeH13");
      chain->Add("galice.root/TreeH14");
      chain->Add("galice.root/TreeH15");
      chain->Add("galice.root/TreeH16");
      chain->Add("galice.root/TreeH17");
      chain->Add("galice.root/TreeH18");
      chain->Add("galice.root/TreeH19");
      tree = chain;
#endif // SINGLE_TREE

   }
   Init(tree);
}

TreeH0::~TreeH0()
{
   if (!fChain) return;
   delete fChain->GetCurrentFile();
}

Int_t TreeH0::GetEntry(Int_t entry)
{
// Read contents of entry.
   if (!fChain) return 0;
   return fChain->GetEntry(entry);
}
Int_t TreeH0::LoadTree(Int_t entry)
{
// Set the environment to read one entry
   if (!fChain) return -5;
   Int_t centry = fChain->LoadTree(entry);
   if (centry < 0) return centry;
   if (fChain->IsA() != TChain::Class()) return centry;
   TChain *chain = (TChain*)fChain;
   if (chain->GetTreeNumber() != fCurrent) {
      fCurrent = chain->GetTreeNumber();
      Notify();
   }
   return centry;
}

void TreeH0::Init(TTree *tree)
{
//   Set branch addresses
   if (tree == 0) return;
   fChain    = tree;
   fCurrent = -1;
   fChain->SetMakeClass(1);

   fChain->SetBranchAddress("TTRAC",&TTRAC_);
   fChain->SetBranchAddress("TTRAC.fUniqueID",TTRAC_fUniqueID);
   fChain->SetBranchAddress("TTRAC.fBits",TTRAC_fBits);
   fChain->SetBranchAddress("TTRAC.fTrack",TTRAC_fTrack);
   fChain->SetBranchAddress("TTRAC.fX",TTRAC_fX);
   fChain->SetBranchAddress("TTRAC.fY",TTRAC_fY);
   fChain->SetBranchAddress("TTRAC.fZ",TTRAC_fZ);
   fChain->SetBranchAddress("TTRAC.fVol0",TTRAC_fVol0);
   fChain->SetBranchAddress("TTRAC.fVol1",TTRAC_fVol1);
   fChain->SetBranchAddress("TTRAC.fVol2",TTRAC_fVol2);
   fChain->SetBranchAddress("TTRAC.fVol3",TTRAC_fVol3);
   fChain->SetBranchAddress("TTRAC.fVol4",TTRAC_fVol4);
   fChain->SetBranchAddress("TTRAC.fVol5",TTRAC_fVol5);
   fChain->SetBranchAddress("TTRAC.fVol6",TTRAC_fVol6);
   fChain->SetBranchAddress("TTRAC.fVol7",TTRAC_fVol7);
   fChain->SetBranchAddress("TTRAC.fVol8",TTRAC_fVol8);
   fChain->SetBranchAddress("TTRAC.fVol9",TTRAC_fVol9);
   fChain->SetBranchAddress("TTRAC.fId",TTRAC_fId);
   fChain->SetBranchAddress("TTRAC.fEvNumber",TTRAC_fEvNumber);
   fChain->SetBranchAddress("BRICK",&BRICK_);
   fChain->SetBranchAddress("BRICK.fUniqueID",BRICK_fUniqueID);
   fChain->SetBranchAddress("BRICK.fBits",BRICK_fBits);
   fChain->SetBranchAddress("BRICK.fTrack",BRICK_fTrack);
   fChain->SetBranchAddress("BRICK.fX",BRICK_fX);
   fChain->SetBranchAddress("BRICK.fY",BRICK_fY);
   fChain->SetBranchAddress("BRICK.fZ",BRICK_fZ);
   fChain->SetBranchAddress("BRICK.fVol0",BRICK_fVol0);
   fChain->SetBranchAddress("BRICK.fVol1",BRICK_fVol1);
   fChain->SetBranchAddress("BRICK.fVol2",BRICK_fVol2);
   fChain->SetBranchAddress("BRICK.fVol3",BRICK_fVol3);
   fChain->SetBranchAddress("BRICK.fVol4",BRICK_fVol4);
   fChain->SetBranchAddress("BRICK.fVol5",BRICK_fVol5);
   fChain->SetBranchAddress("BRICK.fVol6",BRICK_fVol6);
   fChain->SetBranchAddress("BRICK.fVol7",BRICK_fVol7);
   fChain->SetBranchAddress("BRICK.fVol8",BRICK_fVol8);
   fChain->SetBranchAddress("BRICK.fVol9",BRICK_fVol9);
   fChain->SetBranchAddress("BRICK.fId",BRICK_fId);
   fChain->SetBranchAddress("BRICK.fEvNumber",BRICK_fEvNumber);
   fChain->SetBranchAddress("DRIFT",&DRIFT_);
   fChain->SetBranchAddress("DRIFT.fUniqueID",DRIFT_fUniqueID);
   fChain->SetBranchAddress("DRIFT.fBits",DRIFT_fBits);
   fChain->SetBranchAddress("DRIFT.fTrack",DRIFT_fTrack);
   fChain->SetBranchAddress("DRIFT.fX",DRIFT_fX);
   fChain->SetBranchAddress("DRIFT.fY",DRIFT_fY);
   fChain->SetBranchAddress("DRIFT.fZ",DRIFT_fZ);
   fChain->SetBranchAddress("DRIFT.fVol0",DRIFT_fVol0);
   fChain->SetBranchAddress("DRIFT.fVol1",DRIFT_fVol1);
   fChain->SetBranchAddress("DRIFT.fVol2",DRIFT_fVol2);
   fChain->SetBranchAddress("DRIFT.fVol3",DRIFT_fVol3);
   fChain->SetBranchAddress("DRIFT.fVol4",DRIFT_fVol4);
   fChain->SetBranchAddress("DRIFT.fVol5",DRIFT_fVol5);
   fChain->SetBranchAddress("DRIFT.fVol6",DRIFT_fVol6);
   fChain->SetBranchAddress("DRIFT.fVol7",DRIFT_fVol7);
   fChain->SetBranchAddress("DRIFT.fVol8",DRIFT_fVol8);
   fChain->SetBranchAddress("DRIFT.fVol9",DRIFT_fVol9);
   fChain->SetBranchAddress("DRIFT.fId",DRIFT_fId);
   fChain->SetBranchAddress("DRIFT.fEvNumber",DRIFT_fEvNumber);
   Notify();
}

Bool_t TreeH0::Notify()
{
   // Called when loading a new file.
   // Get branch pointers.
   b_TTRAC = fChain->GetBranch("TTRAC");
   b_TTRAC_fUniqueID = fChain->GetBranch("TTRAC.fUniqueID");
   b_TTRAC_fBits = fChain->GetBranch("TTRAC.fBits");
   b_TTRAC_fTrack = fChain->GetBranch("TTRAC.fTrack");
   b_TTRAC_fX = fChain->GetBranch("TTRAC.fX");
   b_TTRAC_fY = fChain->GetBranch("TTRAC.fY");
   b_TTRAC_fZ = fChain->GetBranch("TTRAC.fZ");
   b_TTRAC_fVol0 = fChain->GetBranch("TTRAC.fVol0");
   b_TTRAC_fVol1 = fChain->GetBranch("TTRAC.fVol1");
   b_TTRAC_fVol2 = fChain->GetBranch("TTRAC.fVol2");
   b_TTRAC_fVol3 = fChain->GetBranch("TTRAC.fVol3");
   b_TTRAC_fVol4 = fChain->GetBranch("TTRAC.fVol4");
   b_TTRAC_fVol5 = fChain->GetBranch("TTRAC.fVol5");
   b_TTRAC_fVol6 = fChain->GetBranch("TTRAC.fVol6");
   b_TTRAC_fVol7 = fChain->GetBranch("TTRAC.fVol7");
   b_TTRAC_fVol8 = fChain->GetBranch("TTRAC.fVol8");
   b_TTRAC_fVol9 = fChain->GetBranch("TTRAC.fVol9");
   b_TTRAC_fId = fChain->GetBranch("TTRAC.fId");
   b_TTRAC_fEvNumber = fChain->GetBranch("TTRAC.fEvNumber");
   b_BRICK = fChain->GetBranch("BRICK");
   b_BRICK_fUniqueID = fChain->GetBranch("BRICK.fUniqueID");
   b_BRICK_fBits = fChain->GetBranch("BRICK.fBits");
   b_BRICK_fTrack = fChain->GetBranch("BRICK.fTrack");
   b_BRICK_fX = fChain->GetBranch("BRICK.fX");
   b_BRICK_fY = fChain->GetBranch("BRICK.fY");
   b_BRICK_fZ = fChain->GetBranch("BRICK.fZ");
   b_BRICK_fVol0 = fChain->GetBranch("BRICK.fVol0");
   b_BRICK_fVol1 = fChain->GetBranch("BRICK.fVol1");
   b_BRICK_fVol2 = fChain->GetBranch("BRICK.fVol2");
   b_BRICK_fVol3 = fChain->GetBranch("BRICK.fVol3");
   b_BRICK_fVol4 = fChain->GetBranch("BRICK.fVol4");
   b_BRICK_fVol5 = fChain->GetBranch("BRICK.fVol5");
   b_BRICK_fVol6 = fChain->GetBranch("BRICK.fVol6");
   b_BRICK_fVol7 = fChain->GetBranch("BRICK.fVol7");
   b_BRICK_fVol8 = fChain->GetBranch("BRICK.fVol8");
   b_BRICK_fVol9 = fChain->GetBranch("BRICK.fVol9");
   b_BRICK_fId = fChain->GetBranch("BRICK.fId");
   b_BRICK_fEvNumber = fChain->GetBranch("BRICK.fEvNumber");
   b_DRIFT = fChain->GetBranch("DRIFT");
   b_DRIFT_fUniqueID = fChain->GetBranch("DRIFT.fUniqueID");
   b_DRIFT_fBits = fChain->GetBranch("DRIFT.fBits");
   b_DRIFT_fTrack = fChain->GetBranch("DRIFT.fTrack");
   b_DRIFT_fX = fChain->GetBranch("DRIFT.fX");
   b_DRIFT_fY = fChain->GetBranch("DRIFT.fY");
   b_DRIFT_fZ = fChain->GetBranch("DRIFT.fZ");
   b_DRIFT_fVol0 = fChain->GetBranch("DRIFT.fVol0");
   b_DRIFT_fVol1 = fChain->GetBranch("DRIFT.fVol1");
   b_DRIFT_fVol2 = fChain->GetBranch("DRIFT.fVol2");
   b_DRIFT_fVol3 = fChain->GetBranch("DRIFT.fVol3");
   b_DRIFT_fVol4 = fChain->GetBranch("DRIFT.fVol4");
   b_DRIFT_fVol5 = fChain->GetBranch("DRIFT.fVol5");
   b_DRIFT_fVol6 = fChain->GetBranch("DRIFT.fVol6");
   b_DRIFT_fVol7 = fChain->GetBranch("DRIFT.fVol7");
   b_DRIFT_fVol8 = fChain->GetBranch("DRIFT.fVol8");
   b_DRIFT_fVol9 = fChain->GetBranch("DRIFT.fVol9");
   b_DRIFT_fId = fChain->GetBranch("DRIFT.fId");
   b_DRIFT_fEvNumber = fChain->GetBranch("DRIFT.fEvNumber");
   return kTRUE;
}

void TreeH0::Show(Int_t entry)
{
// Print contents of entry.
// If entry is not specified, print current entry
   if (!fChain) return;
   fChain->Show(entry);
}
Int_t TreeH0::Cut(Int_t entry)
{
// This function may be called from Loop.
// returns  1 if entry is accepted.
// returns -1 otherwise.
   return 1;
}
#endif // #ifdef TreeH0_cxx


#define TreeH0_cxx
#include "TreeH0.h"
#include "TH2.h"
#include "TStyle.h"
#include "TCanvas.h"
#include "TBranch.h"
#include "TApplication.h"
#include "TFrame.h"

int main(int argc, char **argv){

  TreeH0 hit;

  //TApplication theApp("App",&argc, argv);
  hit.Loop(7);
  
  //theApp.Run();
  return 0;
}

void TreeH0::Loop(Int_t nn)
{
//   In a ROOT session, you can do:
//      Root > .L TreeH0.C
//      Root > TreeH0 t
//      Root > t.GetEntry(12); // Fill t data members with entry number 12
//      Root > t.Show();       // Show values of entry 12
//      Root > t.Show(16);     // Read and show values of entry 16
//      Root > t.Loop();       // Loop on all entries
//

//     This is the loop skeleton
//       To read only selected branches, Insert statements like:
// METHOD1:
//    fChain->SetBranchStatus("*",0);  // disable all branches
//    fChain->SetBranchStatus("branchname",1);  // activate branchname
// METHOD2: replace line
//    fChain->GetEntry(i);  // read all branches
//by  b_branchname->GetEntry(i); //read only this branch
   if (fChain == 0) return;

   TCanvas *c1;
   c1 = new TCanvas("c1","Track Display",200,10,700,500);
   c1->SetFillColor(21);
   c1->GetFrame()->SetFillColor(21);
   c1->GetFrame()->SetBorderSize(6);
   c1->GetFrame()->SetBorderMode(-2);

   Int_t nentries = Int_t(fChain->GetEntries());
   if(nentries>nn&&nn) nentries=nn;
   

   Int_t nbytes = 0, nb = 0;
   TH2F *coord = new TH2F("coord","x and y coordinates of hits",50,-400,400,50,-400,400);
   TH1F *track    = new TH1F("track","angle against z-axis",20,0.,2.);
   track->SetFillColor(44);
   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;
      // if (Cut(ientry) < 0) continue;
      printf("jentry=%d, LoadTree gives %d, BRICK=%d\n",jentry,ientry,BRICK_);
      Int_t ftrack=0;
      Float_t xold=BRICK_fX[0],yold=BRICK_fY[0],zold=BRICK_fZ[0],angl;
      Int_t BRICKcc = BRICK_>kMaxBRICK ? kMaxBRICK : BRICK_ ;
      for (Int_t k=0; k<BRICKcc;k++){
	coord->Fill(BRICK_fX[k],BRICK_fY[k]);
	 if(ftrack==BRICK_fTrack[k]&&k==BRICK_-1){
	   if(k>0&&fabs(BRICK_fZ[k]-zold)!=0.){
	     angl=atan(sqrt(pow(BRICK_fX[k]-xold,2.)+pow(BRICK_fY[k]-yold,2.))/fabs(BRICK_fZ[k]-zold));
	     track->Fill(angl);
	   }
	 }
	 if(ftrack!=BRICK_fTrack[k]){
	   if(k>1&&fabs(BRICK_fZ[k-1]-zold)!=0.){
	     angl=atan(sqrt(pow(BRICK_fX[k-1]-xold,2.)+pow(BRICK_fY[k-1]-yold,2.))/fabs(BRICK_fZ[k-1]-zold));
	     printf("The angle is %f\n",angl);
	     track->Fill(angl);
	   }
	 ftrack=BRICK_fTrack[k];
	 xold=BRICK_fX[k];yold=BRICK_fY[k];zold=BRICK_fZ[k];
	 }
         printf(" Brick hit %d, fTrack=%d (%f|%f|%f)\n",k,BRICK_fTrack[k],BRICK_fX[k],BRICK_fY[k],BRICK_fZ[k]);
	 // if(k==10) break;
      }
   }
   track->Draw();
   c1->Update();
   getchar();
   coord->Draw("LEGO1");
   c1->Update();
}



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:37 MET