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);