]>
Commit | Line | Data |
---|---|---|
5a5a1232 | 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 | ||
265ecb21 | 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 | {} | |
5a5a1232 | 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 | /**************************************************************************/ |