This commit was generated by cvs2svn to compensate for changes in r13732,
[u/mrichter/AliRoot.git] / EVE / Reve / VSD.cxx
1 // $Header$
2
3 #include "VSD.h"
4 #include <TFile.h>
5
6 using namespace Reve;
7
8 //______________________________________________________________________
9 // VSD
10 //
11
12 ClassImp(VSD)
13
14 VSD::VSD()
15 {
16   mFile      = 0;
17   mDirectory = 0;
18   InitTreeVars();
19 }
20
21 VSD::VSD(const Text_t* , const Text_t* )
22 {
23   mFile      = 0;
24   mDirectory = 0;
25   InitTreeVars();
26 }
27
28 void VSD::InitTreeVars()
29 {
30   fBuffSize = 128*1024;
31
32   mTreeK  = 0;
33   //mTreeTR = 0;
34   mTreeH  = 0;
35   mTreeC  = 0;
36   mTreeR  = 0;
37   mTreeKK = 0;
38   mTreeV0 = 0;
39   mTreeGI = 0;
40
41   mpK  = &mK;
42   mpH  = &mH;
43   mpC  = &mC;
44   mpV0 = &mV0;
45   mpKK = &mKK;
46   mpR  = &mR;
47   mpGI = &mGI;
48 }
49
50 /**************************************************************************/
51 /**************************************************************************/
52
53 void VSD::SetDirectory(TDirectory* dir)
54 {
55   mDirectory = dir;
56 }
57
58 /**************************************************************************/
59 /**************************************************************************/
60
61 void VSD::CreateTrees()
62 {
63   mDirectory->cd();
64   // TR missing ...
65   mTreeK  = new TTree("Kinematics", "Simulated tracks.");
66   mTreeH  = new TTree("Hits",       "Combined detector hits.");
67   mTreeC  = new TTree("Clusters",   "Reconstructed clusters.");
68   mTreeR  = new TTree("RecTracks",  "Reconstructed tracks.");
69   mTreeKK = new TTree("RecKinks",   "Reconstructed kinks.");
70   mTreeV0 = new TTree("RecV0s",     "Reconstructed V0s.");
71   mTreeGI = new TTree("GenInfo",    "Objects prepared for cross query.");
72 }
73
74 void VSD::DeleteTrees()
75 {
76   delete mTreeK;      mTreeK      = 0;
77   // delete mTreeTR;     mTreeTR     = 0;
78   delete mTreeH;      mTreeH      = 0;
79   delete mTreeC;      mTreeC      = 0;
80   delete mTreeR;      mTreeR      = 0;
81   delete mTreeV0;     mTreeV0     = 0;
82   delete mTreeKK;     mTreeKK     = 0;
83   delete mTreeGI;     mTreeGI     = 0;
84 }
85
86 void VSD::CreateBranches()
87 {
88   // TR missing ...
89   if(mTreeK)
90     mTreeK ->Branch("K",  "Reve::MCTrack",  &mpK,  fBuffSize);
91   if(mTreeH)
92     mTreeH ->Branch("H",  "Reve::Hit",      &mpH,  fBuffSize);
93   if(mTreeC)
94     mTreeC ->Branch("C",  "Reve::Cluster",  &mpC,  fBuffSize);
95   if(mTreeR)
96     mTreeR ->Branch("R",  "Reve::RecTrack", &mpR,  fBuffSize);
97   if(mTreeKK)
98     mTreeKK->Branch("KK", "Reve::RecKink",  &mpKK, fBuffSize);
99   if(mTreeV0)
100     mTreeV0->Branch("V0", "Reve::RecV0",    &mpV0, fBuffSize);
101
102   if(mTreeGI) {
103     mTreeGI->Branch("GI", "Reve::GenInfo",  &mpGI, fBuffSize);
104     mTreeGI->Branch("K.", "Reve::MCTrack",  &mpK);
105     mTreeGI->Branch("R.", "Reve::RecTrack", &mpR);
106   }
107 }
108
109 void VSD::SetBranchAddresses()
110 {
111   // TR missing ...
112   if(mTreeK)
113     mTreeK ->SetBranchAddress("K",  &mpK);
114   if(mTreeH)
115     mTreeH ->SetBranchAddress("H",  &mpH);
116   if(mTreeC)
117     mTreeC ->SetBranchAddress("C",  &mpC);
118   if(mTreeR)
119     mTreeR ->SetBranchAddress("R",  &mpR);
120   if(mTreeKK)
121     mTreeKK->SetBranchAddress("KK", &mpKK);
122   if(mTreeV0)
123     mTreeV0->SetBranchAddress("V0", &mpV0);
124
125   if(mTreeGI) {
126     mTreeGI->SetBranchAddress("GI", &mpGI);
127     mTreeGI->SetBranchAddress("K.", &mpK);
128     mTreeGI->SetBranchAddress("R.", &mpR);
129   }
130 }
131
132 void VSD::WriteTrees()
133 {
134   // Does nothing here ...
135 }
136
137 /**************************************************************************/
138 /**************************************************************************/
139
140 void VSD::LoadTrees()
141 {
142   static const Exc_t eH("VSD::LoadTrees ");
143   
144   if(mDirectory == 0)
145     throw(eH + "directory not set.");
146
147   printf("Reading kinematics.\n");
148   mTreeK = (TTree*) mDirectory->Get("Kinematics");
149   if(mTreeK == 0) {
150     printf("%s Kinematics not available in mDirectory %s.\n", 
151            eH.Data(), mDirectory->GetName());
152   }
153
154   printf("Reading hits.\n");  
155   mTreeH = (TTree*) mDirectory->Get("Hits");
156   if(mTreeH == 0) {
157     printf("%s Hits not available in mDirectory %s.\n", 
158            eH.Data(), mDirectory->GetName());
159   }
160
161   printf("Reading clusters.\n");
162   mTreeC = (TTree*) mDirectory->Get("Clusters");
163   if(mTreeC == 0) {
164     printf("%s Clusters not available in mDirectory %s.\n", 
165            eH.Data(), mDirectory->GetName());
166   }
167
168   printf("Reading reconstructed tracks.\n");
169   mTreeR = (TTree*) mDirectory->Get("RecTracks");
170   if(mTreeR == 0) {
171     printf("%s RecTracks not available in mDirectory %s.\n", 
172            eH.Data(), mDirectory->GetName());
173   }
174
175   printf("Reading reconstructed kinks. \n");
176   mTreeKK =  (TTree*) mDirectory->Get("RecKinks");
177   if(mTreeKK == 0) {
178     printf("%s Kinks not available in mDirectory %s.\n", 
179            eH.Data(), mDirectory->GetName());
180   }
181
182   printf("Reading Reconstructed V0s.\n");
183   mTreeV0 =  (TTree*) mDirectory->Get("RecV0s");
184   if(mTreeV0 == 0) {
185     printf("%s V0 not available in mDirectory %s.\n", 
186            eH.Data(), mDirectory->GetName());
187   }
188  
189   printf("Reading GenInfo.\n");
190   mTreeGI = (TTree*)mDirectory->Get("GenInfo");
191   if(mTreeGI == 0) {
192     printf("%s GenInfo not available in mDirectory %s.\n", 
193            eH.Data(), mDirectory->GetName());
194   }
195
196 }
197
198 void VSD::LoadVSD(const Text_t* vsd_file_name, const Text_t* dir_name)
199 {
200   static const Exc_t eH("VSD::LoadVSD ");
201
202   mFile = TFile::Open(vsd_file_name);
203   if(mFile == 0)
204     throw(eH + "can not open VSD file '" + vsd_file_name + "'.");
205
206   mDirectory = (TDirectory*) mFile->Get(dir_name);
207   if(mDirectory == 0)
208     throw(eH + "directory '" + dir_name + "' not found in VSD file '" + vsd_file_name + "'.");
209   printf("%p\n", (void*)mDirectory);
210   LoadTrees();
211   SetBranchAddresses();
212 }
213
214 /**************************************************************************/
215 /**************************************************************************/