8 //______________________________________________________________________
14 VSD::VSD(const Text_t* , const Text_t* ) :
41 /**************************************************************************/
42 /**************************************************************************/
44 void VSD::SetDirectory(TDirectory* dir)
49 /**************************************************************************/
50 /**************************************************************************/
52 void VSD::CreateTrees()
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.");
65 void VSD::DeleteTrees()
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;
77 void VSD::CreateBranches()
81 mTreeK ->Branch("K", "Reve::MCTrack", &mpK, fBuffSize);
83 mTreeH ->Branch("H", "Reve::Hit", &mpH, fBuffSize);
85 mTreeC ->Branch("C", "Reve::Cluster", &mpC, fBuffSize);
87 mTreeR ->Branch("R", "Reve::RecTrack", &mpR, fBuffSize);
89 mTreeKK->Branch("KK", "Reve::RecKink", &mpKK, fBuffSize);
91 mTreeV0->Branch("V0", "Reve::RecV0", &mpV0, fBuffSize);
94 mTreeGI->Branch("GI", "Reve::GenInfo", &mpGI, fBuffSize);
95 mTreeGI->Branch("K.", "Reve::MCTrack", &mpK);
96 mTreeGI->Branch("R.", "Reve::RecTrack", &mpR);
100 void VSD::SetBranchAddresses()
104 mTreeK ->SetBranchAddress("K", &mpK);
106 mTreeH ->SetBranchAddress("H", &mpH);
108 mTreeC ->SetBranchAddress("C", &mpC);
110 mTreeR ->SetBranchAddress("R", &mpR);
112 mTreeKK->SetBranchAddress("KK", &mpKK);
114 mTreeV0->SetBranchAddress("V0", &mpV0);
117 mTreeGI->SetBranchAddress("GI", &mpGI);
118 mTreeGI->SetBranchAddress("K.", &mpK);
119 mTreeGI->SetBranchAddress("R.", &mpR);
123 void VSD::WriteTrees()
125 // Does nothing here ...
128 /**************************************************************************/
129 /**************************************************************************/
131 void VSD::LoadTrees()
133 static const Exc_t eH("VSD::LoadTrees ");
136 throw(eH + "directory not set.");
138 printf("Reading kinematics.\n");
139 mTreeK = (TTree*) mDirectory->Get("Kinematics");
141 printf("%s Kinematics not available in mDirectory %s.\n",
142 eH.Data(), mDirectory->GetName());
145 printf("Reading hits.\n");
146 mTreeH = (TTree*) mDirectory->Get("Hits");
148 printf("%s Hits not available in mDirectory %s.\n",
149 eH.Data(), mDirectory->GetName());
152 printf("Reading clusters.\n");
153 mTreeC = (TTree*) mDirectory->Get("Clusters");
155 printf("%s Clusters not available in mDirectory %s.\n",
156 eH.Data(), mDirectory->GetName());
159 printf("Reading reconstructed tracks.\n");
160 mTreeR = (TTree*) mDirectory->Get("RecTracks");
162 printf("%s RecTracks not available in mDirectory %s.\n",
163 eH.Data(), mDirectory->GetName());
166 printf("Reading reconstructed kinks. \n");
167 mTreeKK = (TTree*) mDirectory->Get("RecKinks");
169 printf("%s Kinks not available in mDirectory %s.\n",
170 eH.Data(), mDirectory->GetName());
173 printf("Reading Reconstructed V0s.\n");
174 mTreeV0 = (TTree*) mDirectory->Get("RecV0s");
176 printf("%s V0 not available in mDirectory %s.\n",
177 eH.Data(), mDirectory->GetName());
180 printf("Reading GenInfo.\n");
181 mTreeGI = (TTree*)mDirectory->Get("GenInfo");
183 printf("%s GenInfo not available in mDirectory %s.\n",
184 eH.Data(), mDirectory->GetName());
189 void VSD::LoadVSD(const Text_t* vsd_file_name, const Text_t* dir_name)
191 static const Exc_t eH("VSD::LoadVSD ");
193 mFile = TFile::Open(vsd_file_name);
195 throw(eH + "can not open VSD file '" + vsd_file_name + "'.");
197 mDirectory = (TDirectory*) mFile->Get(dir_name);
199 throw(eH + "directory '" + dir_name + "' not found in VSD file '" + vsd_file_name + "'.");
200 printf("%p\n", (void*)mDirectory);
202 SetBranchAddresses();
205 /**************************************************************************/
206 /**************************************************************************/