StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
rdEEevent.C
1 // read TTree
2 
3 rdEEevent(int neve=300, TString Tname0="/star/u/eemcdb/dataFeb11/run00006.eeTree", int flag=0, float Emax=40.){
4  TString Tname0="../sim2003/mc_eve2";
5  gSystem->Load("StRoot/StEEmcUtil/EEevent/libEEevent.so");
6 
7  // gStyle->SetPalette(1,0);
8  gStyle->SetOptStat(111111);
9 
10  TString Tname;
11  Tname=Tname0;
12 
13  printf("read upto %d events from file=%s.root\n",neve,Tname.Data());
14  TFile *f = new TFile(Tname+".root");
15  assert(f->IsOpen());
16  TTree *t4 = (TTree*)f->Get("EEtree");
17  assert(t4);
18  // create a pointer to an event object. This will be used
19  // to read the branch values.
20  EEeventDst *event = new EEeventDst();
21 
22  //if (gROOT->IsBatch()) return; new TBrowser(); t4->StartViewer(); return;
23  TBranch *br = t4->GetBranch("EEdst");
24  br->SetAddress(&event);
25  Int_t nevent = (Int_t)t4->GetEntries();
26  for (Int_t ie=0;ie<nevent;ie++) {
27  if(ie>=neve) break;
28  printf("\niEve=%d ---------- \n",ie);
29  int i;
30 
31  //read this branch only
32  br->GetEntry(ie);
33  event->print();
34 
35  int nSec=event->Sec->GetEntries();
36  printf("%d sectors with data\n",nSec);
37 
38  int is;
39  for(is=0;is<nSec;is++) {
40  EEsectorDst *sec=(EEsectorDst*)event->Sec->At(is);
41  // sec->print();
42  TClonesArray *hitA=sec->getTwHits();
43  assert(hitA);
44  int ih;
45  for(ih=0;ih<hitA->GetEntries();ih++) {
46  char sub;
47  int eta;
48  float ener;
49  EEtwHitDst *hit=(EEtwHitDst*)hitA->At(ih);
50  hit->get(sub,eta,ener);
51  if(ie<5) printf(" ih=%d sec=%d sub=%c etaBin=%d ener=%f\n",ih, sec->getID(), sub, eta,ener);
52  // hit->print();
53  }
54 
55  }
56 
57 
58  }
59 
60 #if 0
61 
62  // allocate memory for needed branches
63  TClonesArray *secA=new TClonesArray("EEsectorDst",1000);
64  TBranch *BRsec = t4->GetBranch("Sec"); // set the branch address
65  BRsec->SetAddress(&secA);
66 
67  int eveID=0;
68  TBranch *BRid = t4->GetBranch("ID");
69  BRid->SetAddress(&eveID);
70 
71  Int_t nevent = (Int_t)t4->GetEntries();
72  printf("Total events in TTree=%d\n",nevent);
73 
74 
75  // ........... LOOP OVER EVENTS ............
76 
77  for (Int_t ie=0;ie<nevent;ie++) {
78  if(ie>=neve) break;
79  int i;
80 
81  //read this branch only
82  BRid->GetEntry(ie);
83  BRsec->GetEntry(ie);
84 
85  if(ie%1==0) printf("\n\iEve=%d nSec=%d with data \n",ie,secA->GetEntries());
86 
87  // if(ie%1==0) printf("\n\iEve=%d eveID=%d, eveType=%d, nSec=%d with data :\n",ie,eveID,eveType,secA->GetEntries());
88  if(ie%1==0) printf("\n\iEve=%d eveID=%d, nSec=%d with data :\n",ie,eveID,secA->GetEntries());
89 
90 
91  int is;
92  for(is=0;is<secA->GetEntries();is++) {
93  EEsectorDst *sec=(EEsectorDst*)secA->At(is);
94  if(ie<1) sec->print();
95 
96  TClonesArray *hitA;
97  int ih;
98 
99  TClonesArray *hitAA[]={sec->getPre1Hits(),sec->getPre2Hits(),sec->getTwHits(),sec->getPostHits(),sec->getSmdUHits(),sec->getSmdVHits()};
100  int iz;
101  for(iz=0;iz<4;iz++) { // over tower/pre/post
102  hitA=hitAA[iz];
103  if(ie<1) printf(" sectorID=%d iz=%d nHit=%d :\n",sec->getID(),iz,hitA->GetEntries());
104  }// end of loop over pre1/2/Tw/Post
105 
106 
107  for(iz=4;iz<6;iz++) { // over SMD U/V
108  hitA=hitAA[iz];
109  if(ie<1) printf(" sectorID=%d iz=%d nHit=%d :\n",sec->getID(),iz,hitA->GetEntries());
110  for(ih=0;ih<hitA->GetEntries();ih++) {
111  EEsmdHitDst *hit2=(EEsmdHitDst*)hitA->At(ih);
112  int strip;
113  float ener;
114  hit2->get(strip,ener);
115  if(ie<1) printf(" ih=%d strip=%d etaBin=%d ener=%f\n",ih, sec->getID(), strip,ener);
116  hit->print();
117  }
118  }// end of loop over pre1/2/Tw/Post
119 
120 
121  }// end of loop over sector
122 
123  }
124 #endif
125  printf("\n\nTotal events in B TTree=%d\n",nevent);
126 
127 
128 }
129 
130 
131 
132 
133