FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndGeoHitList Class Reference

#include <PndGeoHitList.h>

Public Member Functions

 PndGeoHitList ()
 
 PndGeoHitList (TString groupName, TString topNodeName, TGeoVolume *baseVolume)
 
virtual ~PndGeoHitList ()
 
 PndGeoHitList (const PndGeoHitList &)=delete
 
PndGeoHitListoperator= (const PndGeoHitList &)=delete
 
void CreateNewGroup (TString groupName, TString topNodeName, TGeoVolume *baseVolume)
 
void AddHit (FairHit *hit, Bool_t vis=kTRUE)
 
void AddHit (Double_t x, Double_t y, Double_t z, Bool_t vis=kTRUE)
 
void AddHit (TGeoMatrix *mat, Bool_t vis=kTRUE)
 
void AddHits (TClonesArray *hitList, Bool_t vis=kTRUE)
 
void SetHits (TClonesArray *hitList, Bool_t vis=kTRUE)
 
void RemoveGeoHits (Int_t from)
 
void CreateGeoHit (TGeoMatrix *mat)
 
TString GetName () const
 
const std::vector< TGeoNode * > GetNodes () const
 
void SetVisibility (TString NodeName, bool value)
 
void SetVisibility (TGeoHMatrix pos, bool value)
 
void SetVisibility (Int_t id, bool value)
 
void SetAllInvisible ()
 
Int_t GetNodeId (TString NodeName)
 
Int_t GetNodeId (TGeoHMatrix pos)
 

Private Member Functions

void CreateGeoHits (Int_t number)
 
void SetGeoHitsInvisible (Int_t from)
 
 ClassDef (PndGeoHitList, 1)
 

Private Attributes

TString fGroupName
 
TString fVolName
 
std::vector< TGeoNode * > fNodeList
 
TGeoVolume * fGroupVolume
 
TGeoVolume * fTopVolume
 
TGeoVolume * fBaseVolume
 

Detailed Description

Definition at line 16 of file PndGeoHitList.h.

Constructor & Destructor Documentation

PndGeoHitList::PndGeoHitList ( )

Definition at line 7 of file PndGeoHitList.cxx.

7  :
8  fGroupName(""),
9  fVolName(""),
10  fNodeList(),
11  fGroupVolume(NULL),
12  fTopVolume(NULL),
13  fBaseVolume(NULL)
14 {
15 }
TGeoVolume * fTopVolume
Definition: PndGeoHitList.h:49
TString fVolName
Definition: PndGeoHitList.h:46
TString fGroupName
Definition: PndGeoHitList.h:45
TGeoVolume * fGroupVolume
Definition: PndGeoHitList.h:48
TGeoVolume * fBaseVolume
Definition: PndGeoHitList.h:50
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
PndGeoHitList::PndGeoHitList ( TString  groupName,
TString  topNodeName,
TGeoVolume *  baseVolume 
)

Definition at line 17 of file PndGeoHitList.cxx.

References CreateNewGroup().

17  :
18  fGroupName(""),
19  fVolName(""),
20  fNodeList(),
21  fGroupVolume(NULL),
22  fTopVolume(NULL),
23  fBaseVolume(NULL)
24 {
25  CreateNewGroup(groupName, topNodeName, baseVolume);
26 }
TGeoVolume * fTopVolume
Definition: PndGeoHitList.h:49
TString fVolName
Definition: PndGeoHitList.h:46
TString fGroupName
Definition: PndGeoHitList.h:45
TGeoVolume * fGroupVolume
Definition: PndGeoHitList.h:48
TGeoVolume * fBaseVolume
Definition: PndGeoHitList.h:50
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
void CreateNewGroup(TString groupName, TString topNodeName, TGeoVolume *baseVolume)
PndGeoHitList::~PndGeoHitList ( )
virtual

Definition at line 28 of file PndGeoHitList.cxx.

29 {
30 }
PndGeoHitList::PndGeoHitList ( const PndGeoHitList )
delete

Member Function Documentation

void PndGeoHitList::AddHit ( FairHit *  hit,
Bool_t  vis = kTRUE 
)

Definition at line 49 of file PndGeoHitList.cxx.

50 {
51  AddHit(hit->GetX(), hit->GetY(), hit->GetZ(), vis);
52 }
void AddHit(FairHit *hit, Bool_t vis=kTRUE)
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
Definition: hit.C:1
void PndGeoHitList::AddHit ( Double_t  x,
Double_t  y,
Double_t  z,
Bool_t  vis = kTRUE 
)

Definition at line 54 of file PndGeoHitList.cxx.

References CreateGeoHits(), fNodeList, and tr.

55 {
56  CreateGeoHits(1);
57  TGeoTranslation *tr = (TGeoTranslation*)fNodeList[fNodeList.size()-1]->GetMatrix();
58  tr->SetTranslation(x, y, z);
59  fNodeList[fNodeList.size()-1]->SetVisibility(vis);
60 
61 }
Double_t z
Double_t x
void CreateGeoHits(Int_t number)
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
Double_t y
void PndGeoHitList::AddHit ( TGeoMatrix *  mat,
Bool_t  vis = kTRUE 
)

Definition at line 63 of file PndGeoHitList.cxx.

References CreateGeoHit(), and fNodeList.

64 {
65  CreateGeoHit(mat);
66  fNodeList[fNodeList.size()-1]->SetVisibility(vis);
67 }
void CreateGeoHit(TGeoMatrix *mat)
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
void PndGeoHitList::AddHits ( TClonesArray *  hitList,
Bool_t  vis = kTRUE 
)

Definition at line 69 of file PndGeoHitList.cxx.

References CreateGeoHits(), fNodeList, i, and tr.

70 {
71  Int_t start = fNodeList.size();
72  CreateGeoHits(hitList->GetEntries());
73 
74  for (Int_t i = 0; i < hitList->GetEntries(); i++){
75  FairHit* myHit = (FairHit*)hitList->At(i);
76  TGeoTranslation *tr = (TGeoTranslation*)fNodeList[start+i]->GetMatrix();
77  tr->SetTranslation(myHit->GetX(), myHit->GetY(), myHit->GetZ());
78  fNodeList[start+i]->SetVisibility(vis);
79  }
80 }
Int_t i
Definition: run_full.C:25
void CreateGeoHits(Int_t number)
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
PndGeoHitList::ClassDef ( PndGeoHitList  ,
 
)
private
void PndGeoHitList::CreateGeoHit ( TGeoMatrix *  mat)

Definition at line 100 of file PndGeoHitList.cxx.

References fBaseVolume, fGroupVolume, fNodeList, and fVolName.

Referenced by AddHit(), and CreateGeoHits().

101 {
102  TGeoHMatrix* matCopy = new TGeoHMatrix(*mat);
103  Int_t startNumber = fNodeList.size();
104  std::string volumeName = fVolName.Data();
105  std::stringstream nodeName;
106  matCopy->RegisterYourself();
107  fGroupVolume->AddNode(fBaseVolume,startNumber, matCopy);
108  nodeName << volumeName << "_" << startNumber;
109  TGeoNode* myNode = fGroupVolume->FindNode(nodeName.str().c_str());
110  std::cout << "Node: " << nodeName.str() << " " << myNode << std::endl;
111  fNodeList.push_back(myNode);
112  nodeName.str("");
113 }
TString fVolName
Definition: PndGeoHitList.h:46
TGeoVolume * fGroupVolume
Definition: PndGeoHitList.h:48
TGeoVolume * fBaseVolume
Definition: PndGeoHitList.h:50
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
void PndGeoHitList::CreateGeoHits ( Int_t  number)
private

Definition at line 115 of file PndGeoHitList.cxx.

References CreateGeoHit(), i, and tr.

Referenced by AddHit(), AddHits(), and SetHits().

116 {
117 /* Int_t startNumber = fNodeList.size();
118  std::string volumeName = fVolName.Data();
119  std::stringstream nodeName;
120  std::cout << "StartNumber: " << fNodeList.size() << " anz: " << number << std::endl;
121  for (Int_t i = 0; i < number; i++){
122  TGeoTranslation *tr = new TGeoTranslation(1,1,i);
123  fGroupVolume->AddNode(fBaseVolume,startNumber+i, tr);
124  nodeName << volumeName << "_" << startNumber+i;
125  TGeoNode* myNode = fGroupVolume->FindNode(nodeName.str().c_str());
126  std::cout << "Node: " << nodeName.str() << " " << myNode << std::endl;
127  fNodeList.push_back(myNode);
128  nodeName.str("");
129  }*/
130 
131  for (Int_t i = 0; i < number; i++){
132  TGeoTranslation *tr = new TGeoTranslation(1,1,i);
133  CreateGeoHit(tr);
134  }
135 
136 }
Int_t i
Definition: run_full.C:25
void CreateGeoHit(TGeoMatrix *mat)
void PndGeoHitList::CreateNewGroup ( TString  groupName,
TString  topNodeName,
TGeoVolume *  baseVolume 
)

Definition at line 32 of file PndGeoHitList.cxx.

References fBaseVolume, fGroupName, fGroupVolume, fTopVolume, fVolName, and gGeoManager.

Referenced by PndGeoHitList().

33 {
34  fGroupName = groupName;
35  fBaseVolume = baseVolume;
36  fVolName = baseVolume->GetName();
37 
38 
39  fGroupVolume = new TGeoVolumeAssembly(fGroupName.Data());
40  fTopVolume = gGeoManager->GetVolume(topNodeName.Data());
41  fTopVolume->AddNode(fGroupVolume,1);
42 
43  std::cout << "GroupName: " << fGroupName << " " << fGroupVolume << std::endl;
44  std::cout << "BaseVolume: " << fVolName << " " << fBaseVolume << std::endl;
45  std::cout << "TopVolum: " << topNodeName << " " << fTopVolume << std::endl;
46 
47 }
TGeoVolume * fTopVolume
Definition: PndGeoHitList.h:49
TString fVolName
Definition: PndGeoHitList.h:46
TGeoManager * gGeoManager
TString fGroupName
Definition: PndGeoHitList.h:45
TGeoVolume * fGroupVolume
Definition: PndGeoHitList.h:48
TGeoVolume * fBaseVolume
Definition: PndGeoHitList.h:50
TString PndGeoHitList::GetName ( ) const
inline

Definition at line 34 of file PndGeoHitList.h.

References fGroupName.

Referenced by GetNodeId().

34 {return fGroupName;};
TString fGroupName
Definition: PndGeoHitList.h:45
Int_t PndGeoHitList::GetNodeId ( TString  NodeName)

Definition at line 187 of file PndGeoHitList.cxx.

References fNodeList, GetName(), and i.

Referenced by SetVisibility().

188 {
189  for(UInt_t i = 0; i < fNodeList.size(); i++){
190  std::cout << "NodeNames: " << fNodeList[i]->GetName() << std::endl;
191  if (fNodeList[i]->GetName() == NodeName)
192  return i;
193  }
194  return -1;
195 }
Int_t i
Definition: run_full.C:25
TString GetName() const
Definition: PndGeoHitList.h:34
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
Int_t PndGeoHitList::GetNodeId ( TGeoHMatrix  pos)

Definition at line 197 of file PndGeoHitList.cxx.

References fNodeList, and i.

198 {
199 // std::cout << "pos: " << std::endl;
200 // pos.Print();
201 
202  for(UInt_t i = 0; i < fNodeList.size(); i++){
203 // std::cout << "NodeMatrix: " << std::endl;
204 // fNodeList[i]->GetMatrix()->Print();
205 
206  if (pos == *((TGeoHMatrix*)fNodeList[i]->GetMatrix()))
207  return i;
208  }
209  return -1;
210 }
TVector3 pos
Int_t i
Definition: run_full.C:25
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
const std::vector<TGeoNode*> PndGeoHitList::GetNodes ( ) const
inline

Definition at line 35 of file PndGeoHitList.h.

References fNodeList.

35 {return fNodeList;};
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
PndGeoHitList& PndGeoHitList::operator= ( const PndGeoHitList )
delete
void PndGeoHitList::RemoveGeoHits ( Int_t  from)

Definition at line 138 of file PndGeoHitList.cxx.

References fGroupVolume, fNodeList, and i.

Referenced by SetHits().

139 {
140  std::cout << "Old RecoList size: " << fNodeList.size() << std::endl;
141  for(UInt_t i = from; i < fNodeList.size(); i++){
142  fGroupVolume->RemoveNode(fNodeList[i]);
143  }
144  fNodeList.erase(fNodeList.begin()+from, fNodeList.end());
145 
146  std::cout << "New RecoList size: " << fNodeList.size() << std::endl;
147 }
Int_t i
Definition: run_full.C:25
TGeoVolume * fGroupVolume
Definition: PndGeoHitList.h:48
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
void PndGeoHitList::SetAllInvisible ( )

Definition at line 182 of file PndGeoHitList.cxx.

References SetGeoHitsInvisible().

183 {
185 }
void SetGeoHitsInvisible(Int_t from)
void PndGeoHitList::SetGeoHitsInvisible ( Int_t  from)
private

Definition at line 149 of file PndGeoHitList.cxx.

References fNodeList, i, and SetVisibility().

Referenced by SetAllInvisible().

150 {
151  for (UInt_t i = from; i < fNodeList.size(); i++)
152  fNodeList[i]->SetVisibility(kFALSE);
153 
154 }
void SetVisibility(TString NodeName, bool value)
Int_t i
Definition: run_full.C:25
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
void PndGeoHitList::SetHits ( TClonesArray *  hitList,
Bool_t  vis = kTRUE 
)

Definition at line 83 of file PndGeoHitList.cxx.

References CreateGeoHits(), fNodeList, i, RemoveGeoHits(), and tr.

84 {
85  if ((unsigned int)hitList->GetEntries() > fNodeList.size()){
86  CreateGeoHits(hitList->GetEntries() - fNodeList.size());
87  std::cout << "hitList: " << hitList->GetEntries() << "fNodeList: " << fNodeList.size() << std::endl;
88  }
89  else
90  RemoveGeoHits(hitList->GetEntries());
91 
92  for (Int_t i = 0; i < hitList->GetEntries(); i++){
93  FairHit* myHit = (FairHit*)hitList->At(i);
94  TGeoTranslation *tr = (TGeoTranslation*)fNodeList[i]->GetMatrix();
95  tr->SetTranslation(myHit->GetX(), myHit->GetY(), myHit->GetZ());
96  fNodeList[i]->SetVisibility(vis);
97  }
98 }
Int_t i
Definition: run_full.C:25
void RemoveGeoHits(Int_t from)
void CreateGeoHits(Int_t number)
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47
void PndGeoHitList::SetVisibility ( TString  NodeName,
bool  value 
)

Definition at line 156 of file PndGeoHitList.cxx.

References GetNodeId().

Referenced by SetGeoHitsInvisible(), and SetVisibility().

157 {
158  Int_t id = GetNodeId(NodeName);
159  if (id < 0)
160  std::cout << "-E- PndGeoHitList: Not a valid NodeName!" << std::endl;
161  else
162  SetVisibility(id, value);
163 }
void SetVisibility(TString NodeName, bool value)
Int_t GetNodeId(TString NodeName)
void PndGeoHitList::SetVisibility ( TGeoHMatrix  pos,
bool  value 
)

Definition at line 165 of file PndGeoHitList.cxx.

References GetNodeId(), and SetVisibility().

166 {
167  Int_t id = GetNodeId(pos);
168  if (id < 0)
169  std::cout << "-E- PndGeoHitList: Not a valid NodeName!" << std::endl;
170  else
171  SetVisibility(id, value);
172 }
TVector3 pos
void SetVisibility(TString NodeName, bool value)
Int_t GetNodeId(TString NodeName)
void PndGeoHitList::SetVisibility ( Int_t  id,
bool  value 
)

Definition at line 174 of file PndGeoHitList.cxx.

References fNodeList, and SetVisibility().

175 {
176  if ((unsigned int)id < fNodeList.size())
177  fNodeList[id]->SetVisibility(value);
178  else
179  std::cout << "-E- PndGeoHitList: Not a valid id!" << std::endl;
180 }
void SetVisibility(TString NodeName, bool value)
std::vector< TGeoNode * > fNodeList
Definition: PndGeoHitList.h:47

Member Data Documentation

TGeoVolume* PndGeoHitList::fBaseVolume
private

Definition at line 50 of file PndGeoHitList.h.

Referenced by CreateGeoHit(), and CreateNewGroup().

TString PndGeoHitList::fGroupName
private

Definition at line 45 of file PndGeoHitList.h.

Referenced by CreateNewGroup(), and GetName().

TGeoVolume* PndGeoHitList::fGroupVolume
private

Definition at line 48 of file PndGeoHitList.h.

Referenced by CreateGeoHit(), CreateNewGroup(), and RemoveGeoHits().

std::vector<TGeoNode*> PndGeoHitList::fNodeList
private
TGeoVolume* PndGeoHitList::fTopVolume
private

Definition at line 49 of file PndGeoHitList.h.

Referenced by CreateNewGroup().

TString PndGeoHitList::fVolName
private

Definition at line 46 of file PndGeoHitList.h.

Referenced by CreateGeoHit(), and CreateNewGroup().


The documentation for this class was generated from the following files: