FairRoot/PandaRoot
PndPrintFairLinks.cxx
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndPrintFairLinks source file -----
3 // ----- Created 18/07/08 by T.Stockmanns -----
4 // -------------------------------------------------------------------------
5 // libc includes
6 #include <PndPrintFairLinks.h>
7 #include <iostream>
8 #include <exception>
9 
10 // Root includes
11 #include "TROOT.h"
12 #include "TClonesArray.h"
13 #include "TChain.h"
14 #include "TChainElement.h"
15 
16 // framework includes
17 #include "FairRootManager.h"
18 #include "FairRun.h"
19 #include "FairRuntimeDb.h"
20 #include "FairHit.h"
21 #include "FairMultiLinkedData_Interface.h"
22 
23 //#include "PndDetectorList.h"
24 
25 
26 // ----- Default constructor -------------------------------------------
27 PndPrintFairLinks::PndPrintFairLinks() : FairTask("Creates PndMCMatch"), fSelectedBranches(new TList())
28 {
29 }
30 // -------------------------------------------------------------------------
31 
32 
33 // ----- Destructor ----------------------------------------------------
35 {
36 }
37 
38 // ----- Public method Init --------------------------------------------
40 {
41  FairRootManager* ioman = FairRootManager::Instance();
42  if (!ioman) {
43  std::cout << "-E- PndPrintFairLinks::Init: "
44  << "RootManager not instantiated!" << std::endl;
45  return kFATAL;
46  }
47 
48  TList* branchNames;
49  if (fSelectedBranches->GetEntries() > 0){
50  branchNames = fSelectedBranches;
51  } else {
52  branchNames = ioman->GetBranchNameList();
53  }
54 
55  InitBranchList(branchNames);
56 
57  PrintBranchNameList(ioman->GetBranchNameList());
58 
59  return kSUCCESS;
60 }
61 
62 
63 void PndPrintFairLinks::InitBranchList(TList* branches)
64 {
65  FairRootManager* ioman = FairRootManager::Instance();
66  for (int i = 0; i < branches->GetEntries(); i++) {
67  TObjString* branchName = (TObjString*) branches->At(i);
68  if (branchName->String().Contains("_link")) continue;
69  if (branchName->String().Contains("MCTrack")) continue;
70  if (branchName->String().Contains(".")) continue;
71  if (branchName->String().Contains("GeoTracks")) continue;
72  if (branchName->String().Contains("Header")) continue;
73  if (branchName->String().Contains("Info")) continue;
74  if (branchName->String().Contains("ID")) continue;
75  if (branchName->String().Contains("PidAlgo")) continue;
76  if (branchName->String().Contains("Riemann")) continue;
77 
78  std::cout << "PndPrintFairLinks::Init() branches: " << branchName->String() << std::endl;
79  if ((TClonesArray*)ioman->GetObject(branchName->String()) != 0){
80  fBranches[ioman->GetBranchId(branchName->String())] = (TClonesArray*)ioman->GetObject(branchName->String());
81  } else {
82  std::cout << "-E- PndPrintFairLinks " << branchName->String().Data() << " is not a valid branch name!" << std::endl;
83  }
84  }
85 }
86 
87 
89 {
90  std::cout << "-I- PndPrintFairLinks Branches:" << std::endl;
91 
92  for (int i = 0; i < branches->GetEntries(); i++) {
93  TObjString* branchName = (TObjString*) branches->At(i);
94  std::cout << i << " : " << branchName->String().Data() << std::endl;
95  }
96  std::cout << std::endl;
97 }
98 
99 // -------------------------------------------------------------------------
101 {
102  // Get Base Container
103 // FairRun* ana = FairRun::Instance();
104 // FairRuntimeDb* rtdb=ana->GetRuntimeDb();
105 
106 }
107 
108 
109 // ----- Public method Exec --------------------------------------------
110 void PndPrintFairLinks::Exec(Option_t*)
111 {
112  std::cout << std::endl << "--------------------- Event " << FairRootManager::Instance()->GetEntryNr() <<
113  " at " << FairRootManager::Instance()->GetEventTime() << " ns ----------------------" << std::endl;
114  for (std::map<Int_t, TClonesArray*>::iterator iter = fBranches.begin(); iter != fBranches.end(); iter++){
115  std::cout << std::endl << iter->first << " : " << FairRootManager::Instance()->GetBranchName(iter->first) << " Entries: " << iter->second->GetEntriesFast() << std::endl;
116  for (int i = 0; i < iter->second->GetEntriesFast(); i++){
117  FairMultiLinkedData_Interface* myLinks = (FairMultiLinkedData_Interface*)iter->second->At(i);
118  if (myLinks->GetPointerToLinks() != 0){
119  std::cout << i << " : " << *myLinks << std::endl << std::endl;
120  }
121  }
122  }
123 }
124 
126 {
127 }
128 
129 
Int_t i
Definition: run_full.C:25
ClassImp(PndAnaContFact)