26 TEveVSD::TEveVSD(
const char* ,
const char*) :
64 void TEveVSD::SetDirectory(TDirectory* dir)
72 void TEveVSD::CreateTrees()
75 fTreeK =
new TTree(
"Kinematics",
"Simulated tracks.");
76 fTreeH =
new TTree(
"Hits",
"Combined detector hits.");
77 fTreeC =
new TTree(
"Clusters",
"Reconstructed clusters.");
78 fTreeR =
new TTree(
"RecTracks",
"Reconstructed tracks.");
79 fTreeKK =
new TTree(
"RecKinks",
"Reconstructed kinks.");
80 fTreeV0 =
new TTree(
"RecV0s",
"Reconstructed V0s.");
81 fTreeCC =
new TTree(
"RecCascades",
"Reconstructed cascades.");
82 fTreeGI =
new TTree(
"TEveMCRecCrossRef",
"Objects prepared for cross query.");
88 void TEveVSD::DeleteTrees()
90 delete fTreeK; fTreeK = 0;
91 delete fTreeH; fTreeH = 0;
92 delete fTreeC; fTreeC = 0;
93 delete fTreeR; fTreeR = 0;
94 delete fTreeV0; fTreeV0 = 0;
95 delete fTreeKK; fTreeKK = 0;
96 delete fTreeGI; fTreeGI = 0;
102 void TEveVSD::CreateBranches()
104 if (fTreeK) fTreeK ->Branch(
"K",
"TEveMCTrack", &fpK);
105 if (fTreeH) fTreeH ->Branch(
"H",
"TEveHit", &fpH);
106 if (fTreeC) fTreeC ->Branch(
"C",
"TEveCluster", &fpC);
107 if (fTreeR) fTreeR ->Branch(
"R",
"TEveRecTrack", &fpR);
108 if (fTreeKK) fTreeKK->Branch(
"KK",
"TEveRecKink", &fpKK);
109 if (fTreeV0) fTreeV0->Branch(
"V0",
"TEveRecV0", &fpV0);
113 fTreeGI->Branch(
"GI",
"TEveMCRecCrossRef", &fpGI);
114 fTreeGI->Branch(
"K.",
"TEveMCTrack", &fpK);
115 fTreeGI->Branch(
"R.",
"TEveRecTrack", &fpR);
122 void TEveVSD::SetBranchAddresses()
124 if (fTreeK) fTreeK ->SetBranchAddress(
"K", &fpK);
125 if (fTreeH) fTreeH ->SetBranchAddress(
"H", &fpH);
126 if (fTreeC) fTreeC ->SetBranchAddress(
"C", &fpC);
127 if (fTreeR) fTreeR ->SetBranchAddress(
"R", &fpR);
128 if (fTreeKK) fTreeKK->SetBranchAddress(
"KK", &fpKK);
129 if (fTreeV0) fTreeV0->SetBranchAddress(
"V0", &fpV0);
133 fTreeGI->SetBranchAddress(
"GI", &fpGI);
134 fTreeGI->SetBranchAddress(
"K.", &fpK);
135 fTreeGI->SetBranchAddress(
"R.", &fpR);
142 void TEveVSD::WriteTrees()
149 void TEveVSD::LoadTrees()
151 static const TEveException eH(
"TEveVSD::LoadTrees ");
154 throw eH +
"directory not set.";
156 fTreeK = (TTree*) fDirectory->Get(
"Kinematics");
157 if (fTreeK == 0 && fVerbose) {
158 printf(
"%s Kinematics not available in fDirectory %s.\n",
159 eH.Data(), fDirectory->GetName());
162 fTreeH = (TTree*) fDirectory->Get(
"Hits");
163 if (fTreeH == 0 && fVerbose) {
164 printf(
"%s Hits not available in fDirectory %s.\n",
165 eH.Data(), fDirectory->GetName());
168 fTreeC = (TTree*) fDirectory->Get(
"Clusters");
169 if (fTreeC == 0 && fVerbose) {
170 printf(
"%s Clusters not available in fDirectory %s.\n",
171 eH.Data(), fDirectory->GetName());
174 fTreeR = (TTree*) fDirectory->Get(
"RecTracks");
175 if (fTreeR == 0 && fVerbose) {
176 printf(
"%s RecTracks not available in fDirectory %s.\n",
177 eH.Data(), fDirectory->GetName());
180 fTreeKK = (TTree*) fDirectory->Get(
"RecKinks");
181 if (fTreeKK == 0 && fVerbose) {
182 printf(
"%s Kinks not available in fDirectory %s.\n",
183 eH.Data(), fDirectory->GetName());
186 fTreeV0 = (TTree*) fDirectory->Get(
"RecV0s");
187 if (fTreeV0 == 0 && fVerbose) {
188 printf(
"%s V0 not available in fDirectory %s.\n",
189 eH.Data(), fDirectory->GetName());
192 fTreeGI = (TTree*)fDirectory->Get(
"TEveMCRecCrossRef");
193 if(fTreeGI == 0 && fVerbose) {
194 printf(
"%s TEveMCRecCrossRef not available in fDirectory %s.\n",
195 eH.Data(), fDirectory->GetName());
204 void TEveVSD::DisableTObjectStreamersForVSDStruct()
209 TParticle::Class()->IgnoreTObjectStreamer(
true);
211 TEveHit::Class()->IgnoreTObjectStreamer(
true);
212 TEveCluster::Class()->IgnoreTObjectStreamer(
true);
214 TEveRecTrack::Class()->IgnoreTObjectStreamer(
true);
217 TEveRecV0::Class()->IgnoreTObjectStreamer(
true);
219 TEveMCRecCrossRef::Class()->IgnoreTObjectStreamer(
true);