17 using namespace ROOT::Experimental;
18 namespace REX = ROOT::Experimental;
29 REveVSD::REveVSD(
const char* ,
const char*) :
67 void REveVSD::SetDirectory(TDirectory* dir)
75 void REveVSD::CreateTrees()
78 fTreeK =
new TTree(
"Kinematics",
"Simulated tracks.");
79 fTreeH =
new TTree(
"Hits",
"Combined detector hits.");
80 fTreeC =
new TTree(
"Clusters",
"Reconstructed clusters.");
81 fTreeR =
new TTree(
"RecTracks",
"Reconstructed tracks.");
82 fTreeKK =
new TTree(
"RecKinks",
"Reconstructed kinks.");
83 fTreeV0 =
new TTree(
"RecV0s",
"Reconstructed V0s.");
84 fTreeCC =
new TTree(
"RecCascades",
"Reconstructed cascades.");
85 fTreeGI =
new TTree(
"REveMCRecCrossRef",
"Objects prepared for cross query.");
91 void REveVSD::DeleteTrees()
93 delete fTreeK; fTreeK =
nullptr;
94 delete fTreeH; fTreeH =
nullptr;
95 delete fTreeC; fTreeC =
nullptr;
96 delete fTreeR; fTreeR =
nullptr;
97 delete fTreeV0; fTreeV0 =
nullptr;
98 delete fTreeKK; fTreeKK =
nullptr;
99 delete fTreeGI; fTreeGI =
nullptr;
105 void REveVSD::CreateBranches()
107 if (fTreeK) fTreeK ->Branch(
"K",
"REveMCTrack", &fpK);
108 if (fTreeH) fTreeH ->Branch(
"H",
"REveHit", &fpH);
109 if (fTreeC) fTreeC ->Branch(
"C",
"REveCluster", &fpC);
110 if (fTreeR) fTreeR ->Branch(
"R",
"REveRecTrack", &fpR);
111 if (fTreeKK) fTreeKK->Branch(
"KK",
"REveRecKink", &fpKK);
112 if (fTreeV0) fTreeV0->Branch(
"V0",
"REveRecV0", &fpV0);
116 fTreeGI->Branch(
"GI",
"REveMCRecCrossRef", &fpGI);
117 fTreeGI->Branch(
"K.",
"REveMCTrack", &fpK);
118 fTreeGI->Branch(
"R.",
"REveRecTrack", &fpR);
125 void REveVSD::SetBranchAddresses()
127 if (fTreeK) fTreeK ->SetBranchAddress(
"K", &fpK);
128 if (fTreeH) fTreeH ->SetBranchAddress(
"H", &fpH);
129 if (fTreeC) fTreeC ->SetBranchAddress(
"C", &fpC);
130 if (fTreeR) fTreeR ->SetBranchAddress(
"R", &fpR);
131 if (fTreeKK) fTreeKK->SetBranchAddress(
"KK", &fpKK);
132 if (fTreeV0) fTreeV0->SetBranchAddress(
"V0", &fpV0);
136 fTreeGI->SetBranchAddress(
"GI", &fpGI);
137 fTreeGI->SetBranchAddress(
"K.", &fpK);
138 fTreeGI->SetBranchAddress(
"R.", &fpR);
145 void REveVSD::WriteTrees()
152 void REveVSD::LoadTrees()
154 static const REveException eH(
"REveVSD::LoadTrees");
157 throw eH +
" directory not set.";
159 fTreeK = (TTree*) fDirectory->Get(
"Kinematics");
160 if (!fTreeK && fVerbose)
161 Error(
"REveVSD::LoadTrees",
"Kinematics not available in fDirectory %s.", fDirectory->GetName());
163 fTreeH = (TTree*) fDirectory->Get(
"Hits");
164 if (!fTreeH && fVerbose)
165 Error(
"REveVSD::LoadTrees",
"Hits not available in fDirectory %s.", fDirectory->GetName());
167 fTreeC = (TTree*) fDirectory->Get(
"Clusters");
168 if (!fTreeC && fVerbose)
169 Error(
"REveVSD::LoadTrees",
"Clusters not available in fDirectory %s.", fDirectory->GetName());
171 fTreeR = (TTree*) fDirectory->Get(
"RecTracks");
172 if (!fTreeR && fVerbose)
173 Error(
"REveVSD::LoadTrees",
"RecTracks not available in fDirectory %s.", fDirectory->GetName());
175 fTreeKK = (TTree*) fDirectory->Get(
"RecKinks");
176 if (!fTreeKK && fVerbose)
177 Error(
"REveVSD::LoadTrees",
"RecKinks not available in fDirectory %s.", fDirectory->GetName());
179 fTreeV0 = (TTree*) fDirectory->Get(
"RecV0s");
180 if (!fTreeV0 && fVerbose)
181 Error(
"REveVSD::LoadTrees",
"RecV0 not available in fDirectory %s.", fDirectory->GetName());
183 fTreeGI = (TTree*)fDirectory->Get(
"REveMCRecCrossRef");
184 if(!fTreeGI && fVerbose)
185 Error(
"REveVSD::LoadTrees",
"REveMCRecCrossRef not available in fDirectory %s.", fDirectory->GetName());
192 void REveVSD::DisableTObjectStreamersForVSDStruct()
197 TParticle::Class()->IgnoreTObjectStreamer(
true);