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